2012-03-13 Hui Zhu <teawater@gmail.com>
[deliverable/binutils-gdb.git] / gdb / breakpoint.c
1 /* Everything about breakpoints, for GDB.
2
3 Copyright (C) 1986-2012 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 "gdbthread.h"
36 #include "target.h"
37 #include "language.h"
38 #include "gdb_string.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 "gdb_assert.h"
51 #include "block.h"
52 #include "solib.h"
53 #include "solist.h"
54 #include "observer.h"
55 #include "exceptions.h"
56 #include "memattr.h"
57 #include "ada-lang.h"
58 #include "top.h"
59 #include "valprint.h"
60 #include "jit.h"
61 #include "xml-syscall.h"
62 #include "parser-defs.h"
63 #include "cli/cli-utils.h"
64 #include "continuations.h"
65 #include "stack.h"
66 #include "skip.h"
67 #include "record.h"
68 #include "gdb_regex.h"
69 #include "ax-gdb.h"
70
71 /* readline include files */
72 #include "readline/readline.h"
73 #include "readline/history.h"
74
75 /* readline defines this. */
76 #undef savestring
77
78 #include "mi/mi-common.h"
79 #include "python/python.h"
80
81 /* Prototypes for local functions. */
82
83 static void enable_delete_command (char *, int);
84
85 static void enable_once_command (char *, int);
86
87 static void enable_count_command (char *, int);
88
89 static void disable_command (char *, int);
90
91 static void enable_command (char *, int);
92
93 static void map_breakpoint_numbers (char *, void (*) (struct breakpoint *,
94 void *),
95 void *);
96
97 static void ignore_command (char *, int);
98
99 static int breakpoint_re_set_one (void *);
100
101 static void breakpoint_re_set_default (struct breakpoint *);
102
103 static void create_sals_from_address_default (char **,
104 struct linespec_result *,
105 enum bptype, char *,
106 char **);
107
108 static void create_breakpoints_sal_default (struct gdbarch *,
109 struct linespec_result *,
110 struct linespec_sals *,
111 char *, enum bptype,
112 enum bpdisp, int, int,
113 int,
114 const struct breakpoint_ops *,
115 int, int, int, unsigned);
116
117 static void decode_linespec_default (struct breakpoint *, char **,
118 struct symtabs_and_lines *);
119
120 static void clear_command (char *, int);
121
122 static void catch_command (char *, int);
123
124 static int can_use_hardware_watchpoint (struct value *);
125
126 static void break_command_1 (char *, int, int);
127
128 static void mention (struct breakpoint *);
129
130 static struct breakpoint *set_raw_breakpoint_without_location (struct gdbarch *,
131 enum bptype,
132 const struct breakpoint_ops *);
133 static struct bp_location *add_location_to_breakpoint (struct breakpoint *,
134 const struct symtab_and_line *);
135
136 /* This function is used in gdbtk sources and thus can not be made
137 static. */
138 struct breakpoint *set_raw_breakpoint (struct gdbarch *gdbarch,
139 struct symtab_and_line,
140 enum bptype,
141 const struct breakpoint_ops *);
142
143 static struct breakpoint *
144 momentary_breakpoint_from_master (struct breakpoint *orig,
145 enum bptype type,
146 const struct breakpoint_ops *ops);
147
148 static void breakpoint_adjustment_warning (CORE_ADDR, CORE_ADDR, int, int);
149
150 static CORE_ADDR adjust_breakpoint_address (struct gdbarch *gdbarch,
151 CORE_ADDR bpaddr,
152 enum bptype bptype);
153
154 static void describe_other_breakpoints (struct gdbarch *,
155 struct program_space *, CORE_ADDR,
156 struct obj_section *, int);
157
158 static int breakpoint_address_match (struct address_space *aspace1,
159 CORE_ADDR addr1,
160 struct address_space *aspace2,
161 CORE_ADDR addr2);
162
163 static int watchpoint_locations_match (struct bp_location *loc1,
164 struct bp_location *loc2);
165
166 static int breakpoint_location_address_match (struct bp_location *bl,
167 struct address_space *aspace,
168 CORE_ADDR addr);
169
170 static void breakpoints_info (char *, int);
171
172 static void watchpoints_info (char *, int);
173
174 static int breakpoint_1 (char *, int,
175 int (*) (const struct breakpoint *));
176
177 static int breakpoint_cond_eval (void *);
178
179 static void cleanup_executing_breakpoints (void *);
180
181 static void commands_command (char *, int);
182
183 static void condition_command (char *, int);
184
185 typedef enum
186 {
187 mark_inserted,
188 mark_uninserted
189 }
190 insertion_state_t;
191
192 static int remove_breakpoint (struct bp_location *, insertion_state_t);
193 static int remove_breakpoint_1 (struct bp_location *, insertion_state_t);
194
195 static enum print_stop_action print_bp_stop_message (bpstat bs);
196
197 static int watchpoint_check (void *);
198
199 static void maintenance_info_breakpoints (char *, int);
200
201 static int hw_breakpoint_used_count (void);
202
203 static int hw_watchpoint_use_count (struct breakpoint *);
204
205 static int hw_watchpoint_used_count_others (struct breakpoint *except,
206 enum bptype type,
207 int *other_type_used);
208
209 static void hbreak_command (char *, int);
210
211 static void thbreak_command (char *, int);
212
213 static void enable_breakpoint_disp (struct breakpoint *, enum bpdisp,
214 int count);
215
216 static void stop_command (char *arg, int from_tty);
217
218 static void stopin_command (char *arg, int from_tty);
219
220 static void stopat_command (char *arg, int from_tty);
221
222 static char *ep_parse_optional_if_clause (char **arg);
223
224 static void catch_exception_command_1 (enum exception_event_kind ex_event,
225 char *arg, int tempflag, int from_tty);
226
227 static void tcatch_command (char *arg, int from_tty);
228
229 static void detach_single_step_breakpoints (void);
230
231 static int single_step_breakpoint_inserted_here_p (struct address_space *,
232 CORE_ADDR pc);
233
234 static void free_bp_location (struct bp_location *loc);
235 static void incref_bp_location (struct bp_location *loc);
236 static void decref_bp_location (struct bp_location **loc);
237
238 static struct bp_location *allocate_bp_location (struct breakpoint *bpt);
239
240 static void update_global_location_list (int);
241
242 static void update_global_location_list_nothrow (int);
243
244 static int is_hardware_watchpoint (const struct breakpoint *bpt);
245
246 static void insert_breakpoint_locations (void);
247
248 static int syscall_catchpoint_p (struct breakpoint *b);
249
250 static void tracepoints_info (char *, int);
251
252 static void delete_trace_command (char *, int);
253
254 static void enable_trace_command (char *, int);
255
256 static void disable_trace_command (char *, int);
257
258 static void trace_pass_command (char *, int);
259
260 static int is_masked_watchpoint (const struct breakpoint *b);
261
262 static struct bp_location **get_first_locp_gte_addr (CORE_ADDR address);
263
264 /* Return 1 if B refers to a static tracepoint set by marker ("-m"), zero
265 otherwise. */
266
267 static int strace_marker_p (struct breakpoint *b);
268
269 static void init_catchpoint (struct breakpoint *b,
270 struct gdbarch *gdbarch, int tempflag,
271 char *cond_string,
272 const struct breakpoint_ops *ops);
273
274 /* The abstract base class all breakpoint_ops structures inherit
275 from. */
276 static struct breakpoint_ops base_breakpoint_ops;
277
278 /* The breakpoint_ops structure to be inherited by all breakpoint_ops
279 that are implemented on top of software or hardware breakpoints
280 (user breakpoints, internal and momentary breakpoints, etc.). */
281 static struct breakpoint_ops bkpt_base_breakpoint_ops;
282
283 /* Internal breakpoints class type. */
284 static struct breakpoint_ops internal_breakpoint_ops;
285
286 /* Momentary breakpoints class type. */
287 static struct breakpoint_ops momentary_breakpoint_ops;
288
289 /* The breakpoint_ops structure to be used in regular user created
290 breakpoints. */
291 struct breakpoint_ops bkpt_breakpoint_ops;
292
293 /* A reference-counted struct command_line. This lets multiple
294 breakpoints share a single command list. */
295 struct counted_command_line
296 {
297 /* The reference count. */
298 int refc;
299
300 /* The command list. */
301 struct command_line *commands;
302 };
303
304 struct command_line *
305 breakpoint_commands (struct breakpoint *b)
306 {
307 return b->commands ? b->commands->commands : NULL;
308 }
309
310 /* Flag indicating that a command has proceeded the inferior past the
311 current breakpoint. */
312
313 static int breakpoint_proceeded;
314
315 const char *
316 bpdisp_text (enum bpdisp disp)
317 {
318 /* NOTE: the following values are a part of MI protocol and
319 represent values of 'disp' field returned when inferior stops at
320 a breakpoint. */
321 static const char * const bpdisps[] = {"del", "dstp", "dis", "keep"};
322
323 return bpdisps[(int) disp];
324 }
325
326 /* Prototypes for exported functions. */
327 /* If FALSE, gdb will not use hardware support for watchpoints, even
328 if such is available. */
329 static int can_use_hw_watchpoints;
330
331 static void
332 show_can_use_hw_watchpoints (struct ui_file *file, int from_tty,
333 struct cmd_list_element *c,
334 const char *value)
335 {
336 fprintf_filtered (file,
337 _("Debugger's willingness to use "
338 "watchpoint hardware is %s.\n"),
339 value);
340 }
341
342 /* If AUTO_BOOLEAN_FALSE, gdb will not attempt to create pending breakpoints.
343 If AUTO_BOOLEAN_TRUE, gdb will automatically create pending breakpoints
344 for unrecognized breakpoint locations.
345 If AUTO_BOOLEAN_AUTO, gdb will query when breakpoints are unrecognized. */
346 static enum auto_boolean pending_break_support;
347 static void
348 show_pending_break_support (struct ui_file *file, int from_tty,
349 struct cmd_list_element *c,
350 const char *value)
351 {
352 fprintf_filtered (file,
353 _("Debugger's behavior regarding "
354 "pending breakpoints is %s.\n"),
355 value);
356 }
357
358 /* If 1, gdb will automatically use hardware breakpoints for breakpoints
359 set with "break" but falling in read-only memory.
360 If 0, gdb will warn about such breakpoints, but won't automatically
361 use hardware breakpoints. */
362 static int automatic_hardware_breakpoints;
363 static void
364 show_automatic_hardware_breakpoints (struct ui_file *file, int from_tty,
365 struct cmd_list_element *c,
366 const char *value)
367 {
368 fprintf_filtered (file,
369 _("Automatic usage of hardware breakpoints is %s.\n"),
370 value);
371 }
372
373 /* If on, gdb will keep breakpoints inserted even as inferior is
374 stopped, and immediately insert any new breakpoints. If off, gdb
375 will insert breakpoints into inferior only when resuming it, and
376 will remove breakpoints upon stop. If auto, GDB will behave as ON
377 if in non-stop mode, and as OFF if all-stop mode.*/
378
379 static const char always_inserted_auto[] = "auto";
380 static const char always_inserted_on[] = "on";
381 static const char always_inserted_off[] = "off";
382 static const char *const always_inserted_enums[] = {
383 always_inserted_auto,
384 always_inserted_off,
385 always_inserted_on,
386 NULL
387 };
388 static const char *always_inserted_mode = always_inserted_auto;
389 static void
390 show_always_inserted_mode (struct ui_file *file, int from_tty,
391 struct cmd_list_element *c, const char *value)
392 {
393 if (always_inserted_mode == always_inserted_auto)
394 fprintf_filtered (file,
395 _("Always inserted breakpoint "
396 "mode is %s (currently %s).\n"),
397 value,
398 breakpoints_always_inserted_mode () ? "on" : "off");
399 else
400 fprintf_filtered (file, _("Always inserted breakpoint mode is %s.\n"),
401 value);
402 }
403
404 int
405 breakpoints_always_inserted_mode (void)
406 {
407 return ((always_inserted_mode == always_inserted_on
408 || (always_inserted_mode == always_inserted_auto && non_stop))
409 && !RECORD_IS_USED);
410 }
411
412 static const char condition_evaluation_both[] = "host or target";
413
414 /* Modes for breakpoint condition evaluation. */
415 static const char condition_evaluation_auto[] = "auto";
416 static const char condition_evaluation_host[] = "host";
417 static const char condition_evaluation_target[] = "target";
418 static const char *const condition_evaluation_enums[] = {
419 condition_evaluation_auto,
420 condition_evaluation_host,
421 condition_evaluation_target,
422 NULL
423 };
424
425 /* Global that holds the current mode for breakpoint condition evaluation. */
426 static const char *condition_evaluation_mode_1 = condition_evaluation_auto;
427
428 /* Global that we use to display information to the user (gets its value from
429 condition_evaluation_mode_1. */
430 static const char *condition_evaluation_mode = condition_evaluation_auto;
431
432 /* Translate a condition evaluation mode MODE into either "host"
433 or "target". This is used mostly to translate from "auto" to the
434 real setting that is being used. It returns the translated
435 evaluation mode. */
436
437 static const char *
438 translate_condition_evaluation_mode (const char *mode)
439 {
440 if (mode == condition_evaluation_auto)
441 {
442 if (target_supports_evaluation_of_breakpoint_conditions ())
443 return condition_evaluation_target;
444 else
445 return condition_evaluation_host;
446 }
447 else
448 return mode;
449 }
450
451 /* Discovers what condition_evaluation_auto translates to. */
452
453 static const char *
454 breakpoint_condition_evaluation_mode (void)
455 {
456 return translate_condition_evaluation_mode (condition_evaluation_mode);
457 }
458
459 /* Return true if GDB should evaluate breakpoint conditions or false
460 otherwise. */
461
462 static int
463 gdb_evaluates_breakpoint_condition_p (void)
464 {
465 const char *mode = breakpoint_condition_evaluation_mode ();
466
467 return (mode == condition_evaluation_host);
468 }
469
470 void _initialize_breakpoint (void);
471
472 /* Are we executing breakpoint commands? */
473 static int executing_breakpoint_commands;
474
475 /* Are overlay event breakpoints enabled? */
476 static int overlay_events_enabled;
477
478 /* See description in breakpoint.h. */
479 int target_exact_watchpoints = 0;
480
481 /* Walk the following statement or block through all breakpoints.
482 ALL_BREAKPOINTS_SAFE does so even if the statement deletes the
483 current breakpoint. */
484
485 #define ALL_BREAKPOINTS(B) for (B = breakpoint_chain; B; B = B->next)
486
487 #define ALL_BREAKPOINTS_SAFE(B,TMP) \
488 for (B = breakpoint_chain; \
489 B ? (TMP=B->next, 1): 0; \
490 B = TMP)
491
492 /* Similar iterator for the low-level breakpoints. SAFE variant is
493 not provided so update_global_location_list must not be called
494 while executing the block of ALL_BP_LOCATIONS. */
495
496 #define ALL_BP_LOCATIONS(B,BP_TMP) \
497 for (BP_TMP = bp_location; \
498 BP_TMP < bp_location + bp_location_count && (B = *BP_TMP); \
499 BP_TMP++)
500
501 /* Iterates through locations with address ADDRESS for the currently selected
502 program space. BP_LOCP_TMP points to each object. BP_LOCP_START points
503 to where the loop should start from.
504 If BP_LOCP_START is a NULL pointer, the macro automatically seeks the
505 appropriate location to start with. */
506
507 #define ALL_BP_LOCATIONS_AT_ADDR(BP_LOCP_TMP, BP_LOCP_START, ADDRESS) \
508 for (BP_LOCP_START = BP_LOCP_START == NULL ? get_first_locp_gte_addr (ADDRESS) : BP_LOCP_START, \
509 BP_LOCP_TMP = BP_LOCP_START; \
510 BP_LOCP_START \
511 && (BP_LOCP_TMP < bp_location + bp_location_count \
512 && (*BP_LOCP_TMP)->address == ADDRESS); \
513 BP_LOCP_TMP++)
514
515 /* Iterator for tracepoints only. */
516
517 #define ALL_TRACEPOINTS(B) \
518 for (B = breakpoint_chain; B; B = B->next) \
519 if (is_tracepoint (B))
520
521 /* Chains of all breakpoints defined. */
522
523 struct breakpoint *breakpoint_chain;
524
525 /* Array is sorted by bp_location_compare - primarily by the ADDRESS. */
526
527 static struct bp_location **bp_location;
528
529 /* Number of elements of BP_LOCATION. */
530
531 static unsigned bp_location_count;
532
533 /* Maximum alignment offset between bp_target_info.PLACED_ADDRESS and
534 ADDRESS for the current elements of BP_LOCATION which get a valid
535 result from bp_location_has_shadow. You can use it for roughly
536 limiting the subrange of BP_LOCATION to scan for shadow bytes for
537 an address you need to read. */
538
539 static CORE_ADDR bp_location_placed_address_before_address_max;
540
541 /* Maximum offset plus alignment between bp_target_info.PLACED_ADDRESS
542 + bp_target_info.SHADOW_LEN and ADDRESS for the current elements of
543 BP_LOCATION which get a valid result from bp_location_has_shadow.
544 You can use it for roughly limiting the subrange of BP_LOCATION to
545 scan for shadow bytes for an address you need to read. */
546
547 static CORE_ADDR bp_location_shadow_len_after_address_max;
548
549 /* The locations that no longer correspond to any breakpoint, unlinked
550 from bp_location array, but for which a hit may still be reported
551 by a target. */
552 VEC(bp_location_p) *moribund_locations = NULL;
553
554 /* Number of last breakpoint made. */
555
556 static int breakpoint_count;
557
558 /* The value of `breakpoint_count' before the last command that
559 created breakpoints. If the last (break-like) command created more
560 than one breakpoint, then the difference between BREAKPOINT_COUNT
561 and PREV_BREAKPOINT_COUNT is more than one. */
562 static int prev_breakpoint_count;
563
564 /* Number of last tracepoint made. */
565
566 static int tracepoint_count;
567
568 static struct cmd_list_element *breakpoint_set_cmdlist;
569 static struct cmd_list_element *breakpoint_show_cmdlist;
570 struct cmd_list_element *save_cmdlist;
571
572 /* Return whether a breakpoint is an active enabled breakpoint. */
573 static int
574 breakpoint_enabled (struct breakpoint *b)
575 {
576 return (b->enable_state == bp_enabled);
577 }
578
579 /* Set breakpoint count to NUM. */
580
581 static void
582 set_breakpoint_count (int num)
583 {
584 prev_breakpoint_count = breakpoint_count;
585 breakpoint_count = num;
586 set_internalvar_integer (lookup_internalvar ("bpnum"), num);
587 }
588
589 /* Used by `start_rbreak_breakpoints' below, to record the current
590 breakpoint count before "rbreak" creates any breakpoint. */
591 static int rbreak_start_breakpoint_count;
592
593 /* Called at the start an "rbreak" command to record the first
594 breakpoint made. */
595
596 void
597 start_rbreak_breakpoints (void)
598 {
599 rbreak_start_breakpoint_count = breakpoint_count;
600 }
601
602 /* Called at the end of an "rbreak" command to record the last
603 breakpoint made. */
604
605 void
606 end_rbreak_breakpoints (void)
607 {
608 prev_breakpoint_count = rbreak_start_breakpoint_count;
609 }
610
611 /* Used in run_command to zero the hit count when a new run starts. */
612
613 void
614 clear_breakpoint_hit_counts (void)
615 {
616 struct breakpoint *b;
617
618 ALL_BREAKPOINTS (b)
619 b->hit_count = 0;
620 }
621
622 /* Allocate a new counted_command_line with reference count of 1.
623 The new structure owns COMMANDS. */
624
625 static struct counted_command_line *
626 alloc_counted_command_line (struct command_line *commands)
627 {
628 struct counted_command_line *result
629 = xmalloc (sizeof (struct counted_command_line));
630
631 result->refc = 1;
632 result->commands = commands;
633 return result;
634 }
635
636 /* Increment reference count. This does nothing if CMD is NULL. */
637
638 static void
639 incref_counted_command_line (struct counted_command_line *cmd)
640 {
641 if (cmd)
642 ++cmd->refc;
643 }
644
645 /* Decrement reference count. If the reference count reaches 0,
646 destroy the counted_command_line. Sets *CMDP to NULL. This does
647 nothing if *CMDP is NULL. */
648
649 static void
650 decref_counted_command_line (struct counted_command_line **cmdp)
651 {
652 if (*cmdp)
653 {
654 if (--(*cmdp)->refc == 0)
655 {
656 free_command_lines (&(*cmdp)->commands);
657 xfree (*cmdp);
658 }
659 *cmdp = NULL;
660 }
661 }
662
663 /* A cleanup function that calls decref_counted_command_line. */
664
665 static void
666 do_cleanup_counted_command_line (void *arg)
667 {
668 decref_counted_command_line (arg);
669 }
670
671 /* Create a cleanup that calls decref_counted_command_line on the
672 argument. */
673
674 static struct cleanup *
675 make_cleanup_decref_counted_command_line (struct counted_command_line **cmdp)
676 {
677 return make_cleanup (do_cleanup_counted_command_line, cmdp);
678 }
679
680 \f
681 /* Return the breakpoint with the specified number, or NULL
682 if the number does not refer to an existing breakpoint. */
683
684 struct breakpoint *
685 get_breakpoint (int num)
686 {
687 struct breakpoint *b;
688
689 ALL_BREAKPOINTS (b)
690 if (b->number == num)
691 return b;
692
693 return NULL;
694 }
695
696 \f
697
698 /* Mark locations as "conditions have changed" in case the target supports
699 evaluating conditions on its side. */
700
701 static void
702 mark_breakpoint_modified (struct breakpoint *b)
703 {
704 struct bp_location *loc;
705
706 /* This is only meaningful if the target is
707 evaluating conditions and if the user has
708 opted for condition evaluation on the target's
709 side. */
710 if (gdb_evaluates_breakpoint_condition_p ()
711 || !target_supports_evaluation_of_breakpoint_conditions ())
712 return;
713
714 if (!is_breakpoint (b))
715 return;
716
717 for (loc = b->loc; loc; loc = loc->next)
718 loc->condition_changed = condition_modified;
719 }
720
721 /* Mark location as "conditions have changed" in case the target supports
722 evaluating conditions on its side. */
723
724 static void
725 mark_breakpoint_location_modified (struct bp_location *loc)
726 {
727 /* This is only meaningful if the target is
728 evaluating conditions and if the user has
729 opted for condition evaluation on the target's
730 side. */
731 if (gdb_evaluates_breakpoint_condition_p ()
732 || !target_supports_evaluation_of_breakpoint_conditions ())
733
734 return;
735
736 if (!is_breakpoint (loc->owner))
737 return;
738
739 loc->condition_changed = condition_modified;
740 }
741
742 /* Sets the condition-evaluation mode using the static global
743 condition_evaluation_mode. */
744
745 static void
746 set_condition_evaluation_mode (char *args, int from_tty,
747 struct cmd_list_element *c)
748 {
749 struct breakpoint *b;
750 const char *old_mode, *new_mode;
751
752 if ((condition_evaluation_mode_1 == condition_evaluation_target)
753 && !target_supports_evaluation_of_breakpoint_conditions ())
754 {
755 condition_evaluation_mode_1 = condition_evaluation_mode;
756 warning (_("Target does not support breakpoint condition evaluation.\n"
757 "Using host evaluation mode instead."));
758 return;
759 }
760
761 new_mode = translate_condition_evaluation_mode (condition_evaluation_mode_1);
762 old_mode = translate_condition_evaluation_mode (condition_evaluation_mode);
763
764 /* Flip the switch. Flip it even if OLD_MODE == NEW_MODE as one of the
765 settings was "auto". */
766 condition_evaluation_mode = condition_evaluation_mode_1;
767
768 /* Only update the mode if the user picked a different one. */
769 if (new_mode != old_mode)
770 {
771 struct bp_location *loc, **loc_tmp;
772 /* If the user switched to a different evaluation mode, we
773 need to synch the changes with the target as follows:
774
775 "host" -> "target": Send all (valid) conditions to the target.
776 "target" -> "host": Remove all the conditions from the target.
777 */
778
779 if (new_mode == condition_evaluation_target)
780 {
781 /* Mark everything modified and synch conditions with the
782 target. */
783 ALL_BP_LOCATIONS (loc, loc_tmp)
784 mark_breakpoint_location_modified (loc);
785 }
786 else
787 {
788 /* Manually mark non-duplicate locations to synch conditions
789 with the target. We do this to remove all the conditions the
790 target knows about. */
791 ALL_BP_LOCATIONS (loc, loc_tmp)
792 if (is_breakpoint (loc->owner) && loc->inserted)
793 loc->needs_update = 1;
794 }
795
796 /* Do the update. */
797 update_global_location_list (1);
798 }
799
800 return;
801 }
802
803 /* Shows the current mode of breakpoint condition evaluation. Explicitly shows
804 what "auto" is translating to. */
805
806 static void
807 show_condition_evaluation_mode (struct ui_file *file, int from_tty,
808 struct cmd_list_element *c, const char *value)
809 {
810 if (condition_evaluation_mode == condition_evaluation_auto)
811 fprintf_filtered (file,
812 _("Breakpoint condition evaluation "
813 "mode is %s (currently %s).\n"),
814 value,
815 breakpoint_condition_evaluation_mode ());
816 else
817 fprintf_filtered (file, _("Breakpoint condition evaluation mode is %s.\n"),
818 value);
819 }
820
821 /* A comparison function for bp_location AP and BP that is used by
822 bsearch. This comparison function only cares about addresses, unlike
823 the more general bp_location_compare function. */
824
825 static int
826 bp_location_compare_addrs (const void *ap, const void *bp)
827 {
828 struct bp_location *a = *(void **) ap;
829 struct bp_location *b = *(void **) bp;
830
831 if (a->address == b->address)
832 return 0;
833 else
834 return ((a->address > b->address) - (a->address < b->address));
835 }
836
837 /* Helper function to skip all bp_locations with addresses
838 less than ADDRESS. It returns the first bp_location that
839 is greater than or equal to ADDRESS. If none is found, just
840 return NULL. */
841
842 static struct bp_location **
843 get_first_locp_gte_addr (CORE_ADDR address)
844 {
845 struct bp_location dummy_loc;
846 struct bp_location *dummy_locp = &dummy_loc;
847 struct bp_location **locp_found = NULL;
848
849 /* Initialize the dummy location's address field. */
850 memset (&dummy_loc, 0, sizeof (struct bp_location));
851 dummy_loc.address = address;
852
853 /* Find a close match to the first location at ADDRESS. */
854 locp_found = bsearch (&dummy_locp, bp_location, bp_location_count,
855 sizeof (struct bp_location **),
856 bp_location_compare_addrs);
857
858 /* Nothing was found, nothing left to do. */
859 if (locp_found == NULL)
860 return NULL;
861
862 /* We may have found a location that is at ADDRESS but is not the first in the
863 location's list. Go backwards (if possible) and locate the first one. */
864 while ((locp_found - 1) >= bp_location
865 && (*(locp_found - 1))->address == address)
866 locp_found--;
867
868 return locp_found;
869 }
870
871 void
872 set_breakpoint_condition (struct breakpoint *b, char *exp,
873 int from_tty)
874 {
875 xfree (b->cond_string);
876 b->cond_string = NULL;
877
878 if (is_watchpoint (b))
879 {
880 struct watchpoint *w = (struct watchpoint *) b;
881
882 xfree (w->cond_exp);
883 w->cond_exp = NULL;
884 }
885 else
886 {
887 struct bp_location *loc;
888
889 for (loc = b->loc; loc; loc = loc->next)
890 {
891 xfree (loc->cond);
892 loc->cond = NULL;
893
894 /* No need to free the condition agent expression
895 bytecode (if we have one). We will handle this
896 when we go through update_global_location_list. */
897 }
898 }
899
900 if (*exp == 0)
901 {
902 if (from_tty)
903 printf_filtered (_("Breakpoint %d now unconditional.\n"), b->number);
904 }
905 else
906 {
907 char *arg = exp;
908
909 /* I don't know if it matters whether this is the string the user
910 typed in or the decompiled expression. */
911 b->cond_string = xstrdup (arg);
912 b->condition_not_parsed = 0;
913
914 if (is_watchpoint (b))
915 {
916 struct watchpoint *w = (struct watchpoint *) b;
917
918 innermost_block = NULL;
919 arg = exp;
920 w->cond_exp = parse_exp_1 (&arg, 0, 0);
921 if (*arg)
922 error (_("Junk at end of expression"));
923 w->cond_exp_valid_block = innermost_block;
924 }
925 else
926 {
927 struct bp_location *loc;
928
929 for (loc = b->loc; loc; loc = loc->next)
930 {
931 arg = exp;
932 loc->cond =
933 parse_exp_1 (&arg, block_for_pc (loc->address), 0);
934 if (*arg)
935 error (_("Junk at end of expression"));
936 }
937 }
938 }
939 mark_breakpoint_modified (b);
940
941 breakpoints_changed ();
942 observer_notify_breakpoint_modified (b);
943 }
944
945 /* condition N EXP -- set break condition of breakpoint N to EXP. */
946
947 static void
948 condition_command (char *arg, int from_tty)
949 {
950 struct breakpoint *b;
951 char *p;
952 int bnum;
953
954 if (arg == 0)
955 error_no_arg (_("breakpoint number"));
956
957 p = arg;
958 bnum = get_number (&p);
959 if (bnum == 0)
960 error (_("Bad breakpoint argument: '%s'"), arg);
961
962 ALL_BREAKPOINTS (b)
963 if (b->number == bnum)
964 {
965 /* Check if this breakpoint has a Python object assigned to
966 it, and if it has a definition of the "stop"
967 method. This method and conditions entered into GDB from
968 the CLI are mutually exclusive. */
969 if (b->py_bp_object
970 && gdbpy_breakpoint_has_py_cond (b->py_bp_object))
971 error (_("Cannot set a condition where a Python 'stop' "
972 "method has been defined in the breakpoint."));
973 set_breakpoint_condition (b, p, from_tty);
974
975 if (is_breakpoint (b))
976 update_global_location_list (1);
977
978 return;
979 }
980
981 error (_("No breakpoint number %d."), bnum);
982 }
983
984 /* Check that COMMAND do not contain commands that are suitable
985 only for tracepoints and not suitable for ordinary breakpoints.
986 Throw if any such commands is found. */
987
988 static void
989 check_no_tracepoint_commands (struct command_line *commands)
990 {
991 struct command_line *c;
992
993 for (c = commands; c; c = c->next)
994 {
995 int i;
996
997 if (c->control_type == while_stepping_control)
998 error (_("The 'while-stepping' command can "
999 "only be used for tracepoints"));
1000
1001 for (i = 0; i < c->body_count; ++i)
1002 check_no_tracepoint_commands ((c->body_list)[i]);
1003
1004 /* Not that command parsing removes leading whitespace and comment
1005 lines and also empty lines. So, we only need to check for
1006 command directly. */
1007 if (strstr (c->line, "collect ") == c->line)
1008 error (_("The 'collect' command can only be used for tracepoints"));
1009
1010 if (strstr (c->line, "teval ") == c->line)
1011 error (_("The 'teval' command can only be used for tracepoints"));
1012 }
1013 }
1014
1015 /* Encapsulate tests for different types of tracepoints. */
1016
1017 static int
1018 is_tracepoint_type (enum bptype type)
1019 {
1020 return (type == bp_tracepoint
1021 || type == bp_fast_tracepoint
1022 || type == bp_static_tracepoint);
1023 }
1024
1025 int
1026 is_tracepoint (const struct breakpoint *b)
1027 {
1028 return is_tracepoint_type (b->type);
1029 }
1030
1031 /* A helper function that validates that COMMANDS are valid for a
1032 breakpoint. This function will throw an exception if a problem is
1033 found. */
1034
1035 static void
1036 validate_commands_for_breakpoint (struct breakpoint *b,
1037 struct command_line *commands)
1038 {
1039 if (is_tracepoint (b))
1040 {
1041 /* We need to verify that each top-level element of commands is
1042 valid for tracepoints, that there's at most one
1043 while-stepping element, and that while-stepping's body has
1044 valid tracing commands excluding nested while-stepping. */
1045 struct command_line *c;
1046 struct command_line *while_stepping = 0;
1047 for (c = commands; c; c = c->next)
1048 {
1049 if (c->control_type == while_stepping_control)
1050 {
1051 if (b->type == bp_fast_tracepoint)
1052 error (_("The 'while-stepping' command "
1053 "cannot be used for fast tracepoint"));
1054 else if (b->type == bp_static_tracepoint)
1055 error (_("The 'while-stepping' command "
1056 "cannot be used for static tracepoint"));
1057
1058 if (while_stepping)
1059 error (_("The 'while-stepping' command "
1060 "can be used only once"));
1061 else
1062 while_stepping = c;
1063 }
1064 }
1065 if (while_stepping)
1066 {
1067 struct command_line *c2;
1068
1069 gdb_assert (while_stepping->body_count == 1);
1070 c2 = while_stepping->body_list[0];
1071 for (; c2; c2 = c2->next)
1072 {
1073 if (c2->control_type == while_stepping_control)
1074 error (_("The 'while-stepping' command cannot be nested"));
1075 }
1076 }
1077 }
1078 else
1079 {
1080 check_no_tracepoint_commands (commands);
1081 }
1082 }
1083
1084 /* Return a vector of all the static tracepoints set at ADDR. The
1085 caller is responsible for releasing the vector. */
1086
1087 VEC(breakpoint_p) *
1088 static_tracepoints_here (CORE_ADDR addr)
1089 {
1090 struct breakpoint *b;
1091 VEC(breakpoint_p) *found = 0;
1092 struct bp_location *loc;
1093
1094 ALL_BREAKPOINTS (b)
1095 if (b->type == bp_static_tracepoint)
1096 {
1097 for (loc = b->loc; loc; loc = loc->next)
1098 if (loc->address == addr)
1099 VEC_safe_push(breakpoint_p, found, b);
1100 }
1101
1102 return found;
1103 }
1104
1105 /* Set the command list of B to COMMANDS. If breakpoint is tracepoint,
1106 validate that only allowed commands are included. */
1107
1108 void
1109 breakpoint_set_commands (struct breakpoint *b,
1110 struct command_line *commands)
1111 {
1112 validate_commands_for_breakpoint (b, commands);
1113
1114 decref_counted_command_line (&b->commands);
1115 b->commands = alloc_counted_command_line (commands);
1116 breakpoints_changed ();
1117 observer_notify_breakpoint_modified (b);
1118 }
1119
1120 /* Set the internal `silent' flag on the breakpoint. Note that this
1121 is not the same as the "silent" that may appear in the breakpoint's
1122 commands. */
1123
1124 void
1125 breakpoint_set_silent (struct breakpoint *b, int silent)
1126 {
1127 int old_silent = b->silent;
1128
1129 b->silent = silent;
1130 if (old_silent != silent)
1131 observer_notify_breakpoint_modified (b);
1132 }
1133
1134 /* Set the thread for this breakpoint. If THREAD is -1, make the
1135 breakpoint work for any thread. */
1136
1137 void
1138 breakpoint_set_thread (struct breakpoint *b, int thread)
1139 {
1140 int old_thread = b->thread;
1141
1142 b->thread = thread;
1143 if (old_thread != thread)
1144 observer_notify_breakpoint_modified (b);
1145 }
1146
1147 /* Set the task for this breakpoint. If TASK is 0, make the
1148 breakpoint work for any task. */
1149
1150 void
1151 breakpoint_set_task (struct breakpoint *b, int task)
1152 {
1153 int old_task = b->task;
1154
1155 b->task = task;
1156 if (old_task != task)
1157 observer_notify_breakpoint_modified (b);
1158 }
1159
1160 void
1161 check_tracepoint_command (char *line, void *closure)
1162 {
1163 struct breakpoint *b = closure;
1164
1165 validate_actionline (&line, b);
1166 }
1167
1168 /* A structure used to pass information through
1169 map_breakpoint_numbers. */
1170
1171 struct commands_info
1172 {
1173 /* True if the command was typed at a tty. */
1174 int from_tty;
1175
1176 /* The breakpoint range spec. */
1177 char *arg;
1178
1179 /* Non-NULL if the body of the commands are being read from this
1180 already-parsed command. */
1181 struct command_line *control;
1182
1183 /* The command lines read from the user, or NULL if they have not
1184 yet been read. */
1185 struct counted_command_line *cmd;
1186 };
1187
1188 /* A callback for map_breakpoint_numbers that sets the commands for
1189 commands_command. */
1190
1191 static void
1192 do_map_commands_command (struct breakpoint *b, void *data)
1193 {
1194 struct commands_info *info = data;
1195
1196 if (info->cmd == NULL)
1197 {
1198 struct command_line *l;
1199
1200 if (info->control != NULL)
1201 l = copy_command_lines (info->control->body_list[0]);
1202 else
1203 {
1204 struct cleanup *old_chain;
1205 char *str;
1206
1207 str = xstrprintf (_("Type commands for breakpoint(s) "
1208 "%s, one per line."),
1209 info->arg);
1210
1211 old_chain = make_cleanup (xfree, str);
1212
1213 l = read_command_lines (str,
1214 info->from_tty, 1,
1215 (is_tracepoint (b)
1216 ? check_tracepoint_command : 0),
1217 b);
1218
1219 do_cleanups (old_chain);
1220 }
1221
1222 info->cmd = alloc_counted_command_line (l);
1223 }
1224
1225 /* If a breakpoint was on the list more than once, we don't need to
1226 do anything. */
1227 if (b->commands != info->cmd)
1228 {
1229 validate_commands_for_breakpoint (b, info->cmd->commands);
1230 incref_counted_command_line (info->cmd);
1231 decref_counted_command_line (&b->commands);
1232 b->commands = info->cmd;
1233 breakpoints_changed ();
1234 observer_notify_breakpoint_modified (b);
1235 }
1236 }
1237
1238 static void
1239 commands_command_1 (char *arg, int from_tty,
1240 struct command_line *control)
1241 {
1242 struct cleanup *cleanups;
1243 struct commands_info info;
1244
1245 info.from_tty = from_tty;
1246 info.control = control;
1247 info.cmd = NULL;
1248 /* If we read command lines from the user, then `info' will hold an
1249 extra reference to the commands that we must clean up. */
1250 cleanups = make_cleanup_decref_counted_command_line (&info.cmd);
1251
1252 if (arg == NULL || !*arg)
1253 {
1254 if (breakpoint_count - prev_breakpoint_count > 1)
1255 arg = xstrprintf ("%d-%d", prev_breakpoint_count + 1,
1256 breakpoint_count);
1257 else if (breakpoint_count > 0)
1258 arg = xstrprintf ("%d", breakpoint_count);
1259 else
1260 {
1261 /* So that we don't try to free the incoming non-NULL
1262 argument in the cleanup below. Mapping breakpoint
1263 numbers will fail in this case. */
1264 arg = NULL;
1265 }
1266 }
1267 else
1268 /* The command loop has some static state, so we need to preserve
1269 our argument. */
1270 arg = xstrdup (arg);
1271
1272 if (arg != NULL)
1273 make_cleanup (xfree, arg);
1274
1275 info.arg = arg;
1276
1277 map_breakpoint_numbers (arg, do_map_commands_command, &info);
1278
1279 if (info.cmd == NULL)
1280 error (_("No breakpoints specified."));
1281
1282 do_cleanups (cleanups);
1283 }
1284
1285 static void
1286 commands_command (char *arg, int from_tty)
1287 {
1288 commands_command_1 (arg, from_tty, NULL);
1289 }
1290
1291 /* Like commands_command, but instead of reading the commands from
1292 input stream, takes them from an already parsed command structure.
1293
1294 This is used by cli-script.c to DTRT with breakpoint commands
1295 that are part of if and while bodies. */
1296 enum command_control_type
1297 commands_from_control_command (char *arg, struct command_line *cmd)
1298 {
1299 commands_command_1 (arg, 0, cmd);
1300 return simple_control;
1301 }
1302
1303 /* Return non-zero if BL->TARGET_INFO contains valid information. */
1304
1305 static int
1306 bp_location_has_shadow (struct bp_location *bl)
1307 {
1308 if (bl->loc_type != bp_loc_software_breakpoint)
1309 return 0;
1310 if (!bl->inserted)
1311 return 0;
1312 if (bl->target_info.shadow_len == 0)
1313 /* BL isn't valid, or doesn't shadow memory. */
1314 return 0;
1315 return 1;
1316 }
1317
1318 /* Update BUF, which is LEN bytes read from the target address MEMADDR,
1319 by replacing any memory breakpoints with their shadowed contents.
1320
1321 The range of shadowed area by each bp_location is:
1322 bl->address - bp_location_placed_address_before_address_max
1323 up to bl->address + bp_location_shadow_len_after_address_max
1324 The range we were requested to resolve shadows for is:
1325 memaddr ... memaddr + len
1326 Thus the safe cutoff boundaries for performance optimization are
1327 memaddr + len <= (bl->address
1328 - bp_location_placed_address_before_address_max)
1329 and:
1330 bl->address + bp_location_shadow_len_after_address_max <= memaddr */
1331
1332 void
1333 breakpoint_xfer_memory (gdb_byte *readbuf, gdb_byte *writebuf,
1334 const gdb_byte *writebuf_org,
1335 ULONGEST memaddr, LONGEST len)
1336 {
1337 /* Left boundary, right boundary and median element of our binary
1338 search. */
1339 unsigned bc_l, bc_r, bc;
1340
1341 /* Find BC_L which is a leftmost element which may affect BUF
1342 content. It is safe to report lower value but a failure to
1343 report higher one. */
1344
1345 bc_l = 0;
1346 bc_r = bp_location_count;
1347 while (bc_l + 1 < bc_r)
1348 {
1349 struct bp_location *bl;
1350
1351 bc = (bc_l + bc_r) / 2;
1352 bl = bp_location[bc];
1353
1354 /* Check first BL->ADDRESS will not overflow due to the added
1355 constant. Then advance the left boundary only if we are sure
1356 the BC element can in no way affect the BUF content (MEMADDR
1357 to MEMADDR + LEN range).
1358
1359 Use the BP_LOCATION_SHADOW_LEN_AFTER_ADDRESS_MAX safety
1360 offset so that we cannot miss a breakpoint with its shadow
1361 range tail still reaching MEMADDR. */
1362
1363 if ((bl->address + bp_location_shadow_len_after_address_max
1364 >= bl->address)
1365 && (bl->address + bp_location_shadow_len_after_address_max
1366 <= memaddr))
1367 bc_l = bc;
1368 else
1369 bc_r = bc;
1370 }
1371
1372 /* Due to the binary search above, we need to make sure we pick the
1373 first location that's at BC_L's address. E.g., if there are
1374 multiple locations at the same address, BC_L may end up pointing
1375 at a duplicate location, and miss the "master"/"inserted"
1376 location. Say, given locations L1, L2 and L3 at addresses A and
1377 B:
1378
1379 L1@A, L2@A, L3@B, ...
1380
1381 BC_L could end up pointing at location L2, while the "master"
1382 location could be L1. Since the `loc->inserted' flag is only set
1383 on "master" locations, we'd forget to restore the shadow of L1
1384 and L2. */
1385 while (bc_l > 0
1386 && bp_location[bc_l]->address == bp_location[bc_l - 1]->address)
1387 bc_l--;
1388
1389 /* Now do full processing of the found relevant range of elements. */
1390
1391 for (bc = bc_l; bc < bp_location_count; bc++)
1392 {
1393 struct bp_location *bl = bp_location[bc];
1394 CORE_ADDR bp_addr = 0;
1395 int bp_size = 0;
1396 int bptoffset = 0;
1397
1398 /* bp_location array has BL->OWNER always non-NULL. */
1399 if (bl->owner->type == bp_none)
1400 warning (_("reading through apparently deleted breakpoint #%d?"),
1401 bl->owner->number);
1402
1403 /* Performance optimization: any further element can no longer affect BUF
1404 content. */
1405
1406 if (bl->address >= bp_location_placed_address_before_address_max
1407 && memaddr + len <= (bl->address
1408 - bp_location_placed_address_before_address_max))
1409 break;
1410
1411 if (!bp_location_has_shadow (bl))
1412 continue;
1413 if (!breakpoint_address_match (bl->target_info.placed_address_space, 0,
1414 current_program_space->aspace, 0))
1415 continue;
1416
1417 /* Addresses and length of the part of the breakpoint that
1418 we need to copy. */
1419 bp_addr = bl->target_info.placed_address;
1420 bp_size = bl->target_info.shadow_len;
1421
1422 if (bp_addr + bp_size <= memaddr)
1423 /* The breakpoint is entirely before the chunk of memory we
1424 are reading. */
1425 continue;
1426
1427 if (bp_addr >= memaddr + len)
1428 /* The breakpoint is entirely after the chunk of memory we are
1429 reading. */
1430 continue;
1431
1432 /* Offset within shadow_contents. */
1433 if (bp_addr < memaddr)
1434 {
1435 /* Only copy the second part of the breakpoint. */
1436 bp_size -= memaddr - bp_addr;
1437 bptoffset = memaddr - bp_addr;
1438 bp_addr = memaddr;
1439 }
1440
1441 if (bp_addr + bp_size > memaddr + len)
1442 {
1443 /* Only copy the first part of the breakpoint. */
1444 bp_size -= (bp_addr + bp_size) - (memaddr + len);
1445 }
1446
1447 if (readbuf != NULL)
1448 {
1449 /* Update the read buffer with this inserted breakpoint's
1450 shadow. */
1451 memcpy (readbuf + bp_addr - memaddr,
1452 bl->target_info.shadow_contents + bptoffset, bp_size);
1453 }
1454 else
1455 {
1456 struct gdbarch *gdbarch = bl->gdbarch;
1457 const unsigned char *bp;
1458 CORE_ADDR placed_address = bl->target_info.placed_address;
1459 unsigned placed_size = bl->target_info.placed_size;
1460
1461 /* Update the shadow with what we want to write to memory. */
1462 memcpy (bl->target_info.shadow_contents + bptoffset,
1463 writebuf_org + bp_addr - memaddr, bp_size);
1464
1465 /* Determine appropriate breakpoint contents and size for this
1466 address. */
1467 bp = gdbarch_breakpoint_from_pc (gdbarch, &placed_address, &placed_size);
1468
1469 /* Update the final write buffer with this inserted
1470 breakpoint's INSN. */
1471 memcpy (writebuf + bp_addr - memaddr, bp + bptoffset, bp_size);
1472 }
1473 }
1474 }
1475 \f
1476
1477 /* Return true if BPT is either a software breakpoint or a hardware
1478 breakpoint. */
1479
1480 int
1481 is_breakpoint (const struct breakpoint *bpt)
1482 {
1483 return (bpt->type == bp_breakpoint
1484 || bpt->type == bp_hardware_breakpoint);
1485 }
1486
1487 /* Return true if BPT is of any hardware watchpoint kind. */
1488
1489 static int
1490 is_hardware_watchpoint (const struct breakpoint *bpt)
1491 {
1492 return (bpt->type == bp_hardware_watchpoint
1493 || bpt->type == bp_read_watchpoint
1494 || bpt->type == bp_access_watchpoint);
1495 }
1496
1497 /* Return true if BPT is of any watchpoint kind, hardware or
1498 software. */
1499
1500 int
1501 is_watchpoint (const struct breakpoint *bpt)
1502 {
1503 return (is_hardware_watchpoint (bpt)
1504 || bpt->type == bp_watchpoint);
1505 }
1506
1507 /* Returns true if the current thread and its running state are safe
1508 to evaluate or update watchpoint B. Watchpoints on local
1509 expressions need to be evaluated in the context of the thread that
1510 was current when the watchpoint was created, and, that thread needs
1511 to be stopped to be able to select the correct frame context.
1512 Watchpoints on global expressions can be evaluated on any thread,
1513 and in any state. It is presently left to the target allowing
1514 memory accesses when threads are running. */
1515
1516 static int
1517 watchpoint_in_thread_scope (struct watchpoint *b)
1518 {
1519 return (b->base.pspace == current_program_space
1520 && (ptid_equal (b->watchpoint_thread, null_ptid)
1521 || (ptid_equal (inferior_ptid, b->watchpoint_thread)
1522 && !is_executing (inferior_ptid))));
1523 }
1524
1525 /* Set watchpoint B to disp_del_at_next_stop, even including its possible
1526 associated bp_watchpoint_scope breakpoint. */
1527
1528 static void
1529 watchpoint_del_at_next_stop (struct watchpoint *w)
1530 {
1531 struct breakpoint *b = &w->base;
1532
1533 if (b->related_breakpoint != b)
1534 {
1535 gdb_assert (b->related_breakpoint->type == bp_watchpoint_scope);
1536 gdb_assert (b->related_breakpoint->related_breakpoint == b);
1537 b->related_breakpoint->disposition = disp_del_at_next_stop;
1538 b->related_breakpoint->related_breakpoint = b->related_breakpoint;
1539 b->related_breakpoint = b;
1540 }
1541 b->disposition = disp_del_at_next_stop;
1542 }
1543
1544 /* Assuming that B is a watchpoint:
1545 - Reparse watchpoint expression, if REPARSE is non-zero
1546 - Evaluate expression and store the result in B->val
1547 - Evaluate the condition if there is one, and store the result
1548 in b->loc->cond.
1549 - Update the list of values that must be watched in B->loc.
1550
1551 If the watchpoint disposition is disp_del_at_next_stop, then do
1552 nothing. If this is local watchpoint that is out of scope, delete
1553 it.
1554
1555 Even with `set breakpoint always-inserted on' the watchpoints are
1556 removed + inserted on each stop here. Normal breakpoints must
1557 never be removed because they might be missed by a running thread
1558 when debugging in non-stop mode. On the other hand, hardware
1559 watchpoints (is_hardware_watchpoint; processed here) are specific
1560 to each LWP since they are stored in each LWP's hardware debug
1561 registers. Therefore, such LWP must be stopped first in order to
1562 be able to modify its hardware watchpoints.
1563
1564 Hardware watchpoints must be reset exactly once after being
1565 presented to the user. It cannot be done sooner, because it would
1566 reset the data used to present the watchpoint hit to the user. And
1567 it must not be done later because it could display the same single
1568 watchpoint hit during multiple GDB stops. Note that the latter is
1569 relevant only to the hardware watchpoint types bp_read_watchpoint
1570 and bp_access_watchpoint. False hit by bp_hardware_watchpoint is
1571 not user-visible - its hit is suppressed if the memory content has
1572 not changed.
1573
1574 The following constraints influence the location where we can reset
1575 hardware watchpoints:
1576
1577 * target_stopped_by_watchpoint and target_stopped_data_address are
1578 called several times when GDB stops.
1579
1580 [linux]
1581 * Multiple hardware watchpoints can be hit at the same time,
1582 causing GDB to stop. GDB only presents one hardware watchpoint
1583 hit at a time as the reason for stopping, and all the other hits
1584 are presented later, one after the other, each time the user
1585 requests the execution to be resumed. Execution is not resumed
1586 for the threads still having pending hit event stored in
1587 LWP_INFO->STATUS. While the watchpoint is already removed from
1588 the inferior on the first stop the thread hit event is kept being
1589 reported from its cached value by linux_nat_stopped_data_address
1590 until the real thread resume happens after the watchpoint gets
1591 presented and thus its LWP_INFO->STATUS gets reset.
1592
1593 Therefore the hardware watchpoint hit can get safely reset on the
1594 watchpoint removal from inferior. */
1595
1596 static void
1597 update_watchpoint (struct watchpoint *b, int reparse)
1598 {
1599 int within_current_scope;
1600 struct frame_id saved_frame_id;
1601 int frame_saved;
1602
1603 /* If this is a local watchpoint, we only want to check if the
1604 watchpoint frame is in scope if the current thread is the thread
1605 that was used to create the watchpoint. */
1606 if (!watchpoint_in_thread_scope (b))
1607 return;
1608
1609 if (b->base.disposition == disp_del_at_next_stop)
1610 return;
1611
1612 frame_saved = 0;
1613
1614 /* Determine if the watchpoint is within scope. */
1615 if (b->exp_valid_block == NULL)
1616 within_current_scope = 1;
1617 else
1618 {
1619 struct frame_info *fi = get_current_frame ();
1620 struct gdbarch *frame_arch = get_frame_arch (fi);
1621 CORE_ADDR frame_pc = get_frame_pc (fi);
1622
1623 /* If we're in a function epilogue, unwinding may not work
1624 properly, so do not attempt to recreate locations at this
1625 point. See similar comments in watchpoint_check. */
1626 if (gdbarch_in_function_epilogue_p (frame_arch, frame_pc))
1627 return;
1628
1629 /* Save the current frame's ID so we can restore it after
1630 evaluating the watchpoint expression on its own frame. */
1631 /* FIXME drow/2003-09-09: It would be nice if evaluate_expression
1632 took a frame parameter, so that we didn't have to change the
1633 selected frame. */
1634 frame_saved = 1;
1635 saved_frame_id = get_frame_id (get_selected_frame (NULL));
1636
1637 fi = frame_find_by_id (b->watchpoint_frame);
1638 within_current_scope = (fi != NULL);
1639 if (within_current_scope)
1640 select_frame (fi);
1641 }
1642
1643 /* We don't free locations. They are stored in the bp_location array
1644 and update_global_location_list will eventually delete them and
1645 remove breakpoints if needed. */
1646 b->base.loc = NULL;
1647
1648 if (within_current_scope && reparse)
1649 {
1650 char *s;
1651
1652 if (b->exp)
1653 {
1654 xfree (b->exp);
1655 b->exp = NULL;
1656 }
1657 s = b->exp_string_reparse ? b->exp_string_reparse : b->exp_string;
1658 b->exp = parse_exp_1 (&s, b->exp_valid_block, 0);
1659 /* If the meaning of expression itself changed, the old value is
1660 no longer relevant. We don't want to report a watchpoint hit
1661 to the user when the old value and the new value may actually
1662 be completely different objects. */
1663 value_free (b->val);
1664 b->val = NULL;
1665 b->val_valid = 0;
1666
1667 /* Note that unlike with breakpoints, the watchpoint's condition
1668 expression is stored in the breakpoint object, not in the
1669 locations (re)created below. */
1670 if (b->base.cond_string != NULL)
1671 {
1672 if (b->cond_exp != NULL)
1673 {
1674 xfree (b->cond_exp);
1675 b->cond_exp = NULL;
1676 }
1677
1678 s = b->base.cond_string;
1679 b->cond_exp = parse_exp_1 (&s, b->cond_exp_valid_block, 0);
1680 }
1681 }
1682
1683 /* If we failed to parse the expression, for example because
1684 it refers to a global variable in a not-yet-loaded shared library,
1685 don't try to insert watchpoint. We don't automatically delete
1686 such watchpoint, though, since failure to parse expression
1687 is different from out-of-scope watchpoint. */
1688 if ( !target_has_execution)
1689 {
1690 /* Without execution, memory can't change. No use to try and
1691 set watchpoint locations. The watchpoint will be reset when
1692 the target gains execution, through breakpoint_re_set. */
1693 }
1694 else if (within_current_scope && b->exp)
1695 {
1696 int pc = 0;
1697 struct value *val_chain, *v, *result, *next;
1698 struct program_space *frame_pspace;
1699
1700 fetch_subexp_value (b->exp, &pc, &v, &result, &val_chain);
1701
1702 /* Avoid setting b->val if it's already set. The meaning of
1703 b->val is 'the last value' user saw, and we should update
1704 it only if we reported that last value to user. As it
1705 happens, the code that reports it updates b->val directly.
1706 We don't keep track of the memory value for masked
1707 watchpoints. */
1708 if (!b->val_valid && !is_masked_watchpoint (&b->base))
1709 {
1710 b->val = v;
1711 b->val_valid = 1;
1712 }
1713
1714 frame_pspace = get_frame_program_space (get_selected_frame (NULL));
1715
1716 /* Look at each value on the value chain. */
1717 for (v = val_chain; v; v = value_next (v))
1718 {
1719 /* If it's a memory location, and GDB actually needed
1720 its contents to evaluate the expression, then we
1721 must watch it. If the first value returned is
1722 still lazy, that means an error occurred reading it;
1723 watch it anyway in case it becomes readable. */
1724 if (VALUE_LVAL (v) == lval_memory
1725 && (v == val_chain || ! value_lazy (v)))
1726 {
1727 struct type *vtype = check_typedef (value_type (v));
1728
1729 /* We only watch structs and arrays if user asked
1730 for it explicitly, never if they just happen to
1731 appear in the middle of some value chain. */
1732 if (v == result
1733 || (TYPE_CODE (vtype) != TYPE_CODE_STRUCT
1734 && TYPE_CODE (vtype) != TYPE_CODE_ARRAY))
1735 {
1736 CORE_ADDR addr;
1737 int len, type;
1738 struct bp_location *loc, **tmp;
1739
1740 addr = value_address (v);
1741 len = TYPE_LENGTH (value_type (v));
1742 type = hw_write;
1743 if (b->base.type == bp_read_watchpoint)
1744 type = hw_read;
1745 else if (b->base.type == bp_access_watchpoint)
1746 type = hw_access;
1747
1748 loc = allocate_bp_location (&b->base);
1749 for (tmp = &(b->base.loc); *tmp != NULL; tmp = &((*tmp)->next))
1750 ;
1751 *tmp = loc;
1752 loc->gdbarch = get_type_arch (value_type (v));
1753
1754 loc->pspace = frame_pspace;
1755 loc->address = addr;
1756 loc->length = len;
1757 loc->watchpoint_type = type;
1758 }
1759 }
1760 }
1761
1762 /* Change the type of breakpoint between hardware assisted or
1763 an ordinary watchpoint depending on the hardware support
1764 and free hardware slots. REPARSE is set when the inferior
1765 is started. */
1766 if (reparse)
1767 {
1768 int reg_cnt;
1769 enum bp_loc_type loc_type;
1770 struct bp_location *bl;
1771
1772 reg_cnt = can_use_hardware_watchpoint (val_chain);
1773
1774 if (reg_cnt)
1775 {
1776 int i, target_resources_ok, other_type_used;
1777 enum bptype type;
1778
1779 /* Use an exact watchpoint when there's only one memory region to be
1780 watched, and only one debug register is needed to watch it. */
1781 b->exact = target_exact_watchpoints && reg_cnt == 1;
1782
1783 /* We need to determine how many resources are already
1784 used for all other hardware watchpoints plus this one
1785 to see if we still have enough resources to also fit
1786 this watchpoint in as well. */
1787
1788 /* If this is a software watchpoint, we try to turn it
1789 to a hardware one -- count resources as if B was of
1790 hardware watchpoint type. */
1791 type = b->base.type;
1792 if (type == bp_watchpoint)
1793 type = bp_hardware_watchpoint;
1794
1795 /* This watchpoint may or may not have been placed on
1796 the list yet at this point (it won't be in the list
1797 if we're trying to create it for the first time,
1798 through watch_command), so always account for it
1799 manually. */
1800
1801 /* Count resources used by all watchpoints except B. */
1802 i = hw_watchpoint_used_count_others (&b->base, type, &other_type_used);
1803
1804 /* Add in the resources needed for B. */
1805 i += hw_watchpoint_use_count (&b->base);
1806
1807 target_resources_ok
1808 = target_can_use_hardware_watchpoint (type, i, other_type_used);
1809 if (target_resources_ok <= 0)
1810 {
1811 int sw_mode = b->base.ops->works_in_software_mode (&b->base);
1812
1813 if (target_resources_ok == 0 && !sw_mode)
1814 error (_("Target does not support this type of "
1815 "hardware watchpoint."));
1816 else if (target_resources_ok < 0 && !sw_mode)
1817 error (_("There are not enough available hardware "
1818 "resources for this watchpoint."));
1819
1820 /* Downgrade to software watchpoint. */
1821 b->base.type = bp_watchpoint;
1822 }
1823 else
1824 {
1825 /* If this was a software watchpoint, we've just
1826 found we have enough resources to turn it to a
1827 hardware watchpoint. Otherwise, this is a
1828 nop. */
1829 b->base.type = type;
1830 }
1831 }
1832 else if (!b->base.ops->works_in_software_mode (&b->base))
1833 error (_("Expression cannot be implemented with "
1834 "read/access watchpoint."));
1835 else
1836 b->base.type = bp_watchpoint;
1837
1838 loc_type = (b->base.type == bp_watchpoint? bp_loc_other
1839 : bp_loc_hardware_watchpoint);
1840 for (bl = b->base.loc; bl; bl = bl->next)
1841 bl->loc_type = loc_type;
1842 }
1843
1844 for (v = val_chain; v; v = next)
1845 {
1846 next = value_next (v);
1847 if (v != b->val)
1848 value_free (v);
1849 }
1850
1851 /* If a software watchpoint is not watching any memory, then the
1852 above left it without any location set up. But,
1853 bpstat_stop_status requires a location to be able to report
1854 stops, so make sure there's at least a dummy one. */
1855 if (b->base.type == bp_watchpoint && b->base.loc == NULL)
1856 {
1857 struct breakpoint *base = &b->base;
1858 base->loc = allocate_bp_location (base);
1859 base->loc->pspace = frame_pspace;
1860 base->loc->address = -1;
1861 base->loc->length = -1;
1862 base->loc->watchpoint_type = -1;
1863 }
1864 }
1865 else if (!within_current_scope)
1866 {
1867 printf_filtered (_("\
1868 Watchpoint %d deleted because the program has left the block\n\
1869 in which its expression is valid.\n"),
1870 b->base.number);
1871 watchpoint_del_at_next_stop (b);
1872 }
1873
1874 /* Restore the selected frame. */
1875 if (frame_saved)
1876 select_frame (frame_find_by_id (saved_frame_id));
1877 }
1878
1879
1880 /* Returns 1 iff breakpoint location should be
1881 inserted in the inferior. We don't differentiate the type of BL's owner
1882 (breakpoint vs. tracepoint), although insert_location in tracepoint's
1883 breakpoint_ops is not defined, because in insert_bp_location,
1884 tracepoint's insert_location will not be called. */
1885 static int
1886 should_be_inserted (struct bp_location *bl)
1887 {
1888 if (bl->owner == NULL || !breakpoint_enabled (bl->owner))
1889 return 0;
1890
1891 if (bl->owner->disposition == disp_del_at_next_stop)
1892 return 0;
1893
1894 if (!bl->enabled || bl->shlib_disabled || bl->duplicate)
1895 return 0;
1896
1897 if (user_breakpoint_p (bl->owner) && bl->pspace->executing_startup)
1898 return 0;
1899
1900 /* This is set for example, when we're attached to the parent of a
1901 vfork, and have detached from the child. The child is running
1902 free, and we expect it to do an exec or exit, at which point the
1903 OS makes the parent schedulable again (and the target reports
1904 that the vfork is done). Until the child is done with the shared
1905 memory region, do not insert breakpoints in the parent, otherwise
1906 the child could still trip on the parent's breakpoints. Since
1907 the parent is blocked anyway, it won't miss any breakpoint. */
1908 if (bl->pspace->breakpoints_not_allowed)
1909 return 0;
1910
1911 return 1;
1912 }
1913
1914 /* Same as should_be_inserted but does the check assuming
1915 that the location is not duplicated. */
1916
1917 static int
1918 unduplicated_should_be_inserted (struct bp_location *bl)
1919 {
1920 int result;
1921 const int save_duplicate = bl->duplicate;
1922
1923 bl->duplicate = 0;
1924 result = should_be_inserted (bl);
1925 bl->duplicate = save_duplicate;
1926 return result;
1927 }
1928
1929 /* Parses a conditional described by an expression COND into an
1930 agent expression bytecode suitable for evaluation
1931 by the bytecode interpreter. Return NULL if there was
1932 any error during parsing. */
1933
1934 static struct agent_expr *
1935 parse_cond_to_aexpr (CORE_ADDR scope, struct expression *cond)
1936 {
1937 struct agent_expr *aexpr = NULL;
1938 struct cleanup *old_chain = NULL;
1939 volatile struct gdb_exception ex;
1940
1941 if (!cond)
1942 return NULL;
1943
1944 /* We don't want to stop processing, so catch any errors
1945 that may show up. */
1946 TRY_CATCH (ex, RETURN_MASK_ERROR)
1947 {
1948 aexpr = gen_eval_for_expr (scope, cond);
1949 }
1950
1951 if (ex.reason < 0)
1952 {
1953 /* If we got here, it means the condition could not be parsed to a valid
1954 bytecode expression and thus can't be evaluated on the target's side.
1955 It's no use iterating through the conditions. */
1956 return NULL;
1957 }
1958
1959 /* We have a valid agent expression. */
1960 return aexpr;
1961 }
1962
1963 /* Based on location BL, create a list of breakpoint conditions to be
1964 passed on to the target. If we have duplicated locations with different
1965 conditions, we will add such conditions to the list. The idea is that the
1966 target will evaluate the list of conditions and will only notify GDB when
1967 one of them is true. */
1968
1969 static void
1970 build_target_condition_list (struct bp_location *bl)
1971 {
1972 struct bp_location **locp = NULL, **loc2p;
1973 int null_condition_or_parse_error = 0;
1974 int modified = bl->needs_update;
1975 struct bp_location *loc;
1976
1977 /* This is only meaningful if the target is
1978 evaluating conditions and if the user has
1979 opted for condition evaluation on the target's
1980 side. */
1981 if (gdb_evaluates_breakpoint_condition_p ()
1982 || !target_supports_evaluation_of_breakpoint_conditions ())
1983 return;
1984
1985 /* Do a first pass to check for locations with no assigned
1986 conditions or conditions that fail to parse to a valid agent expression
1987 bytecode. If any of these happen, then it's no use to send conditions
1988 to the target since this location will always trigger and generate a
1989 response back to GDB. */
1990 ALL_BP_LOCATIONS_AT_ADDR (loc2p, locp, bl->address)
1991 {
1992 loc = (*loc2p);
1993 if (is_breakpoint (loc->owner) && loc->pspace->num == bl->pspace->num)
1994 {
1995 if (modified)
1996 {
1997 struct agent_expr *aexpr;
1998
1999 /* Re-parse the conditions since something changed. In that
2000 case we already freed the condition bytecodes (see
2001 force_breakpoint_reinsertion). We just
2002 need to parse the condition to bytecodes again. */
2003 aexpr = parse_cond_to_aexpr (bl->address, loc->cond);
2004 loc->cond_bytecode = aexpr;
2005
2006 /* Check if we managed to parse the conditional expression
2007 correctly. If not, we will not send this condition
2008 to the target. */
2009 if (aexpr)
2010 continue;
2011 }
2012
2013 /* If we have a NULL bytecode expression, it means something
2014 went wrong or we have a null condition expression. */
2015 if (!loc->cond_bytecode)
2016 {
2017 null_condition_or_parse_error = 1;
2018 break;
2019 }
2020 }
2021 }
2022
2023 /* If any of these happened, it means we will have to evaluate the conditions
2024 for the location's address on gdb's side. It is no use keeping bytecodes
2025 for all the other duplicate locations, thus we free all of them here.
2026
2027 This is so we have a finer control over which locations' conditions are
2028 being evaluated by GDB or the remote stub. */
2029 if (null_condition_or_parse_error)
2030 {
2031 ALL_BP_LOCATIONS_AT_ADDR (loc2p, locp, bl->address)
2032 {
2033 loc = (*loc2p);
2034 if (is_breakpoint (loc->owner) && loc->pspace->num == bl->pspace->num)
2035 {
2036 /* Only go as far as the first NULL bytecode is
2037 located. */
2038 if (!loc->cond_bytecode)
2039 return;
2040
2041 free_agent_expr (loc->cond_bytecode);
2042 loc->cond_bytecode = NULL;
2043 }
2044 }
2045 }
2046
2047 /* No NULL conditions or failed bytecode generation. Build a condition list
2048 for this location's address. */
2049 ALL_BP_LOCATIONS_AT_ADDR (loc2p, locp, bl->address)
2050 {
2051 loc = (*loc2p);
2052 if (loc->cond
2053 && is_breakpoint (loc->owner)
2054 && loc->pspace->num == bl->pspace->num
2055 && loc->owner->enable_state == bp_enabled
2056 && loc->enabled)
2057 /* Add the condition to the vector. This will be used later to send the
2058 conditions to the target. */
2059 VEC_safe_push (agent_expr_p, bl->target_info.conditions,
2060 loc->cond_bytecode);
2061 }
2062
2063 return;
2064 }
2065
2066 /* Insert a low-level "breakpoint" of some type. BL is the breakpoint
2067 location. Any error messages are printed to TMP_ERROR_STREAM; and
2068 DISABLED_BREAKS, and HW_BREAKPOINT_ERROR are used to report problems.
2069 Returns 0 for success, 1 if the bp_location type is not supported or
2070 -1 for failure.
2071
2072 NOTE drow/2003-09-09: This routine could be broken down to an
2073 object-style method for each breakpoint or catchpoint type. */
2074 static int
2075 insert_bp_location (struct bp_location *bl,
2076 struct ui_file *tmp_error_stream,
2077 int *disabled_breaks,
2078 int *hw_breakpoint_error)
2079 {
2080 int val = 0;
2081
2082 if (!should_be_inserted (bl) || (bl->inserted && !bl->needs_update))
2083 return 0;
2084
2085 /* Initialize the target-specific information. */
2086 memset (&bl->target_info, 0, sizeof (bl->target_info));
2087 bl->target_info.placed_address = bl->address;
2088 bl->target_info.placed_address_space = bl->pspace->aspace;
2089 bl->target_info.length = bl->length;
2090
2091 /* When working with target-side conditions, we must pass all the conditions
2092 for the same breakpoint address down to the target since GDB will not
2093 insert those locations. With a list of breakpoint conditions, the target
2094 can decide when to stop and notify GDB. */
2095
2096 if (is_breakpoint (bl->owner))
2097 {
2098 build_target_condition_list (bl);
2099 /* Reset the condition modification marker. */
2100 bl->needs_update = 0;
2101 }
2102
2103 if (bl->loc_type == bp_loc_software_breakpoint
2104 || bl->loc_type == bp_loc_hardware_breakpoint)
2105 {
2106 if (bl->owner->type != bp_hardware_breakpoint)
2107 {
2108 /* If the explicitly specified breakpoint type
2109 is not hardware breakpoint, check the memory map to see
2110 if the breakpoint address is in read only memory or not.
2111
2112 Two important cases are:
2113 - location type is not hardware breakpoint, memory
2114 is readonly. We change the type of the location to
2115 hardware breakpoint.
2116 - location type is hardware breakpoint, memory is
2117 read-write. This means we've previously made the
2118 location hardware one, but then the memory map changed,
2119 so we undo.
2120
2121 When breakpoints are removed, remove_breakpoints will use
2122 location types we've just set here, the only possible
2123 problem is that memory map has changed during running
2124 program, but it's not going to work anyway with current
2125 gdb. */
2126 struct mem_region *mr
2127 = lookup_mem_region (bl->target_info.placed_address);
2128
2129 if (mr)
2130 {
2131 if (automatic_hardware_breakpoints)
2132 {
2133 enum bp_loc_type new_type;
2134
2135 if (mr->attrib.mode != MEM_RW)
2136 new_type = bp_loc_hardware_breakpoint;
2137 else
2138 new_type = bp_loc_software_breakpoint;
2139
2140 if (new_type != bl->loc_type)
2141 {
2142 static int said = 0;
2143
2144 bl->loc_type = new_type;
2145 if (!said)
2146 {
2147 fprintf_filtered (gdb_stdout,
2148 _("Note: automatically using "
2149 "hardware breakpoints for "
2150 "read-only addresses.\n"));
2151 said = 1;
2152 }
2153 }
2154 }
2155 else if (bl->loc_type == bp_loc_software_breakpoint
2156 && mr->attrib.mode != MEM_RW)
2157 warning (_("cannot set software breakpoint "
2158 "at readonly address %s"),
2159 paddress (bl->gdbarch, bl->address));
2160 }
2161 }
2162
2163 /* First check to see if we have to handle an overlay. */
2164 if (overlay_debugging == ovly_off
2165 || bl->section == NULL
2166 || !(section_is_overlay (bl->section)))
2167 {
2168 /* No overlay handling: just set the breakpoint. */
2169
2170 val = bl->owner->ops->insert_location (bl);
2171 }
2172 else
2173 {
2174 /* This breakpoint is in an overlay section.
2175 Shall we set a breakpoint at the LMA? */
2176 if (!overlay_events_enabled)
2177 {
2178 /* Yes -- overlay event support is not active,
2179 so we must try to set a breakpoint at the LMA.
2180 This will not work for a hardware breakpoint. */
2181 if (bl->loc_type == bp_loc_hardware_breakpoint)
2182 warning (_("hardware breakpoint %d not supported in overlay!"),
2183 bl->owner->number);
2184 else
2185 {
2186 CORE_ADDR addr = overlay_unmapped_address (bl->address,
2187 bl->section);
2188 /* Set a software (trap) breakpoint at the LMA. */
2189 bl->overlay_target_info = bl->target_info;
2190 bl->overlay_target_info.placed_address = addr;
2191 val = target_insert_breakpoint (bl->gdbarch,
2192 &bl->overlay_target_info);
2193 if (val != 0)
2194 fprintf_unfiltered (tmp_error_stream,
2195 "Overlay breakpoint %d "
2196 "failed: in ROM?\n",
2197 bl->owner->number);
2198 }
2199 }
2200 /* Shall we set a breakpoint at the VMA? */
2201 if (section_is_mapped (bl->section))
2202 {
2203 /* Yes. This overlay section is mapped into memory. */
2204 val = bl->owner->ops->insert_location (bl);
2205 }
2206 else
2207 {
2208 /* No. This breakpoint will not be inserted.
2209 No error, but do not mark the bp as 'inserted'. */
2210 return 0;
2211 }
2212 }
2213
2214 if (val)
2215 {
2216 /* Can't set the breakpoint. */
2217 if (solib_name_from_address (bl->pspace, bl->address))
2218 {
2219 /* See also: disable_breakpoints_in_shlibs. */
2220 val = 0;
2221 bl->shlib_disabled = 1;
2222 observer_notify_breakpoint_modified (bl->owner);
2223 if (!*disabled_breaks)
2224 {
2225 fprintf_unfiltered (tmp_error_stream,
2226 "Cannot insert breakpoint %d.\n",
2227 bl->owner->number);
2228 fprintf_unfiltered (tmp_error_stream,
2229 "Temporarily disabling shared "
2230 "library breakpoints:\n");
2231 }
2232 *disabled_breaks = 1;
2233 fprintf_unfiltered (tmp_error_stream,
2234 "breakpoint #%d\n", bl->owner->number);
2235 }
2236 else
2237 {
2238 if (bl->loc_type == bp_loc_hardware_breakpoint)
2239 {
2240 *hw_breakpoint_error = 1;
2241 fprintf_unfiltered (tmp_error_stream,
2242 "Cannot insert hardware "
2243 "breakpoint %d.\n",
2244 bl->owner->number);
2245 }
2246 else
2247 {
2248 fprintf_unfiltered (tmp_error_stream,
2249 "Cannot insert breakpoint %d.\n",
2250 bl->owner->number);
2251 fprintf_filtered (tmp_error_stream,
2252 "Error accessing memory address ");
2253 fputs_filtered (paddress (bl->gdbarch, bl->address),
2254 tmp_error_stream);
2255 fprintf_filtered (tmp_error_stream, ": %s.\n",
2256 safe_strerror (val));
2257 }
2258
2259 }
2260 }
2261 else
2262 bl->inserted = 1;
2263
2264 return val;
2265 }
2266
2267 else if (bl->loc_type == bp_loc_hardware_watchpoint
2268 /* NOTE drow/2003-09-08: This state only exists for removing
2269 watchpoints. It's not clear that it's necessary... */
2270 && bl->owner->disposition != disp_del_at_next_stop)
2271 {
2272 gdb_assert (bl->owner->ops != NULL
2273 && bl->owner->ops->insert_location != NULL);
2274
2275 val = bl->owner->ops->insert_location (bl);
2276
2277 /* If trying to set a read-watchpoint, and it turns out it's not
2278 supported, try emulating one with an access watchpoint. */
2279 if (val == 1 && bl->watchpoint_type == hw_read)
2280 {
2281 struct bp_location *loc, **loc_temp;
2282
2283 /* But don't try to insert it, if there's already another
2284 hw_access location that would be considered a duplicate
2285 of this one. */
2286 ALL_BP_LOCATIONS (loc, loc_temp)
2287 if (loc != bl
2288 && loc->watchpoint_type == hw_access
2289 && watchpoint_locations_match (bl, loc))
2290 {
2291 bl->duplicate = 1;
2292 bl->inserted = 1;
2293 bl->target_info = loc->target_info;
2294 bl->watchpoint_type = hw_access;
2295 val = 0;
2296 break;
2297 }
2298
2299 if (val == 1)
2300 {
2301 bl->watchpoint_type = hw_access;
2302 val = bl->owner->ops->insert_location (bl);
2303
2304 if (val)
2305 /* Back to the original value. */
2306 bl->watchpoint_type = hw_read;
2307 }
2308 }
2309
2310 bl->inserted = (val == 0);
2311 }
2312
2313 else if (bl->owner->type == bp_catchpoint)
2314 {
2315 gdb_assert (bl->owner->ops != NULL
2316 && bl->owner->ops->insert_location != NULL);
2317
2318 val = bl->owner->ops->insert_location (bl);
2319 if (val)
2320 {
2321 bl->owner->enable_state = bp_disabled;
2322
2323 if (val == 1)
2324 warning (_("\
2325 Error inserting catchpoint %d: Your system does not support this type\n\
2326 of catchpoint."), bl->owner->number);
2327 else
2328 warning (_("Error inserting catchpoint %d."), bl->owner->number);
2329 }
2330
2331 bl->inserted = (val == 0);
2332
2333 /* We've already printed an error message if there was a problem
2334 inserting this catchpoint, and we've disabled the catchpoint,
2335 so just return success. */
2336 return 0;
2337 }
2338
2339 return 0;
2340 }
2341
2342 /* This function is called when program space PSPACE is about to be
2343 deleted. It takes care of updating breakpoints to not reference
2344 PSPACE anymore. */
2345
2346 void
2347 breakpoint_program_space_exit (struct program_space *pspace)
2348 {
2349 struct breakpoint *b, *b_temp;
2350 struct bp_location *loc, **loc_temp;
2351
2352 /* Remove any breakpoint that was set through this program space. */
2353 ALL_BREAKPOINTS_SAFE (b, b_temp)
2354 {
2355 if (b->pspace == pspace)
2356 delete_breakpoint (b);
2357 }
2358
2359 /* Breakpoints set through other program spaces could have locations
2360 bound to PSPACE as well. Remove those. */
2361 ALL_BP_LOCATIONS (loc, loc_temp)
2362 {
2363 struct bp_location *tmp;
2364
2365 if (loc->pspace == pspace)
2366 {
2367 /* ALL_BP_LOCATIONS bp_location has LOC->OWNER always non-NULL. */
2368 if (loc->owner->loc == loc)
2369 loc->owner->loc = loc->next;
2370 else
2371 for (tmp = loc->owner->loc; tmp->next != NULL; tmp = tmp->next)
2372 if (tmp->next == loc)
2373 {
2374 tmp->next = loc->next;
2375 break;
2376 }
2377 }
2378 }
2379
2380 /* Now update the global location list to permanently delete the
2381 removed locations above. */
2382 update_global_location_list (0);
2383 }
2384
2385 /* Make sure all breakpoints are inserted in inferior.
2386 Throws exception on any error.
2387 A breakpoint that is already inserted won't be inserted
2388 again, so calling this function twice is safe. */
2389 void
2390 insert_breakpoints (void)
2391 {
2392 struct breakpoint *bpt;
2393
2394 ALL_BREAKPOINTS (bpt)
2395 if (is_hardware_watchpoint (bpt))
2396 {
2397 struct watchpoint *w = (struct watchpoint *) bpt;
2398
2399 update_watchpoint (w, 0 /* don't reparse. */);
2400 }
2401
2402 update_global_location_list (1);
2403
2404 /* update_global_location_list does not insert breakpoints when
2405 always_inserted_mode is not enabled. Explicitly insert them
2406 now. */
2407 if (!breakpoints_always_inserted_mode ())
2408 insert_breakpoint_locations ();
2409 }
2410
2411 /* This is used when we need to synch breakpoint conditions between GDB and the
2412 target. It is the case with deleting and disabling of breakpoints when using
2413 always-inserted mode. */
2414
2415 static void
2416 update_inserted_breakpoint_locations (void)
2417 {
2418 struct bp_location *bl, **blp_tmp;
2419 int error_flag = 0;
2420 int val = 0;
2421 int disabled_breaks = 0;
2422 int hw_breakpoint_error = 0;
2423
2424 struct ui_file *tmp_error_stream = mem_fileopen ();
2425 struct cleanup *cleanups = make_cleanup_ui_file_delete (tmp_error_stream);
2426
2427 /* Explicitly mark the warning -- this will only be printed if
2428 there was an error. */
2429 fprintf_unfiltered (tmp_error_stream, "Warning:\n");
2430
2431 save_current_space_and_thread ();
2432
2433 ALL_BP_LOCATIONS (bl, blp_tmp)
2434 {
2435 /* We only want to update software breakpoints and hardware
2436 breakpoints. */
2437 if (!is_breakpoint (bl->owner))
2438 continue;
2439
2440 /* We only want to update locations that are already inserted
2441 and need updating. This is to avoid unwanted insertion during
2442 deletion of breakpoints. */
2443 if (!bl->inserted || (bl->inserted && !bl->needs_update))
2444 continue;
2445
2446 switch_to_program_space_and_thread (bl->pspace);
2447
2448 /* For targets that support global breakpoints, there's no need
2449 to select an inferior to insert breakpoint to. In fact, even
2450 if we aren't attached to any process yet, we should still
2451 insert breakpoints. */
2452 if (!gdbarch_has_global_breakpoints (target_gdbarch)
2453 && ptid_equal (inferior_ptid, null_ptid))
2454 continue;
2455
2456 val = insert_bp_location (bl, tmp_error_stream, &disabled_breaks,
2457 &hw_breakpoint_error);
2458 if (val)
2459 error_flag = val;
2460 }
2461
2462 if (error_flag)
2463 {
2464 target_terminal_ours_for_output ();
2465 error_stream (tmp_error_stream);
2466 }
2467
2468 do_cleanups (cleanups);
2469 }
2470
2471 /* Used when starting or continuing the program. */
2472
2473 static void
2474 insert_breakpoint_locations (void)
2475 {
2476 struct breakpoint *bpt;
2477 struct bp_location *bl, **blp_tmp;
2478 int error_flag = 0;
2479 int val = 0;
2480 int disabled_breaks = 0;
2481 int hw_breakpoint_error = 0;
2482
2483 struct ui_file *tmp_error_stream = mem_fileopen ();
2484 struct cleanup *cleanups = make_cleanup_ui_file_delete (tmp_error_stream);
2485
2486 /* Explicitly mark the warning -- this will only be printed if
2487 there was an error. */
2488 fprintf_unfiltered (tmp_error_stream, "Warning:\n");
2489
2490 save_current_space_and_thread ();
2491
2492 ALL_BP_LOCATIONS (bl, blp_tmp)
2493 {
2494 if (!should_be_inserted (bl) || (bl->inserted && !bl->needs_update))
2495 continue;
2496
2497 /* There is no point inserting thread-specific breakpoints if
2498 the thread no longer exists. ALL_BP_LOCATIONS bp_location
2499 has BL->OWNER always non-NULL. */
2500 if (bl->owner->thread != -1
2501 && !valid_thread_id (bl->owner->thread))
2502 continue;
2503
2504 switch_to_program_space_and_thread (bl->pspace);
2505
2506 /* For targets that support global breakpoints, there's no need
2507 to select an inferior to insert breakpoint to. In fact, even
2508 if we aren't attached to any process yet, we should still
2509 insert breakpoints. */
2510 if (!gdbarch_has_global_breakpoints (target_gdbarch)
2511 && ptid_equal (inferior_ptid, null_ptid))
2512 continue;
2513
2514 val = insert_bp_location (bl, tmp_error_stream, &disabled_breaks,
2515 &hw_breakpoint_error);
2516 if (val)
2517 error_flag = val;
2518 }
2519
2520 /* If we failed to insert all locations of a watchpoint, remove
2521 them, as half-inserted watchpoint is of limited use. */
2522 ALL_BREAKPOINTS (bpt)
2523 {
2524 int some_failed = 0;
2525 struct bp_location *loc;
2526
2527 if (!is_hardware_watchpoint (bpt))
2528 continue;
2529
2530 if (!breakpoint_enabled (bpt))
2531 continue;
2532
2533 if (bpt->disposition == disp_del_at_next_stop)
2534 continue;
2535
2536 for (loc = bpt->loc; loc; loc = loc->next)
2537 if (!loc->inserted && should_be_inserted (loc))
2538 {
2539 some_failed = 1;
2540 break;
2541 }
2542 if (some_failed)
2543 {
2544 for (loc = bpt->loc; loc; loc = loc->next)
2545 if (loc->inserted)
2546 remove_breakpoint (loc, mark_uninserted);
2547
2548 hw_breakpoint_error = 1;
2549 fprintf_unfiltered (tmp_error_stream,
2550 "Could not insert hardware watchpoint %d.\n",
2551 bpt->number);
2552 error_flag = -1;
2553 }
2554 }
2555
2556 if (error_flag)
2557 {
2558 /* If a hardware breakpoint or watchpoint was inserted, add a
2559 message about possibly exhausted resources. */
2560 if (hw_breakpoint_error)
2561 {
2562 fprintf_unfiltered (tmp_error_stream,
2563 "Could not insert hardware breakpoints:\n\
2564 You may have requested too many hardware breakpoints/watchpoints.\n");
2565 }
2566 target_terminal_ours_for_output ();
2567 error_stream (tmp_error_stream);
2568 }
2569
2570 do_cleanups (cleanups);
2571 }
2572
2573 /* Used when the program stops.
2574 Returns zero if successful, or non-zero if there was a problem
2575 removing a breakpoint location. */
2576
2577 int
2578 remove_breakpoints (void)
2579 {
2580 struct bp_location *bl, **blp_tmp;
2581 int val = 0;
2582
2583 ALL_BP_LOCATIONS (bl, blp_tmp)
2584 {
2585 if (bl->inserted && !is_tracepoint (bl->owner))
2586 val |= remove_breakpoint (bl, mark_uninserted);
2587 }
2588 return val;
2589 }
2590
2591 /* Remove breakpoints of process PID. */
2592
2593 int
2594 remove_breakpoints_pid (int pid)
2595 {
2596 struct bp_location *bl, **blp_tmp;
2597 int val;
2598 struct inferior *inf = find_inferior_pid (pid);
2599
2600 ALL_BP_LOCATIONS (bl, blp_tmp)
2601 {
2602 if (bl->pspace != inf->pspace)
2603 continue;
2604
2605 if (bl->inserted)
2606 {
2607 val = remove_breakpoint (bl, mark_uninserted);
2608 if (val != 0)
2609 return val;
2610 }
2611 }
2612 return 0;
2613 }
2614
2615 int
2616 reattach_breakpoints (int pid)
2617 {
2618 struct cleanup *old_chain;
2619 struct bp_location *bl, **blp_tmp;
2620 int val;
2621 struct ui_file *tmp_error_stream;
2622 int dummy1 = 0, dummy2 = 0;
2623 struct inferior *inf;
2624 struct thread_info *tp;
2625
2626 tp = any_live_thread_of_process (pid);
2627 if (tp == NULL)
2628 return 1;
2629
2630 inf = find_inferior_pid (pid);
2631 old_chain = save_inferior_ptid ();
2632
2633 inferior_ptid = tp->ptid;
2634
2635 tmp_error_stream = mem_fileopen ();
2636 make_cleanup_ui_file_delete (tmp_error_stream);
2637
2638 ALL_BP_LOCATIONS (bl, blp_tmp)
2639 {
2640 if (bl->pspace != inf->pspace)
2641 continue;
2642
2643 if (bl->inserted)
2644 {
2645 bl->inserted = 0;
2646 val = insert_bp_location (bl, tmp_error_stream, &dummy1, &dummy2);
2647 if (val != 0)
2648 {
2649 do_cleanups (old_chain);
2650 return val;
2651 }
2652 }
2653 }
2654 do_cleanups (old_chain);
2655 return 0;
2656 }
2657
2658 static int internal_breakpoint_number = -1;
2659
2660 /* Set the breakpoint number of B, depending on the value of INTERNAL.
2661 If INTERNAL is non-zero, the breakpoint number will be populated
2662 from internal_breakpoint_number and that variable decremented.
2663 Otherwise the breakpoint number will be populated from
2664 breakpoint_count and that value incremented. Internal breakpoints
2665 do not set the internal var bpnum. */
2666 static void
2667 set_breakpoint_number (int internal, struct breakpoint *b)
2668 {
2669 if (internal)
2670 b->number = internal_breakpoint_number--;
2671 else
2672 {
2673 set_breakpoint_count (breakpoint_count + 1);
2674 b->number = breakpoint_count;
2675 }
2676 }
2677
2678 static struct breakpoint *
2679 create_internal_breakpoint (struct gdbarch *gdbarch,
2680 CORE_ADDR address, enum bptype type,
2681 const struct breakpoint_ops *ops)
2682 {
2683 struct symtab_and_line sal;
2684 struct breakpoint *b;
2685
2686 init_sal (&sal); /* Initialize to zeroes. */
2687
2688 sal.pc = address;
2689 sal.section = find_pc_overlay (sal.pc);
2690 sal.pspace = current_program_space;
2691
2692 b = set_raw_breakpoint (gdbarch, sal, type, ops);
2693 b->number = internal_breakpoint_number--;
2694 b->disposition = disp_donttouch;
2695
2696 return b;
2697 }
2698
2699 static const char *const longjmp_names[] =
2700 {
2701 "longjmp", "_longjmp", "siglongjmp", "_siglongjmp"
2702 };
2703 #define NUM_LONGJMP_NAMES ARRAY_SIZE(longjmp_names)
2704
2705 /* Per-objfile data private to breakpoint.c. */
2706 struct breakpoint_objfile_data
2707 {
2708 /* Minimal symbol for "_ovly_debug_event" (if any). */
2709 struct minimal_symbol *overlay_msym;
2710
2711 /* Minimal symbol(s) for "longjmp", "siglongjmp", etc. (if any). */
2712 struct minimal_symbol *longjmp_msym[NUM_LONGJMP_NAMES];
2713
2714 /* Minimal symbol for "std::terminate()" (if any). */
2715 struct minimal_symbol *terminate_msym;
2716
2717 /* Minimal symbol for "_Unwind_DebugHook" (if any). */
2718 struct minimal_symbol *exception_msym;
2719 };
2720
2721 static const struct objfile_data *breakpoint_objfile_key;
2722
2723 /* Minimal symbol not found sentinel. */
2724 static struct minimal_symbol msym_not_found;
2725
2726 /* Returns TRUE if MSYM point to the "not found" sentinel. */
2727
2728 static int
2729 msym_not_found_p (const struct minimal_symbol *msym)
2730 {
2731 return msym == &msym_not_found;
2732 }
2733
2734 /* Return per-objfile data needed by breakpoint.c.
2735 Allocate the data if necessary. */
2736
2737 static struct breakpoint_objfile_data *
2738 get_breakpoint_objfile_data (struct objfile *objfile)
2739 {
2740 struct breakpoint_objfile_data *bp_objfile_data;
2741
2742 bp_objfile_data = objfile_data (objfile, breakpoint_objfile_key);
2743 if (bp_objfile_data == NULL)
2744 {
2745 bp_objfile_data = obstack_alloc (&objfile->objfile_obstack,
2746 sizeof (*bp_objfile_data));
2747
2748 memset (bp_objfile_data, 0, sizeof (*bp_objfile_data));
2749 set_objfile_data (objfile, breakpoint_objfile_key, bp_objfile_data);
2750 }
2751 return bp_objfile_data;
2752 }
2753
2754 static void
2755 create_overlay_event_breakpoint (void)
2756 {
2757 struct objfile *objfile;
2758 const char *const func_name = "_ovly_debug_event";
2759
2760 ALL_OBJFILES (objfile)
2761 {
2762 struct breakpoint *b;
2763 struct breakpoint_objfile_data *bp_objfile_data;
2764 CORE_ADDR addr;
2765
2766 bp_objfile_data = get_breakpoint_objfile_data (objfile);
2767
2768 if (msym_not_found_p (bp_objfile_data->overlay_msym))
2769 continue;
2770
2771 if (bp_objfile_data->overlay_msym == NULL)
2772 {
2773 struct minimal_symbol *m;
2774
2775 m = lookup_minimal_symbol_text (func_name, objfile);
2776 if (m == NULL)
2777 {
2778 /* Avoid future lookups in this objfile. */
2779 bp_objfile_data->overlay_msym = &msym_not_found;
2780 continue;
2781 }
2782 bp_objfile_data->overlay_msym = m;
2783 }
2784
2785 addr = SYMBOL_VALUE_ADDRESS (bp_objfile_data->overlay_msym);
2786 b = create_internal_breakpoint (get_objfile_arch (objfile), addr,
2787 bp_overlay_event,
2788 &internal_breakpoint_ops);
2789 b->addr_string = xstrdup (func_name);
2790
2791 if (overlay_debugging == ovly_auto)
2792 {
2793 b->enable_state = bp_enabled;
2794 overlay_events_enabled = 1;
2795 }
2796 else
2797 {
2798 b->enable_state = bp_disabled;
2799 overlay_events_enabled = 0;
2800 }
2801 }
2802 update_global_location_list (1);
2803 }
2804
2805 static void
2806 create_longjmp_master_breakpoint (void)
2807 {
2808 struct program_space *pspace;
2809 struct cleanup *old_chain;
2810
2811 old_chain = save_current_program_space ();
2812
2813 ALL_PSPACES (pspace)
2814 {
2815 struct objfile *objfile;
2816
2817 set_current_program_space (pspace);
2818
2819 ALL_OBJFILES (objfile)
2820 {
2821 int i;
2822 struct gdbarch *gdbarch;
2823 struct breakpoint_objfile_data *bp_objfile_data;
2824
2825 gdbarch = get_objfile_arch (objfile);
2826 if (!gdbarch_get_longjmp_target_p (gdbarch))
2827 continue;
2828
2829 bp_objfile_data = get_breakpoint_objfile_data (objfile);
2830
2831 for (i = 0; i < NUM_LONGJMP_NAMES; i++)
2832 {
2833 struct breakpoint *b;
2834 const char *func_name;
2835 CORE_ADDR addr;
2836
2837 if (msym_not_found_p (bp_objfile_data->longjmp_msym[i]))
2838 continue;
2839
2840 func_name = longjmp_names[i];
2841 if (bp_objfile_data->longjmp_msym[i] == NULL)
2842 {
2843 struct minimal_symbol *m;
2844
2845 m = lookup_minimal_symbol_text (func_name, objfile);
2846 if (m == NULL)
2847 {
2848 /* Prevent future lookups in this objfile. */
2849 bp_objfile_data->longjmp_msym[i] = &msym_not_found;
2850 continue;
2851 }
2852 bp_objfile_data->longjmp_msym[i] = m;
2853 }
2854
2855 addr = SYMBOL_VALUE_ADDRESS (bp_objfile_data->longjmp_msym[i]);
2856 b = create_internal_breakpoint (gdbarch, addr, bp_longjmp_master,
2857 &internal_breakpoint_ops);
2858 b->addr_string = xstrdup (func_name);
2859 b->enable_state = bp_disabled;
2860 }
2861 }
2862 }
2863 update_global_location_list (1);
2864
2865 do_cleanups (old_chain);
2866 }
2867
2868 /* Create a master std::terminate breakpoint. */
2869 static void
2870 create_std_terminate_master_breakpoint (void)
2871 {
2872 struct program_space *pspace;
2873 struct cleanup *old_chain;
2874 const char *const func_name = "std::terminate()";
2875
2876 old_chain = save_current_program_space ();
2877
2878 ALL_PSPACES (pspace)
2879 {
2880 struct objfile *objfile;
2881 CORE_ADDR addr;
2882
2883 set_current_program_space (pspace);
2884
2885 ALL_OBJFILES (objfile)
2886 {
2887 struct breakpoint *b;
2888 struct breakpoint_objfile_data *bp_objfile_data;
2889
2890 bp_objfile_data = get_breakpoint_objfile_data (objfile);
2891
2892 if (msym_not_found_p (bp_objfile_data->terminate_msym))
2893 continue;
2894
2895 if (bp_objfile_data->terminate_msym == NULL)
2896 {
2897 struct minimal_symbol *m;
2898
2899 m = lookup_minimal_symbol (func_name, NULL, objfile);
2900 if (m == NULL || (MSYMBOL_TYPE (m) != mst_text
2901 && MSYMBOL_TYPE (m) != mst_file_text))
2902 {
2903 /* Prevent future lookups in this objfile. */
2904 bp_objfile_data->terminate_msym = &msym_not_found;
2905 continue;
2906 }
2907 bp_objfile_data->terminate_msym = m;
2908 }
2909
2910 addr = SYMBOL_VALUE_ADDRESS (bp_objfile_data->terminate_msym);
2911 b = create_internal_breakpoint (get_objfile_arch (objfile), addr,
2912 bp_std_terminate_master,
2913 &internal_breakpoint_ops);
2914 b->addr_string = xstrdup (func_name);
2915 b->enable_state = bp_disabled;
2916 }
2917 }
2918
2919 update_global_location_list (1);
2920
2921 do_cleanups (old_chain);
2922 }
2923
2924 /* Install a master breakpoint on the unwinder's debug hook. */
2925
2926 static void
2927 create_exception_master_breakpoint (void)
2928 {
2929 struct objfile *objfile;
2930 const char *const func_name = "_Unwind_DebugHook";
2931
2932 ALL_OBJFILES (objfile)
2933 {
2934 struct breakpoint *b;
2935 struct gdbarch *gdbarch;
2936 struct breakpoint_objfile_data *bp_objfile_data;
2937 CORE_ADDR addr;
2938
2939 bp_objfile_data = get_breakpoint_objfile_data (objfile);
2940
2941 if (msym_not_found_p (bp_objfile_data->exception_msym))
2942 continue;
2943
2944 gdbarch = get_objfile_arch (objfile);
2945
2946 if (bp_objfile_data->exception_msym == NULL)
2947 {
2948 struct minimal_symbol *debug_hook;
2949
2950 debug_hook = lookup_minimal_symbol (func_name, NULL, objfile);
2951 if (debug_hook == NULL)
2952 {
2953 bp_objfile_data->exception_msym = &msym_not_found;
2954 continue;
2955 }
2956
2957 bp_objfile_data->exception_msym = debug_hook;
2958 }
2959
2960 addr = SYMBOL_VALUE_ADDRESS (bp_objfile_data->exception_msym);
2961 addr = gdbarch_convert_from_func_ptr_addr (gdbarch, addr,
2962 &current_target);
2963 b = create_internal_breakpoint (gdbarch, addr, bp_exception_master,
2964 &internal_breakpoint_ops);
2965 b->addr_string = xstrdup (func_name);
2966 b->enable_state = bp_disabled;
2967 }
2968
2969 update_global_location_list (1);
2970 }
2971
2972 void
2973 update_breakpoints_after_exec (void)
2974 {
2975 struct breakpoint *b, *b_tmp;
2976 struct bp_location *bploc, **bplocp_tmp;
2977
2978 /* We're about to delete breakpoints from GDB's lists. If the
2979 INSERTED flag is true, GDB will try to lift the breakpoints by
2980 writing the breakpoints' "shadow contents" back into memory. The
2981 "shadow contents" are NOT valid after an exec, so GDB should not
2982 do that. Instead, the target is responsible from marking
2983 breakpoints out as soon as it detects an exec. We don't do that
2984 here instead, because there may be other attempts to delete
2985 breakpoints after detecting an exec and before reaching here. */
2986 ALL_BP_LOCATIONS (bploc, bplocp_tmp)
2987 if (bploc->pspace == current_program_space)
2988 gdb_assert (!bploc->inserted);
2989
2990 ALL_BREAKPOINTS_SAFE (b, b_tmp)
2991 {
2992 if (b->pspace != current_program_space)
2993 continue;
2994
2995 /* Solib breakpoints must be explicitly reset after an exec(). */
2996 if (b->type == bp_shlib_event)
2997 {
2998 delete_breakpoint (b);
2999 continue;
3000 }
3001
3002 /* JIT breakpoints must be explicitly reset after an exec(). */
3003 if (b->type == bp_jit_event)
3004 {
3005 delete_breakpoint (b);
3006 continue;
3007 }
3008
3009 /* Thread event breakpoints must be set anew after an exec(),
3010 as must overlay event and longjmp master breakpoints. */
3011 if (b->type == bp_thread_event || b->type == bp_overlay_event
3012 || b->type == bp_longjmp_master || b->type == bp_std_terminate_master
3013 || b->type == bp_exception_master)
3014 {
3015 delete_breakpoint (b);
3016 continue;
3017 }
3018
3019 /* Step-resume breakpoints are meaningless after an exec(). */
3020 if (b->type == bp_step_resume || b->type == bp_hp_step_resume)
3021 {
3022 delete_breakpoint (b);
3023 continue;
3024 }
3025
3026 /* Longjmp and longjmp-resume breakpoints are also meaningless
3027 after an exec. */
3028 if (b->type == bp_longjmp || b->type == bp_longjmp_resume
3029 || b->type == bp_exception || b->type == bp_exception_resume)
3030 {
3031 delete_breakpoint (b);
3032 continue;
3033 }
3034
3035 if (b->type == bp_catchpoint)
3036 {
3037 /* For now, none of the bp_catchpoint breakpoints need to
3038 do anything at this point. In the future, if some of
3039 the catchpoints need to something, we will need to add
3040 a new method, and call this method from here. */
3041 continue;
3042 }
3043
3044 /* bp_finish is a special case. The only way we ought to be able
3045 to see one of these when an exec() has happened, is if the user
3046 caught a vfork, and then said "finish". Ordinarily a finish just
3047 carries them to the call-site of the current callee, by setting
3048 a temporary bp there and resuming. But in this case, the finish
3049 will carry them entirely through the vfork & exec.
3050
3051 We don't want to allow a bp_finish to remain inserted now. But
3052 we can't safely delete it, 'cause finish_command has a handle to
3053 the bp on a bpstat, and will later want to delete it. There's a
3054 chance (and I've seen it happen) that if we delete the bp_finish
3055 here, that its storage will get reused by the time finish_command
3056 gets 'round to deleting the "use to be a bp_finish" breakpoint.
3057 We really must allow finish_command to delete a bp_finish.
3058
3059 In the absence of a general solution for the "how do we know
3060 it's safe to delete something others may have handles to?"
3061 problem, what we'll do here is just uninsert the bp_finish, and
3062 let finish_command delete it.
3063
3064 (We know the bp_finish is "doomed" in the sense that it's
3065 momentary, and will be deleted as soon as finish_command sees
3066 the inferior stopped. So it doesn't matter that the bp's
3067 address is probably bogus in the new a.out, unlike e.g., the
3068 solib breakpoints.) */
3069
3070 if (b->type == bp_finish)
3071 {
3072 continue;
3073 }
3074
3075 /* Without a symbolic address, we have little hope of the
3076 pre-exec() address meaning the same thing in the post-exec()
3077 a.out. */
3078 if (b->addr_string == NULL)
3079 {
3080 delete_breakpoint (b);
3081 continue;
3082 }
3083 }
3084 /* FIXME what about longjmp breakpoints? Re-create them here? */
3085 create_overlay_event_breakpoint ();
3086 create_longjmp_master_breakpoint ();
3087 create_std_terminate_master_breakpoint ();
3088 create_exception_master_breakpoint ();
3089 }
3090
3091 int
3092 detach_breakpoints (int pid)
3093 {
3094 struct bp_location *bl, **blp_tmp;
3095 int val = 0;
3096 struct cleanup *old_chain = save_inferior_ptid ();
3097 struct inferior *inf = current_inferior ();
3098
3099 if (pid == PIDGET (inferior_ptid))
3100 error (_("Cannot detach breakpoints of inferior_ptid"));
3101
3102 /* Set inferior_ptid; remove_breakpoint_1 uses this global. */
3103 inferior_ptid = pid_to_ptid (pid);
3104 ALL_BP_LOCATIONS (bl, blp_tmp)
3105 {
3106 if (bl->pspace != inf->pspace)
3107 continue;
3108
3109 if (bl->inserted)
3110 val |= remove_breakpoint_1 (bl, mark_inserted);
3111 }
3112
3113 /* Detach single-step breakpoints as well. */
3114 detach_single_step_breakpoints ();
3115
3116 do_cleanups (old_chain);
3117 return val;
3118 }
3119
3120 /* Remove the breakpoint location BL from the current address space.
3121 Note that this is used to detach breakpoints from a child fork.
3122 When we get here, the child isn't in the inferior list, and neither
3123 do we have objects to represent its address space --- we should
3124 *not* look at bl->pspace->aspace here. */
3125
3126 static int
3127 remove_breakpoint_1 (struct bp_location *bl, insertion_state_t is)
3128 {
3129 int val;
3130
3131 /* BL is never in moribund_locations by our callers. */
3132 gdb_assert (bl->owner != NULL);
3133
3134 if (bl->owner->enable_state == bp_permanent)
3135 /* Permanent breakpoints cannot be inserted or removed. */
3136 return 0;
3137
3138 /* The type of none suggests that owner is actually deleted.
3139 This should not ever happen. */
3140 gdb_assert (bl->owner->type != bp_none);
3141
3142 if (bl->loc_type == bp_loc_software_breakpoint
3143 || bl->loc_type == bp_loc_hardware_breakpoint)
3144 {
3145 /* "Normal" instruction breakpoint: either the standard
3146 trap-instruction bp (bp_breakpoint), or a
3147 bp_hardware_breakpoint. */
3148
3149 /* First check to see if we have to handle an overlay. */
3150 if (overlay_debugging == ovly_off
3151 || bl->section == NULL
3152 || !(section_is_overlay (bl->section)))
3153 {
3154 /* No overlay handling: just remove the breakpoint. */
3155 val = bl->owner->ops->remove_location (bl);
3156 }
3157 else
3158 {
3159 /* This breakpoint is in an overlay section.
3160 Did we set a breakpoint at the LMA? */
3161 if (!overlay_events_enabled)
3162 {
3163 /* Yes -- overlay event support is not active, so we
3164 should have set a breakpoint at the LMA. Remove it.
3165 */
3166 /* Ignore any failures: if the LMA is in ROM, we will
3167 have already warned when we failed to insert it. */
3168 if (bl->loc_type == bp_loc_hardware_breakpoint)
3169 target_remove_hw_breakpoint (bl->gdbarch,
3170 &bl->overlay_target_info);
3171 else
3172 target_remove_breakpoint (bl->gdbarch,
3173 &bl->overlay_target_info);
3174 }
3175 /* Did we set a breakpoint at the VMA?
3176 If so, we will have marked the breakpoint 'inserted'. */
3177 if (bl->inserted)
3178 {
3179 /* Yes -- remove it. Previously we did not bother to
3180 remove the breakpoint if the section had been
3181 unmapped, but let's not rely on that being safe. We
3182 don't know what the overlay manager might do. */
3183
3184 /* However, we should remove *software* breakpoints only
3185 if the section is still mapped, or else we overwrite
3186 wrong code with the saved shadow contents. */
3187 if (bl->loc_type == bp_loc_hardware_breakpoint
3188 || section_is_mapped (bl->section))
3189 val = bl->owner->ops->remove_location (bl);
3190 else
3191 val = 0;
3192 }
3193 else
3194 {
3195 /* No -- not inserted, so no need to remove. No error. */
3196 val = 0;
3197 }
3198 }
3199
3200 /* In some cases, we might not be able to remove a breakpoint
3201 in a shared library that has already been removed, but we
3202 have not yet processed the shlib unload event. */
3203 if (val && solib_name_from_address (bl->pspace, bl->address))
3204 val = 0;
3205
3206 if (val)
3207 return val;
3208 bl->inserted = (is == mark_inserted);
3209 }
3210 else if (bl->loc_type == bp_loc_hardware_watchpoint)
3211 {
3212 gdb_assert (bl->owner->ops != NULL
3213 && bl->owner->ops->remove_location != NULL);
3214
3215 bl->inserted = (is == mark_inserted);
3216 bl->owner->ops->remove_location (bl);
3217
3218 /* Failure to remove any of the hardware watchpoints comes here. */
3219 if ((is == mark_uninserted) && (bl->inserted))
3220 warning (_("Could not remove hardware watchpoint %d."),
3221 bl->owner->number);
3222 }
3223 else if (bl->owner->type == bp_catchpoint
3224 && breakpoint_enabled (bl->owner)
3225 && !bl->duplicate)
3226 {
3227 gdb_assert (bl->owner->ops != NULL
3228 && bl->owner->ops->remove_location != NULL);
3229
3230 val = bl->owner->ops->remove_location (bl);
3231 if (val)
3232 return val;
3233
3234 bl->inserted = (is == mark_inserted);
3235 }
3236
3237 return 0;
3238 }
3239
3240 static int
3241 remove_breakpoint (struct bp_location *bl, insertion_state_t is)
3242 {
3243 int ret;
3244 struct cleanup *old_chain;
3245
3246 /* BL is never in moribund_locations by our callers. */
3247 gdb_assert (bl->owner != NULL);
3248
3249 if (bl->owner->enable_state == bp_permanent)
3250 /* Permanent breakpoints cannot be inserted or removed. */
3251 return 0;
3252
3253 /* The type of none suggests that owner is actually deleted.
3254 This should not ever happen. */
3255 gdb_assert (bl->owner->type != bp_none);
3256
3257 old_chain = save_current_space_and_thread ();
3258
3259 switch_to_program_space_and_thread (bl->pspace);
3260
3261 ret = remove_breakpoint_1 (bl, is);
3262
3263 do_cleanups (old_chain);
3264 return ret;
3265 }
3266
3267 /* Clear the "inserted" flag in all breakpoints. */
3268
3269 void
3270 mark_breakpoints_out (void)
3271 {
3272 struct bp_location *bl, **blp_tmp;
3273
3274 ALL_BP_LOCATIONS (bl, blp_tmp)
3275 if (bl->pspace == current_program_space)
3276 bl->inserted = 0;
3277 }
3278
3279 /* Clear the "inserted" flag in all breakpoints and delete any
3280 breakpoints which should go away between runs of the program.
3281
3282 Plus other such housekeeping that has to be done for breakpoints
3283 between runs.
3284
3285 Note: this function gets called at the end of a run (by
3286 generic_mourn_inferior) and when a run begins (by
3287 init_wait_for_inferior). */
3288
3289
3290
3291 void
3292 breakpoint_init_inferior (enum inf_context context)
3293 {
3294 struct breakpoint *b, *b_tmp;
3295 struct bp_location *bl, **blp_tmp;
3296 int ix;
3297 struct program_space *pspace = current_program_space;
3298
3299 /* If breakpoint locations are shared across processes, then there's
3300 nothing to do. */
3301 if (gdbarch_has_global_breakpoints (target_gdbarch))
3302 return;
3303
3304 ALL_BP_LOCATIONS (bl, blp_tmp)
3305 {
3306 /* ALL_BP_LOCATIONS bp_location has BL->OWNER always non-NULL. */
3307 if (bl->pspace == pspace
3308 && bl->owner->enable_state != bp_permanent)
3309 bl->inserted = 0;
3310 }
3311
3312 ALL_BREAKPOINTS_SAFE (b, b_tmp)
3313 {
3314 if (b->loc && b->loc->pspace != pspace)
3315 continue;
3316
3317 switch (b->type)
3318 {
3319 case bp_call_dummy:
3320
3321 /* If the call dummy breakpoint is at the entry point it will
3322 cause problems when the inferior is rerun, so we better get
3323 rid of it. */
3324
3325 case bp_watchpoint_scope:
3326
3327 /* Also get rid of scope breakpoints. */
3328
3329 case bp_shlib_event:
3330
3331 /* Also remove solib event breakpoints. Their addresses may
3332 have changed since the last time we ran the program.
3333 Actually we may now be debugging against different target;
3334 and so the solib backend that installed this breakpoint may
3335 not be used in by the target. E.g.,
3336
3337 (gdb) file prog-linux
3338 (gdb) run # native linux target
3339 ...
3340 (gdb) kill
3341 (gdb) file prog-win.exe
3342 (gdb) tar rem :9999 # remote Windows gdbserver.
3343 */
3344
3345 case bp_step_resume:
3346
3347 /* Also remove step-resume breakpoints. */
3348
3349 delete_breakpoint (b);
3350 break;
3351
3352 case bp_watchpoint:
3353 case bp_hardware_watchpoint:
3354 case bp_read_watchpoint:
3355 case bp_access_watchpoint:
3356 {
3357 struct watchpoint *w = (struct watchpoint *) b;
3358
3359 /* Likewise for watchpoints on local expressions. */
3360 if (w->exp_valid_block != NULL)
3361 delete_breakpoint (b);
3362 else if (context == inf_starting)
3363 {
3364 /* Reset val field to force reread of starting value in
3365 insert_breakpoints. */
3366 if (w->val)
3367 value_free (w->val);
3368 w->val = NULL;
3369 w->val_valid = 0;
3370 }
3371 }
3372 break;
3373 default:
3374 break;
3375 }
3376 }
3377
3378 /* Get rid of the moribund locations. */
3379 for (ix = 0; VEC_iterate (bp_location_p, moribund_locations, ix, bl); ++ix)
3380 decref_bp_location (&bl);
3381 VEC_free (bp_location_p, moribund_locations);
3382 }
3383
3384 /* These functions concern about actual breakpoints inserted in the
3385 target --- to e.g. check if we need to do decr_pc adjustment or if
3386 we need to hop over the bkpt --- so we check for address space
3387 match, not program space. */
3388
3389 /* breakpoint_here_p (PC) returns non-zero if an enabled breakpoint
3390 exists at PC. It returns ordinary_breakpoint_here if it's an
3391 ordinary breakpoint, or permanent_breakpoint_here if it's a
3392 permanent breakpoint.
3393 - When continuing from a location with an ordinary breakpoint, we
3394 actually single step once before calling insert_breakpoints.
3395 - When continuing from a location with a permanent breakpoint, we
3396 need to use the `SKIP_PERMANENT_BREAKPOINT' macro, provided by
3397 the target, to advance the PC past the breakpoint. */
3398
3399 enum breakpoint_here
3400 breakpoint_here_p (struct address_space *aspace, CORE_ADDR pc)
3401 {
3402 struct bp_location *bl, **blp_tmp;
3403 int any_breakpoint_here = 0;
3404
3405 ALL_BP_LOCATIONS (bl, blp_tmp)
3406 {
3407 if (bl->loc_type != bp_loc_software_breakpoint
3408 && bl->loc_type != bp_loc_hardware_breakpoint)
3409 continue;
3410
3411 /* ALL_BP_LOCATIONS bp_location has BL->OWNER always non-NULL. */
3412 if ((breakpoint_enabled (bl->owner)
3413 || bl->owner->enable_state == bp_permanent)
3414 && breakpoint_location_address_match (bl, aspace, pc))
3415 {
3416 if (overlay_debugging
3417 && section_is_overlay (bl->section)
3418 && !section_is_mapped (bl->section))
3419 continue; /* unmapped overlay -- can't be a match */
3420 else if (bl->owner->enable_state == bp_permanent)
3421 return permanent_breakpoint_here;
3422 else
3423 any_breakpoint_here = 1;
3424 }
3425 }
3426
3427 return any_breakpoint_here ? ordinary_breakpoint_here : 0;
3428 }
3429
3430 /* Return true if there's a moribund breakpoint at PC. */
3431
3432 int
3433 moribund_breakpoint_here_p (struct address_space *aspace, CORE_ADDR pc)
3434 {
3435 struct bp_location *loc;
3436 int ix;
3437
3438 for (ix = 0; VEC_iterate (bp_location_p, moribund_locations, ix, loc); ++ix)
3439 if (breakpoint_location_address_match (loc, aspace, pc))
3440 return 1;
3441
3442 return 0;
3443 }
3444
3445 /* Returns non-zero if there's a breakpoint inserted at PC, which is
3446 inserted using regular breakpoint_chain / bp_location array
3447 mechanism. This does not check for single-step breakpoints, which
3448 are inserted and removed using direct target manipulation. */
3449
3450 int
3451 regular_breakpoint_inserted_here_p (struct address_space *aspace,
3452 CORE_ADDR pc)
3453 {
3454 struct bp_location *bl, **blp_tmp;
3455
3456 ALL_BP_LOCATIONS (bl, blp_tmp)
3457 {
3458 if (bl->loc_type != bp_loc_software_breakpoint
3459 && bl->loc_type != bp_loc_hardware_breakpoint)
3460 continue;
3461
3462 if (bl->inserted
3463 && breakpoint_location_address_match (bl, aspace, pc))
3464 {
3465 if (overlay_debugging
3466 && section_is_overlay (bl->section)
3467 && !section_is_mapped (bl->section))
3468 continue; /* unmapped overlay -- can't be a match */
3469 else
3470 return 1;
3471 }
3472 }
3473 return 0;
3474 }
3475
3476 /* Returns non-zero iff there's either regular breakpoint
3477 or a single step breakpoint inserted at PC. */
3478
3479 int
3480 breakpoint_inserted_here_p (struct address_space *aspace, CORE_ADDR pc)
3481 {
3482 if (regular_breakpoint_inserted_here_p (aspace, pc))
3483 return 1;
3484
3485 if (single_step_breakpoint_inserted_here_p (aspace, pc))
3486 return 1;
3487
3488 return 0;
3489 }
3490
3491 /* This function returns non-zero iff there is a software breakpoint
3492 inserted at PC. */
3493
3494 int
3495 software_breakpoint_inserted_here_p (struct address_space *aspace,
3496 CORE_ADDR pc)
3497 {
3498 struct bp_location *bl, **blp_tmp;
3499
3500 ALL_BP_LOCATIONS (bl, blp_tmp)
3501 {
3502 if (bl->loc_type != bp_loc_software_breakpoint)
3503 continue;
3504
3505 if (bl->inserted
3506 && breakpoint_address_match (bl->pspace->aspace, bl->address,
3507 aspace, pc))
3508 {
3509 if (overlay_debugging
3510 && section_is_overlay (bl->section)
3511 && !section_is_mapped (bl->section))
3512 continue; /* unmapped overlay -- can't be a match */
3513 else
3514 return 1;
3515 }
3516 }
3517
3518 /* Also check for software single-step breakpoints. */
3519 if (single_step_breakpoint_inserted_here_p (aspace, pc))
3520 return 1;
3521
3522 return 0;
3523 }
3524
3525 int
3526 hardware_watchpoint_inserted_in_range (struct address_space *aspace,
3527 CORE_ADDR addr, ULONGEST len)
3528 {
3529 struct breakpoint *bpt;
3530
3531 ALL_BREAKPOINTS (bpt)
3532 {
3533 struct bp_location *loc;
3534
3535 if (bpt->type != bp_hardware_watchpoint
3536 && bpt->type != bp_access_watchpoint)
3537 continue;
3538
3539 if (!breakpoint_enabled (bpt))
3540 continue;
3541
3542 for (loc = bpt->loc; loc; loc = loc->next)
3543 if (loc->pspace->aspace == aspace && loc->inserted)
3544 {
3545 CORE_ADDR l, h;
3546
3547 /* Check for intersection. */
3548 l = max (loc->address, addr);
3549 h = min (loc->address + loc->length, addr + len);
3550 if (l < h)
3551 return 1;
3552 }
3553 }
3554 return 0;
3555 }
3556
3557 /* breakpoint_thread_match (PC, PTID) returns true if the breakpoint at
3558 PC is valid for process/thread PTID. */
3559
3560 int
3561 breakpoint_thread_match (struct address_space *aspace, CORE_ADDR pc,
3562 ptid_t ptid)
3563 {
3564 struct bp_location *bl, **blp_tmp;
3565 /* The thread and task IDs associated to PTID, computed lazily. */
3566 int thread = -1;
3567 int task = 0;
3568
3569 ALL_BP_LOCATIONS (bl, blp_tmp)
3570 {
3571 if (bl->loc_type != bp_loc_software_breakpoint
3572 && bl->loc_type != bp_loc_hardware_breakpoint)
3573 continue;
3574
3575 /* ALL_BP_LOCATIONS bp_location has bl->OWNER always non-NULL. */
3576 if (!breakpoint_enabled (bl->owner)
3577 && bl->owner->enable_state != bp_permanent)
3578 continue;
3579
3580 if (!breakpoint_location_address_match (bl, aspace, pc))
3581 continue;
3582
3583 if (bl->owner->thread != -1)
3584 {
3585 /* This is a thread-specific breakpoint. Check that ptid
3586 matches that thread. If thread hasn't been computed yet,
3587 it is now time to do so. */
3588 if (thread == -1)
3589 thread = pid_to_thread_id (ptid);
3590 if (bl->owner->thread != thread)
3591 continue;
3592 }
3593
3594 if (bl->owner->task != 0)
3595 {
3596 /* This is a task-specific breakpoint. Check that ptid
3597 matches that task. If task hasn't been computed yet,
3598 it is now time to do so. */
3599 if (task == 0)
3600 task = ada_get_task_number (ptid);
3601 if (bl->owner->task != task)
3602 continue;
3603 }
3604
3605 if (overlay_debugging
3606 && section_is_overlay (bl->section)
3607 && !section_is_mapped (bl->section))
3608 continue; /* unmapped overlay -- can't be a match */
3609
3610 return 1;
3611 }
3612
3613 return 0;
3614 }
3615 \f
3616
3617 /* bpstat stuff. External routines' interfaces are documented
3618 in breakpoint.h. */
3619
3620 int
3621 ep_is_catchpoint (struct breakpoint *ep)
3622 {
3623 return (ep->type == bp_catchpoint);
3624 }
3625
3626 /* Frees any storage that is part of a bpstat. Does not walk the
3627 'next' chain. */
3628
3629 static void
3630 bpstat_free (bpstat bs)
3631 {
3632 if (bs->old_val != NULL)
3633 value_free (bs->old_val);
3634 decref_counted_command_line (&bs->commands);
3635 decref_bp_location (&bs->bp_location_at);
3636 xfree (bs);
3637 }
3638
3639 /* Clear a bpstat so that it says we are not at any breakpoint.
3640 Also free any storage that is part of a bpstat. */
3641
3642 void
3643 bpstat_clear (bpstat *bsp)
3644 {
3645 bpstat p;
3646 bpstat q;
3647
3648 if (bsp == 0)
3649 return;
3650 p = *bsp;
3651 while (p != NULL)
3652 {
3653 q = p->next;
3654 bpstat_free (p);
3655 p = q;
3656 }
3657 *bsp = NULL;
3658 }
3659
3660 /* Return a copy of a bpstat. Like "bs1 = bs2" but all storage that
3661 is part of the bpstat is copied as well. */
3662
3663 bpstat
3664 bpstat_copy (bpstat bs)
3665 {
3666 bpstat p = NULL;
3667 bpstat tmp;
3668 bpstat retval = NULL;
3669
3670 if (bs == NULL)
3671 return bs;
3672
3673 for (; bs != NULL; bs = bs->next)
3674 {
3675 tmp = (bpstat) xmalloc (sizeof (*tmp));
3676 memcpy (tmp, bs, sizeof (*tmp));
3677 incref_counted_command_line (tmp->commands);
3678 incref_bp_location (tmp->bp_location_at);
3679 if (bs->old_val != NULL)
3680 {
3681 tmp->old_val = value_copy (bs->old_val);
3682 release_value (tmp->old_val);
3683 }
3684
3685 if (p == NULL)
3686 /* This is the first thing in the chain. */
3687 retval = tmp;
3688 else
3689 p->next = tmp;
3690 p = tmp;
3691 }
3692 p->next = NULL;
3693 return retval;
3694 }
3695
3696 /* Find the bpstat associated with this breakpoint. */
3697
3698 bpstat
3699 bpstat_find_breakpoint (bpstat bsp, struct breakpoint *breakpoint)
3700 {
3701 if (bsp == NULL)
3702 return NULL;
3703
3704 for (; bsp != NULL; bsp = bsp->next)
3705 {
3706 if (bsp->breakpoint_at == breakpoint)
3707 return bsp;
3708 }
3709 return NULL;
3710 }
3711
3712 /* Put in *NUM the breakpoint number of the first breakpoint we are
3713 stopped at. *BSP upon return is a bpstat which points to the
3714 remaining breakpoints stopped at (but which is not guaranteed to be
3715 good for anything but further calls to bpstat_num).
3716
3717 Return 0 if passed a bpstat which does not indicate any breakpoints.
3718 Return -1 if stopped at a breakpoint that has been deleted since
3719 we set it.
3720 Return 1 otherwise. */
3721
3722 int
3723 bpstat_num (bpstat *bsp, int *num)
3724 {
3725 struct breakpoint *b;
3726
3727 if ((*bsp) == NULL)
3728 return 0; /* No more breakpoint values */
3729
3730 /* We assume we'll never have several bpstats that correspond to a
3731 single breakpoint -- otherwise, this function might return the
3732 same number more than once and this will look ugly. */
3733 b = (*bsp)->breakpoint_at;
3734 *bsp = (*bsp)->next;
3735 if (b == NULL)
3736 return -1; /* breakpoint that's been deleted since */
3737
3738 *num = b->number; /* We have its number */
3739 return 1;
3740 }
3741
3742 /* See breakpoint.h. */
3743
3744 void
3745 bpstat_clear_actions (void)
3746 {
3747 struct thread_info *tp;
3748 bpstat bs;
3749
3750 if (ptid_equal (inferior_ptid, null_ptid))
3751 return;
3752
3753 tp = find_thread_ptid (inferior_ptid);
3754 if (tp == NULL)
3755 return;
3756
3757 for (bs = tp->control.stop_bpstat; bs != NULL; bs = bs->next)
3758 {
3759 decref_counted_command_line (&bs->commands);
3760
3761 if (bs->old_val != NULL)
3762 {
3763 value_free (bs->old_val);
3764 bs->old_val = NULL;
3765 }
3766 }
3767 }
3768
3769 /* Called when a command is about to proceed the inferior. */
3770
3771 static void
3772 breakpoint_about_to_proceed (void)
3773 {
3774 if (!ptid_equal (inferior_ptid, null_ptid))
3775 {
3776 struct thread_info *tp = inferior_thread ();
3777
3778 /* Allow inferior function calls in breakpoint commands to not
3779 interrupt the command list. When the call finishes
3780 successfully, the inferior will be standing at the same
3781 breakpoint as if nothing happened. */
3782 if (tp->control.in_infcall)
3783 return;
3784 }
3785
3786 breakpoint_proceeded = 1;
3787 }
3788
3789 /* Stub for cleaning up our state if we error-out of a breakpoint
3790 command. */
3791 static void
3792 cleanup_executing_breakpoints (void *ignore)
3793 {
3794 executing_breakpoint_commands = 0;
3795 }
3796
3797 /* Return non-zero iff CMD as the first line of a command sequence is `silent'
3798 or its equivalent. */
3799
3800 static int
3801 command_line_is_silent (struct command_line *cmd)
3802 {
3803 return cmd && (strcmp ("silent", cmd->line) == 0
3804 || (xdb_commands && strcmp ("Q", cmd->line) == 0));
3805 }
3806
3807 /* Execute all the commands associated with all the breakpoints at
3808 this location. Any of these commands could cause the process to
3809 proceed beyond this point, etc. We look out for such changes by
3810 checking the global "breakpoint_proceeded" after each command.
3811
3812 Returns true if a breakpoint command resumed the inferior. In that
3813 case, it is the caller's responsibility to recall it again with the
3814 bpstat of the current thread. */
3815
3816 static int
3817 bpstat_do_actions_1 (bpstat *bsp)
3818 {
3819 bpstat bs;
3820 struct cleanup *old_chain;
3821 int again = 0;
3822
3823 /* Avoid endless recursion if a `source' command is contained
3824 in bs->commands. */
3825 if (executing_breakpoint_commands)
3826 return 0;
3827
3828 executing_breakpoint_commands = 1;
3829 old_chain = make_cleanup (cleanup_executing_breakpoints, 0);
3830
3831 prevent_dont_repeat ();
3832
3833 /* This pointer will iterate over the list of bpstat's. */
3834 bs = *bsp;
3835
3836 breakpoint_proceeded = 0;
3837 for (; bs != NULL; bs = bs->next)
3838 {
3839 struct counted_command_line *ccmd;
3840 struct command_line *cmd;
3841 struct cleanup *this_cmd_tree_chain;
3842
3843 /* Take ownership of the BSP's command tree, if it has one.
3844
3845 The command tree could legitimately contain commands like
3846 'step' and 'next', which call clear_proceed_status, which
3847 frees stop_bpstat's command tree. To make sure this doesn't
3848 free the tree we're executing out from under us, we need to
3849 take ownership of the tree ourselves. Since a given bpstat's
3850 commands are only executed once, we don't need to copy it; we
3851 can clear the pointer in the bpstat, and make sure we free
3852 the tree when we're done. */
3853 ccmd = bs->commands;
3854 bs->commands = NULL;
3855 this_cmd_tree_chain = make_cleanup_decref_counted_command_line (&ccmd);
3856 cmd = ccmd ? ccmd->commands : NULL;
3857 if (command_line_is_silent (cmd))
3858 {
3859 /* The action has been already done by bpstat_stop_status. */
3860 cmd = cmd->next;
3861 }
3862
3863 while (cmd != NULL)
3864 {
3865 execute_control_command (cmd);
3866
3867 if (breakpoint_proceeded)
3868 break;
3869 else
3870 cmd = cmd->next;
3871 }
3872
3873 /* We can free this command tree now. */
3874 do_cleanups (this_cmd_tree_chain);
3875
3876 if (breakpoint_proceeded)
3877 {
3878 if (target_can_async_p ())
3879 /* If we are in async mode, then the target might be still
3880 running, not stopped at any breakpoint, so nothing for
3881 us to do here -- just return to the event loop. */
3882 ;
3883 else
3884 /* In sync mode, when execute_control_command returns
3885 we're already standing on the next breakpoint.
3886 Breakpoint commands for that stop were not run, since
3887 execute_command does not run breakpoint commands --
3888 only command_line_handler does, but that one is not
3889 involved in execution of breakpoint commands. So, we
3890 can now execute breakpoint commands. It should be
3891 noted that making execute_command do bpstat actions is
3892 not an option -- in this case we'll have recursive
3893 invocation of bpstat for each breakpoint with a
3894 command, and can easily blow up GDB stack. Instead, we
3895 return true, which will trigger the caller to recall us
3896 with the new stop_bpstat. */
3897 again = 1;
3898 break;
3899 }
3900 }
3901 do_cleanups (old_chain);
3902 return again;
3903 }
3904
3905 void
3906 bpstat_do_actions (void)
3907 {
3908 struct cleanup *cleanup_if_error = make_bpstat_clear_actions_cleanup ();
3909
3910 /* Do any commands attached to breakpoint we are stopped at. */
3911 while (!ptid_equal (inferior_ptid, null_ptid)
3912 && target_has_execution
3913 && !is_exited (inferior_ptid)
3914 && !is_executing (inferior_ptid))
3915 /* Since in sync mode, bpstat_do_actions may resume the inferior,
3916 and only return when it is stopped at the next breakpoint, we
3917 keep doing breakpoint actions until it returns false to
3918 indicate the inferior was not resumed. */
3919 if (!bpstat_do_actions_1 (&inferior_thread ()->control.stop_bpstat))
3920 break;
3921
3922 discard_cleanups (cleanup_if_error);
3923 }
3924
3925 /* Print out the (old or new) value associated with a watchpoint. */
3926
3927 static void
3928 watchpoint_value_print (struct value *val, struct ui_file *stream)
3929 {
3930 if (val == NULL)
3931 fprintf_unfiltered (stream, _("<unreadable>"));
3932 else
3933 {
3934 struct value_print_options opts;
3935 get_user_print_options (&opts);
3936 value_print (val, stream, &opts);
3937 }
3938 }
3939
3940 /* Generic routine for printing messages indicating why we
3941 stopped. The behavior of this function depends on the value
3942 'print_it' in the bpstat structure. Under some circumstances we
3943 may decide not to print anything here and delegate the task to
3944 normal_stop(). */
3945
3946 static enum print_stop_action
3947 print_bp_stop_message (bpstat bs)
3948 {
3949 switch (bs->print_it)
3950 {
3951 case print_it_noop:
3952 /* Nothing should be printed for this bpstat entry. */
3953 return PRINT_UNKNOWN;
3954 break;
3955
3956 case print_it_done:
3957 /* We still want to print the frame, but we already printed the
3958 relevant messages. */
3959 return PRINT_SRC_AND_LOC;
3960 break;
3961
3962 case print_it_normal:
3963 {
3964 struct breakpoint *b = bs->breakpoint_at;
3965
3966 /* bs->breakpoint_at can be NULL if it was a momentary breakpoint
3967 which has since been deleted. */
3968 if (b == NULL)
3969 return PRINT_UNKNOWN;
3970
3971 /* Normal case. Call the breakpoint's print_it method. */
3972 return b->ops->print_it (bs);
3973 }
3974 break;
3975
3976 default:
3977 internal_error (__FILE__, __LINE__,
3978 _("print_bp_stop_message: unrecognized enum value"));
3979 break;
3980 }
3981 }
3982
3983 /* A helper function that prints a shared library stopped event. */
3984
3985 static void
3986 print_solib_event (int is_catchpoint)
3987 {
3988 int any_deleted
3989 = !VEC_empty (char_ptr, current_program_space->deleted_solibs);
3990 int any_added
3991 = !VEC_empty (so_list_ptr, current_program_space->added_solibs);
3992
3993 if (!is_catchpoint)
3994 {
3995 if (any_added || any_deleted)
3996 ui_out_text (current_uiout,
3997 _("Stopped due to shared library event:\n"));
3998 else
3999 ui_out_text (current_uiout,
4000 _("Stopped due to shared library event (no "
4001 "libraries added or removed)\n"));
4002 }
4003
4004 if (ui_out_is_mi_like_p (current_uiout))
4005 ui_out_field_string (current_uiout, "reason",
4006 async_reason_lookup (EXEC_ASYNC_SOLIB_EVENT));
4007
4008 if (any_deleted)
4009 {
4010 struct cleanup *cleanup;
4011 char *name;
4012 int ix;
4013
4014 ui_out_text (current_uiout, _(" Inferior unloaded "));
4015 cleanup = make_cleanup_ui_out_list_begin_end (current_uiout,
4016 "removed");
4017 for (ix = 0;
4018 VEC_iterate (char_ptr, current_program_space->deleted_solibs,
4019 ix, name);
4020 ++ix)
4021 {
4022 if (ix > 0)
4023 ui_out_text (current_uiout, " ");
4024 ui_out_field_string (current_uiout, "library", name);
4025 ui_out_text (current_uiout, "\n");
4026 }
4027
4028 do_cleanups (cleanup);
4029 }
4030
4031 if (any_added)
4032 {
4033 struct so_list *iter;
4034 int ix;
4035 struct cleanup *cleanup;
4036
4037 ui_out_text (current_uiout, _(" Inferior loaded "));
4038 cleanup = make_cleanup_ui_out_list_begin_end (current_uiout,
4039 "added");
4040 for (ix = 0;
4041 VEC_iterate (so_list_ptr, current_program_space->added_solibs,
4042 ix, iter);
4043 ++ix)
4044 {
4045 if (ix > 0)
4046 ui_out_text (current_uiout, " ");
4047 ui_out_field_string (current_uiout, "library", iter->so_name);
4048 ui_out_text (current_uiout, "\n");
4049 }
4050
4051 do_cleanups (cleanup);
4052 }
4053 }
4054
4055 /* Print a message indicating what happened. This is called from
4056 normal_stop(). The input to this routine is the head of the bpstat
4057 list - a list of the eventpoints that caused this stop. KIND is
4058 the target_waitkind for the stopping event. This
4059 routine calls the generic print routine for printing a message
4060 about reasons for stopping. This will print (for example) the
4061 "Breakpoint n," part of the output. The return value of this
4062 routine is one of:
4063
4064 PRINT_UNKNOWN: Means we printed nothing.
4065 PRINT_SRC_AND_LOC: Means we printed something, and expect subsequent
4066 code to print the location. An example is
4067 "Breakpoint 1, " which should be followed by
4068 the location.
4069 PRINT_SRC_ONLY: Means we printed something, but there is no need
4070 to also print the location part of the message.
4071 An example is the catch/throw messages, which
4072 don't require a location appended to the end.
4073 PRINT_NOTHING: We have done some printing and we don't need any
4074 further info to be printed. */
4075
4076 enum print_stop_action
4077 bpstat_print (bpstat bs, int kind)
4078 {
4079 int val;
4080
4081 /* Maybe another breakpoint in the chain caused us to stop.
4082 (Currently all watchpoints go on the bpstat whether hit or not.
4083 That probably could (should) be changed, provided care is taken
4084 with respect to bpstat_explains_signal). */
4085 for (; bs; bs = bs->next)
4086 {
4087 val = print_bp_stop_message (bs);
4088 if (val == PRINT_SRC_ONLY
4089 || val == PRINT_SRC_AND_LOC
4090 || val == PRINT_NOTHING)
4091 return val;
4092 }
4093
4094 /* If we had hit a shared library event breakpoint,
4095 print_bp_stop_message would print out this message. If we hit an
4096 OS-level shared library event, do the same thing. */
4097 if (kind == TARGET_WAITKIND_LOADED)
4098 {
4099 print_solib_event (0);
4100 return PRINT_NOTHING;
4101 }
4102
4103 /* We reached the end of the chain, or we got a null BS to start
4104 with and nothing was printed. */
4105 return PRINT_UNKNOWN;
4106 }
4107
4108 /* Evaluate the expression EXP and return 1 if value is zero. This is
4109 used inside a catch_errors to evaluate the breakpoint condition.
4110 The argument is a "struct expression *" that has been cast to a
4111 "char *" to make it pass through catch_errors. */
4112
4113 static int
4114 breakpoint_cond_eval (void *exp)
4115 {
4116 struct value *mark = value_mark ();
4117 int i = !value_true (evaluate_expression ((struct expression *) exp));
4118
4119 value_free_to_mark (mark);
4120 return i;
4121 }
4122
4123 /* Allocate a new bpstat. Link it to the FIFO list by BS_LINK_POINTER. */
4124
4125 static bpstat
4126 bpstat_alloc (struct bp_location *bl, bpstat **bs_link_pointer)
4127 {
4128 bpstat bs;
4129
4130 bs = (bpstat) xmalloc (sizeof (*bs));
4131 bs->next = NULL;
4132 **bs_link_pointer = bs;
4133 *bs_link_pointer = &bs->next;
4134 bs->breakpoint_at = bl->owner;
4135 bs->bp_location_at = bl;
4136 incref_bp_location (bl);
4137 /* If the condition is false, etc., don't do the commands. */
4138 bs->commands = NULL;
4139 bs->old_val = NULL;
4140 bs->print_it = print_it_normal;
4141 return bs;
4142 }
4143 \f
4144 /* The target has stopped with waitstatus WS. Check if any hardware
4145 watchpoints have triggered, according to the target. */
4146
4147 int
4148 watchpoints_triggered (struct target_waitstatus *ws)
4149 {
4150 int stopped_by_watchpoint = target_stopped_by_watchpoint ();
4151 CORE_ADDR addr;
4152 struct breakpoint *b;
4153
4154 if (!stopped_by_watchpoint)
4155 {
4156 /* We were not stopped by a watchpoint. Mark all watchpoints
4157 as not triggered. */
4158 ALL_BREAKPOINTS (b)
4159 if (is_hardware_watchpoint (b))
4160 {
4161 struct watchpoint *w = (struct watchpoint *) b;
4162
4163 w->watchpoint_triggered = watch_triggered_no;
4164 }
4165
4166 return 0;
4167 }
4168
4169 if (!target_stopped_data_address (&current_target, &addr))
4170 {
4171 /* We were stopped by a watchpoint, but we don't know where.
4172 Mark all watchpoints as unknown. */
4173 ALL_BREAKPOINTS (b)
4174 if (is_hardware_watchpoint (b))
4175 {
4176 struct watchpoint *w = (struct watchpoint *) b;
4177
4178 w->watchpoint_triggered = watch_triggered_unknown;
4179 }
4180
4181 return stopped_by_watchpoint;
4182 }
4183
4184 /* The target could report the data address. Mark watchpoints
4185 affected by this data address as triggered, and all others as not
4186 triggered. */
4187
4188 ALL_BREAKPOINTS (b)
4189 if (is_hardware_watchpoint (b))
4190 {
4191 struct watchpoint *w = (struct watchpoint *) b;
4192 struct bp_location *loc;
4193
4194 w->watchpoint_triggered = watch_triggered_no;
4195 for (loc = b->loc; loc; loc = loc->next)
4196 {
4197 if (is_masked_watchpoint (b))
4198 {
4199 CORE_ADDR newaddr = addr & w->hw_wp_mask;
4200 CORE_ADDR start = loc->address & w->hw_wp_mask;
4201
4202 if (newaddr == start)
4203 {
4204 w->watchpoint_triggered = watch_triggered_yes;
4205 break;
4206 }
4207 }
4208 /* Exact match not required. Within range is sufficient. */
4209 else if (target_watchpoint_addr_within_range (&current_target,
4210 addr, loc->address,
4211 loc->length))
4212 {
4213 w->watchpoint_triggered = watch_triggered_yes;
4214 break;
4215 }
4216 }
4217 }
4218
4219 return 1;
4220 }
4221
4222 /* Possible return values for watchpoint_check (this can't be an enum
4223 because of check_errors). */
4224 /* The watchpoint has been deleted. */
4225 #define WP_DELETED 1
4226 /* The value has changed. */
4227 #define WP_VALUE_CHANGED 2
4228 /* The value has not changed. */
4229 #define WP_VALUE_NOT_CHANGED 3
4230 /* Ignore this watchpoint, no matter if the value changed or not. */
4231 #define WP_IGNORE 4
4232
4233 #define BP_TEMPFLAG 1
4234 #define BP_HARDWAREFLAG 2
4235
4236 /* Evaluate watchpoint condition expression and check if its value
4237 changed.
4238
4239 P should be a pointer to struct bpstat, but is defined as a void *
4240 in order for this function to be usable with catch_errors. */
4241
4242 static int
4243 watchpoint_check (void *p)
4244 {
4245 bpstat bs = (bpstat) p;
4246 struct watchpoint *b;
4247 struct frame_info *fr;
4248 int within_current_scope;
4249
4250 /* BS is built from an existing struct breakpoint. */
4251 gdb_assert (bs->breakpoint_at != NULL);
4252 b = (struct watchpoint *) bs->breakpoint_at;
4253
4254 /* If this is a local watchpoint, we only want to check if the
4255 watchpoint frame is in scope if the current thread is the thread
4256 that was used to create the watchpoint. */
4257 if (!watchpoint_in_thread_scope (b))
4258 return WP_IGNORE;
4259
4260 if (b->exp_valid_block == NULL)
4261 within_current_scope = 1;
4262 else
4263 {
4264 struct frame_info *frame = get_current_frame ();
4265 struct gdbarch *frame_arch = get_frame_arch (frame);
4266 CORE_ADDR frame_pc = get_frame_pc (frame);
4267
4268 /* in_function_epilogue_p() returns a non-zero value if we're
4269 still in the function but the stack frame has already been
4270 invalidated. Since we can't rely on the values of local
4271 variables after the stack has been destroyed, we are treating
4272 the watchpoint in that state as `not changed' without further
4273 checking. Don't mark watchpoints as changed if the current
4274 frame is in an epilogue - even if they are in some other
4275 frame, our view of the stack is likely to be wrong and
4276 frame_find_by_id could error out. */
4277 if (gdbarch_in_function_epilogue_p (frame_arch, frame_pc))
4278 return WP_IGNORE;
4279
4280 fr = frame_find_by_id (b->watchpoint_frame);
4281 within_current_scope = (fr != NULL);
4282
4283 /* If we've gotten confused in the unwinder, we might have
4284 returned a frame that can't describe this variable. */
4285 if (within_current_scope)
4286 {
4287 struct symbol *function;
4288
4289 function = get_frame_function (fr);
4290 if (function == NULL
4291 || !contained_in (b->exp_valid_block,
4292 SYMBOL_BLOCK_VALUE (function)))
4293 within_current_scope = 0;
4294 }
4295
4296 if (within_current_scope)
4297 /* If we end up stopping, the current frame will get selected
4298 in normal_stop. So this call to select_frame won't affect
4299 the user. */
4300 select_frame (fr);
4301 }
4302
4303 if (within_current_scope)
4304 {
4305 /* We use value_{,free_to_}mark because it could be a *long*
4306 time before we return to the command level and call
4307 free_all_values. We can't call free_all_values because we
4308 might be in the middle of evaluating a function call. */
4309
4310 int pc = 0;
4311 struct value *mark;
4312 struct value *new_val;
4313
4314 if (is_masked_watchpoint (&b->base))
4315 /* Since we don't know the exact trigger address (from
4316 stopped_data_address), just tell the user we've triggered
4317 a mask watchpoint. */
4318 return WP_VALUE_CHANGED;
4319
4320 mark = value_mark ();
4321 fetch_subexp_value (b->exp, &pc, &new_val, NULL, NULL);
4322
4323 /* We use value_equal_contents instead of value_equal because
4324 the latter coerces an array to a pointer, thus comparing just
4325 the address of the array instead of its contents. This is
4326 not what we want. */
4327 if ((b->val != NULL) != (new_val != NULL)
4328 || (b->val != NULL && !value_equal_contents (b->val, new_val)))
4329 {
4330 if (new_val != NULL)
4331 {
4332 release_value (new_val);
4333 value_free_to_mark (mark);
4334 }
4335 bs->old_val = b->val;
4336 b->val = new_val;
4337 b->val_valid = 1;
4338 return WP_VALUE_CHANGED;
4339 }
4340 else
4341 {
4342 /* Nothing changed. */
4343 value_free_to_mark (mark);
4344 return WP_VALUE_NOT_CHANGED;
4345 }
4346 }
4347 else
4348 {
4349 struct ui_out *uiout = current_uiout;
4350
4351 /* This seems like the only logical thing to do because
4352 if we temporarily ignored the watchpoint, then when
4353 we reenter the block in which it is valid it contains
4354 garbage (in the case of a function, it may have two
4355 garbage values, one before and one after the prologue).
4356 So we can't even detect the first assignment to it and
4357 watch after that (since the garbage may or may not equal
4358 the first value assigned). */
4359 /* We print all the stop information in
4360 breakpoint_ops->print_it, but in this case, by the time we
4361 call breakpoint_ops->print_it this bp will be deleted
4362 already. So we have no choice but print the information
4363 here. */
4364 if (ui_out_is_mi_like_p (uiout))
4365 ui_out_field_string
4366 (uiout, "reason", async_reason_lookup (EXEC_ASYNC_WATCHPOINT_SCOPE));
4367 ui_out_text (uiout, "\nWatchpoint ");
4368 ui_out_field_int (uiout, "wpnum", b->base.number);
4369 ui_out_text (uiout,
4370 " deleted because the program has left the block in\n\
4371 which its expression is valid.\n");
4372
4373 /* Make sure the watchpoint's commands aren't executed. */
4374 decref_counted_command_line (&b->base.commands);
4375 watchpoint_del_at_next_stop (b);
4376
4377 return WP_DELETED;
4378 }
4379 }
4380
4381 /* Return true if it looks like target has stopped due to hitting
4382 breakpoint location BL. This function does not check if we should
4383 stop, only if BL explains the stop. */
4384
4385 static int
4386 bpstat_check_location (const struct bp_location *bl,
4387 struct address_space *aspace, CORE_ADDR bp_addr,
4388 const struct target_waitstatus *ws)
4389 {
4390 struct breakpoint *b = bl->owner;
4391
4392 /* BL is from an existing breakpoint. */
4393 gdb_assert (b != NULL);
4394
4395 return b->ops->breakpoint_hit (bl, aspace, bp_addr, ws);
4396 }
4397
4398 /* Determine if the watched values have actually changed, and we
4399 should stop. If not, set BS->stop to 0. */
4400
4401 static void
4402 bpstat_check_watchpoint (bpstat bs)
4403 {
4404 const struct bp_location *bl;
4405 struct watchpoint *b;
4406
4407 /* BS is built for existing struct breakpoint. */
4408 bl = bs->bp_location_at;
4409 gdb_assert (bl != NULL);
4410 b = (struct watchpoint *) bs->breakpoint_at;
4411 gdb_assert (b != NULL);
4412
4413 {
4414 int must_check_value = 0;
4415
4416 if (b->base.type == bp_watchpoint)
4417 /* For a software watchpoint, we must always check the
4418 watched value. */
4419 must_check_value = 1;
4420 else if (b->watchpoint_triggered == watch_triggered_yes)
4421 /* We have a hardware watchpoint (read, write, or access)
4422 and the target earlier reported an address watched by
4423 this watchpoint. */
4424 must_check_value = 1;
4425 else if (b->watchpoint_triggered == watch_triggered_unknown
4426 && b->base.type == bp_hardware_watchpoint)
4427 /* We were stopped by a hardware watchpoint, but the target could
4428 not report the data address. We must check the watchpoint's
4429 value. Access and read watchpoints are out of luck; without
4430 a data address, we can't figure it out. */
4431 must_check_value = 1;
4432
4433 if (must_check_value)
4434 {
4435 char *message
4436 = xstrprintf ("Error evaluating expression for watchpoint %d\n",
4437 b->base.number);
4438 struct cleanup *cleanups = make_cleanup (xfree, message);
4439 int e = catch_errors (watchpoint_check, bs, message,
4440 RETURN_MASK_ALL);
4441 do_cleanups (cleanups);
4442 switch (e)
4443 {
4444 case WP_DELETED:
4445 /* We've already printed what needs to be printed. */
4446 bs->print_it = print_it_done;
4447 /* Stop. */
4448 break;
4449 case WP_IGNORE:
4450 bs->print_it = print_it_noop;
4451 bs->stop = 0;
4452 break;
4453 case WP_VALUE_CHANGED:
4454 if (b->base.type == bp_read_watchpoint)
4455 {
4456 /* There are two cases to consider here:
4457
4458 1. We're watching the triggered memory for reads.
4459 In that case, trust the target, and always report
4460 the watchpoint hit to the user. Even though
4461 reads don't cause value changes, the value may
4462 have changed since the last time it was read, and
4463 since we're not trapping writes, we will not see
4464 those, and as such we should ignore our notion of
4465 old value.
4466
4467 2. We're watching the triggered memory for both
4468 reads and writes. There are two ways this may
4469 happen:
4470
4471 2.1. This is a target that can't break on data
4472 reads only, but can break on accesses (reads or
4473 writes), such as e.g., x86. We detect this case
4474 at the time we try to insert read watchpoints.
4475
4476 2.2. Otherwise, the target supports read
4477 watchpoints, but, the user set an access or write
4478 watchpoint watching the same memory as this read
4479 watchpoint.
4480
4481 If we're watching memory writes as well as reads,
4482 ignore watchpoint hits when we find that the
4483 value hasn't changed, as reads don't cause
4484 changes. This still gives false positives when
4485 the program writes the same value to memory as
4486 what there was already in memory (we will confuse
4487 it for a read), but it's much better than
4488 nothing. */
4489
4490 int other_write_watchpoint = 0;
4491
4492 if (bl->watchpoint_type == hw_read)
4493 {
4494 struct breakpoint *other_b;
4495
4496 ALL_BREAKPOINTS (other_b)
4497 if (other_b->type == bp_hardware_watchpoint
4498 || other_b->type == bp_access_watchpoint)
4499 {
4500 struct watchpoint *other_w =
4501 (struct watchpoint *) other_b;
4502
4503 if (other_w->watchpoint_triggered
4504 == watch_triggered_yes)
4505 {
4506 other_write_watchpoint = 1;
4507 break;
4508 }
4509 }
4510 }
4511
4512 if (other_write_watchpoint
4513 || bl->watchpoint_type == hw_access)
4514 {
4515 /* We're watching the same memory for writes,
4516 and the value changed since the last time we
4517 updated it, so this trap must be for a write.
4518 Ignore it. */
4519 bs->print_it = print_it_noop;
4520 bs->stop = 0;
4521 }
4522 }
4523 break;
4524 case WP_VALUE_NOT_CHANGED:
4525 if (b->base.type == bp_hardware_watchpoint
4526 || b->base.type == bp_watchpoint)
4527 {
4528 /* Don't stop: write watchpoints shouldn't fire if
4529 the value hasn't changed. */
4530 bs->print_it = print_it_noop;
4531 bs->stop = 0;
4532 }
4533 /* Stop. */
4534 break;
4535 default:
4536 /* Can't happen. */
4537 case 0:
4538 /* Error from catch_errors. */
4539 printf_filtered (_("Watchpoint %d deleted.\n"), b->base.number);
4540 watchpoint_del_at_next_stop (b);
4541 /* We've already printed what needs to be printed. */
4542 bs->print_it = print_it_done;
4543 break;
4544 }
4545 }
4546 else /* must_check_value == 0 */
4547 {
4548 /* This is a case where some watchpoint(s) triggered, but
4549 not at the address of this watchpoint, or else no
4550 watchpoint triggered after all. So don't print
4551 anything for this watchpoint. */
4552 bs->print_it = print_it_noop;
4553 bs->stop = 0;
4554 }
4555 }
4556 }
4557
4558
4559 /* Check conditions (condition proper, frame, thread and ignore count)
4560 of breakpoint referred to by BS. If we should not stop for this
4561 breakpoint, set BS->stop to 0. */
4562
4563 static void
4564 bpstat_check_breakpoint_conditions (bpstat bs, ptid_t ptid)
4565 {
4566 int thread_id = pid_to_thread_id (ptid);
4567 const struct bp_location *bl;
4568 struct breakpoint *b;
4569
4570 /* BS is built for existing struct breakpoint. */
4571 bl = bs->bp_location_at;
4572 gdb_assert (bl != NULL);
4573 b = bs->breakpoint_at;
4574 gdb_assert (b != NULL);
4575
4576 /* Even if the target evaluated the condition on its end and notified GDB, we
4577 need to do so again since GDB does not know if we stopped due to a
4578 breakpoint or a single step breakpoint. */
4579
4580 if (frame_id_p (b->frame_id)
4581 && !frame_id_eq (b->frame_id, get_stack_frame_id (get_current_frame ())))
4582 bs->stop = 0;
4583 else if (bs->stop)
4584 {
4585 int value_is_zero = 0;
4586 struct expression *cond;
4587
4588 /* Evaluate Python breakpoints that have a "stop"
4589 method implemented. */
4590 if (b->py_bp_object)
4591 bs->stop = gdbpy_should_stop (b->py_bp_object);
4592
4593 if (is_watchpoint (b))
4594 {
4595 struct watchpoint *w = (struct watchpoint *) b;
4596
4597 cond = w->cond_exp;
4598 }
4599 else
4600 cond = bl->cond;
4601
4602 if (cond && b->disposition != disp_del_at_next_stop)
4603 {
4604 int within_current_scope = 1;
4605 struct watchpoint * w;
4606
4607 /* We use value_mark and value_free_to_mark because it could
4608 be a long time before we return to the command level and
4609 call free_all_values. We can't call free_all_values
4610 because we might be in the middle of evaluating a
4611 function call. */
4612 struct value *mark = value_mark ();
4613
4614 if (is_watchpoint (b))
4615 w = (struct watchpoint *) b;
4616 else
4617 w = NULL;
4618
4619 /* Need to select the frame, with all that implies so that
4620 the conditions will have the right context. Because we
4621 use the frame, we will not see an inlined function's
4622 variables when we arrive at a breakpoint at the start
4623 of the inlined function; the current frame will be the
4624 call site. */
4625 if (w == NULL || w->cond_exp_valid_block == NULL)
4626 select_frame (get_current_frame ());
4627 else
4628 {
4629 struct frame_info *frame;
4630
4631 /* For local watchpoint expressions, which particular
4632 instance of a local is being watched matters, so we
4633 keep track of the frame to evaluate the expression
4634 in. To evaluate the condition however, it doesn't
4635 really matter which instantiation of the function
4636 where the condition makes sense triggers the
4637 watchpoint. This allows an expression like "watch
4638 global if q > 10" set in `func', catch writes to
4639 global on all threads that call `func', or catch
4640 writes on all recursive calls of `func' by a single
4641 thread. We simply always evaluate the condition in
4642 the innermost frame that's executing where it makes
4643 sense to evaluate the condition. It seems
4644 intuitive. */
4645 frame = block_innermost_frame (w->cond_exp_valid_block);
4646 if (frame != NULL)
4647 select_frame (frame);
4648 else
4649 within_current_scope = 0;
4650 }
4651 if (within_current_scope)
4652 value_is_zero
4653 = catch_errors (breakpoint_cond_eval, cond,
4654 "Error in testing breakpoint condition:\n",
4655 RETURN_MASK_ALL);
4656 else
4657 {
4658 warning (_("Watchpoint condition cannot be tested "
4659 "in the current scope"));
4660 /* If we failed to set the right context for this
4661 watchpoint, unconditionally report it. */
4662 value_is_zero = 0;
4663 }
4664 /* FIXME-someday, should give breakpoint #. */
4665 value_free_to_mark (mark);
4666 }
4667
4668 if (cond && value_is_zero)
4669 {
4670 bs->stop = 0;
4671 }
4672 else if (b->thread != -1 && b->thread != thread_id)
4673 {
4674 bs->stop = 0;
4675 }
4676 else if (b->ignore_count > 0)
4677 {
4678 b->ignore_count--;
4679 annotate_ignore_count_change ();
4680 bs->stop = 0;
4681 /* Increase the hit count even though we don't stop. */
4682 ++(b->hit_count);
4683 observer_notify_breakpoint_modified (b);
4684 }
4685 }
4686 }
4687
4688
4689 /* Get a bpstat associated with having just stopped at address
4690 BP_ADDR in thread PTID.
4691
4692 Determine whether we stopped at a breakpoint, etc, or whether we
4693 don't understand this stop. Result is a chain of bpstat's such
4694 that:
4695
4696 if we don't understand the stop, the result is a null pointer.
4697
4698 if we understand why we stopped, the result is not null.
4699
4700 Each element of the chain refers to a particular breakpoint or
4701 watchpoint at which we have stopped. (We may have stopped for
4702 several reasons concurrently.)
4703
4704 Each element of the chain has valid next, breakpoint_at,
4705 commands, FIXME??? fields. */
4706
4707 bpstat
4708 bpstat_stop_status (struct address_space *aspace,
4709 CORE_ADDR bp_addr, ptid_t ptid,
4710 const struct target_waitstatus *ws)
4711 {
4712 struct breakpoint *b = NULL;
4713 struct bp_location *bl;
4714 struct bp_location *loc;
4715 /* First item of allocated bpstat's. */
4716 bpstat bs_head = NULL, *bs_link = &bs_head;
4717 /* Pointer to the last thing in the chain currently. */
4718 bpstat bs;
4719 int ix;
4720 int need_remove_insert;
4721 int removed_any;
4722
4723 /* First, build the bpstat chain with locations that explain a
4724 target stop, while being careful to not set the target running,
4725 as that may invalidate locations (in particular watchpoint
4726 locations are recreated). Resuming will happen here with
4727 breakpoint conditions or watchpoint expressions that include
4728 inferior function calls. */
4729
4730 ALL_BREAKPOINTS (b)
4731 {
4732 if (!breakpoint_enabled (b) && b->enable_state != bp_permanent)
4733 continue;
4734
4735 for (bl = b->loc; bl != NULL; bl = bl->next)
4736 {
4737 /* For hardware watchpoints, we look only at the first
4738 location. The watchpoint_check function will work on the
4739 entire expression, not the individual locations. For
4740 read watchpoints, the watchpoints_triggered function has
4741 checked all locations already. */
4742 if (b->type == bp_hardware_watchpoint && bl != b->loc)
4743 break;
4744
4745 if (bl->shlib_disabled)
4746 continue;
4747
4748 if (!bpstat_check_location (bl, aspace, bp_addr, ws))
4749 continue;
4750
4751 /* Come here if it's a watchpoint, or if the break address
4752 matches. */
4753
4754 bs = bpstat_alloc (bl, &bs_link); /* Alloc a bpstat to
4755 explain stop. */
4756
4757 /* Assume we stop. Should we find a watchpoint that is not
4758 actually triggered, or if the condition of the breakpoint
4759 evaluates as false, we'll reset 'stop' to 0. */
4760 bs->stop = 1;
4761 bs->print = 1;
4762
4763 /* If this is a scope breakpoint, mark the associated
4764 watchpoint as triggered so that we will handle the
4765 out-of-scope event. We'll get to the watchpoint next
4766 iteration. */
4767 if (b->type == bp_watchpoint_scope && b->related_breakpoint != b)
4768 {
4769 struct watchpoint *w = (struct watchpoint *) b->related_breakpoint;
4770
4771 w->watchpoint_triggered = watch_triggered_yes;
4772 }
4773 }
4774 }
4775
4776 for (ix = 0; VEC_iterate (bp_location_p, moribund_locations, ix, loc); ++ix)
4777 {
4778 if (breakpoint_location_address_match (loc, aspace, bp_addr))
4779 {
4780 bs = bpstat_alloc (loc, &bs_link);
4781 /* For hits of moribund locations, we should just proceed. */
4782 bs->stop = 0;
4783 bs->print = 0;
4784 bs->print_it = print_it_noop;
4785 }
4786 }
4787
4788 /* A bit of special processing for shlib breakpoints. We need to
4789 process solib loading here, so that the lists of loaded and
4790 unloaded libraries are correct before we handle "catch load" and
4791 "catch unload". */
4792 for (bs = bs_head; bs != NULL; bs = bs->next)
4793 {
4794 if (bs->breakpoint_at && bs->breakpoint_at->type == bp_shlib_event)
4795 {
4796 handle_solib_event ();
4797 break;
4798 }
4799 }
4800
4801 /* Now go through the locations that caused the target to stop, and
4802 check whether we're interested in reporting this stop to higher
4803 layers, or whether we should resume the target transparently. */
4804
4805 removed_any = 0;
4806
4807 for (bs = bs_head; bs != NULL; bs = bs->next)
4808 {
4809 if (!bs->stop)
4810 continue;
4811
4812 b = bs->breakpoint_at;
4813 b->ops->check_status (bs);
4814 if (bs->stop)
4815 {
4816 bpstat_check_breakpoint_conditions (bs, ptid);
4817
4818 if (bs->stop)
4819 {
4820 ++(b->hit_count);
4821 observer_notify_breakpoint_modified (b);
4822
4823 /* We will stop here. */
4824 if (b->disposition == disp_disable)
4825 {
4826 --(b->enable_count);
4827 if (b->enable_count <= 0
4828 && b->enable_state != bp_permanent)
4829 b->enable_state = bp_disabled;
4830 removed_any = 1;
4831 }
4832 if (b->silent)
4833 bs->print = 0;
4834 bs->commands = b->commands;
4835 incref_counted_command_line (bs->commands);
4836 if (command_line_is_silent (bs->commands
4837 ? bs->commands->commands : NULL))
4838 bs->print = 0;
4839 }
4840
4841 }
4842
4843 /* Print nothing for this entry if we don't stop or don't
4844 print. */
4845 if (!bs->stop || !bs->print)
4846 bs->print_it = print_it_noop;
4847 }
4848
4849 /* If we aren't stopping, the value of some hardware watchpoint may
4850 not have changed, but the intermediate memory locations we are
4851 watching may have. Don't bother if we're stopping; this will get
4852 done later. */
4853 need_remove_insert = 0;
4854 if (! bpstat_causes_stop (bs_head))
4855 for (bs = bs_head; bs != NULL; bs = bs->next)
4856 if (!bs->stop
4857 && bs->breakpoint_at
4858 && is_hardware_watchpoint (bs->breakpoint_at))
4859 {
4860 struct watchpoint *w = (struct watchpoint *) bs->breakpoint_at;
4861
4862 update_watchpoint (w, 0 /* don't reparse. */);
4863 need_remove_insert = 1;
4864 }
4865
4866 if (need_remove_insert)
4867 update_global_location_list (1);
4868 else if (removed_any)
4869 update_global_location_list (0);
4870
4871 return bs_head;
4872 }
4873
4874 static void
4875 handle_jit_event (void)
4876 {
4877 struct frame_info *frame;
4878 struct gdbarch *gdbarch;
4879
4880 /* Switch terminal for any messages produced by
4881 breakpoint_re_set. */
4882 target_terminal_ours_for_output ();
4883
4884 frame = get_current_frame ();
4885 gdbarch = get_frame_arch (frame);
4886
4887 jit_event_handler (gdbarch);
4888
4889 target_terminal_inferior ();
4890 }
4891
4892 /* Handle an solib event by calling solib_add. */
4893
4894 void
4895 handle_solib_event (void)
4896 {
4897 clear_program_space_solib_cache (current_inferior ()->pspace);
4898
4899 /* Check for any newly added shared libraries if we're supposed to
4900 be adding them automatically. Switch terminal for any messages
4901 produced by breakpoint_re_set. */
4902 target_terminal_ours_for_output ();
4903 #ifdef SOLIB_ADD
4904 SOLIB_ADD (NULL, 0, &current_target, auto_solib_add);
4905 #else
4906 solib_add (NULL, 0, &current_target, auto_solib_add);
4907 #endif
4908 target_terminal_inferior ();
4909 }
4910
4911 /* Prepare WHAT final decision for infrun. */
4912
4913 /* Decide what infrun needs to do with this bpstat. */
4914
4915 struct bpstat_what
4916 bpstat_what (bpstat bs_head)
4917 {
4918 struct bpstat_what retval;
4919 int jit_event = 0;
4920 bpstat bs;
4921
4922 retval.main_action = BPSTAT_WHAT_KEEP_CHECKING;
4923 retval.call_dummy = STOP_NONE;
4924 retval.is_longjmp = 0;
4925
4926 for (bs = bs_head; bs != NULL; bs = bs->next)
4927 {
4928 /* Extract this BS's action. After processing each BS, we check
4929 if its action overrides all we've seem so far. */
4930 enum bpstat_what_main_action this_action = BPSTAT_WHAT_KEEP_CHECKING;
4931 enum bptype bptype;
4932
4933 if (bs->breakpoint_at == NULL)
4934 {
4935 /* I suspect this can happen if it was a momentary
4936 breakpoint which has since been deleted. */
4937 bptype = bp_none;
4938 }
4939 else
4940 bptype = bs->breakpoint_at->type;
4941
4942 switch (bptype)
4943 {
4944 case bp_none:
4945 break;
4946 case bp_breakpoint:
4947 case bp_hardware_breakpoint:
4948 case bp_until:
4949 case bp_finish:
4950 case bp_shlib_event:
4951 if (bs->stop)
4952 {
4953 if (bs->print)
4954 this_action = BPSTAT_WHAT_STOP_NOISY;
4955 else
4956 this_action = BPSTAT_WHAT_STOP_SILENT;
4957 }
4958 else
4959 this_action = BPSTAT_WHAT_SINGLE;
4960 break;
4961 case bp_watchpoint:
4962 case bp_hardware_watchpoint:
4963 case bp_read_watchpoint:
4964 case bp_access_watchpoint:
4965 if (bs->stop)
4966 {
4967 if (bs->print)
4968 this_action = BPSTAT_WHAT_STOP_NOISY;
4969 else
4970 this_action = BPSTAT_WHAT_STOP_SILENT;
4971 }
4972 else
4973 {
4974 /* There was a watchpoint, but we're not stopping.
4975 This requires no further action. */
4976 }
4977 break;
4978 case bp_longjmp:
4979 case bp_exception:
4980 this_action = BPSTAT_WHAT_SET_LONGJMP_RESUME;
4981 retval.is_longjmp = bptype == bp_longjmp;
4982 break;
4983 case bp_longjmp_resume:
4984 case bp_exception_resume:
4985 this_action = BPSTAT_WHAT_CLEAR_LONGJMP_RESUME;
4986 retval.is_longjmp = bptype == bp_longjmp_resume;
4987 break;
4988 case bp_step_resume:
4989 if (bs->stop)
4990 this_action = BPSTAT_WHAT_STEP_RESUME;
4991 else
4992 {
4993 /* It is for the wrong frame. */
4994 this_action = BPSTAT_WHAT_SINGLE;
4995 }
4996 break;
4997 case bp_hp_step_resume:
4998 if (bs->stop)
4999 this_action = BPSTAT_WHAT_HP_STEP_RESUME;
5000 else
5001 {
5002 /* It is for the wrong frame. */
5003 this_action = BPSTAT_WHAT_SINGLE;
5004 }
5005 break;
5006 case bp_watchpoint_scope:
5007 case bp_thread_event:
5008 case bp_overlay_event:
5009 case bp_longjmp_master:
5010 case bp_std_terminate_master:
5011 case bp_exception_master:
5012 this_action = BPSTAT_WHAT_SINGLE;
5013 break;
5014 case bp_catchpoint:
5015 if (bs->stop)
5016 {
5017 if (bs->print)
5018 this_action = BPSTAT_WHAT_STOP_NOISY;
5019 else
5020 this_action = BPSTAT_WHAT_STOP_SILENT;
5021 }
5022 else
5023 {
5024 /* There was a catchpoint, but we're not stopping.
5025 This requires no further action. */
5026 }
5027 break;
5028 case bp_jit_event:
5029 jit_event = 1;
5030 this_action = BPSTAT_WHAT_SINGLE;
5031 break;
5032 case bp_call_dummy:
5033 /* Make sure the action is stop (silent or noisy),
5034 so infrun.c pops the dummy frame. */
5035 retval.call_dummy = STOP_STACK_DUMMY;
5036 this_action = BPSTAT_WHAT_STOP_SILENT;
5037 break;
5038 case bp_std_terminate:
5039 /* Make sure the action is stop (silent or noisy),
5040 so infrun.c pops the dummy frame. */
5041 retval.call_dummy = STOP_STD_TERMINATE;
5042 this_action = BPSTAT_WHAT_STOP_SILENT;
5043 break;
5044 case bp_tracepoint:
5045 case bp_fast_tracepoint:
5046 case bp_static_tracepoint:
5047 /* Tracepoint hits should not be reported back to GDB, and
5048 if one got through somehow, it should have been filtered
5049 out already. */
5050 internal_error (__FILE__, __LINE__,
5051 _("bpstat_what: tracepoint encountered"));
5052 break;
5053 case bp_gnu_ifunc_resolver:
5054 /* Step over it (and insert bp_gnu_ifunc_resolver_return). */
5055 this_action = BPSTAT_WHAT_SINGLE;
5056 break;
5057 case bp_gnu_ifunc_resolver_return:
5058 /* The breakpoint will be removed, execution will restart from the
5059 PC of the former breakpoint. */
5060 this_action = BPSTAT_WHAT_KEEP_CHECKING;
5061 break;
5062 default:
5063 internal_error (__FILE__, __LINE__,
5064 _("bpstat_what: unhandled bptype %d"), (int) bptype);
5065 }
5066
5067 retval.main_action = max (retval.main_action, this_action);
5068 }
5069
5070 /* These operations may affect the bs->breakpoint_at state so they are
5071 delayed after MAIN_ACTION is decided above. */
5072
5073 if (jit_event)
5074 {
5075 if (debug_infrun)
5076 fprintf_unfiltered (gdb_stdlog, "bpstat_what: bp_jit_event\n");
5077
5078 handle_jit_event ();
5079 }
5080
5081 for (bs = bs_head; bs != NULL; bs = bs->next)
5082 {
5083 struct breakpoint *b = bs->breakpoint_at;
5084
5085 if (b == NULL)
5086 continue;
5087 switch (b->type)
5088 {
5089 case bp_gnu_ifunc_resolver:
5090 gnu_ifunc_resolver_stop (b);
5091 break;
5092 case bp_gnu_ifunc_resolver_return:
5093 gnu_ifunc_resolver_return_stop (b);
5094 break;
5095 }
5096 }
5097
5098 return retval;
5099 }
5100
5101 /* Nonzero if we should step constantly (e.g. watchpoints on machines
5102 without hardware support). This isn't related to a specific bpstat,
5103 just to things like whether watchpoints are set. */
5104
5105 int
5106 bpstat_should_step (void)
5107 {
5108 struct breakpoint *b;
5109
5110 ALL_BREAKPOINTS (b)
5111 if (breakpoint_enabled (b) && b->type == bp_watchpoint && b->loc != NULL)
5112 return 1;
5113 return 0;
5114 }
5115
5116 int
5117 bpstat_causes_stop (bpstat bs)
5118 {
5119 for (; bs != NULL; bs = bs->next)
5120 if (bs->stop)
5121 return 1;
5122
5123 return 0;
5124 }
5125
5126 \f
5127
5128 /* Compute a string of spaces suitable to indent the next line
5129 so it starts at the position corresponding to the table column
5130 named COL_NAME in the currently active table of UIOUT. */
5131
5132 static char *
5133 wrap_indent_at_field (struct ui_out *uiout, const char *col_name)
5134 {
5135 static char wrap_indent[80];
5136 int i, total_width, width, align;
5137 char *text;
5138
5139 total_width = 0;
5140 for (i = 1; ui_out_query_field (uiout, i, &width, &align, &text); i++)
5141 {
5142 if (strcmp (text, col_name) == 0)
5143 {
5144 gdb_assert (total_width < sizeof wrap_indent);
5145 memset (wrap_indent, ' ', total_width);
5146 wrap_indent[total_width] = 0;
5147
5148 return wrap_indent;
5149 }
5150
5151 total_width += width + 1;
5152 }
5153
5154 return NULL;
5155 }
5156
5157 /* Determine if the locations of this breakpoint will have their conditions
5158 evaluated by the target, host or a mix of both. Returns the following:
5159
5160 "host": Host evals condition.
5161 "host or target": Host or Target evals condition.
5162 "target": Target evals condition.
5163 */
5164
5165 static const char *
5166 bp_condition_evaluator (struct breakpoint *b)
5167 {
5168 struct bp_location *bl;
5169 char host_evals = 0;
5170 char target_evals = 0;
5171
5172 if (!b)
5173 return NULL;
5174
5175 if (!is_breakpoint (b))
5176 return NULL;
5177
5178 if (gdb_evaluates_breakpoint_condition_p ()
5179 || !target_supports_evaluation_of_breakpoint_conditions ())
5180 return condition_evaluation_host;
5181
5182 for (bl = b->loc; bl; bl = bl->next)
5183 {
5184 if (bl->cond_bytecode)
5185 target_evals++;
5186 else
5187 host_evals++;
5188 }
5189
5190 if (host_evals && target_evals)
5191 return condition_evaluation_both;
5192 else if (target_evals)
5193 return condition_evaluation_target;
5194 else
5195 return condition_evaluation_host;
5196 }
5197
5198 /* Determine the breakpoint location's condition evaluator. This is
5199 similar to bp_condition_evaluator, but for locations. */
5200
5201 static const char *
5202 bp_location_condition_evaluator (struct bp_location *bl)
5203 {
5204 if (bl && !is_breakpoint (bl->owner))
5205 return NULL;
5206
5207 if (gdb_evaluates_breakpoint_condition_p ()
5208 || !target_supports_evaluation_of_breakpoint_conditions ())
5209 return condition_evaluation_host;
5210
5211 if (bl && bl->cond_bytecode)
5212 return condition_evaluation_target;
5213 else
5214 return condition_evaluation_host;
5215 }
5216
5217 /* Print the LOC location out of the list of B->LOC locations. */
5218
5219 static void
5220 print_breakpoint_location (struct breakpoint *b,
5221 struct bp_location *loc)
5222 {
5223 struct ui_out *uiout = current_uiout;
5224 struct cleanup *old_chain = save_current_program_space ();
5225
5226 if (loc != NULL && loc->shlib_disabled)
5227 loc = NULL;
5228
5229 if (loc != NULL)
5230 set_current_program_space (loc->pspace);
5231
5232 if (b->display_canonical)
5233 ui_out_field_string (uiout, "what", b->addr_string);
5234 else if (loc && loc->source_file)
5235 {
5236 struct symbol *sym
5237 = find_pc_sect_function (loc->address, loc->section);
5238 if (sym)
5239 {
5240 ui_out_text (uiout, "in ");
5241 ui_out_field_string (uiout, "func",
5242 SYMBOL_PRINT_NAME (sym));
5243 ui_out_text (uiout, " ");
5244 ui_out_wrap_hint (uiout, wrap_indent_at_field (uiout, "what"));
5245 ui_out_text (uiout, "at ");
5246 }
5247 ui_out_field_string (uiout, "file", loc->source_file);
5248 ui_out_text (uiout, ":");
5249
5250 if (ui_out_is_mi_like_p (uiout))
5251 {
5252 struct symtab_and_line sal = find_pc_line (loc->address, 0);
5253 char *fullname = symtab_to_fullname (sal.symtab);
5254
5255 if (fullname)
5256 ui_out_field_string (uiout, "fullname", fullname);
5257 }
5258
5259 ui_out_field_int (uiout, "line", loc->line_number);
5260 }
5261 else if (loc)
5262 {
5263 struct ui_stream *stb = ui_out_stream_new (uiout);
5264 struct cleanup *stb_chain = make_cleanup_ui_out_stream_delete (stb);
5265
5266 print_address_symbolic (loc->gdbarch, loc->address, stb->stream,
5267 demangle, "");
5268 ui_out_field_stream (uiout, "at", stb);
5269
5270 do_cleanups (stb_chain);
5271 }
5272 else
5273 ui_out_field_string (uiout, "pending", b->addr_string);
5274
5275 if (loc && is_breakpoint (b)
5276 && breakpoint_condition_evaluation_mode () == condition_evaluation_target
5277 && bp_condition_evaluator (b) == condition_evaluation_both)
5278 {
5279 ui_out_text (uiout, " (");
5280 ui_out_field_string (uiout, "evaluated-by",
5281 bp_location_condition_evaluator (loc));
5282 ui_out_text (uiout, ")");
5283 }
5284
5285 do_cleanups (old_chain);
5286 }
5287
5288 static const char *
5289 bptype_string (enum bptype type)
5290 {
5291 struct ep_type_description
5292 {
5293 enum bptype type;
5294 char *description;
5295 };
5296 static struct ep_type_description bptypes[] =
5297 {
5298 {bp_none, "?deleted?"},
5299 {bp_breakpoint, "breakpoint"},
5300 {bp_hardware_breakpoint, "hw breakpoint"},
5301 {bp_until, "until"},
5302 {bp_finish, "finish"},
5303 {bp_watchpoint, "watchpoint"},
5304 {bp_hardware_watchpoint, "hw watchpoint"},
5305 {bp_read_watchpoint, "read watchpoint"},
5306 {bp_access_watchpoint, "acc watchpoint"},
5307 {bp_longjmp, "longjmp"},
5308 {bp_longjmp_resume, "longjmp resume"},
5309 {bp_exception, "exception"},
5310 {bp_exception_resume, "exception resume"},
5311 {bp_step_resume, "step resume"},
5312 {bp_hp_step_resume, "high-priority step resume"},
5313 {bp_watchpoint_scope, "watchpoint scope"},
5314 {bp_call_dummy, "call dummy"},
5315 {bp_std_terminate, "std::terminate"},
5316 {bp_shlib_event, "shlib events"},
5317 {bp_thread_event, "thread events"},
5318 {bp_overlay_event, "overlay events"},
5319 {bp_longjmp_master, "longjmp master"},
5320 {bp_std_terminate_master, "std::terminate master"},
5321 {bp_exception_master, "exception master"},
5322 {bp_catchpoint, "catchpoint"},
5323 {bp_tracepoint, "tracepoint"},
5324 {bp_fast_tracepoint, "fast tracepoint"},
5325 {bp_static_tracepoint, "static tracepoint"},
5326 {bp_jit_event, "jit events"},
5327 {bp_gnu_ifunc_resolver, "STT_GNU_IFUNC resolver"},
5328 {bp_gnu_ifunc_resolver_return, "STT_GNU_IFUNC resolver return"},
5329 };
5330
5331 if (((int) type >= (sizeof (bptypes) / sizeof (bptypes[0])))
5332 || ((int) type != bptypes[(int) type].type))
5333 internal_error (__FILE__, __LINE__,
5334 _("bptypes table does not describe type #%d."),
5335 (int) type);
5336
5337 return bptypes[(int) type].description;
5338 }
5339
5340 /* Print B to gdb_stdout. */
5341
5342 static void
5343 print_one_breakpoint_location (struct breakpoint *b,
5344 struct bp_location *loc,
5345 int loc_number,
5346 struct bp_location **last_loc,
5347 int allflag)
5348 {
5349 struct command_line *l;
5350 static char bpenables[] = "nynny";
5351
5352 struct ui_out *uiout = current_uiout;
5353 int header_of_multiple = 0;
5354 int part_of_multiple = (loc != NULL);
5355 struct value_print_options opts;
5356
5357 get_user_print_options (&opts);
5358
5359 gdb_assert (!loc || loc_number != 0);
5360 /* See comment in print_one_breakpoint concerning treatment of
5361 breakpoints with single disabled location. */
5362 if (loc == NULL
5363 && (b->loc != NULL
5364 && (b->loc->next != NULL || !b->loc->enabled)))
5365 header_of_multiple = 1;
5366 if (loc == NULL)
5367 loc = b->loc;
5368
5369 annotate_record ();
5370
5371 /* 1 */
5372 annotate_field (0);
5373 if (part_of_multiple)
5374 {
5375 char *formatted;
5376 formatted = xstrprintf ("%d.%d", b->number, loc_number);
5377 ui_out_field_string (uiout, "number", formatted);
5378 xfree (formatted);
5379 }
5380 else
5381 {
5382 ui_out_field_int (uiout, "number", b->number);
5383 }
5384
5385 /* 2 */
5386 annotate_field (1);
5387 if (part_of_multiple)
5388 ui_out_field_skip (uiout, "type");
5389 else
5390 ui_out_field_string (uiout, "type", bptype_string (b->type));
5391
5392 /* 3 */
5393 annotate_field (2);
5394 if (part_of_multiple)
5395 ui_out_field_skip (uiout, "disp");
5396 else
5397 ui_out_field_string (uiout, "disp", bpdisp_text (b->disposition));
5398
5399
5400 /* 4 */
5401 annotate_field (3);
5402 if (part_of_multiple)
5403 ui_out_field_string (uiout, "enabled", loc->enabled ? "y" : "n");
5404 else
5405 ui_out_field_fmt (uiout, "enabled", "%c",
5406 bpenables[(int) b->enable_state]);
5407 ui_out_spaces (uiout, 2);
5408
5409
5410 /* 5 and 6 */
5411 if (b->ops != NULL && b->ops->print_one != NULL)
5412 {
5413 /* Although the print_one can possibly print all locations,
5414 calling it here is not likely to get any nice result. So,
5415 make sure there's just one location. */
5416 gdb_assert (b->loc == NULL || b->loc->next == NULL);
5417 b->ops->print_one (b, last_loc);
5418 }
5419 else
5420 switch (b->type)
5421 {
5422 case bp_none:
5423 internal_error (__FILE__, __LINE__,
5424 _("print_one_breakpoint: bp_none encountered\n"));
5425 break;
5426
5427 case bp_watchpoint:
5428 case bp_hardware_watchpoint:
5429 case bp_read_watchpoint:
5430 case bp_access_watchpoint:
5431 {
5432 struct watchpoint *w = (struct watchpoint *) b;
5433
5434 /* Field 4, the address, is omitted (which makes the columns
5435 not line up too nicely with the headers, but the effect
5436 is relatively readable). */
5437 if (opts.addressprint)
5438 ui_out_field_skip (uiout, "addr");
5439 annotate_field (5);
5440 ui_out_field_string (uiout, "what", w->exp_string);
5441 }
5442 break;
5443
5444 case bp_breakpoint:
5445 case bp_hardware_breakpoint:
5446 case bp_until:
5447 case bp_finish:
5448 case bp_longjmp:
5449 case bp_longjmp_resume:
5450 case bp_exception:
5451 case bp_exception_resume:
5452 case bp_step_resume:
5453 case bp_hp_step_resume:
5454 case bp_watchpoint_scope:
5455 case bp_call_dummy:
5456 case bp_std_terminate:
5457 case bp_shlib_event:
5458 case bp_thread_event:
5459 case bp_overlay_event:
5460 case bp_longjmp_master:
5461 case bp_std_terminate_master:
5462 case bp_exception_master:
5463 case bp_tracepoint:
5464 case bp_fast_tracepoint:
5465 case bp_static_tracepoint:
5466 case bp_jit_event:
5467 case bp_gnu_ifunc_resolver:
5468 case bp_gnu_ifunc_resolver_return:
5469 if (opts.addressprint)
5470 {
5471 annotate_field (4);
5472 if (header_of_multiple)
5473 ui_out_field_string (uiout, "addr", "<MULTIPLE>");
5474 else if (b->loc == NULL || loc->shlib_disabled)
5475 ui_out_field_string (uiout, "addr", "<PENDING>");
5476 else
5477 ui_out_field_core_addr (uiout, "addr",
5478 loc->gdbarch, loc->address);
5479 }
5480 annotate_field (5);
5481 if (!header_of_multiple)
5482 print_breakpoint_location (b, loc);
5483 if (b->loc)
5484 *last_loc = b->loc;
5485 break;
5486 }
5487
5488
5489 /* For backward compatibility, don't display inferiors unless there
5490 are several. */
5491 if (loc != NULL
5492 && !header_of_multiple
5493 && (allflag
5494 || (!gdbarch_has_global_breakpoints (target_gdbarch)
5495 && (number_of_program_spaces () > 1
5496 || number_of_inferiors () > 1)
5497 /* LOC is for existing B, it cannot be in
5498 moribund_locations and thus having NULL OWNER. */
5499 && loc->owner->type != bp_catchpoint)))
5500 {
5501 struct inferior *inf;
5502 int first = 1;
5503
5504 for (inf = inferior_list; inf != NULL; inf = inf->next)
5505 {
5506 if (inf->pspace == loc->pspace)
5507 {
5508 if (first)
5509 {
5510 first = 0;
5511 ui_out_text (uiout, " inf ");
5512 }
5513 else
5514 ui_out_text (uiout, ", ");
5515 ui_out_text (uiout, plongest (inf->num));
5516 }
5517 }
5518 }
5519
5520 if (!part_of_multiple)
5521 {
5522 if (b->thread != -1)
5523 {
5524 /* FIXME: This seems to be redundant and lost here; see the
5525 "stop only in" line a little further down. */
5526 ui_out_text (uiout, " thread ");
5527 ui_out_field_int (uiout, "thread", b->thread);
5528 }
5529 else if (b->task != 0)
5530 {
5531 ui_out_text (uiout, " task ");
5532 ui_out_field_int (uiout, "task", b->task);
5533 }
5534 }
5535
5536 ui_out_text (uiout, "\n");
5537
5538 if (!part_of_multiple)
5539 b->ops->print_one_detail (b, uiout);
5540
5541 if (part_of_multiple && frame_id_p (b->frame_id))
5542 {
5543 annotate_field (6);
5544 ui_out_text (uiout, "\tstop only in stack frame at ");
5545 /* FIXME: cagney/2002-12-01: Shouldn't be poking around inside
5546 the frame ID. */
5547 ui_out_field_core_addr (uiout, "frame",
5548 b->gdbarch, b->frame_id.stack_addr);
5549 ui_out_text (uiout, "\n");
5550 }
5551
5552 if (!part_of_multiple && b->cond_string)
5553 {
5554 annotate_field (7);
5555 if (is_tracepoint (b))
5556 ui_out_text (uiout, "\ttrace only if ");
5557 else
5558 ui_out_text (uiout, "\tstop only if ");
5559 ui_out_field_string (uiout, "cond", b->cond_string);
5560
5561 /* Print whether the target is doing the breakpoint's condition
5562 evaluation. If GDB is doing the evaluation, don't print anything. */
5563 if (is_breakpoint (b)
5564 && breakpoint_condition_evaluation_mode ()
5565 == condition_evaluation_target)
5566 {
5567 ui_out_text (uiout, " (");
5568 ui_out_field_string (uiout, "evaluated-by",
5569 bp_condition_evaluator (b));
5570 ui_out_text (uiout, " evals)");
5571 }
5572 ui_out_text (uiout, "\n");
5573 }
5574
5575 if (!part_of_multiple && b->thread != -1)
5576 {
5577 /* FIXME should make an annotation for this. */
5578 ui_out_text (uiout, "\tstop only in thread ");
5579 ui_out_field_int (uiout, "thread", b->thread);
5580 ui_out_text (uiout, "\n");
5581 }
5582
5583 if (!part_of_multiple && b->hit_count)
5584 {
5585 /* FIXME should make an annotation for this. */
5586 if (ep_is_catchpoint (b))
5587 ui_out_text (uiout, "\tcatchpoint");
5588 else if (is_tracepoint (b))
5589 ui_out_text (uiout, "\ttracepoint");
5590 else
5591 ui_out_text (uiout, "\tbreakpoint");
5592 ui_out_text (uiout, " already hit ");
5593 ui_out_field_int (uiout, "times", b->hit_count);
5594 if (b->hit_count == 1)
5595 ui_out_text (uiout, " time\n");
5596 else
5597 ui_out_text (uiout, " times\n");
5598 }
5599
5600 /* Output the count also if it is zero, but only if this is mi.
5601 FIXME: Should have a better test for this. */
5602 if (ui_out_is_mi_like_p (uiout))
5603 if (!part_of_multiple && b->hit_count == 0)
5604 ui_out_field_int (uiout, "times", b->hit_count);
5605
5606 if (!part_of_multiple && b->ignore_count)
5607 {
5608 annotate_field (8);
5609 ui_out_text (uiout, "\tignore next ");
5610 ui_out_field_int (uiout, "ignore", b->ignore_count);
5611 ui_out_text (uiout, " hits\n");
5612 }
5613
5614 /* Note that an enable count of 1 corresponds to "enable once"
5615 behavior, which is reported by the combination of enablement and
5616 disposition, so we don't need to mention it here. */
5617 if (!part_of_multiple && b->enable_count > 1)
5618 {
5619 annotate_field (8);
5620 ui_out_text (uiout, "\tdisable after ");
5621 /* Tweak the wording to clarify that ignore and enable counts
5622 are distinct, and have additive effect. */
5623 if (b->ignore_count)
5624 ui_out_text (uiout, "additional ");
5625 else
5626 ui_out_text (uiout, "next ");
5627 ui_out_field_int (uiout, "enable", b->enable_count);
5628 ui_out_text (uiout, " hits\n");
5629 }
5630
5631 if (!part_of_multiple && is_tracepoint (b))
5632 {
5633 struct tracepoint *tp = (struct tracepoint *) b;
5634
5635 if (tp->traceframe_usage)
5636 {
5637 ui_out_text (uiout, "\ttrace buffer usage ");
5638 ui_out_field_int (uiout, "traceframe-usage", tp->traceframe_usage);
5639 ui_out_text (uiout, " bytes\n");
5640 }
5641 }
5642
5643 l = b->commands ? b->commands->commands : NULL;
5644 if (!part_of_multiple && l)
5645 {
5646 struct cleanup *script_chain;
5647
5648 annotate_field (9);
5649 script_chain = make_cleanup_ui_out_tuple_begin_end (uiout, "script");
5650 print_command_lines (uiout, l, 4);
5651 do_cleanups (script_chain);
5652 }
5653
5654 if (is_tracepoint (b))
5655 {
5656 struct tracepoint *t = (struct tracepoint *) b;
5657
5658 if (!part_of_multiple && t->pass_count)
5659 {
5660 annotate_field (10);
5661 ui_out_text (uiout, "\tpass count ");
5662 ui_out_field_int (uiout, "pass", t->pass_count);
5663 ui_out_text (uiout, " \n");
5664 }
5665 }
5666
5667 if (ui_out_is_mi_like_p (uiout) && !part_of_multiple)
5668 {
5669 if (is_watchpoint (b))
5670 {
5671 struct watchpoint *w = (struct watchpoint *) b;
5672
5673 ui_out_field_string (uiout, "original-location", w->exp_string);
5674 }
5675 else if (b->addr_string)
5676 ui_out_field_string (uiout, "original-location", b->addr_string);
5677 }
5678 }
5679
5680 static void
5681 print_one_breakpoint (struct breakpoint *b,
5682 struct bp_location **last_loc,
5683 int allflag)
5684 {
5685 struct cleanup *bkpt_chain;
5686 struct ui_out *uiout = current_uiout;
5687
5688 bkpt_chain = make_cleanup_ui_out_tuple_begin_end (uiout, "bkpt");
5689
5690 print_one_breakpoint_location (b, NULL, 0, last_loc, allflag);
5691 do_cleanups (bkpt_chain);
5692
5693 /* If this breakpoint has custom print function,
5694 it's already printed. Otherwise, print individual
5695 locations, if any. */
5696 if (b->ops == NULL || b->ops->print_one == NULL)
5697 {
5698 /* If breakpoint has a single location that is disabled, we
5699 print it as if it had several locations, since otherwise it's
5700 hard to represent "breakpoint enabled, location disabled"
5701 situation.
5702
5703 Note that while hardware watchpoints have several locations
5704 internally, that's not a property exposed to user. */
5705 if (b->loc
5706 && !is_hardware_watchpoint (b)
5707 && (b->loc->next || !b->loc->enabled))
5708 {
5709 struct bp_location *loc;
5710 int n = 1;
5711
5712 for (loc = b->loc; loc; loc = loc->next, ++n)
5713 {
5714 struct cleanup *inner2 =
5715 make_cleanup_ui_out_tuple_begin_end (uiout, NULL);
5716 print_one_breakpoint_location (b, loc, n, last_loc, allflag);
5717 do_cleanups (inner2);
5718 }
5719 }
5720 }
5721 }
5722
5723 static int
5724 breakpoint_address_bits (struct breakpoint *b)
5725 {
5726 int print_address_bits = 0;
5727 struct bp_location *loc;
5728
5729 for (loc = b->loc; loc; loc = loc->next)
5730 {
5731 int addr_bit;
5732
5733 /* Software watchpoints that aren't watching memory don't have
5734 an address to print. */
5735 if (b->type == bp_watchpoint && loc->watchpoint_type == -1)
5736 continue;
5737
5738 addr_bit = gdbarch_addr_bit (loc->gdbarch);
5739 if (addr_bit > print_address_bits)
5740 print_address_bits = addr_bit;
5741 }
5742
5743 return print_address_bits;
5744 }
5745
5746 struct captured_breakpoint_query_args
5747 {
5748 int bnum;
5749 };
5750
5751 static int
5752 do_captured_breakpoint_query (struct ui_out *uiout, void *data)
5753 {
5754 struct captured_breakpoint_query_args *args = data;
5755 struct breakpoint *b;
5756 struct bp_location *dummy_loc = NULL;
5757
5758 ALL_BREAKPOINTS (b)
5759 {
5760 if (args->bnum == b->number)
5761 {
5762 print_one_breakpoint (b, &dummy_loc, 0);
5763 return GDB_RC_OK;
5764 }
5765 }
5766 return GDB_RC_NONE;
5767 }
5768
5769 enum gdb_rc
5770 gdb_breakpoint_query (struct ui_out *uiout, int bnum,
5771 char **error_message)
5772 {
5773 struct captured_breakpoint_query_args args;
5774
5775 args.bnum = bnum;
5776 /* For the moment we don't trust print_one_breakpoint() to not throw
5777 an error. */
5778 if (catch_exceptions_with_msg (uiout, do_captured_breakpoint_query, &args,
5779 error_message, RETURN_MASK_ALL) < 0)
5780 return GDB_RC_FAIL;
5781 else
5782 return GDB_RC_OK;
5783 }
5784
5785 /* Return true if this breakpoint was set by the user, false if it is
5786 internal or momentary. */
5787
5788 int
5789 user_breakpoint_p (struct breakpoint *b)
5790 {
5791 return b->number > 0;
5792 }
5793
5794 /* Print information on user settable breakpoint (watchpoint, etc)
5795 number BNUM. If BNUM is -1 print all user-settable breakpoints.
5796 If ALLFLAG is non-zero, include non-user-settable breakpoints. If
5797 FILTER is non-NULL, call it on each breakpoint and only include the
5798 ones for which it returns non-zero. Return the total number of
5799 breakpoints listed. */
5800
5801 static int
5802 breakpoint_1 (char *args, int allflag,
5803 int (*filter) (const struct breakpoint *))
5804 {
5805 struct breakpoint *b;
5806 struct bp_location *last_loc = NULL;
5807 int nr_printable_breakpoints;
5808 struct cleanup *bkpttbl_chain;
5809 struct value_print_options opts;
5810 int print_address_bits = 0;
5811 int print_type_col_width = 14;
5812 struct ui_out *uiout = current_uiout;
5813
5814 get_user_print_options (&opts);
5815
5816 /* Compute the number of rows in the table, as well as the size
5817 required for address fields. */
5818 nr_printable_breakpoints = 0;
5819 ALL_BREAKPOINTS (b)
5820 {
5821 /* If we have a filter, only list the breakpoints it accepts. */
5822 if (filter && !filter (b))
5823 continue;
5824
5825 /* If we have an "args" string, it is a list of breakpoints to
5826 accept. Skip the others. */
5827 if (args != NULL && *args != '\0')
5828 {
5829 if (allflag && parse_and_eval_long (args) != b->number)
5830 continue;
5831 if (!allflag && !number_is_in_list (args, b->number))
5832 continue;
5833 }
5834
5835 if (allflag || user_breakpoint_p (b))
5836 {
5837 int addr_bit, type_len;
5838
5839 addr_bit = breakpoint_address_bits (b);
5840 if (addr_bit > print_address_bits)
5841 print_address_bits = addr_bit;
5842
5843 type_len = strlen (bptype_string (b->type));
5844 if (type_len > print_type_col_width)
5845 print_type_col_width = type_len;
5846
5847 nr_printable_breakpoints++;
5848 }
5849 }
5850
5851 if (opts.addressprint)
5852 bkpttbl_chain
5853 = make_cleanup_ui_out_table_begin_end (uiout, 6,
5854 nr_printable_breakpoints,
5855 "BreakpointTable");
5856 else
5857 bkpttbl_chain
5858 = make_cleanup_ui_out_table_begin_end (uiout, 5,
5859 nr_printable_breakpoints,
5860 "BreakpointTable");
5861
5862 if (nr_printable_breakpoints > 0)
5863 annotate_breakpoints_headers ();
5864 if (nr_printable_breakpoints > 0)
5865 annotate_field (0);
5866 ui_out_table_header (uiout, 7, ui_left, "number", "Num"); /* 1 */
5867 if (nr_printable_breakpoints > 0)
5868 annotate_field (1);
5869 ui_out_table_header (uiout, print_type_col_width, ui_left,
5870 "type", "Type"); /* 2 */
5871 if (nr_printable_breakpoints > 0)
5872 annotate_field (2);
5873 ui_out_table_header (uiout, 4, ui_left, "disp", "Disp"); /* 3 */
5874 if (nr_printable_breakpoints > 0)
5875 annotate_field (3);
5876 ui_out_table_header (uiout, 3, ui_left, "enabled", "Enb"); /* 4 */
5877 if (opts.addressprint)
5878 {
5879 if (nr_printable_breakpoints > 0)
5880 annotate_field (4);
5881 if (print_address_bits <= 32)
5882 ui_out_table_header (uiout, 10, ui_left,
5883 "addr", "Address"); /* 5 */
5884 else
5885 ui_out_table_header (uiout, 18, ui_left,
5886 "addr", "Address"); /* 5 */
5887 }
5888 if (nr_printable_breakpoints > 0)
5889 annotate_field (5);
5890 ui_out_table_header (uiout, 40, ui_noalign, "what", "What"); /* 6 */
5891 ui_out_table_body (uiout);
5892 if (nr_printable_breakpoints > 0)
5893 annotate_breakpoints_table ();
5894
5895 ALL_BREAKPOINTS (b)
5896 {
5897 QUIT;
5898 /* If we have a filter, only list the breakpoints it accepts. */
5899 if (filter && !filter (b))
5900 continue;
5901
5902 /* If we have an "args" string, it is a list of breakpoints to
5903 accept. Skip the others. */
5904
5905 if (args != NULL && *args != '\0')
5906 {
5907 if (allflag) /* maintenance info breakpoint */
5908 {
5909 if (parse_and_eval_long (args) != b->number)
5910 continue;
5911 }
5912 else /* all others */
5913 {
5914 if (!number_is_in_list (args, b->number))
5915 continue;
5916 }
5917 }
5918 /* We only print out user settable breakpoints unless the
5919 allflag is set. */
5920 if (allflag || user_breakpoint_p (b))
5921 print_one_breakpoint (b, &last_loc, allflag);
5922 }
5923
5924 do_cleanups (bkpttbl_chain);
5925
5926 if (nr_printable_breakpoints == 0)
5927 {
5928 /* If there's a filter, let the caller decide how to report
5929 empty list. */
5930 if (!filter)
5931 {
5932 if (args == NULL || *args == '\0')
5933 ui_out_message (uiout, 0, "No breakpoints or watchpoints.\n");
5934 else
5935 ui_out_message (uiout, 0,
5936 "No breakpoint or watchpoint matching '%s'.\n",
5937 args);
5938 }
5939 }
5940 else
5941 {
5942 if (last_loc && !server_command)
5943 set_next_address (last_loc->gdbarch, last_loc->address);
5944 }
5945
5946 /* FIXME? Should this be moved up so that it is only called when
5947 there have been breakpoints? */
5948 annotate_breakpoints_table_end ();
5949
5950 return nr_printable_breakpoints;
5951 }
5952
5953 /* Display the value of default-collect in a way that is generally
5954 compatible with the breakpoint list. */
5955
5956 static void
5957 default_collect_info (void)
5958 {
5959 struct ui_out *uiout = current_uiout;
5960
5961 /* If it has no value (which is frequently the case), say nothing; a
5962 message like "No default-collect." gets in user's face when it's
5963 not wanted. */
5964 if (!*default_collect)
5965 return;
5966
5967 /* The following phrase lines up nicely with per-tracepoint collect
5968 actions. */
5969 ui_out_text (uiout, "default collect ");
5970 ui_out_field_string (uiout, "default-collect", default_collect);
5971 ui_out_text (uiout, " \n");
5972 }
5973
5974 static void
5975 breakpoints_info (char *args, int from_tty)
5976 {
5977 breakpoint_1 (args, 0, NULL);
5978
5979 default_collect_info ();
5980 }
5981
5982 static void
5983 watchpoints_info (char *args, int from_tty)
5984 {
5985 int num_printed = breakpoint_1 (args, 0, is_watchpoint);
5986 struct ui_out *uiout = current_uiout;
5987
5988 if (num_printed == 0)
5989 {
5990 if (args == NULL || *args == '\0')
5991 ui_out_message (uiout, 0, "No watchpoints.\n");
5992 else
5993 ui_out_message (uiout, 0, "No watchpoint matching '%s'.\n", args);
5994 }
5995 }
5996
5997 static void
5998 maintenance_info_breakpoints (char *args, int from_tty)
5999 {
6000 breakpoint_1 (args, 1, NULL);
6001
6002 default_collect_info ();
6003 }
6004
6005 static int
6006 breakpoint_has_pc (struct breakpoint *b,
6007 struct program_space *pspace,
6008 CORE_ADDR pc, struct obj_section *section)
6009 {
6010 struct bp_location *bl = b->loc;
6011
6012 for (; bl; bl = bl->next)
6013 {
6014 if (bl->pspace == pspace
6015 && bl->address == pc
6016 && (!overlay_debugging || bl->section == section))
6017 return 1;
6018 }
6019 return 0;
6020 }
6021
6022 /* Print a message describing any user-breakpoints set at PC. This
6023 concerns with logical breakpoints, so we match program spaces, not
6024 address spaces. */
6025
6026 static void
6027 describe_other_breakpoints (struct gdbarch *gdbarch,
6028 struct program_space *pspace, CORE_ADDR pc,
6029 struct obj_section *section, int thread)
6030 {
6031 int others = 0;
6032 struct breakpoint *b;
6033
6034 ALL_BREAKPOINTS (b)
6035 others += (user_breakpoint_p (b)
6036 && breakpoint_has_pc (b, pspace, pc, section));
6037 if (others > 0)
6038 {
6039 if (others == 1)
6040 printf_filtered (_("Note: breakpoint "));
6041 else /* if (others == ???) */
6042 printf_filtered (_("Note: breakpoints "));
6043 ALL_BREAKPOINTS (b)
6044 if (user_breakpoint_p (b) && breakpoint_has_pc (b, pspace, pc, section))
6045 {
6046 others--;
6047 printf_filtered ("%d", b->number);
6048 if (b->thread == -1 && thread != -1)
6049 printf_filtered (" (all threads)");
6050 else if (b->thread != -1)
6051 printf_filtered (" (thread %d)", b->thread);
6052 printf_filtered ("%s%s ",
6053 ((b->enable_state == bp_disabled
6054 || b->enable_state == bp_call_disabled)
6055 ? " (disabled)"
6056 : b->enable_state == bp_permanent
6057 ? " (permanent)"
6058 : ""),
6059 (others > 1) ? ","
6060 : ((others == 1) ? " and" : ""));
6061 }
6062 printf_filtered (_("also set at pc "));
6063 fputs_filtered (paddress (gdbarch, pc), gdb_stdout);
6064 printf_filtered (".\n");
6065 }
6066 }
6067 \f
6068
6069 /* Return true iff it is meaningful to use the address member of
6070 BPT. For some breakpoint types, the address member is irrelevant
6071 and it makes no sense to attempt to compare it to other addresses
6072 (or use it for any other purpose either).
6073
6074 More specifically, each of the following breakpoint types will
6075 always have a zero valued address and we don't want to mark
6076 breakpoints of any of these types to be a duplicate of an actual
6077 breakpoint at address zero:
6078
6079 bp_watchpoint
6080 bp_catchpoint
6081
6082 */
6083
6084 static int
6085 breakpoint_address_is_meaningful (struct breakpoint *bpt)
6086 {
6087 enum bptype type = bpt->type;
6088
6089 return (type != bp_watchpoint && type != bp_catchpoint);
6090 }
6091
6092 /* Assuming LOC1 and LOC2's owners are hardware watchpoints, returns
6093 true if LOC1 and LOC2 represent the same watchpoint location. */
6094
6095 static int
6096 watchpoint_locations_match (struct bp_location *loc1,
6097 struct bp_location *loc2)
6098 {
6099 struct watchpoint *w1 = (struct watchpoint *) loc1->owner;
6100 struct watchpoint *w2 = (struct watchpoint *) loc2->owner;
6101
6102 /* Both of them must exist. */
6103 gdb_assert (w1 != NULL);
6104 gdb_assert (w2 != NULL);
6105
6106 /* If the target can evaluate the condition expression in hardware,
6107 then we we need to insert both watchpoints even if they are at
6108 the same place. Otherwise the watchpoint will only trigger when
6109 the condition of whichever watchpoint was inserted evaluates to
6110 true, not giving a chance for GDB to check the condition of the
6111 other watchpoint. */
6112 if ((w1->cond_exp
6113 && target_can_accel_watchpoint_condition (loc1->address,
6114 loc1->length,
6115 loc1->watchpoint_type,
6116 w1->cond_exp))
6117 || (w2->cond_exp
6118 && target_can_accel_watchpoint_condition (loc2->address,
6119 loc2->length,
6120 loc2->watchpoint_type,
6121 w2->cond_exp)))
6122 return 0;
6123
6124 /* Note that this checks the owner's type, not the location's. In
6125 case the target does not support read watchpoints, but does
6126 support access watchpoints, we'll have bp_read_watchpoint
6127 watchpoints with hw_access locations. Those should be considered
6128 duplicates of hw_read locations. The hw_read locations will
6129 become hw_access locations later. */
6130 return (loc1->owner->type == loc2->owner->type
6131 && loc1->pspace->aspace == loc2->pspace->aspace
6132 && loc1->address == loc2->address
6133 && loc1->length == loc2->length);
6134 }
6135
6136 /* Returns true if {ASPACE1,ADDR1} and {ASPACE2,ADDR2} represent the
6137 same breakpoint location. In most targets, this can only be true
6138 if ASPACE1 matches ASPACE2. On targets that have global
6139 breakpoints, the address space doesn't really matter. */
6140
6141 static int
6142 breakpoint_address_match (struct address_space *aspace1, CORE_ADDR addr1,
6143 struct address_space *aspace2, CORE_ADDR addr2)
6144 {
6145 return ((gdbarch_has_global_breakpoints (target_gdbarch)
6146 || aspace1 == aspace2)
6147 && addr1 == addr2);
6148 }
6149
6150 /* Returns true if {ASPACE2,ADDR2} falls within the range determined by
6151 {ASPACE1,ADDR1,LEN1}. In most targets, this can only be true if ASPACE1
6152 matches ASPACE2. On targets that have global breakpoints, the address
6153 space doesn't really matter. */
6154
6155 static int
6156 breakpoint_address_match_range (struct address_space *aspace1, CORE_ADDR addr1,
6157 int len1, struct address_space *aspace2,
6158 CORE_ADDR addr2)
6159 {
6160 return ((gdbarch_has_global_breakpoints (target_gdbarch)
6161 || aspace1 == aspace2)
6162 && addr2 >= addr1 && addr2 < addr1 + len1);
6163 }
6164
6165 /* Returns true if {ASPACE,ADDR} matches the breakpoint BL. BL may be
6166 a ranged breakpoint. In most targets, a match happens only if ASPACE
6167 matches the breakpoint's address space. On targets that have global
6168 breakpoints, the address space doesn't really matter. */
6169
6170 static int
6171 breakpoint_location_address_match (struct bp_location *bl,
6172 struct address_space *aspace,
6173 CORE_ADDR addr)
6174 {
6175 return (breakpoint_address_match (bl->pspace->aspace, bl->address,
6176 aspace, addr)
6177 || (bl->length
6178 && breakpoint_address_match_range (bl->pspace->aspace,
6179 bl->address, bl->length,
6180 aspace, addr)));
6181 }
6182
6183 /* If LOC1 and LOC2's owners are not tracepoints, returns false directly.
6184 Then, if LOC1 and LOC2 represent the same tracepoint location, returns
6185 true, otherwise returns false. */
6186
6187 static int
6188 tracepoint_locations_match (struct bp_location *loc1,
6189 struct bp_location *loc2)
6190 {
6191 if (is_tracepoint (loc1->owner) && is_tracepoint (loc2->owner))
6192 /* Since tracepoint locations are never duplicated with others', tracepoint
6193 locations at the same address of different tracepoints are regarded as
6194 different locations. */
6195 return (loc1->address == loc2->address && loc1->owner == loc2->owner);
6196 else
6197 return 0;
6198 }
6199
6200 /* Assuming LOC1 and LOC2's types' have meaningful target addresses
6201 (breakpoint_address_is_meaningful), returns true if LOC1 and LOC2
6202 represent the same location. */
6203
6204 static int
6205 breakpoint_locations_match (struct bp_location *loc1,
6206 struct bp_location *loc2)
6207 {
6208 int hw_point1, hw_point2;
6209
6210 /* Both of them must not be in moribund_locations. */
6211 gdb_assert (loc1->owner != NULL);
6212 gdb_assert (loc2->owner != NULL);
6213
6214 hw_point1 = is_hardware_watchpoint (loc1->owner);
6215 hw_point2 = is_hardware_watchpoint (loc2->owner);
6216
6217 if (hw_point1 != hw_point2)
6218 return 0;
6219 else if (hw_point1)
6220 return watchpoint_locations_match (loc1, loc2);
6221 else if (is_tracepoint (loc1->owner) || is_tracepoint (loc2->owner))
6222 return tracepoint_locations_match (loc1, loc2);
6223 else
6224 /* We compare bp_location.length in order to cover ranged breakpoints. */
6225 return (breakpoint_address_match (loc1->pspace->aspace, loc1->address,
6226 loc2->pspace->aspace, loc2->address)
6227 && loc1->length == loc2->length);
6228 }
6229
6230 static void
6231 breakpoint_adjustment_warning (CORE_ADDR from_addr, CORE_ADDR to_addr,
6232 int bnum, int have_bnum)
6233 {
6234 /* The longest string possibly returned by hex_string_custom
6235 is 50 chars. These must be at least that big for safety. */
6236 char astr1[64];
6237 char astr2[64];
6238
6239 strcpy (astr1, hex_string_custom ((unsigned long) from_addr, 8));
6240 strcpy (astr2, hex_string_custom ((unsigned long) to_addr, 8));
6241 if (have_bnum)
6242 warning (_("Breakpoint %d address previously adjusted from %s to %s."),
6243 bnum, astr1, astr2);
6244 else
6245 warning (_("Breakpoint address adjusted from %s to %s."), astr1, astr2);
6246 }
6247
6248 /* Adjust a breakpoint's address to account for architectural
6249 constraints on breakpoint placement. Return the adjusted address.
6250 Note: Very few targets require this kind of adjustment. For most
6251 targets, this function is simply the identity function. */
6252
6253 static CORE_ADDR
6254 adjust_breakpoint_address (struct gdbarch *gdbarch,
6255 CORE_ADDR bpaddr, enum bptype bptype)
6256 {
6257 if (!gdbarch_adjust_breakpoint_address_p (gdbarch))
6258 {
6259 /* Very few targets need any kind of breakpoint adjustment. */
6260 return bpaddr;
6261 }
6262 else if (bptype == bp_watchpoint
6263 || bptype == bp_hardware_watchpoint
6264 || bptype == bp_read_watchpoint
6265 || bptype == bp_access_watchpoint
6266 || bptype == bp_catchpoint)
6267 {
6268 /* Watchpoints and the various bp_catch_* eventpoints should not
6269 have their addresses modified. */
6270 return bpaddr;
6271 }
6272 else
6273 {
6274 CORE_ADDR adjusted_bpaddr;
6275
6276 /* Some targets have architectural constraints on the placement
6277 of breakpoint instructions. Obtain the adjusted address. */
6278 adjusted_bpaddr = gdbarch_adjust_breakpoint_address (gdbarch, bpaddr);
6279
6280 /* An adjusted breakpoint address can significantly alter
6281 a user's expectations. Print a warning if an adjustment
6282 is required. */
6283 if (adjusted_bpaddr != bpaddr)
6284 breakpoint_adjustment_warning (bpaddr, adjusted_bpaddr, 0, 0);
6285
6286 return adjusted_bpaddr;
6287 }
6288 }
6289
6290 void
6291 init_bp_location (struct bp_location *loc, const struct bp_location_ops *ops,
6292 struct breakpoint *owner)
6293 {
6294 memset (loc, 0, sizeof (*loc));
6295
6296 gdb_assert (ops != NULL);
6297
6298 loc->ops = ops;
6299 loc->owner = owner;
6300 loc->cond = NULL;
6301 loc->cond_bytecode = NULL;
6302 loc->shlib_disabled = 0;
6303 loc->enabled = 1;
6304
6305 switch (owner->type)
6306 {
6307 case bp_breakpoint:
6308 case bp_until:
6309 case bp_finish:
6310 case bp_longjmp:
6311 case bp_longjmp_resume:
6312 case bp_exception:
6313 case bp_exception_resume:
6314 case bp_step_resume:
6315 case bp_hp_step_resume:
6316 case bp_watchpoint_scope:
6317 case bp_call_dummy:
6318 case bp_std_terminate:
6319 case bp_shlib_event:
6320 case bp_thread_event:
6321 case bp_overlay_event:
6322 case bp_jit_event:
6323 case bp_longjmp_master:
6324 case bp_std_terminate_master:
6325 case bp_exception_master:
6326 case bp_gnu_ifunc_resolver:
6327 case bp_gnu_ifunc_resolver_return:
6328 loc->loc_type = bp_loc_software_breakpoint;
6329 mark_breakpoint_location_modified (loc);
6330 break;
6331 case bp_hardware_breakpoint:
6332 loc->loc_type = bp_loc_hardware_breakpoint;
6333 mark_breakpoint_location_modified (loc);
6334 break;
6335 case bp_hardware_watchpoint:
6336 case bp_read_watchpoint:
6337 case bp_access_watchpoint:
6338 loc->loc_type = bp_loc_hardware_watchpoint;
6339 break;
6340 case bp_watchpoint:
6341 case bp_catchpoint:
6342 case bp_tracepoint:
6343 case bp_fast_tracepoint:
6344 case bp_static_tracepoint:
6345 loc->loc_type = bp_loc_other;
6346 break;
6347 default:
6348 internal_error (__FILE__, __LINE__, _("unknown breakpoint type"));
6349 }
6350
6351 loc->refc = 1;
6352 }
6353
6354 /* Allocate a struct bp_location. */
6355
6356 static struct bp_location *
6357 allocate_bp_location (struct breakpoint *bpt)
6358 {
6359 return bpt->ops->allocate_location (bpt);
6360 }
6361
6362 static void
6363 free_bp_location (struct bp_location *loc)
6364 {
6365 loc->ops->dtor (loc);
6366 xfree (loc);
6367 }
6368
6369 /* Increment reference count. */
6370
6371 static void
6372 incref_bp_location (struct bp_location *bl)
6373 {
6374 ++bl->refc;
6375 }
6376
6377 /* Decrement reference count. If the reference count reaches 0,
6378 destroy the bp_location. Sets *BLP to NULL. */
6379
6380 static void
6381 decref_bp_location (struct bp_location **blp)
6382 {
6383 gdb_assert ((*blp)->refc > 0);
6384
6385 if (--(*blp)->refc == 0)
6386 free_bp_location (*blp);
6387 *blp = NULL;
6388 }
6389
6390 /* Add breakpoint B at the end of the global breakpoint chain. */
6391
6392 static void
6393 add_to_breakpoint_chain (struct breakpoint *b)
6394 {
6395 struct breakpoint *b1;
6396
6397 /* Add this breakpoint to the end of the chain so that a list of
6398 breakpoints will come out in order of increasing numbers. */
6399
6400 b1 = breakpoint_chain;
6401 if (b1 == 0)
6402 breakpoint_chain = b;
6403 else
6404 {
6405 while (b1->next)
6406 b1 = b1->next;
6407 b1->next = b;
6408 }
6409 }
6410
6411 /* Initializes breakpoint B with type BPTYPE and no locations yet. */
6412
6413 static void
6414 init_raw_breakpoint_without_location (struct breakpoint *b,
6415 struct gdbarch *gdbarch,
6416 enum bptype bptype,
6417 const struct breakpoint_ops *ops)
6418 {
6419 memset (b, 0, sizeof (*b));
6420
6421 gdb_assert (ops != NULL);
6422
6423 b->ops = ops;
6424 b->type = bptype;
6425 b->gdbarch = gdbarch;
6426 b->language = current_language->la_language;
6427 b->input_radix = input_radix;
6428 b->thread = -1;
6429 b->enable_state = bp_enabled;
6430 b->next = 0;
6431 b->silent = 0;
6432 b->ignore_count = 0;
6433 b->commands = NULL;
6434 b->frame_id = null_frame_id;
6435 b->condition_not_parsed = 0;
6436 b->py_bp_object = NULL;
6437 b->related_breakpoint = b;
6438 }
6439
6440 /* Helper to set_raw_breakpoint below. Creates a breakpoint
6441 that has type BPTYPE and has no locations as yet. */
6442
6443 static struct breakpoint *
6444 set_raw_breakpoint_without_location (struct gdbarch *gdbarch,
6445 enum bptype bptype,
6446 const struct breakpoint_ops *ops)
6447 {
6448 struct breakpoint *b = XNEW (struct breakpoint);
6449
6450 init_raw_breakpoint_without_location (b, gdbarch, bptype, ops);
6451 add_to_breakpoint_chain (b);
6452 return b;
6453 }
6454
6455 /* Initialize loc->function_name. EXPLICIT_LOC says no indirect function
6456 resolutions should be made as the user specified the location explicitly
6457 enough. */
6458
6459 static void
6460 set_breakpoint_location_function (struct bp_location *loc, int explicit_loc)
6461 {
6462 gdb_assert (loc->owner != NULL);
6463
6464 if (loc->owner->type == bp_breakpoint
6465 || loc->owner->type == bp_hardware_breakpoint
6466 || is_tracepoint (loc->owner))
6467 {
6468 int is_gnu_ifunc;
6469 const char *function_name;
6470
6471 find_pc_partial_function_gnu_ifunc (loc->address, &function_name,
6472 NULL, NULL, &is_gnu_ifunc);
6473
6474 if (is_gnu_ifunc && !explicit_loc)
6475 {
6476 struct breakpoint *b = loc->owner;
6477
6478 gdb_assert (loc->pspace == current_program_space);
6479 if (gnu_ifunc_resolve_name (function_name,
6480 &loc->requested_address))
6481 {
6482 /* Recalculate ADDRESS based on new REQUESTED_ADDRESS. */
6483 loc->address = adjust_breakpoint_address (loc->gdbarch,
6484 loc->requested_address,
6485 b->type);
6486 }
6487 else if (b->type == bp_breakpoint && b->loc == loc
6488 && loc->next == NULL && b->related_breakpoint == b)
6489 {
6490 /* Create only the whole new breakpoint of this type but do not
6491 mess more complicated breakpoints with multiple locations. */
6492 b->type = bp_gnu_ifunc_resolver;
6493 }
6494 }
6495
6496 if (function_name)
6497 loc->function_name = xstrdup (function_name);
6498 }
6499 }
6500
6501 /* Attempt to determine architecture of location identified by SAL. */
6502 struct gdbarch *
6503 get_sal_arch (struct symtab_and_line sal)
6504 {
6505 if (sal.section)
6506 return get_objfile_arch (sal.section->objfile);
6507 if (sal.symtab)
6508 return get_objfile_arch (sal.symtab->objfile);
6509
6510 return NULL;
6511 }
6512
6513 /* Low level routine for partially initializing a breakpoint of type
6514 BPTYPE. The newly created breakpoint's address, section, source
6515 file name, and line number are provided by SAL.
6516
6517 It is expected that the caller will complete the initialization of
6518 the newly created breakpoint struct as well as output any status
6519 information regarding the creation of a new breakpoint. */
6520
6521 static void
6522 init_raw_breakpoint (struct breakpoint *b, struct gdbarch *gdbarch,
6523 struct symtab_and_line sal, enum bptype bptype,
6524 const struct breakpoint_ops *ops)
6525 {
6526 init_raw_breakpoint_without_location (b, gdbarch, bptype, ops);
6527
6528 add_location_to_breakpoint (b, &sal);
6529
6530 if (bptype != bp_catchpoint)
6531 gdb_assert (sal.pspace != NULL);
6532
6533 /* Store the program space that was used to set the breakpoint,
6534 except for ordinary breakpoints, which are independent of the
6535 program space. */
6536 if (bptype != bp_breakpoint && bptype != bp_hardware_breakpoint)
6537 b->pspace = sal.pspace;
6538
6539 breakpoints_changed ();
6540 }
6541
6542 /* set_raw_breakpoint is a low level routine for allocating and
6543 partially initializing a breakpoint of type BPTYPE. The newly
6544 created breakpoint's address, section, source file name, and line
6545 number are provided by SAL. The newly created and partially
6546 initialized breakpoint is added to the breakpoint chain and
6547 is also returned as the value of this function.
6548
6549 It is expected that the caller will complete the initialization of
6550 the newly created breakpoint struct as well as output any status
6551 information regarding the creation of a new breakpoint. In
6552 particular, set_raw_breakpoint does NOT set the breakpoint
6553 number! Care should be taken to not allow an error to occur
6554 prior to completing the initialization of the breakpoint. If this
6555 should happen, a bogus breakpoint will be left on the chain. */
6556
6557 struct breakpoint *
6558 set_raw_breakpoint (struct gdbarch *gdbarch,
6559 struct symtab_and_line sal, enum bptype bptype,
6560 const struct breakpoint_ops *ops)
6561 {
6562 struct breakpoint *b = XNEW (struct breakpoint);
6563
6564 init_raw_breakpoint (b, gdbarch, sal, bptype, ops);
6565 add_to_breakpoint_chain (b);
6566 return b;
6567 }
6568
6569
6570 /* Note that the breakpoint object B describes a permanent breakpoint
6571 instruction, hard-wired into the inferior's code. */
6572 void
6573 make_breakpoint_permanent (struct breakpoint *b)
6574 {
6575 struct bp_location *bl;
6576
6577 b->enable_state = bp_permanent;
6578
6579 /* By definition, permanent breakpoints are already present in the
6580 code. Mark all locations as inserted. For now,
6581 make_breakpoint_permanent is called in just one place, so it's
6582 hard to say if it's reasonable to have permanent breakpoint with
6583 multiple locations or not, but it's easy to implement. */
6584 for (bl = b->loc; bl; bl = bl->next)
6585 bl->inserted = 1;
6586 }
6587
6588 /* Call this routine when stepping and nexting to enable a breakpoint
6589 if we do a longjmp() or 'throw' in TP. FRAME is the frame which
6590 initiated the operation. */
6591
6592 void
6593 set_longjmp_breakpoint (struct thread_info *tp, struct frame_id frame)
6594 {
6595 struct breakpoint *b, *b_tmp;
6596 int thread = tp->num;
6597
6598 /* To avoid having to rescan all objfile symbols at every step,
6599 we maintain a list of continually-inserted but always disabled
6600 longjmp "master" breakpoints. Here, we simply create momentary
6601 clones of those and enable them for the requested thread. */
6602 ALL_BREAKPOINTS_SAFE (b, b_tmp)
6603 if (b->pspace == current_program_space
6604 && (b->type == bp_longjmp_master
6605 || b->type == bp_exception_master))
6606 {
6607 enum bptype type = b->type == bp_longjmp_master ? bp_longjmp : bp_exception;
6608 struct breakpoint *clone;
6609
6610 clone = momentary_breakpoint_from_master (b, type,
6611 &momentary_breakpoint_ops);
6612 clone->thread = thread;
6613 }
6614
6615 tp->initiating_frame = frame;
6616 }
6617
6618 /* Delete all longjmp breakpoints from THREAD. */
6619 void
6620 delete_longjmp_breakpoint (int thread)
6621 {
6622 struct breakpoint *b, *b_tmp;
6623
6624 ALL_BREAKPOINTS_SAFE (b, b_tmp)
6625 if (b->type == bp_longjmp || b->type == bp_exception)
6626 {
6627 if (b->thread == thread)
6628 delete_breakpoint (b);
6629 }
6630 }
6631
6632 void
6633 delete_longjmp_breakpoint_at_next_stop (int thread)
6634 {
6635 struct breakpoint *b, *b_tmp;
6636
6637 ALL_BREAKPOINTS_SAFE (b, b_tmp)
6638 if (b->type == bp_longjmp || b->type == bp_exception)
6639 {
6640 if (b->thread == thread)
6641 b->disposition = disp_del_at_next_stop;
6642 }
6643 }
6644
6645 void
6646 enable_overlay_breakpoints (void)
6647 {
6648 struct breakpoint *b;
6649
6650 ALL_BREAKPOINTS (b)
6651 if (b->type == bp_overlay_event)
6652 {
6653 b->enable_state = bp_enabled;
6654 update_global_location_list (1);
6655 overlay_events_enabled = 1;
6656 }
6657 }
6658
6659 void
6660 disable_overlay_breakpoints (void)
6661 {
6662 struct breakpoint *b;
6663
6664 ALL_BREAKPOINTS (b)
6665 if (b->type == bp_overlay_event)
6666 {
6667 b->enable_state = bp_disabled;
6668 update_global_location_list (0);
6669 overlay_events_enabled = 0;
6670 }
6671 }
6672
6673 /* Set an active std::terminate breakpoint for each std::terminate
6674 master breakpoint. */
6675 void
6676 set_std_terminate_breakpoint (void)
6677 {
6678 struct breakpoint *b, *b_tmp;
6679
6680 ALL_BREAKPOINTS_SAFE (b, b_tmp)
6681 if (b->pspace == current_program_space
6682 && b->type == bp_std_terminate_master)
6683 {
6684 momentary_breakpoint_from_master (b, bp_std_terminate,
6685 &momentary_breakpoint_ops);
6686 }
6687 }
6688
6689 /* Delete all the std::terminate breakpoints. */
6690 void
6691 delete_std_terminate_breakpoint (void)
6692 {
6693 struct breakpoint *b, *b_tmp;
6694
6695 ALL_BREAKPOINTS_SAFE (b, b_tmp)
6696 if (b->type == bp_std_terminate)
6697 delete_breakpoint (b);
6698 }
6699
6700 struct breakpoint *
6701 create_thread_event_breakpoint (struct gdbarch *gdbarch, CORE_ADDR address)
6702 {
6703 struct breakpoint *b;
6704
6705 b = create_internal_breakpoint (gdbarch, address, bp_thread_event,
6706 &internal_breakpoint_ops);
6707
6708 b->enable_state = bp_enabled;
6709 /* addr_string has to be used or breakpoint_re_set will delete me. */
6710 b->addr_string
6711 = xstrprintf ("*%s", paddress (b->loc->gdbarch, b->loc->address));
6712
6713 update_global_location_list_nothrow (1);
6714
6715 return b;
6716 }
6717
6718 void
6719 remove_thread_event_breakpoints (void)
6720 {
6721 struct breakpoint *b, *b_tmp;
6722
6723 ALL_BREAKPOINTS_SAFE (b, b_tmp)
6724 if (b->type == bp_thread_event
6725 && b->loc->pspace == current_program_space)
6726 delete_breakpoint (b);
6727 }
6728
6729 struct lang_and_radix
6730 {
6731 enum language lang;
6732 int radix;
6733 };
6734
6735 /* Create a breakpoint for JIT code registration and unregistration. */
6736
6737 struct breakpoint *
6738 create_jit_event_breakpoint (struct gdbarch *gdbarch, CORE_ADDR address)
6739 {
6740 struct breakpoint *b;
6741
6742 b = create_internal_breakpoint (gdbarch, address, bp_jit_event,
6743 &internal_breakpoint_ops);
6744 update_global_location_list_nothrow (1);
6745 return b;
6746 }
6747
6748 /* Remove JIT code registration and unregistration breakpoint(s). */
6749
6750 void
6751 remove_jit_event_breakpoints (void)
6752 {
6753 struct breakpoint *b, *b_tmp;
6754
6755 ALL_BREAKPOINTS_SAFE (b, b_tmp)
6756 if (b->type == bp_jit_event
6757 && b->loc->pspace == current_program_space)
6758 delete_breakpoint (b);
6759 }
6760
6761 void
6762 remove_solib_event_breakpoints (void)
6763 {
6764 struct breakpoint *b, *b_tmp;
6765
6766 ALL_BREAKPOINTS_SAFE (b, b_tmp)
6767 if (b->type == bp_shlib_event
6768 && b->loc->pspace == current_program_space)
6769 delete_breakpoint (b);
6770 }
6771
6772 struct breakpoint *
6773 create_solib_event_breakpoint (struct gdbarch *gdbarch, CORE_ADDR address)
6774 {
6775 struct breakpoint *b;
6776
6777 b = create_internal_breakpoint (gdbarch, address, bp_shlib_event,
6778 &internal_breakpoint_ops);
6779 update_global_location_list_nothrow (1);
6780 return b;
6781 }
6782
6783 /* Disable any breakpoints that are on code in shared libraries. Only
6784 apply to enabled breakpoints, disabled ones can just stay disabled. */
6785
6786 void
6787 disable_breakpoints_in_shlibs (void)
6788 {
6789 struct bp_location *loc, **locp_tmp;
6790
6791 ALL_BP_LOCATIONS (loc, locp_tmp)
6792 {
6793 /* ALL_BP_LOCATIONS bp_location has LOC->OWNER always non-NULL. */
6794 struct breakpoint *b = loc->owner;
6795
6796 /* We apply the check to all breakpoints, including disabled for
6797 those with loc->duplicate set. This is so that when breakpoint
6798 becomes enabled, or the duplicate is removed, gdb will try to
6799 insert all breakpoints. If we don't set shlib_disabled here,
6800 we'll try to insert those breakpoints and fail. */
6801 if (((b->type == bp_breakpoint)
6802 || (b->type == bp_jit_event)
6803 || (b->type == bp_hardware_breakpoint)
6804 || (is_tracepoint (b)))
6805 && loc->pspace == current_program_space
6806 && !loc->shlib_disabled
6807 #ifdef PC_SOLIB
6808 && PC_SOLIB (loc->address)
6809 #else
6810 && solib_name_from_address (loc->pspace, loc->address)
6811 #endif
6812 )
6813 {
6814 loc->shlib_disabled = 1;
6815 }
6816 }
6817 }
6818
6819 /* Disable any breakpoints and tracepoints that are in an unloaded shared
6820 library. Only apply to enabled breakpoints, disabled ones can just stay
6821 disabled. */
6822
6823 static void
6824 disable_breakpoints_in_unloaded_shlib (struct so_list *solib)
6825 {
6826 struct bp_location *loc, **locp_tmp;
6827 int disabled_shlib_breaks = 0;
6828
6829 /* SunOS a.out shared libraries are always mapped, so do not
6830 disable breakpoints; they will only be reported as unloaded
6831 through clear_solib when GDB discards its shared library
6832 list. See clear_solib for more information. */
6833 if (exec_bfd != NULL
6834 && bfd_get_flavour (exec_bfd) == bfd_target_aout_flavour)
6835 return;
6836
6837 ALL_BP_LOCATIONS (loc, locp_tmp)
6838 {
6839 /* ALL_BP_LOCATIONS bp_location has LOC->OWNER always non-NULL. */
6840 struct breakpoint *b = loc->owner;
6841
6842 if (solib->pspace == loc->pspace
6843 && !loc->shlib_disabled
6844 && (((b->type == bp_breakpoint
6845 || b->type == bp_jit_event
6846 || b->type == bp_hardware_breakpoint)
6847 && (loc->loc_type == bp_loc_hardware_breakpoint
6848 || loc->loc_type == bp_loc_software_breakpoint))
6849 || is_tracepoint (b))
6850 && solib_contains_address_p (solib, loc->address))
6851 {
6852 loc->shlib_disabled = 1;
6853 /* At this point, we cannot rely on remove_breakpoint
6854 succeeding so we must mark the breakpoint as not inserted
6855 to prevent future errors occurring in remove_breakpoints. */
6856 loc->inserted = 0;
6857
6858 /* This may cause duplicate notifications for the same breakpoint. */
6859 observer_notify_breakpoint_modified (b);
6860
6861 if (!disabled_shlib_breaks)
6862 {
6863 target_terminal_ours_for_output ();
6864 warning (_("Temporarily disabling breakpoints "
6865 "for unloaded shared library \"%s\""),
6866 solib->so_name);
6867 }
6868 disabled_shlib_breaks = 1;
6869 }
6870 }
6871 }
6872
6873 /* FORK & VFORK catchpoints. */
6874
6875 /* An instance of this type is used to represent a fork or vfork
6876 catchpoint. It includes a "struct breakpoint" as a kind of base
6877 class; users downcast to "struct breakpoint *" when needed. A
6878 breakpoint is really of this type iff its ops pointer points to
6879 CATCH_FORK_BREAKPOINT_OPS. */
6880
6881 struct fork_catchpoint
6882 {
6883 /* The base class. */
6884 struct breakpoint base;
6885
6886 /* Process id of a child process whose forking triggered this
6887 catchpoint. This field is only valid immediately after this
6888 catchpoint has triggered. */
6889 ptid_t forked_inferior_pid;
6890 };
6891
6892 /* Implement the "insert" breakpoint_ops method for fork
6893 catchpoints. */
6894
6895 static int
6896 insert_catch_fork (struct bp_location *bl)
6897 {
6898 return target_insert_fork_catchpoint (PIDGET (inferior_ptid));
6899 }
6900
6901 /* Implement the "remove" breakpoint_ops method for fork
6902 catchpoints. */
6903
6904 static int
6905 remove_catch_fork (struct bp_location *bl)
6906 {
6907 return target_remove_fork_catchpoint (PIDGET (inferior_ptid));
6908 }
6909
6910 /* Implement the "breakpoint_hit" breakpoint_ops method for fork
6911 catchpoints. */
6912
6913 static int
6914 breakpoint_hit_catch_fork (const struct bp_location *bl,
6915 struct address_space *aspace, CORE_ADDR bp_addr,
6916 const struct target_waitstatus *ws)
6917 {
6918 struct fork_catchpoint *c = (struct fork_catchpoint *) bl->owner;
6919
6920 if (ws->kind != TARGET_WAITKIND_FORKED)
6921 return 0;
6922
6923 c->forked_inferior_pid = ws->value.related_pid;
6924 return 1;
6925 }
6926
6927 /* Implement the "print_it" breakpoint_ops method for fork
6928 catchpoints. */
6929
6930 static enum print_stop_action
6931 print_it_catch_fork (bpstat bs)
6932 {
6933 struct ui_out *uiout = current_uiout;
6934 struct breakpoint *b = bs->breakpoint_at;
6935 struct fork_catchpoint *c = (struct fork_catchpoint *) bs->breakpoint_at;
6936
6937 annotate_catchpoint (b->number);
6938 if (b->disposition == disp_del)
6939 ui_out_text (uiout, "\nTemporary catchpoint ");
6940 else
6941 ui_out_text (uiout, "\nCatchpoint ");
6942 if (ui_out_is_mi_like_p (uiout))
6943 {
6944 ui_out_field_string (uiout, "reason",
6945 async_reason_lookup (EXEC_ASYNC_FORK));
6946 ui_out_field_string (uiout, "disp", bpdisp_text (b->disposition));
6947 }
6948 ui_out_field_int (uiout, "bkptno", b->number);
6949 ui_out_text (uiout, " (forked process ");
6950 ui_out_field_int (uiout, "newpid", ptid_get_pid (c->forked_inferior_pid));
6951 ui_out_text (uiout, "), ");
6952 return PRINT_SRC_AND_LOC;
6953 }
6954
6955 /* Implement the "print_one" breakpoint_ops method for fork
6956 catchpoints. */
6957
6958 static void
6959 print_one_catch_fork (struct breakpoint *b, struct bp_location **last_loc)
6960 {
6961 struct fork_catchpoint *c = (struct fork_catchpoint *) b;
6962 struct value_print_options opts;
6963 struct ui_out *uiout = current_uiout;
6964
6965 get_user_print_options (&opts);
6966
6967 /* Field 4, the address, is omitted (which makes the columns not
6968 line up too nicely with the headers, but the effect is relatively
6969 readable). */
6970 if (opts.addressprint)
6971 ui_out_field_skip (uiout, "addr");
6972 annotate_field (5);
6973 ui_out_text (uiout, "fork");
6974 if (!ptid_equal (c->forked_inferior_pid, null_ptid))
6975 {
6976 ui_out_text (uiout, ", process ");
6977 ui_out_field_int (uiout, "what",
6978 ptid_get_pid (c->forked_inferior_pid));
6979 ui_out_spaces (uiout, 1);
6980 }
6981 }
6982
6983 /* Implement the "print_mention" breakpoint_ops method for fork
6984 catchpoints. */
6985
6986 static void
6987 print_mention_catch_fork (struct breakpoint *b)
6988 {
6989 printf_filtered (_("Catchpoint %d (fork)"), b->number);
6990 }
6991
6992 /* Implement the "print_recreate" breakpoint_ops method for fork
6993 catchpoints. */
6994
6995 static void
6996 print_recreate_catch_fork (struct breakpoint *b, struct ui_file *fp)
6997 {
6998 fprintf_unfiltered (fp, "catch fork");
6999 print_recreate_thread (b, fp);
7000 }
7001
7002 /* The breakpoint_ops structure to be used in fork catchpoints. */
7003
7004 static struct breakpoint_ops catch_fork_breakpoint_ops;
7005
7006 /* Implement the "insert" breakpoint_ops method for vfork
7007 catchpoints. */
7008
7009 static int
7010 insert_catch_vfork (struct bp_location *bl)
7011 {
7012 return target_insert_vfork_catchpoint (PIDGET (inferior_ptid));
7013 }
7014
7015 /* Implement the "remove" breakpoint_ops method for vfork
7016 catchpoints. */
7017
7018 static int
7019 remove_catch_vfork (struct bp_location *bl)
7020 {
7021 return target_remove_vfork_catchpoint (PIDGET (inferior_ptid));
7022 }
7023
7024 /* Implement the "breakpoint_hit" breakpoint_ops method for vfork
7025 catchpoints. */
7026
7027 static int
7028 breakpoint_hit_catch_vfork (const struct bp_location *bl,
7029 struct address_space *aspace, CORE_ADDR bp_addr,
7030 const struct target_waitstatus *ws)
7031 {
7032 struct fork_catchpoint *c = (struct fork_catchpoint *) bl->owner;
7033
7034 if (ws->kind != TARGET_WAITKIND_VFORKED)
7035 return 0;
7036
7037 c->forked_inferior_pid = ws->value.related_pid;
7038 return 1;
7039 }
7040
7041 /* Implement the "print_it" breakpoint_ops method for vfork
7042 catchpoints. */
7043
7044 static enum print_stop_action
7045 print_it_catch_vfork (bpstat bs)
7046 {
7047 struct ui_out *uiout = current_uiout;
7048 struct breakpoint *b = bs->breakpoint_at;
7049 struct fork_catchpoint *c = (struct fork_catchpoint *) b;
7050
7051 annotate_catchpoint (b->number);
7052 if (b->disposition == disp_del)
7053 ui_out_text (uiout, "\nTemporary catchpoint ");
7054 else
7055 ui_out_text (uiout, "\nCatchpoint ");
7056 if (ui_out_is_mi_like_p (uiout))
7057 {
7058 ui_out_field_string (uiout, "reason",
7059 async_reason_lookup (EXEC_ASYNC_VFORK));
7060 ui_out_field_string (uiout, "disp", bpdisp_text (b->disposition));
7061 }
7062 ui_out_field_int (uiout, "bkptno", b->number);
7063 ui_out_text (uiout, " (vforked process ");
7064 ui_out_field_int (uiout, "newpid", ptid_get_pid (c->forked_inferior_pid));
7065 ui_out_text (uiout, "), ");
7066 return PRINT_SRC_AND_LOC;
7067 }
7068
7069 /* Implement the "print_one" breakpoint_ops method for vfork
7070 catchpoints. */
7071
7072 static void
7073 print_one_catch_vfork (struct breakpoint *b, struct bp_location **last_loc)
7074 {
7075 struct fork_catchpoint *c = (struct fork_catchpoint *) b;
7076 struct value_print_options opts;
7077 struct ui_out *uiout = current_uiout;
7078
7079 get_user_print_options (&opts);
7080 /* Field 4, the address, is omitted (which makes the columns not
7081 line up too nicely with the headers, but the effect is relatively
7082 readable). */
7083 if (opts.addressprint)
7084 ui_out_field_skip (uiout, "addr");
7085 annotate_field (5);
7086 ui_out_text (uiout, "vfork");
7087 if (!ptid_equal (c->forked_inferior_pid, null_ptid))
7088 {
7089 ui_out_text (uiout, ", process ");
7090 ui_out_field_int (uiout, "what",
7091 ptid_get_pid (c->forked_inferior_pid));
7092 ui_out_spaces (uiout, 1);
7093 }
7094 }
7095
7096 /* Implement the "print_mention" breakpoint_ops method for vfork
7097 catchpoints. */
7098
7099 static void
7100 print_mention_catch_vfork (struct breakpoint *b)
7101 {
7102 printf_filtered (_("Catchpoint %d (vfork)"), b->number);
7103 }
7104
7105 /* Implement the "print_recreate" breakpoint_ops method for vfork
7106 catchpoints. */
7107
7108 static void
7109 print_recreate_catch_vfork (struct breakpoint *b, struct ui_file *fp)
7110 {
7111 fprintf_unfiltered (fp, "catch vfork");
7112 print_recreate_thread (b, fp);
7113 }
7114
7115 /* The breakpoint_ops structure to be used in vfork catchpoints. */
7116
7117 static struct breakpoint_ops catch_vfork_breakpoint_ops;
7118
7119 /* An instance of this type is used to represent an solib catchpoint.
7120 It includes a "struct breakpoint" as a kind of base class; users
7121 downcast to "struct breakpoint *" when needed. A breakpoint is
7122 really of this type iff its ops pointer points to
7123 CATCH_SOLIB_BREAKPOINT_OPS. */
7124
7125 struct solib_catchpoint
7126 {
7127 /* The base class. */
7128 struct breakpoint base;
7129
7130 /* True for "catch load", false for "catch unload". */
7131 unsigned char is_load;
7132
7133 /* Regular expression to match, if any. COMPILED is only valid when
7134 REGEX is non-NULL. */
7135 char *regex;
7136 regex_t compiled;
7137 };
7138
7139 static void
7140 dtor_catch_solib (struct breakpoint *b)
7141 {
7142 struct solib_catchpoint *self = (struct solib_catchpoint *) b;
7143
7144 if (self->regex)
7145 regfree (&self->compiled);
7146 xfree (self->regex);
7147
7148 base_breakpoint_ops.dtor (b);
7149 }
7150
7151 static int
7152 insert_catch_solib (struct bp_location *ignore)
7153 {
7154 return 0;
7155 }
7156
7157 static int
7158 remove_catch_solib (struct bp_location *ignore)
7159 {
7160 return 0;
7161 }
7162
7163 static int
7164 breakpoint_hit_catch_solib (const struct bp_location *bl,
7165 struct address_space *aspace,
7166 CORE_ADDR bp_addr,
7167 const struct target_waitstatus *ws)
7168 {
7169 struct solib_catchpoint *self = (struct solib_catchpoint *) bl->owner;
7170 struct breakpoint *other;
7171
7172 if (ws->kind == TARGET_WAITKIND_LOADED)
7173 return 1;
7174
7175 ALL_BREAKPOINTS (other)
7176 {
7177 struct bp_location *other_bl;
7178
7179 if (other == bl->owner)
7180 continue;
7181
7182 if (other->type != bp_shlib_event)
7183 continue;
7184
7185 if (self->base.pspace != NULL && other->pspace != self->base.pspace)
7186 continue;
7187
7188 for (other_bl = other->loc; other_bl != NULL; other_bl = other_bl->next)
7189 {
7190 if (other->ops->breakpoint_hit (other_bl, aspace, bp_addr, ws))
7191 return 1;
7192 }
7193 }
7194
7195 return 0;
7196 }
7197
7198 static void
7199 check_status_catch_solib (struct bpstats *bs)
7200 {
7201 struct solib_catchpoint *self
7202 = (struct solib_catchpoint *) bs->breakpoint_at;
7203 int ix;
7204
7205 if (self->is_load)
7206 {
7207 struct so_list *iter;
7208
7209 for (ix = 0;
7210 VEC_iterate (so_list_ptr, current_program_space->added_solibs,
7211 ix, iter);
7212 ++ix)
7213 {
7214 if (!self->regex
7215 || regexec (&self->compiled, iter->so_name, 0, NULL, 0) == 0)
7216 return;
7217 }
7218 }
7219 else
7220 {
7221 char *iter;
7222
7223 for (ix = 0;
7224 VEC_iterate (char_ptr, current_program_space->deleted_solibs,
7225 ix, iter);
7226 ++ix)
7227 {
7228 if (!self->regex
7229 || regexec (&self->compiled, iter, 0, NULL, 0) == 0)
7230 return;
7231 }
7232 }
7233
7234 bs->stop = 0;
7235 bs->print_it = print_it_noop;
7236 }
7237
7238 static enum print_stop_action
7239 print_it_catch_solib (bpstat bs)
7240 {
7241 struct breakpoint *b = bs->breakpoint_at;
7242 struct ui_out *uiout = current_uiout;
7243
7244 annotate_catchpoint (b->number);
7245 if (b->disposition == disp_del)
7246 ui_out_text (uiout, "\nTemporary catchpoint ");
7247 else
7248 ui_out_text (uiout, "\nCatchpoint ");
7249 ui_out_field_int (uiout, "bkptno", b->number);
7250 ui_out_text (uiout, "\n");
7251 if (ui_out_is_mi_like_p (uiout))
7252 ui_out_field_string (uiout, "disp", bpdisp_text (b->disposition));
7253 print_solib_event (1);
7254 return PRINT_SRC_AND_LOC;
7255 }
7256
7257 static void
7258 print_one_catch_solib (struct breakpoint *b, struct bp_location **locs)
7259 {
7260 struct solib_catchpoint *self = (struct solib_catchpoint *) b;
7261 struct value_print_options opts;
7262 struct ui_out *uiout = current_uiout;
7263 char *msg;
7264
7265 get_user_print_options (&opts);
7266 /* Field 4, the address, is omitted (which makes the columns not
7267 line up too nicely with the headers, but the effect is relatively
7268 readable). */
7269 if (opts.addressprint)
7270 {
7271 annotate_field (4);
7272 ui_out_field_skip (uiout, "addr");
7273 }
7274
7275 annotate_field (5);
7276 if (self->is_load)
7277 {
7278 if (self->regex)
7279 msg = xstrprintf (_("load of library matching %s"), self->regex);
7280 else
7281 msg = xstrdup (_("load of library"));
7282 }
7283 else
7284 {
7285 if (self->regex)
7286 msg = xstrprintf (_("unload of library matching %s"), self->regex);
7287 else
7288 msg = xstrdup (_("unload of library"));
7289 }
7290 ui_out_field_string (uiout, "what", msg);
7291 xfree (msg);
7292 }
7293
7294 static void
7295 print_mention_catch_solib (struct breakpoint *b)
7296 {
7297 struct solib_catchpoint *self = (struct solib_catchpoint *) b;
7298
7299 printf_filtered (_("Catchpoint %d (%s)"), b->number,
7300 self->is_load ? "load" : "unload");
7301 }
7302
7303 static void
7304 print_recreate_catch_solib (struct breakpoint *b, struct ui_file *fp)
7305 {
7306 struct solib_catchpoint *self = (struct solib_catchpoint *) b;
7307
7308 fprintf_unfiltered (fp, "%s %s",
7309 b->disposition == disp_del ? "tcatch" : "catch",
7310 self->is_load ? "load" : "unload");
7311 if (self->regex)
7312 fprintf_unfiltered (fp, " %s", self->regex);
7313 fprintf_unfiltered (fp, "\n");
7314 }
7315
7316 static struct breakpoint_ops catch_solib_breakpoint_ops;
7317
7318 /* A helper function that does all the work for "catch load" and
7319 "catch unload". */
7320
7321 static void
7322 catch_load_or_unload (char *arg, int from_tty, int is_load,
7323 struct cmd_list_element *command)
7324 {
7325 struct solib_catchpoint *c;
7326 struct gdbarch *gdbarch = get_current_arch ();
7327 int tempflag;
7328 regex_t compiled;
7329 struct cleanup *cleanup;
7330
7331 tempflag = get_cmd_context (command) == CATCH_TEMPORARY;
7332
7333 if (!arg)
7334 arg = "";
7335 arg = skip_spaces (arg);
7336
7337 c = XCNEW (struct solib_catchpoint);
7338 cleanup = make_cleanup (xfree, c);
7339
7340 if (*arg != '\0')
7341 {
7342 int errcode;
7343
7344 errcode = regcomp (&c->compiled, arg, REG_NOSUB);
7345 if (errcode != 0)
7346 {
7347 char *err = get_regcomp_error (errcode, &c->compiled);
7348
7349 make_cleanup (xfree, err);
7350 error (_("Invalid regexp (%s): %s"), err, arg);
7351 }
7352 c->regex = xstrdup (arg);
7353 }
7354
7355 c->is_load = is_load;
7356 init_catchpoint (&c->base, gdbarch, tempflag, NULL,
7357 &catch_solib_breakpoint_ops);
7358
7359 discard_cleanups (cleanup);
7360 install_breakpoint (0, &c->base, 1);
7361 }
7362
7363 static void
7364 catch_load_command_1 (char *arg, int from_tty,
7365 struct cmd_list_element *command)
7366 {
7367 catch_load_or_unload (arg, from_tty, 1, command);
7368 }
7369
7370 static void
7371 catch_unload_command_1 (char *arg, int from_tty,
7372 struct cmd_list_element *command)
7373 {
7374 catch_load_or_unload (arg, from_tty, 0, command);
7375 }
7376
7377 DEF_VEC_I(int);
7378
7379 /* An instance of this type is used to represent a syscall catchpoint.
7380 It includes a "struct breakpoint" as a kind of base class; users
7381 downcast to "struct breakpoint *" when needed. A breakpoint is
7382 really of this type iff its ops pointer points to
7383 CATCH_SYSCALL_BREAKPOINT_OPS. */
7384
7385 struct syscall_catchpoint
7386 {
7387 /* The base class. */
7388 struct breakpoint base;
7389
7390 /* Syscall numbers used for the 'catch syscall' feature. If no
7391 syscall has been specified for filtering, its value is NULL.
7392 Otherwise, it holds a list of all syscalls to be caught. The
7393 list elements are allocated with xmalloc. */
7394 VEC(int) *syscalls_to_be_caught;
7395 };
7396
7397 /* Implement the "dtor" breakpoint_ops method for syscall
7398 catchpoints. */
7399
7400 static void
7401 dtor_catch_syscall (struct breakpoint *b)
7402 {
7403 struct syscall_catchpoint *c = (struct syscall_catchpoint *) b;
7404
7405 VEC_free (int, c->syscalls_to_be_caught);
7406
7407 base_breakpoint_ops.dtor (b);
7408 }
7409
7410 static const struct inferior_data *catch_syscall_inferior_data = NULL;
7411
7412 struct catch_syscall_inferior_data
7413 {
7414 /* We keep a count of the number of times the user has requested a
7415 particular syscall to be tracked, and pass this information to the
7416 target. This lets capable targets implement filtering directly. */
7417
7418 /* Number of times that "any" syscall is requested. */
7419 int any_syscall_count;
7420
7421 /* Count of each system call. */
7422 VEC(int) *syscalls_counts;
7423
7424 /* This counts all syscall catch requests, so we can readily determine
7425 if any catching is necessary. */
7426 int total_syscalls_count;
7427 };
7428
7429 static struct catch_syscall_inferior_data*
7430 get_catch_syscall_inferior_data (struct inferior *inf)
7431 {
7432 struct catch_syscall_inferior_data *inf_data;
7433
7434 inf_data = inferior_data (inf, catch_syscall_inferior_data);
7435 if (inf_data == NULL)
7436 {
7437 inf_data = XZALLOC (struct catch_syscall_inferior_data);
7438 set_inferior_data (inf, catch_syscall_inferior_data, inf_data);
7439 }
7440
7441 return inf_data;
7442 }
7443
7444 static void
7445 catch_syscall_inferior_data_cleanup (struct inferior *inf, void *arg)
7446 {
7447 xfree (arg);
7448 }
7449
7450
7451 /* Implement the "insert" breakpoint_ops method for syscall
7452 catchpoints. */
7453
7454 static int
7455 insert_catch_syscall (struct bp_location *bl)
7456 {
7457 struct syscall_catchpoint *c = (struct syscall_catchpoint *) bl->owner;
7458 struct inferior *inf = current_inferior ();
7459 struct catch_syscall_inferior_data *inf_data
7460 = get_catch_syscall_inferior_data (inf);
7461
7462 ++inf_data->total_syscalls_count;
7463 if (!c->syscalls_to_be_caught)
7464 ++inf_data->any_syscall_count;
7465 else
7466 {
7467 int i, iter;
7468
7469 for (i = 0;
7470 VEC_iterate (int, c->syscalls_to_be_caught, i, iter);
7471 i++)
7472 {
7473 int elem;
7474
7475 if (iter >= VEC_length (int, inf_data->syscalls_counts))
7476 {
7477 int old_size = VEC_length (int, inf_data->syscalls_counts);
7478 uintptr_t vec_addr_offset
7479 = old_size * ((uintptr_t) sizeof (int));
7480 uintptr_t vec_addr;
7481 VEC_safe_grow (int, inf_data->syscalls_counts, iter + 1);
7482 vec_addr = ((uintptr_t) VEC_address (int,
7483 inf_data->syscalls_counts)
7484 + vec_addr_offset);
7485 memset ((void *) vec_addr, 0,
7486 (iter + 1 - old_size) * sizeof (int));
7487 }
7488 elem = VEC_index (int, inf_data->syscalls_counts, iter);
7489 VEC_replace (int, inf_data->syscalls_counts, iter, ++elem);
7490 }
7491 }
7492
7493 return target_set_syscall_catchpoint (PIDGET (inferior_ptid),
7494 inf_data->total_syscalls_count != 0,
7495 inf_data->any_syscall_count,
7496 VEC_length (int,
7497 inf_data->syscalls_counts),
7498 VEC_address (int,
7499 inf_data->syscalls_counts));
7500 }
7501
7502 /* Implement the "remove" breakpoint_ops method for syscall
7503 catchpoints. */
7504
7505 static int
7506 remove_catch_syscall (struct bp_location *bl)
7507 {
7508 struct syscall_catchpoint *c = (struct syscall_catchpoint *) bl->owner;
7509 struct inferior *inf = current_inferior ();
7510 struct catch_syscall_inferior_data *inf_data
7511 = get_catch_syscall_inferior_data (inf);
7512
7513 --inf_data->total_syscalls_count;
7514 if (!c->syscalls_to_be_caught)
7515 --inf_data->any_syscall_count;
7516 else
7517 {
7518 int i, iter;
7519
7520 for (i = 0;
7521 VEC_iterate (int, c->syscalls_to_be_caught, i, iter);
7522 i++)
7523 {
7524 int elem;
7525 if (iter >= VEC_length (int, inf_data->syscalls_counts))
7526 /* Shouldn't happen. */
7527 continue;
7528 elem = VEC_index (int, inf_data->syscalls_counts, iter);
7529 VEC_replace (int, inf_data->syscalls_counts, iter, --elem);
7530 }
7531 }
7532
7533 return target_set_syscall_catchpoint (PIDGET (inferior_ptid),
7534 inf_data->total_syscalls_count != 0,
7535 inf_data->any_syscall_count,
7536 VEC_length (int,
7537 inf_data->syscalls_counts),
7538 VEC_address (int,
7539 inf_data->syscalls_counts));
7540 }
7541
7542 /* Implement the "breakpoint_hit" breakpoint_ops method for syscall
7543 catchpoints. */
7544
7545 static int
7546 breakpoint_hit_catch_syscall (const struct bp_location *bl,
7547 struct address_space *aspace, CORE_ADDR bp_addr,
7548 const struct target_waitstatus *ws)
7549 {
7550 /* We must check if we are catching specific syscalls in this
7551 breakpoint. If we are, then we must guarantee that the called
7552 syscall is the same syscall we are catching. */
7553 int syscall_number = 0;
7554 const struct syscall_catchpoint *c
7555 = (const struct syscall_catchpoint *) bl->owner;
7556
7557 if (ws->kind != TARGET_WAITKIND_SYSCALL_ENTRY
7558 && ws->kind != TARGET_WAITKIND_SYSCALL_RETURN)
7559 return 0;
7560
7561 syscall_number = ws->value.syscall_number;
7562
7563 /* Now, checking if the syscall is the same. */
7564 if (c->syscalls_to_be_caught)
7565 {
7566 int i, iter;
7567
7568 for (i = 0;
7569 VEC_iterate (int, c->syscalls_to_be_caught, i, iter);
7570 i++)
7571 if (syscall_number == iter)
7572 break;
7573 /* Not the same. */
7574 if (!iter)
7575 return 0;
7576 }
7577
7578 return 1;
7579 }
7580
7581 /* Implement the "print_it" breakpoint_ops method for syscall
7582 catchpoints. */
7583
7584 static enum print_stop_action
7585 print_it_catch_syscall (bpstat bs)
7586 {
7587 struct ui_out *uiout = current_uiout;
7588 struct breakpoint *b = bs->breakpoint_at;
7589 /* These are needed because we want to know in which state a
7590 syscall is. It can be in the TARGET_WAITKIND_SYSCALL_ENTRY
7591 or TARGET_WAITKIND_SYSCALL_RETURN, and depending on it we
7592 must print "called syscall" or "returned from syscall". */
7593 ptid_t ptid;
7594 struct target_waitstatus last;
7595 struct syscall s;
7596 char *syscall_id;
7597
7598 get_last_target_status (&ptid, &last);
7599
7600 get_syscall_by_number (last.value.syscall_number, &s);
7601
7602 annotate_catchpoint (b->number);
7603
7604 if (b->disposition == disp_del)
7605 ui_out_text (uiout, "\nTemporary catchpoint ");
7606 else
7607 ui_out_text (uiout, "\nCatchpoint ");
7608 if (ui_out_is_mi_like_p (uiout))
7609 {
7610 ui_out_field_string (uiout, "reason",
7611 async_reason_lookup (last.kind == TARGET_WAITKIND_SYSCALL_ENTRY
7612 ? EXEC_ASYNC_SYSCALL_ENTRY
7613 : EXEC_ASYNC_SYSCALL_RETURN));
7614 ui_out_field_string (uiout, "disp", bpdisp_text (b->disposition));
7615 }
7616 ui_out_field_int (uiout, "bkptno", b->number);
7617
7618 if (last.kind == TARGET_WAITKIND_SYSCALL_ENTRY)
7619 ui_out_text (uiout, " (call to syscall ");
7620 else
7621 ui_out_text (uiout, " (returned from syscall ");
7622
7623 if (s.name == NULL || ui_out_is_mi_like_p (uiout))
7624 ui_out_field_int (uiout, "syscall-number", last.value.syscall_number);
7625 if (s.name != NULL)
7626 ui_out_field_string (uiout, "syscall-name", s.name);
7627
7628 ui_out_text (uiout, "), ");
7629
7630 return PRINT_SRC_AND_LOC;
7631 }
7632
7633 /* Implement the "print_one" breakpoint_ops method for syscall
7634 catchpoints. */
7635
7636 static void
7637 print_one_catch_syscall (struct breakpoint *b,
7638 struct bp_location **last_loc)
7639 {
7640 struct syscall_catchpoint *c = (struct syscall_catchpoint *) b;
7641 struct value_print_options opts;
7642 struct ui_out *uiout = current_uiout;
7643
7644 get_user_print_options (&opts);
7645 /* Field 4, the address, is omitted (which makes the columns not
7646 line up too nicely with the headers, but the effect is relatively
7647 readable). */
7648 if (opts.addressprint)
7649 ui_out_field_skip (uiout, "addr");
7650 annotate_field (5);
7651
7652 if (c->syscalls_to_be_caught
7653 && VEC_length (int, c->syscalls_to_be_caught) > 1)
7654 ui_out_text (uiout, "syscalls \"");
7655 else
7656 ui_out_text (uiout, "syscall \"");
7657
7658 if (c->syscalls_to_be_caught)
7659 {
7660 int i, iter;
7661 char *text = xstrprintf ("%s", "");
7662
7663 for (i = 0;
7664 VEC_iterate (int, c->syscalls_to_be_caught, i, iter);
7665 i++)
7666 {
7667 char *x = text;
7668 struct syscall s;
7669 get_syscall_by_number (iter, &s);
7670
7671 if (s.name != NULL)
7672 text = xstrprintf ("%s%s, ", text, s.name);
7673 else
7674 text = xstrprintf ("%s%d, ", text, iter);
7675
7676 /* We have to xfree the last 'text' (now stored at 'x')
7677 because xstrprintf dynamically allocates new space for it
7678 on every call. */
7679 xfree (x);
7680 }
7681 /* Remove the last comma. */
7682 text[strlen (text) - 2] = '\0';
7683 ui_out_field_string (uiout, "what", text);
7684 }
7685 else
7686 ui_out_field_string (uiout, "what", "<any syscall>");
7687 ui_out_text (uiout, "\" ");
7688 }
7689
7690 /* Implement the "print_mention" breakpoint_ops method for syscall
7691 catchpoints. */
7692
7693 static void
7694 print_mention_catch_syscall (struct breakpoint *b)
7695 {
7696 struct syscall_catchpoint *c = (struct syscall_catchpoint *) b;
7697
7698 if (c->syscalls_to_be_caught)
7699 {
7700 int i, iter;
7701
7702 if (VEC_length (int, c->syscalls_to_be_caught) > 1)
7703 printf_filtered (_("Catchpoint %d (syscalls"), b->number);
7704 else
7705 printf_filtered (_("Catchpoint %d (syscall"), b->number);
7706
7707 for (i = 0;
7708 VEC_iterate (int, c->syscalls_to_be_caught, i, iter);
7709 i++)
7710 {
7711 struct syscall s;
7712 get_syscall_by_number (iter, &s);
7713
7714 if (s.name)
7715 printf_filtered (" '%s' [%d]", s.name, s.number);
7716 else
7717 printf_filtered (" %d", s.number);
7718 }
7719 printf_filtered (")");
7720 }
7721 else
7722 printf_filtered (_("Catchpoint %d (any syscall)"),
7723 b->number);
7724 }
7725
7726 /* Implement the "print_recreate" breakpoint_ops method for syscall
7727 catchpoints. */
7728
7729 static void
7730 print_recreate_catch_syscall (struct breakpoint *b, struct ui_file *fp)
7731 {
7732 struct syscall_catchpoint *c = (struct syscall_catchpoint *) b;
7733
7734 fprintf_unfiltered (fp, "catch syscall");
7735
7736 if (c->syscalls_to_be_caught)
7737 {
7738 int i, iter;
7739
7740 for (i = 0;
7741 VEC_iterate (int, c->syscalls_to_be_caught, i, iter);
7742 i++)
7743 {
7744 struct syscall s;
7745
7746 get_syscall_by_number (iter, &s);
7747 if (s.name)
7748 fprintf_unfiltered (fp, " %s", s.name);
7749 else
7750 fprintf_unfiltered (fp, " %d", s.number);
7751 }
7752 }
7753 print_recreate_thread (b, fp);
7754 }
7755
7756 /* The breakpoint_ops structure to be used in syscall catchpoints. */
7757
7758 static struct breakpoint_ops catch_syscall_breakpoint_ops;
7759
7760 /* Returns non-zero if 'b' is a syscall catchpoint. */
7761
7762 static int
7763 syscall_catchpoint_p (struct breakpoint *b)
7764 {
7765 return (b->ops == &catch_syscall_breakpoint_ops);
7766 }
7767
7768 /* Initialize a new breakpoint of the bp_catchpoint kind. If TEMPFLAG
7769 is non-zero, then make the breakpoint temporary. If COND_STRING is
7770 not NULL, then store it in the breakpoint. OPS, if not NULL, is
7771 the breakpoint_ops structure associated to the catchpoint. */
7772
7773 static void
7774 init_catchpoint (struct breakpoint *b,
7775 struct gdbarch *gdbarch, int tempflag,
7776 char *cond_string,
7777 const struct breakpoint_ops *ops)
7778 {
7779 struct symtab_and_line sal;
7780
7781 init_sal (&sal);
7782 sal.pspace = current_program_space;
7783
7784 init_raw_breakpoint (b, gdbarch, sal, bp_catchpoint, ops);
7785
7786 b->cond_string = (cond_string == NULL) ? NULL : xstrdup (cond_string);
7787 b->disposition = tempflag ? disp_del : disp_donttouch;
7788 }
7789
7790 void
7791 install_breakpoint (int internal, struct breakpoint *b, int update_gll)
7792 {
7793 add_to_breakpoint_chain (b);
7794 set_breakpoint_number (internal, b);
7795 if (!internal)
7796 mention (b);
7797 observer_notify_breakpoint_created (b);
7798
7799 if (update_gll)
7800 update_global_location_list (1);
7801 }
7802
7803 static void
7804 create_fork_vfork_event_catchpoint (struct gdbarch *gdbarch,
7805 int tempflag, char *cond_string,
7806 const struct breakpoint_ops *ops)
7807 {
7808 struct fork_catchpoint *c = XNEW (struct fork_catchpoint);
7809
7810 init_catchpoint (&c->base, gdbarch, tempflag, cond_string, ops);
7811
7812 c->forked_inferior_pid = null_ptid;
7813
7814 install_breakpoint (0, &c->base, 1);
7815 }
7816
7817 /* Exec catchpoints. */
7818
7819 /* An instance of this type is used to represent an exec catchpoint.
7820 It includes a "struct breakpoint" as a kind of base class; users
7821 downcast to "struct breakpoint *" when needed. A breakpoint is
7822 really of this type iff its ops pointer points to
7823 CATCH_EXEC_BREAKPOINT_OPS. */
7824
7825 struct exec_catchpoint
7826 {
7827 /* The base class. */
7828 struct breakpoint base;
7829
7830 /* Filename of a program whose exec triggered this catchpoint.
7831 This field is only valid immediately after this catchpoint has
7832 triggered. */
7833 char *exec_pathname;
7834 };
7835
7836 /* Implement the "dtor" breakpoint_ops method for exec
7837 catchpoints. */
7838
7839 static void
7840 dtor_catch_exec (struct breakpoint *b)
7841 {
7842 struct exec_catchpoint *c = (struct exec_catchpoint *) b;
7843
7844 xfree (c->exec_pathname);
7845
7846 base_breakpoint_ops.dtor (b);
7847 }
7848
7849 static int
7850 insert_catch_exec (struct bp_location *bl)
7851 {
7852 return target_insert_exec_catchpoint (PIDGET (inferior_ptid));
7853 }
7854
7855 static int
7856 remove_catch_exec (struct bp_location *bl)
7857 {
7858 return target_remove_exec_catchpoint (PIDGET (inferior_ptid));
7859 }
7860
7861 static int
7862 breakpoint_hit_catch_exec (const struct bp_location *bl,
7863 struct address_space *aspace, CORE_ADDR bp_addr,
7864 const struct target_waitstatus *ws)
7865 {
7866 struct exec_catchpoint *c = (struct exec_catchpoint *) bl->owner;
7867
7868 if (ws->kind != TARGET_WAITKIND_EXECD)
7869 return 0;
7870
7871 c->exec_pathname = xstrdup (ws->value.execd_pathname);
7872 return 1;
7873 }
7874
7875 static enum print_stop_action
7876 print_it_catch_exec (bpstat bs)
7877 {
7878 struct ui_out *uiout = current_uiout;
7879 struct breakpoint *b = bs->breakpoint_at;
7880 struct exec_catchpoint *c = (struct exec_catchpoint *) b;
7881
7882 annotate_catchpoint (b->number);
7883 if (b->disposition == disp_del)
7884 ui_out_text (uiout, "\nTemporary catchpoint ");
7885 else
7886 ui_out_text (uiout, "\nCatchpoint ");
7887 if (ui_out_is_mi_like_p (uiout))
7888 {
7889 ui_out_field_string (uiout, "reason",
7890 async_reason_lookup (EXEC_ASYNC_EXEC));
7891 ui_out_field_string (uiout, "disp", bpdisp_text (b->disposition));
7892 }
7893 ui_out_field_int (uiout, "bkptno", b->number);
7894 ui_out_text (uiout, " (exec'd ");
7895 ui_out_field_string (uiout, "new-exec", c->exec_pathname);
7896 ui_out_text (uiout, "), ");
7897
7898 return PRINT_SRC_AND_LOC;
7899 }
7900
7901 static void
7902 print_one_catch_exec (struct breakpoint *b, struct bp_location **last_loc)
7903 {
7904 struct exec_catchpoint *c = (struct exec_catchpoint *) b;
7905 struct value_print_options opts;
7906 struct ui_out *uiout = current_uiout;
7907
7908 get_user_print_options (&opts);
7909
7910 /* Field 4, the address, is omitted (which makes the columns
7911 not line up too nicely with the headers, but the effect
7912 is relatively readable). */
7913 if (opts.addressprint)
7914 ui_out_field_skip (uiout, "addr");
7915 annotate_field (5);
7916 ui_out_text (uiout, "exec");
7917 if (c->exec_pathname != NULL)
7918 {
7919 ui_out_text (uiout, ", program \"");
7920 ui_out_field_string (uiout, "what", c->exec_pathname);
7921 ui_out_text (uiout, "\" ");
7922 }
7923 }
7924
7925 static void
7926 print_mention_catch_exec (struct breakpoint *b)
7927 {
7928 printf_filtered (_("Catchpoint %d (exec)"), b->number);
7929 }
7930
7931 /* Implement the "print_recreate" breakpoint_ops method for exec
7932 catchpoints. */
7933
7934 static void
7935 print_recreate_catch_exec (struct breakpoint *b, struct ui_file *fp)
7936 {
7937 fprintf_unfiltered (fp, "catch exec");
7938 print_recreate_thread (b, fp);
7939 }
7940
7941 static struct breakpoint_ops catch_exec_breakpoint_ops;
7942
7943 static void
7944 create_syscall_event_catchpoint (int tempflag, VEC(int) *filter,
7945 const struct breakpoint_ops *ops)
7946 {
7947 struct syscall_catchpoint *c;
7948 struct gdbarch *gdbarch = get_current_arch ();
7949
7950 c = XNEW (struct syscall_catchpoint);
7951 init_catchpoint (&c->base, gdbarch, tempflag, NULL, ops);
7952 c->syscalls_to_be_caught = filter;
7953
7954 install_breakpoint (0, &c->base, 1);
7955 }
7956
7957 static int
7958 hw_breakpoint_used_count (void)
7959 {
7960 int i = 0;
7961 struct breakpoint *b;
7962 struct bp_location *bl;
7963
7964 ALL_BREAKPOINTS (b)
7965 {
7966 if (b->type == bp_hardware_breakpoint && breakpoint_enabled (b))
7967 for (bl = b->loc; bl; bl = bl->next)
7968 {
7969 /* Special types of hardware breakpoints may use more than
7970 one register. */
7971 i += b->ops->resources_needed (bl);
7972 }
7973 }
7974
7975 return i;
7976 }
7977
7978 /* Returns the resources B would use if it were a hardware
7979 watchpoint. */
7980
7981 static int
7982 hw_watchpoint_use_count (struct breakpoint *b)
7983 {
7984 int i = 0;
7985 struct bp_location *bl;
7986
7987 if (!breakpoint_enabled (b))
7988 return 0;
7989
7990 for (bl = b->loc; bl; bl = bl->next)
7991 {
7992 /* Special types of hardware watchpoints may use more than
7993 one register. */
7994 i += b->ops->resources_needed (bl);
7995 }
7996
7997 return i;
7998 }
7999
8000 /* Returns the sum the used resources of all hardware watchpoints of
8001 type TYPE in the breakpoints list. Also returns in OTHER_TYPE_USED
8002 the sum of the used resources of all hardware watchpoints of other
8003 types _not_ TYPE. */
8004
8005 static int
8006 hw_watchpoint_used_count_others (struct breakpoint *except,
8007 enum bptype type, int *other_type_used)
8008 {
8009 int i = 0;
8010 struct breakpoint *b;
8011
8012 *other_type_used = 0;
8013 ALL_BREAKPOINTS (b)
8014 {
8015 if (b == except)
8016 continue;
8017 if (!breakpoint_enabled (b))
8018 continue;
8019
8020 if (b->type == type)
8021 i += hw_watchpoint_use_count (b);
8022 else if (is_hardware_watchpoint (b))
8023 *other_type_used = 1;
8024 }
8025
8026 return i;
8027 }
8028
8029 void
8030 disable_watchpoints_before_interactive_call_start (void)
8031 {
8032 struct breakpoint *b;
8033
8034 ALL_BREAKPOINTS (b)
8035 {
8036 if (is_watchpoint (b) && breakpoint_enabled (b))
8037 {
8038 b->enable_state = bp_call_disabled;
8039 update_global_location_list (0);
8040 }
8041 }
8042 }
8043
8044 void
8045 enable_watchpoints_after_interactive_call_stop (void)
8046 {
8047 struct breakpoint *b;
8048
8049 ALL_BREAKPOINTS (b)
8050 {
8051 if (is_watchpoint (b) && b->enable_state == bp_call_disabled)
8052 {
8053 b->enable_state = bp_enabled;
8054 update_global_location_list (1);
8055 }
8056 }
8057 }
8058
8059 void
8060 disable_breakpoints_before_startup (void)
8061 {
8062 current_program_space->executing_startup = 1;
8063 update_global_location_list (0);
8064 }
8065
8066 void
8067 enable_breakpoints_after_startup (void)
8068 {
8069 current_program_space->executing_startup = 0;
8070 breakpoint_re_set ();
8071 }
8072
8073
8074 /* Set a breakpoint that will evaporate an end of command
8075 at address specified by SAL.
8076 Restrict it to frame FRAME if FRAME is nonzero. */
8077
8078 struct breakpoint *
8079 set_momentary_breakpoint (struct gdbarch *gdbarch, struct symtab_and_line sal,
8080 struct frame_id frame_id, enum bptype type)
8081 {
8082 struct breakpoint *b;
8083
8084 /* If FRAME_ID is valid, it should be a real frame, not an inlined
8085 one. */
8086 gdb_assert (!frame_id_inlined_p (frame_id));
8087
8088 b = set_raw_breakpoint (gdbarch, sal, type, &momentary_breakpoint_ops);
8089 b->enable_state = bp_enabled;
8090 b->disposition = disp_donttouch;
8091 b->frame_id = frame_id;
8092
8093 /* If we're debugging a multi-threaded program, then we want
8094 momentary breakpoints to be active in only a single thread of
8095 control. */
8096 if (in_thread_list (inferior_ptid))
8097 b->thread = pid_to_thread_id (inferior_ptid);
8098
8099 update_global_location_list_nothrow (1);
8100
8101 return b;
8102 }
8103
8104 /* Make a momentary breakpoint based on the master breakpoint ORIG.
8105 The new breakpoint will have type TYPE, and use OPS as it
8106 breakpoint_ops. */
8107
8108 static struct breakpoint *
8109 momentary_breakpoint_from_master (struct breakpoint *orig,
8110 enum bptype type,
8111 const struct breakpoint_ops *ops)
8112 {
8113 struct breakpoint *copy;
8114
8115 copy = set_raw_breakpoint_without_location (orig->gdbarch, type, ops);
8116 copy->loc = allocate_bp_location (copy);
8117 set_breakpoint_location_function (copy->loc, 1);
8118
8119 copy->loc->gdbarch = orig->loc->gdbarch;
8120 copy->loc->requested_address = orig->loc->requested_address;
8121 copy->loc->address = orig->loc->address;
8122 copy->loc->section = orig->loc->section;
8123 copy->loc->pspace = orig->loc->pspace;
8124
8125 if (orig->loc->source_file != NULL)
8126 copy->loc->source_file = xstrdup (orig->loc->source_file);
8127
8128 copy->loc->line_number = orig->loc->line_number;
8129 copy->frame_id = orig->frame_id;
8130 copy->thread = orig->thread;
8131 copy->pspace = orig->pspace;
8132
8133 copy->enable_state = bp_enabled;
8134 copy->disposition = disp_donttouch;
8135 copy->number = internal_breakpoint_number--;
8136
8137 update_global_location_list_nothrow (0);
8138 return copy;
8139 }
8140
8141 /* Make a deep copy of momentary breakpoint ORIG. Returns NULL if
8142 ORIG is NULL. */
8143
8144 struct breakpoint *
8145 clone_momentary_breakpoint (struct breakpoint *orig)
8146 {
8147 /* If there's nothing to clone, then return nothing. */
8148 if (orig == NULL)
8149 return NULL;
8150
8151 return momentary_breakpoint_from_master (orig, orig->type, orig->ops);
8152 }
8153
8154 struct breakpoint *
8155 set_momentary_breakpoint_at_pc (struct gdbarch *gdbarch, CORE_ADDR pc,
8156 enum bptype type)
8157 {
8158 struct symtab_and_line sal;
8159
8160 sal = find_pc_line (pc, 0);
8161 sal.pc = pc;
8162 sal.section = find_pc_overlay (pc);
8163 sal.explicit_pc = 1;
8164
8165 return set_momentary_breakpoint (gdbarch, sal, null_frame_id, type);
8166 }
8167 \f
8168
8169 /* Tell the user we have just set a breakpoint B. */
8170
8171 static void
8172 mention (struct breakpoint *b)
8173 {
8174 b->ops->print_mention (b);
8175 if (ui_out_is_mi_like_p (current_uiout))
8176 return;
8177 printf_filtered ("\n");
8178 }
8179 \f
8180
8181 static struct bp_location *
8182 add_location_to_breakpoint (struct breakpoint *b,
8183 const struct symtab_and_line *sal)
8184 {
8185 struct bp_location *loc, **tmp;
8186 CORE_ADDR adjusted_address;
8187 struct gdbarch *loc_gdbarch = get_sal_arch (*sal);
8188
8189 if (loc_gdbarch == NULL)
8190 loc_gdbarch = b->gdbarch;
8191
8192 /* Adjust the breakpoint's address prior to allocating a location.
8193 Once we call allocate_bp_location(), that mostly uninitialized
8194 location will be placed on the location chain. Adjustment of the
8195 breakpoint may cause target_read_memory() to be called and we do
8196 not want its scan of the location chain to find a breakpoint and
8197 location that's only been partially initialized. */
8198 adjusted_address = adjust_breakpoint_address (loc_gdbarch,
8199 sal->pc, b->type);
8200
8201 loc = allocate_bp_location (b);
8202 for (tmp = &(b->loc); *tmp != NULL; tmp = &((*tmp)->next))
8203 ;
8204 *tmp = loc;
8205
8206 loc->requested_address = sal->pc;
8207 loc->address = adjusted_address;
8208 loc->pspace = sal->pspace;
8209 gdb_assert (loc->pspace != NULL);
8210 loc->section = sal->section;
8211 loc->gdbarch = loc_gdbarch;
8212
8213 if (sal->symtab != NULL)
8214 loc->source_file = xstrdup (sal->symtab->filename);
8215 loc->line_number = sal->line;
8216
8217 set_breakpoint_location_function (loc,
8218 sal->explicit_pc || sal->explicit_line);
8219 return loc;
8220 }
8221 \f
8222
8223 /* Return 1 if LOC is pointing to a permanent breakpoint,
8224 return 0 otherwise. */
8225
8226 static int
8227 bp_loc_is_permanent (struct bp_location *loc)
8228 {
8229 int len;
8230 CORE_ADDR addr;
8231 const gdb_byte *bpoint;
8232 gdb_byte *target_mem;
8233 struct cleanup *cleanup;
8234 int retval = 0;
8235
8236 gdb_assert (loc != NULL);
8237
8238 addr = loc->address;
8239 bpoint = gdbarch_breakpoint_from_pc (loc->gdbarch, &addr, &len);
8240
8241 /* Software breakpoints unsupported? */
8242 if (bpoint == NULL)
8243 return 0;
8244
8245 target_mem = alloca (len);
8246
8247 /* Enable the automatic memory restoration from breakpoints while
8248 we read the memory. Otherwise we could say about our temporary
8249 breakpoints they are permanent. */
8250 cleanup = save_current_space_and_thread ();
8251
8252 switch_to_program_space_and_thread (loc->pspace);
8253 make_show_memory_breakpoints_cleanup (0);
8254
8255 if (target_read_memory (loc->address, target_mem, len) == 0
8256 && memcmp (target_mem, bpoint, len) == 0)
8257 retval = 1;
8258
8259 do_cleanups (cleanup);
8260
8261 return retval;
8262 }
8263
8264
8265
8266 /* Create a breakpoint with SAL as location. Use ADDR_STRING
8267 as textual description of the location, and COND_STRING
8268 as condition expression. */
8269
8270 static void
8271 init_breakpoint_sal (struct breakpoint *b, struct gdbarch *gdbarch,
8272 struct symtabs_and_lines sals, char *addr_string,
8273 char *filter, char *cond_string,
8274 enum bptype type, enum bpdisp disposition,
8275 int thread, int task, int ignore_count,
8276 const struct breakpoint_ops *ops, int from_tty,
8277 int enabled, int internal, unsigned flags,
8278 int display_canonical)
8279 {
8280 int i;
8281
8282 if (type == bp_hardware_breakpoint)
8283 {
8284 int target_resources_ok;
8285
8286 i = hw_breakpoint_used_count ();
8287 target_resources_ok =
8288 target_can_use_hardware_watchpoint (bp_hardware_breakpoint,
8289 i + 1, 0);
8290 if (target_resources_ok == 0)
8291 error (_("No hardware breakpoint support in the target."));
8292 else if (target_resources_ok < 0)
8293 error (_("Hardware breakpoints used exceeds limit."));
8294 }
8295
8296 gdb_assert (sals.nelts > 0);
8297
8298 for (i = 0; i < sals.nelts; ++i)
8299 {
8300 struct symtab_and_line sal = sals.sals[i];
8301 struct bp_location *loc;
8302
8303 if (from_tty)
8304 {
8305 struct gdbarch *loc_gdbarch = get_sal_arch (sal);
8306 if (!loc_gdbarch)
8307 loc_gdbarch = gdbarch;
8308
8309 describe_other_breakpoints (loc_gdbarch,
8310 sal.pspace, sal.pc, sal.section, thread);
8311 }
8312
8313 if (i == 0)
8314 {
8315 init_raw_breakpoint (b, gdbarch, sal, type, ops);
8316 b->thread = thread;
8317 b->task = task;
8318
8319 b->cond_string = cond_string;
8320 b->ignore_count = ignore_count;
8321 b->enable_state = enabled ? bp_enabled : bp_disabled;
8322 b->disposition = disposition;
8323
8324 if ((flags & CREATE_BREAKPOINT_FLAGS_INSERTED) != 0)
8325 b->loc->inserted = 1;
8326
8327 if (type == bp_static_tracepoint)
8328 {
8329 struct tracepoint *t = (struct tracepoint *) b;
8330 struct static_tracepoint_marker marker;
8331
8332 if (strace_marker_p (b))
8333 {
8334 /* We already know the marker exists, otherwise, we
8335 wouldn't see a sal for it. */
8336 char *p = &addr_string[3];
8337 char *endp;
8338 char *marker_str;
8339
8340 p = skip_spaces (p);
8341
8342 endp = skip_to_space (p);
8343
8344 marker_str = savestring (p, endp - p);
8345 t->static_trace_marker_id = marker_str;
8346
8347 printf_filtered (_("Probed static tracepoint "
8348 "marker \"%s\"\n"),
8349 t->static_trace_marker_id);
8350 }
8351 else if (target_static_tracepoint_marker_at (sal.pc, &marker))
8352 {
8353 t->static_trace_marker_id = xstrdup (marker.str_id);
8354 release_static_tracepoint_marker (&marker);
8355
8356 printf_filtered (_("Probed static tracepoint "
8357 "marker \"%s\"\n"),
8358 t->static_trace_marker_id);
8359 }
8360 else
8361 warning (_("Couldn't determine the static "
8362 "tracepoint marker to probe"));
8363 }
8364
8365 loc = b->loc;
8366 }
8367 else
8368 {
8369 loc = add_location_to_breakpoint (b, &sal);
8370 if ((flags & CREATE_BREAKPOINT_FLAGS_INSERTED) != 0)
8371 loc->inserted = 1;
8372 }
8373
8374 if (bp_loc_is_permanent (loc))
8375 make_breakpoint_permanent (b);
8376
8377 if (b->cond_string)
8378 {
8379 char *arg = b->cond_string;
8380 loc->cond = parse_exp_1 (&arg, block_for_pc (loc->address), 0);
8381 if (*arg)
8382 error (_("Garbage %s follows condition"), arg);
8383 }
8384 }
8385
8386 b->display_canonical = display_canonical;
8387 if (addr_string)
8388 b->addr_string = addr_string;
8389 else
8390 /* addr_string has to be used or breakpoint_re_set will delete
8391 me. */
8392 b->addr_string
8393 = xstrprintf ("*%s", paddress (b->loc->gdbarch, b->loc->address));
8394 b->filter = filter;
8395 }
8396
8397 static void
8398 create_breakpoint_sal (struct gdbarch *gdbarch,
8399 struct symtabs_and_lines sals, char *addr_string,
8400 char *filter, char *cond_string,
8401 enum bptype type, enum bpdisp disposition,
8402 int thread, int task, int ignore_count,
8403 const struct breakpoint_ops *ops, int from_tty,
8404 int enabled, int internal, unsigned flags,
8405 int display_canonical)
8406 {
8407 struct breakpoint *b;
8408 struct cleanup *old_chain;
8409
8410 if (is_tracepoint_type (type))
8411 {
8412 struct tracepoint *t;
8413
8414 t = XCNEW (struct tracepoint);
8415 b = &t->base;
8416 }
8417 else
8418 b = XNEW (struct breakpoint);
8419
8420 old_chain = make_cleanup (xfree, b);
8421
8422 init_breakpoint_sal (b, gdbarch,
8423 sals, addr_string,
8424 filter, cond_string,
8425 type, disposition,
8426 thread, task, ignore_count,
8427 ops, from_tty,
8428 enabled, internal, flags,
8429 display_canonical);
8430 discard_cleanups (old_chain);
8431
8432 install_breakpoint (internal, b, 0);
8433 }
8434
8435 /* Add SALS.nelts breakpoints to the breakpoint table. For each
8436 SALS.sal[i] breakpoint, include the corresponding ADDR_STRING[i]
8437 value. COND_STRING, if not NULL, specified the condition to be
8438 used for all breakpoints. Essentially the only case where
8439 SALS.nelts is not 1 is when we set a breakpoint on an overloaded
8440 function. In that case, it's still not possible to specify
8441 separate conditions for different overloaded functions, so
8442 we take just a single condition string.
8443
8444 NOTE: If the function succeeds, the caller is expected to cleanup
8445 the arrays ADDR_STRING, COND_STRING, and SALS (but not the
8446 array contents). If the function fails (error() is called), the
8447 caller is expected to cleanups both the ADDR_STRING, COND_STRING,
8448 COND and SALS arrays and each of those arrays contents. */
8449
8450 static void
8451 create_breakpoints_sal (struct gdbarch *gdbarch,
8452 struct linespec_result *canonical,
8453 char *cond_string,
8454 enum bptype type, enum bpdisp disposition,
8455 int thread, int task, int ignore_count,
8456 const struct breakpoint_ops *ops, int from_tty,
8457 int enabled, int internal, unsigned flags)
8458 {
8459 int i;
8460 struct linespec_sals *lsal;
8461
8462 if (canonical->pre_expanded)
8463 gdb_assert (VEC_length (linespec_sals, canonical->sals) == 1);
8464
8465 for (i = 0; VEC_iterate (linespec_sals, canonical->sals, i, lsal); ++i)
8466 {
8467 /* Note that 'addr_string' can be NULL in the case of a plain
8468 'break', without arguments. */
8469 char *addr_string = (canonical->addr_string
8470 ? xstrdup (canonical->addr_string)
8471 : NULL);
8472 char *filter_string = lsal->canonical ? xstrdup (lsal->canonical) : NULL;
8473 struct cleanup *inner = make_cleanup (xfree, addr_string);
8474
8475 make_cleanup (xfree, filter_string);
8476 create_breakpoint_sal (gdbarch, lsal->sals,
8477 addr_string,
8478 filter_string,
8479 cond_string, type, disposition,
8480 thread, task, ignore_count, ops,
8481 from_tty, enabled, internal, flags,
8482 canonical->special_display);
8483 discard_cleanups (inner);
8484 }
8485 }
8486
8487 /* Parse ADDRESS which is assumed to be a SAL specification possibly
8488 followed by conditionals. On return, SALS contains an array of SAL
8489 addresses found. ADDR_STRING contains a vector of (canonical)
8490 address strings. ADDRESS points to the end of the SAL.
8491
8492 The array and the line spec strings are allocated on the heap, it is
8493 the caller's responsibility to free them. */
8494
8495 static void
8496 parse_breakpoint_sals (char **address,
8497 struct linespec_result *canonical)
8498 {
8499 char *addr_start = *address;
8500
8501 /* If no arg given, or if first arg is 'if ', use the default
8502 breakpoint. */
8503 if ((*address) == NULL
8504 || (strncmp ((*address), "if", 2) == 0 && isspace ((*address)[2])))
8505 {
8506 /* The last displayed codepoint, if it's valid, is our default breakpoint
8507 address. */
8508 if (last_displayed_sal_is_valid ())
8509 {
8510 struct linespec_sals lsal;
8511 struct symtab_and_line sal;
8512
8513 init_sal (&sal); /* Initialize to zeroes. */
8514 lsal.sals.sals = (struct symtab_and_line *)
8515 xmalloc (sizeof (struct symtab_and_line));
8516
8517 /* Set sal's pspace, pc, symtab, and line to the values
8518 corresponding to the last call to print_frame_info. */
8519 get_last_displayed_sal (&sal);
8520 sal.section = find_pc_overlay (sal.pc);
8521
8522 /* "break" without arguments is equivalent to "break *PC"
8523 where PC is the last displayed codepoint's address. So
8524 make sure to set sal.explicit_pc to prevent GDB from
8525 trying to expand the list of sals to include all other
8526 instances with the same symtab and line. */
8527 sal.explicit_pc = 1;
8528
8529 lsal.sals.sals[0] = sal;
8530 lsal.sals.nelts = 1;
8531 lsal.canonical = NULL;
8532
8533 VEC_safe_push (linespec_sals, canonical->sals, &lsal);
8534 }
8535 else
8536 error (_("No default breakpoint address now."));
8537 }
8538 else
8539 {
8540 /* Force almost all breakpoints to be in terms of the
8541 current_source_symtab (which is decode_line_1's default).
8542 This should produce the results we want almost all of the
8543 time while leaving default_breakpoint_* alone. */
8544 if (last_displayed_sal_is_valid ())
8545 decode_line_full (address, DECODE_LINE_FUNFIRSTLINE,
8546 get_last_displayed_symtab (),
8547 get_last_displayed_line (),
8548 canonical, NULL, NULL);
8549 else
8550 decode_line_full (address, DECODE_LINE_FUNFIRSTLINE,
8551 (struct symtab *) NULL, 0,
8552 canonical, NULL, NULL);
8553 }
8554 }
8555
8556
8557 /* Convert each SAL into a real PC. Verify that the PC can be
8558 inserted as a breakpoint. If it can't throw an error. */
8559
8560 static void
8561 breakpoint_sals_to_pc (struct symtabs_and_lines *sals)
8562 {
8563 int i;
8564
8565 for (i = 0; i < sals->nelts; i++)
8566 resolve_sal_pc (&sals->sals[i]);
8567 }
8568
8569 /* Fast tracepoints may have restrictions on valid locations. For
8570 instance, a fast tracepoint using a jump instead of a trap will
8571 likely have to overwrite more bytes than a trap would, and so can
8572 only be placed where the instruction is longer than the jump, or a
8573 multi-instruction sequence does not have a jump into the middle of
8574 it, etc. */
8575
8576 static void
8577 check_fast_tracepoint_sals (struct gdbarch *gdbarch,
8578 struct symtabs_and_lines *sals)
8579 {
8580 int i, rslt;
8581 struct symtab_and_line *sal;
8582 char *msg;
8583 struct cleanup *old_chain;
8584
8585 for (i = 0; i < sals->nelts; i++)
8586 {
8587 struct gdbarch *sarch;
8588
8589 sal = &sals->sals[i];
8590
8591 sarch = get_sal_arch (*sal);
8592 /* We fall back to GDBARCH if there is no architecture
8593 associated with SAL. */
8594 if (sarch == NULL)
8595 sarch = gdbarch;
8596 rslt = gdbarch_fast_tracepoint_valid_at (sarch, sal->pc,
8597 NULL, &msg);
8598 old_chain = make_cleanup (xfree, msg);
8599
8600 if (!rslt)
8601 error (_("May not have a fast tracepoint at 0x%s%s"),
8602 paddress (sarch, sal->pc), (msg ? msg : ""));
8603
8604 do_cleanups (old_chain);
8605 }
8606 }
8607
8608 /* Given TOK, a string specification of condition and thread, as
8609 accepted by the 'break' command, extract the condition
8610 string and thread number and set *COND_STRING and *THREAD.
8611 PC identifies the context at which the condition should be parsed.
8612 If no condition is found, *COND_STRING is set to NULL.
8613 If no thread is found, *THREAD is set to -1. */
8614 static void
8615 find_condition_and_thread (char *tok, CORE_ADDR pc,
8616 char **cond_string, int *thread, int *task)
8617 {
8618 *cond_string = NULL;
8619 *thread = -1;
8620 while (tok && *tok)
8621 {
8622 char *end_tok;
8623 int toklen;
8624 char *cond_start = NULL;
8625 char *cond_end = NULL;
8626
8627 tok = skip_spaces (tok);
8628
8629 end_tok = skip_to_space (tok);
8630
8631 toklen = end_tok - tok;
8632
8633 if (toklen >= 1 && strncmp (tok, "if", toklen) == 0)
8634 {
8635 struct expression *expr;
8636
8637 tok = cond_start = end_tok + 1;
8638 expr = parse_exp_1 (&tok, block_for_pc (pc), 0);
8639 xfree (expr);
8640 cond_end = tok;
8641 *cond_string = savestring (cond_start,
8642 cond_end - cond_start);
8643 }
8644 else if (toklen >= 1 && strncmp (tok, "thread", toklen) == 0)
8645 {
8646 char *tmptok;
8647
8648 tok = end_tok + 1;
8649 tmptok = tok;
8650 *thread = strtol (tok, &tok, 0);
8651 if (tok == tmptok)
8652 error (_("Junk after thread keyword."));
8653 if (!valid_thread_id (*thread))
8654 error (_("Unknown thread %d."), *thread);
8655 }
8656 else if (toklen >= 1 && strncmp (tok, "task", toklen) == 0)
8657 {
8658 char *tmptok;
8659
8660 tok = end_tok + 1;
8661 tmptok = tok;
8662 *task = strtol (tok, &tok, 0);
8663 if (tok == tmptok)
8664 error (_("Junk after task keyword."));
8665 if (!valid_task_id (*task))
8666 error (_("Unknown task %d."), *task);
8667 }
8668 else
8669 error (_("Junk at end of arguments."));
8670 }
8671 }
8672
8673 /* Decode a static tracepoint marker spec. */
8674
8675 static struct symtabs_and_lines
8676 decode_static_tracepoint_spec (char **arg_p)
8677 {
8678 VEC(static_tracepoint_marker_p) *markers = NULL;
8679 struct symtabs_and_lines sals;
8680 struct symtab_and_line sal;
8681 struct symbol *sym;
8682 struct cleanup *old_chain;
8683 char *p = &(*arg_p)[3];
8684 char *endp;
8685 char *marker_str;
8686 int i;
8687
8688 p = skip_spaces (p);
8689
8690 endp = skip_to_space (p);
8691
8692 marker_str = savestring (p, endp - p);
8693 old_chain = make_cleanup (xfree, marker_str);
8694
8695 markers = target_static_tracepoint_markers_by_strid (marker_str);
8696 if (VEC_empty(static_tracepoint_marker_p, markers))
8697 error (_("No known static tracepoint marker named %s"), marker_str);
8698
8699 sals.nelts = VEC_length(static_tracepoint_marker_p, markers);
8700 sals.sals = xmalloc (sizeof *sals.sals * sals.nelts);
8701
8702 for (i = 0; i < sals.nelts; i++)
8703 {
8704 struct static_tracepoint_marker *marker;
8705
8706 marker = VEC_index (static_tracepoint_marker_p, markers, i);
8707
8708 init_sal (&sals.sals[i]);
8709
8710 sals.sals[i] = find_pc_line (marker->address, 0);
8711 sals.sals[i].pc = marker->address;
8712
8713 release_static_tracepoint_marker (marker);
8714 }
8715
8716 do_cleanups (old_chain);
8717
8718 *arg_p = endp;
8719 return sals;
8720 }
8721
8722 /* Set a breakpoint. This function is shared between CLI and MI
8723 functions for setting a breakpoint. This function has two major
8724 modes of operations, selected by the PARSE_CONDITION_AND_THREAD
8725 parameter. If non-zero, the function will parse arg, extracting
8726 breakpoint location, address and thread. Otherwise, ARG is just
8727 the location of breakpoint, with condition and thread specified by
8728 the COND_STRING and THREAD parameters. If INTERNAL is non-zero,
8729 the breakpoint number will be allocated from the internal
8730 breakpoint count. Returns true if any breakpoint was created;
8731 false otherwise. */
8732
8733 int
8734 create_breakpoint (struct gdbarch *gdbarch,
8735 char *arg, char *cond_string, int thread,
8736 int parse_condition_and_thread,
8737 int tempflag, enum bptype type_wanted,
8738 int ignore_count,
8739 enum auto_boolean pending_break_support,
8740 const struct breakpoint_ops *ops,
8741 int from_tty, int enabled, int internal,
8742 unsigned flags)
8743 {
8744 volatile struct gdb_exception e;
8745 char *copy_arg = NULL;
8746 char *addr_start = arg;
8747 struct linespec_result canonical;
8748 struct cleanup *old_chain;
8749 struct cleanup *bkpt_chain = NULL;
8750 int i;
8751 int pending = 0;
8752 int task = 0;
8753 int prev_bkpt_count = breakpoint_count;
8754
8755 gdb_assert (ops != NULL);
8756
8757 init_linespec_result (&canonical);
8758
8759 TRY_CATCH (e, RETURN_MASK_ALL)
8760 {
8761 ops->create_sals_from_address (&arg, &canonical, type_wanted,
8762 addr_start, &copy_arg);
8763 }
8764
8765 /* If caller is interested in rc value from parse, set value. */
8766 switch (e.reason)
8767 {
8768 case GDB_NO_ERROR:
8769 if (VEC_empty (linespec_sals, canonical.sals))
8770 return 0;
8771 break;
8772 case RETURN_ERROR:
8773 switch (e.error)
8774 {
8775 case NOT_FOUND_ERROR:
8776
8777 /* If pending breakpoint support is turned off, throw
8778 error. */
8779
8780 if (pending_break_support == AUTO_BOOLEAN_FALSE)
8781 throw_exception (e);
8782
8783 exception_print (gdb_stderr, e);
8784
8785 /* If pending breakpoint support is auto query and the user
8786 selects no, then simply return the error code. */
8787 if (pending_break_support == AUTO_BOOLEAN_AUTO
8788 && !nquery (_("Make %s pending on future shared library load? "),
8789 bptype_string (type_wanted)))
8790 return 0;
8791
8792 /* At this point, either the user was queried about setting
8793 a pending breakpoint and selected yes, or pending
8794 breakpoint behavior is on and thus a pending breakpoint
8795 is defaulted on behalf of the user. */
8796 {
8797 struct linespec_sals lsal;
8798
8799 copy_arg = xstrdup (addr_start);
8800 lsal.canonical = xstrdup (copy_arg);
8801 lsal.sals.nelts = 1;
8802 lsal.sals.sals = XNEW (struct symtab_and_line);
8803 init_sal (&lsal.sals.sals[0]);
8804 pending = 1;
8805 VEC_safe_push (linespec_sals, canonical.sals, &lsal);
8806 }
8807 break;
8808 default:
8809 throw_exception (e);
8810 }
8811 break;
8812 default:
8813 throw_exception (e);
8814 }
8815
8816 /* Create a chain of things that always need to be cleaned up. */
8817 old_chain = make_cleanup_destroy_linespec_result (&canonical);
8818
8819 /* ----------------------------- SNIP -----------------------------
8820 Anything added to the cleanup chain beyond this point is assumed
8821 to be part of a breakpoint. If the breakpoint create succeeds
8822 then the memory is not reclaimed. */
8823 bkpt_chain = make_cleanup (null_cleanup, 0);
8824
8825 /* Resolve all line numbers to PC's and verify that the addresses
8826 are ok for the target. */
8827 if (!pending)
8828 {
8829 int ix;
8830 struct linespec_sals *iter;
8831
8832 for (ix = 0; VEC_iterate (linespec_sals, canonical.sals, ix, iter); ++ix)
8833 breakpoint_sals_to_pc (&iter->sals);
8834 }
8835
8836 /* Fast tracepoints may have additional restrictions on location. */
8837 if (!pending && type_wanted == bp_fast_tracepoint)
8838 {
8839 int ix;
8840 struct linespec_sals *iter;
8841
8842 for (ix = 0; VEC_iterate (linespec_sals, canonical.sals, ix, iter); ++ix)
8843 check_fast_tracepoint_sals (gdbarch, &iter->sals);
8844 }
8845
8846 /* Verify that condition can be parsed, before setting any
8847 breakpoints. Allocate a separate condition expression for each
8848 breakpoint. */
8849 if (!pending)
8850 {
8851 struct linespec_sals *lsal;
8852
8853 lsal = VEC_index (linespec_sals, canonical.sals, 0);
8854
8855 if (parse_condition_and_thread)
8856 {
8857 /* Here we only parse 'arg' to separate condition
8858 from thread number, so parsing in context of first
8859 sal is OK. When setting the breakpoint we'll
8860 re-parse it in context of each sal. */
8861 cond_string = NULL;
8862 thread = -1;
8863 find_condition_and_thread (arg, lsal->sals.sals[0].pc, &cond_string,
8864 &thread, &task);
8865 if (cond_string)
8866 make_cleanup (xfree, cond_string);
8867 }
8868 else
8869 {
8870 /* Create a private copy of condition string. */
8871 if (cond_string)
8872 {
8873 cond_string = xstrdup (cond_string);
8874 make_cleanup (xfree, cond_string);
8875 }
8876 }
8877
8878 ops->create_breakpoints_sal (gdbarch, &canonical, lsal,
8879 cond_string, type_wanted,
8880 tempflag ? disp_del : disp_donttouch,
8881 thread, task, ignore_count, ops,
8882 from_tty, enabled, internal, flags);
8883 }
8884 else
8885 {
8886 struct breakpoint *b;
8887
8888 make_cleanup (xfree, copy_arg);
8889
8890 if (is_tracepoint_type (type_wanted))
8891 {
8892 struct tracepoint *t;
8893
8894 t = XCNEW (struct tracepoint);
8895 b = &t->base;
8896 }
8897 else
8898 b = XNEW (struct breakpoint);
8899
8900 init_raw_breakpoint_without_location (b, gdbarch, type_wanted, ops);
8901
8902 b->addr_string = copy_arg;
8903 b->cond_string = NULL;
8904 b->ignore_count = ignore_count;
8905 b->disposition = tempflag ? disp_del : disp_donttouch;
8906 b->condition_not_parsed = 1;
8907 b->enable_state = enabled ? bp_enabled : bp_disabled;
8908 if ((type_wanted != bp_breakpoint
8909 && type_wanted != bp_hardware_breakpoint) || thread != -1)
8910 b->pspace = current_program_space;
8911
8912 install_breakpoint (internal, b, 0);
8913 }
8914
8915 if (VEC_length (linespec_sals, canonical.sals) > 1)
8916 {
8917 warning (_("Multiple breakpoints were set.\nUse the "
8918 "\"delete\" command to delete unwanted breakpoints."));
8919 prev_breakpoint_count = prev_bkpt_count;
8920 }
8921
8922 /* That's it. Discard the cleanups for data inserted into the
8923 breakpoint. */
8924 discard_cleanups (bkpt_chain);
8925 /* But cleanup everything else. */
8926 do_cleanups (old_chain);
8927
8928 /* error call may happen here - have BKPT_CHAIN already discarded. */
8929 update_global_location_list (1);
8930
8931 return 1;
8932 }
8933
8934 /* Set a breakpoint.
8935 ARG is a string describing breakpoint address,
8936 condition, and thread.
8937 FLAG specifies if a breakpoint is hardware on,
8938 and if breakpoint is temporary, using BP_HARDWARE_FLAG
8939 and BP_TEMPFLAG. */
8940
8941 static void
8942 break_command_1 (char *arg, int flag, int from_tty)
8943 {
8944 int tempflag = flag & BP_TEMPFLAG;
8945 enum bptype type_wanted = (flag & BP_HARDWAREFLAG
8946 ? bp_hardware_breakpoint
8947 : bp_breakpoint);
8948
8949 create_breakpoint (get_current_arch (),
8950 arg,
8951 NULL, 0, 1 /* parse arg */,
8952 tempflag, type_wanted,
8953 0 /* Ignore count */,
8954 pending_break_support,
8955 &bkpt_breakpoint_ops,
8956 from_tty,
8957 1 /* enabled */,
8958 0 /* internal */,
8959 0);
8960 }
8961
8962 /* Helper function for break_command_1 and disassemble_command. */
8963
8964 void
8965 resolve_sal_pc (struct symtab_and_line *sal)
8966 {
8967 CORE_ADDR pc;
8968
8969 if (sal->pc == 0 && sal->symtab != NULL)
8970 {
8971 if (!find_line_pc (sal->symtab, sal->line, &pc))
8972 error (_("No line %d in file \"%s\"."),
8973 sal->line, sal->symtab->filename);
8974 sal->pc = pc;
8975
8976 /* If this SAL corresponds to a breakpoint inserted using a line
8977 number, then skip the function prologue if necessary. */
8978 if (sal->explicit_line)
8979 skip_prologue_sal (sal);
8980 }
8981
8982 if (sal->section == 0 && sal->symtab != NULL)
8983 {
8984 struct blockvector *bv;
8985 struct block *b;
8986 struct symbol *sym;
8987
8988 bv = blockvector_for_pc_sect (sal->pc, 0, &b, sal->symtab);
8989 if (bv != NULL)
8990 {
8991 sym = block_linkage_function (b);
8992 if (sym != NULL)
8993 {
8994 fixup_symbol_section (sym, sal->symtab->objfile);
8995 sal->section = SYMBOL_OBJ_SECTION (sym);
8996 }
8997 else
8998 {
8999 /* It really is worthwhile to have the section, so we'll
9000 just have to look harder. This case can be executed
9001 if we have line numbers but no functions (as can
9002 happen in assembly source). */
9003
9004 struct minimal_symbol *msym;
9005 struct cleanup *old_chain = save_current_space_and_thread ();
9006
9007 switch_to_program_space_and_thread (sal->pspace);
9008
9009 msym = lookup_minimal_symbol_by_pc (sal->pc);
9010 if (msym)
9011 sal->section = SYMBOL_OBJ_SECTION (msym);
9012
9013 do_cleanups (old_chain);
9014 }
9015 }
9016 }
9017 }
9018
9019 void
9020 break_command (char *arg, int from_tty)
9021 {
9022 break_command_1 (arg, 0, from_tty);
9023 }
9024
9025 void
9026 tbreak_command (char *arg, int from_tty)
9027 {
9028 break_command_1 (arg, BP_TEMPFLAG, from_tty);
9029 }
9030
9031 static void
9032 hbreak_command (char *arg, int from_tty)
9033 {
9034 break_command_1 (arg, BP_HARDWAREFLAG, from_tty);
9035 }
9036
9037 static void
9038 thbreak_command (char *arg, int from_tty)
9039 {
9040 break_command_1 (arg, (BP_TEMPFLAG | BP_HARDWAREFLAG), from_tty);
9041 }
9042
9043 static void
9044 stop_command (char *arg, int from_tty)
9045 {
9046 printf_filtered (_("Specify the type of breakpoint to set.\n\
9047 Usage: stop in <function | address>\n\
9048 stop at <line>\n"));
9049 }
9050
9051 static void
9052 stopin_command (char *arg, int from_tty)
9053 {
9054 int badInput = 0;
9055
9056 if (arg == (char *) NULL)
9057 badInput = 1;
9058 else if (*arg != '*')
9059 {
9060 char *argptr = arg;
9061 int hasColon = 0;
9062
9063 /* Look for a ':'. If this is a line number specification, then
9064 say it is bad, otherwise, it should be an address or
9065 function/method name. */
9066 while (*argptr && !hasColon)
9067 {
9068 hasColon = (*argptr == ':');
9069 argptr++;
9070 }
9071
9072 if (hasColon)
9073 badInput = (*argptr != ':'); /* Not a class::method */
9074 else
9075 badInput = isdigit (*arg); /* a simple line number */
9076 }
9077
9078 if (badInput)
9079 printf_filtered (_("Usage: stop in <function | address>\n"));
9080 else
9081 break_command_1 (arg, 0, from_tty);
9082 }
9083
9084 static void
9085 stopat_command (char *arg, int from_tty)
9086 {
9087 int badInput = 0;
9088
9089 if (arg == (char *) NULL || *arg == '*') /* no line number */
9090 badInput = 1;
9091 else
9092 {
9093 char *argptr = arg;
9094 int hasColon = 0;
9095
9096 /* Look for a ':'. If there is a '::' then get out, otherwise
9097 it is probably a line number. */
9098 while (*argptr && !hasColon)
9099 {
9100 hasColon = (*argptr == ':');
9101 argptr++;
9102 }
9103
9104 if (hasColon)
9105 badInput = (*argptr == ':'); /* we have class::method */
9106 else
9107 badInput = !isdigit (*arg); /* not a line number */
9108 }
9109
9110 if (badInput)
9111 printf_filtered (_("Usage: stop at <line>\n"));
9112 else
9113 break_command_1 (arg, 0, from_tty);
9114 }
9115
9116 /* Implement the "breakpoint_hit" breakpoint_ops method for
9117 ranged breakpoints. */
9118
9119 static int
9120 breakpoint_hit_ranged_breakpoint (const struct bp_location *bl,
9121 struct address_space *aspace,
9122 CORE_ADDR bp_addr,
9123 const struct target_waitstatus *ws)
9124 {
9125 if (ws->kind != TARGET_WAITKIND_STOPPED
9126 || ws->value.sig != TARGET_SIGNAL_TRAP)
9127 return 0;
9128
9129 return breakpoint_address_match_range (bl->pspace->aspace, bl->address,
9130 bl->length, aspace, bp_addr);
9131 }
9132
9133 /* Implement the "resources_needed" breakpoint_ops method for
9134 ranged breakpoints. */
9135
9136 static int
9137 resources_needed_ranged_breakpoint (const struct bp_location *bl)
9138 {
9139 return target_ranged_break_num_registers ();
9140 }
9141
9142 /* Implement the "print_it" breakpoint_ops method for
9143 ranged breakpoints. */
9144
9145 static enum print_stop_action
9146 print_it_ranged_breakpoint (bpstat bs)
9147 {
9148 struct breakpoint *b = bs->breakpoint_at;
9149 struct bp_location *bl = b->loc;
9150 struct ui_out *uiout = current_uiout;
9151
9152 gdb_assert (b->type == bp_hardware_breakpoint);
9153
9154 /* Ranged breakpoints have only one location. */
9155 gdb_assert (bl && bl->next == NULL);
9156
9157 annotate_breakpoint (b->number);
9158 if (b->disposition == disp_del)
9159 ui_out_text (uiout, "\nTemporary ranged breakpoint ");
9160 else
9161 ui_out_text (uiout, "\nRanged breakpoint ");
9162 if (ui_out_is_mi_like_p (uiout))
9163 {
9164 ui_out_field_string (uiout, "reason",
9165 async_reason_lookup (EXEC_ASYNC_BREAKPOINT_HIT));
9166 ui_out_field_string (uiout, "disp", bpdisp_text (b->disposition));
9167 }
9168 ui_out_field_int (uiout, "bkptno", b->number);
9169 ui_out_text (uiout, ", ");
9170
9171 return PRINT_SRC_AND_LOC;
9172 }
9173
9174 /* Implement the "print_one" breakpoint_ops method for
9175 ranged breakpoints. */
9176
9177 static void
9178 print_one_ranged_breakpoint (struct breakpoint *b,
9179 struct bp_location **last_loc)
9180 {
9181 struct bp_location *bl = b->loc;
9182 struct value_print_options opts;
9183 struct ui_out *uiout = current_uiout;
9184
9185 /* Ranged breakpoints have only one location. */
9186 gdb_assert (bl && bl->next == NULL);
9187
9188 get_user_print_options (&opts);
9189
9190 if (opts.addressprint)
9191 /* We don't print the address range here, it will be printed later
9192 by print_one_detail_ranged_breakpoint. */
9193 ui_out_field_skip (uiout, "addr");
9194 annotate_field (5);
9195 print_breakpoint_location (b, bl);
9196 *last_loc = bl;
9197 }
9198
9199 /* Implement the "print_one_detail" breakpoint_ops method for
9200 ranged breakpoints. */
9201
9202 static void
9203 print_one_detail_ranged_breakpoint (const struct breakpoint *b,
9204 struct ui_out *uiout)
9205 {
9206 CORE_ADDR address_start, address_end;
9207 struct bp_location *bl = b->loc;
9208 struct ui_stream *stb = ui_out_stream_new (uiout);
9209 struct cleanup *cleanup = make_cleanup_ui_out_stream_delete (stb);
9210
9211 gdb_assert (bl);
9212
9213 address_start = bl->address;
9214 address_end = address_start + bl->length - 1;
9215
9216 ui_out_text (uiout, "\taddress range: ");
9217 fprintf_unfiltered (stb->stream, "[%s, %s]",
9218 print_core_address (bl->gdbarch, address_start),
9219 print_core_address (bl->gdbarch, address_end));
9220 ui_out_field_stream (uiout, "addr", stb);
9221 ui_out_text (uiout, "\n");
9222
9223 do_cleanups (cleanup);
9224 }
9225
9226 /* Implement the "print_mention" breakpoint_ops method for
9227 ranged breakpoints. */
9228
9229 static void
9230 print_mention_ranged_breakpoint (struct breakpoint *b)
9231 {
9232 struct bp_location *bl = b->loc;
9233 struct ui_out *uiout = current_uiout;
9234
9235 gdb_assert (bl);
9236 gdb_assert (b->type == bp_hardware_breakpoint);
9237
9238 if (ui_out_is_mi_like_p (uiout))
9239 return;
9240
9241 printf_filtered (_("Hardware assisted ranged breakpoint %d from %s to %s."),
9242 b->number, paddress (bl->gdbarch, bl->address),
9243 paddress (bl->gdbarch, bl->address + bl->length - 1));
9244 }
9245
9246 /* Implement the "print_recreate" breakpoint_ops method for
9247 ranged breakpoints. */
9248
9249 static void
9250 print_recreate_ranged_breakpoint (struct breakpoint *b, struct ui_file *fp)
9251 {
9252 fprintf_unfiltered (fp, "break-range %s, %s", b->addr_string,
9253 b->addr_string_range_end);
9254 print_recreate_thread (b, fp);
9255 }
9256
9257 /* The breakpoint_ops structure to be used in ranged breakpoints. */
9258
9259 static struct breakpoint_ops ranged_breakpoint_ops;
9260
9261 /* Find the address where the end of the breakpoint range should be
9262 placed, given the SAL of the end of the range. This is so that if
9263 the user provides a line number, the end of the range is set to the
9264 last instruction of the given line. */
9265
9266 static CORE_ADDR
9267 find_breakpoint_range_end (struct symtab_and_line sal)
9268 {
9269 CORE_ADDR end;
9270
9271 /* If the user provided a PC value, use it. Otherwise,
9272 find the address of the end of the given location. */
9273 if (sal.explicit_pc)
9274 end = sal.pc;
9275 else
9276 {
9277 int ret;
9278 CORE_ADDR start;
9279
9280 ret = find_line_pc_range (sal, &start, &end);
9281 if (!ret)
9282 error (_("Could not find location of the end of the range."));
9283
9284 /* find_line_pc_range returns the start of the next line. */
9285 end--;
9286 }
9287
9288 return end;
9289 }
9290
9291 /* Implement the "break-range" CLI command. */
9292
9293 static void
9294 break_range_command (char *arg, int from_tty)
9295 {
9296 char *arg_start, *addr_string_start, *addr_string_end;
9297 struct linespec_result canonical_start, canonical_end;
9298 int bp_count, can_use_bp, length;
9299 CORE_ADDR end;
9300 struct breakpoint *b;
9301 struct symtab_and_line sal_start, sal_end;
9302 struct cleanup *cleanup_bkpt;
9303 struct linespec_sals *lsal_start, *lsal_end;
9304
9305 /* We don't support software ranged breakpoints. */
9306 if (target_ranged_break_num_registers () < 0)
9307 error (_("This target does not support hardware ranged breakpoints."));
9308
9309 bp_count = hw_breakpoint_used_count ();
9310 bp_count += target_ranged_break_num_registers ();
9311 can_use_bp = target_can_use_hardware_watchpoint (bp_hardware_breakpoint,
9312 bp_count, 0);
9313 if (can_use_bp < 0)
9314 error (_("Hardware breakpoints used exceeds limit."));
9315
9316 arg = skip_spaces (arg);
9317 if (arg == NULL || arg[0] == '\0')
9318 error(_("No address range specified."));
9319
9320 init_linespec_result (&canonical_start);
9321
9322 arg_start = arg;
9323 parse_breakpoint_sals (&arg, &canonical_start);
9324
9325 cleanup_bkpt = make_cleanup_destroy_linespec_result (&canonical_start);
9326
9327 if (arg[0] != ',')
9328 error (_("Too few arguments."));
9329 else if (VEC_empty (linespec_sals, canonical_start.sals))
9330 error (_("Could not find location of the beginning of the range."));
9331
9332 lsal_start = VEC_index (linespec_sals, canonical_start.sals, 0);
9333
9334 if (VEC_length (linespec_sals, canonical_start.sals) > 1
9335 || lsal_start->sals.nelts != 1)
9336 error (_("Cannot create a ranged breakpoint with multiple locations."));
9337
9338 sal_start = lsal_start->sals.sals[0];
9339 addr_string_start = savestring (arg_start, arg - arg_start);
9340 make_cleanup (xfree, addr_string_start);
9341
9342 arg++; /* Skip the comma. */
9343 arg = skip_spaces (arg);
9344
9345 /* Parse the end location. */
9346
9347 init_linespec_result (&canonical_end);
9348 arg_start = arg;
9349
9350 /* We call decode_line_full directly here instead of using
9351 parse_breakpoint_sals because we need to specify the start location's
9352 symtab and line as the default symtab and line for the end of the
9353 range. This makes it possible to have ranges like "foo.c:27, +14",
9354 where +14 means 14 lines from the start location. */
9355 decode_line_full (&arg, DECODE_LINE_FUNFIRSTLINE,
9356 sal_start.symtab, sal_start.line,
9357 &canonical_end, NULL, NULL);
9358
9359 make_cleanup_destroy_linespec_result (&canonical_end);
9360
9361 if (VEC_empty (linespec_sals, canonical_end.sals))
9362 error (_("Could not find location of the end of the range."));
9363
9364 lsal_end = VEC_index (linespec_sals, canonical_end.sals, 0);
9365 if (VEC_length (linespec_sals, canonical_end.sals) > 1
9366 || lsal_end->sals.nelts != 1)
9367 error (_("Cannot create a ranged breakpoint with multiple locations."));
9368
9369 sal_end = lsal_end->sals.sals[0];
9370 addr_string_end = savestring (arg_start, arg - arg_start);
9371 make_cleanup (xfree, addr_string_end);
9372
9373 end = find_breakpoint_range_end (sal_end);
9374 if (sal_start.pc > end)
9375 error (_("Invalid address range, end precedes start."));
9376
9377 length = end - sal_start.pc + 1;
9378 if (length < 0)
9379 /* Length overflowed. */
9380 error (_("Address range too large."));
9381 else if (length == 1)
9382 {
9383 /* This range is simple enough to be handled by
9384 the `hbreak' command. */
9385 hbreak_command (addr_string_start, 1);
9386
9387 do_cleanups (cleanup_bkpt);
9388
9389 return;
9390 }
9391
9392 /* Now set up the breakpoint. */
9393 b = set_raw_breakpoint (get_current_arch (), sal_start,
9394 bp_hardware_breakpoint, &ranged_breakpoint_ops);
9395 set_breakpoint_count (breakpoint_count + 1);
9396 b->number = breakpoint_count;
9397 b->disposition = disp_donttouch;
9398 b->addr_string = xstrdup (addr_string_start);
9399 b->addr_string_range_end = xstrdup (addr_string_end);
9400 b->loc->length = length;
9401
9402 do_cleanups (cleanup_bkpt);
9403
9404 mention (b);
9405 observer_notify_breakpoint_created (b);
9406 update_global_location_list (1);
9407 }
9408
9409 /* Return non-zero if EXP is verified as constant. Returned zero
9410 means EXP is variable. Also the constant detection may fail for
9411 some constant expressions and in such case still falsely return
9412 zero. */
9413
9414 static int
9415 watchpoint_exp_is_const (const struct expression *exp)
9416 {
9417 int i = exp->nelts;
9418
9419 while (i > 0)
9420 {
9421 int oplenp, argsp;
9422
9423 /* We are only interested in the descriptor of each element. */
9424 operator_length (exp, i, &oplenp, &argsp);
9425 i -= oplenp;
9426
9427 switch (exp->elts[i].opcode)
9428 {
9429 case BINOP_ADD:
9430 case BINOP_SUB:
9431 case BINOP_MUL:
9432 case BINOP_DIV:
9433 case BINOP_REM:
9434 case BINOP_MOD:
9435 case BINOP_LSH:
9436 case BINOP_RSH:
9437 case BINOP_LOGICAL_AND:
9438 case BINOP_LOGICAL_OR:
9439 case BINOP_BITWISE_AND:
9440 case BINOP_BITWISE_IOR:
9441 case BINOP_BITWISE_XOR:
9442 case BINOP_EQUAL:
9443 case BINOP_NOTEQUAL:
9444 case BINOP_LESS:
9445 case BINOP_GTR:
9446 case BINOP_LEQ:
9447 case BINOP_GEQ:
9448 case BINOP_REPEAT:
9449 case BINOP_COMMA:
9450 case BINOP_EXP:
9451 case BINOP_MIN:
9452 case BINOP_MAX:
9453 case BINOP_INTDIV:
9454 case BINOP_CONCAT:
9455 case BINOP_IN:
9456 case BINOP_RANGE:
9457 case TERNOP_COND:
9458 case TERNOP_SLICE:
9459 case TERNOP_SLICE_COUNT:
9460
9461 case OP_LONG:
9462 case OP_DOUBLE:
9463 case OP_DECFLOAT:
9464 case OP_LAST:
9465 case OP_COMPLEX:
9466 case OP_STRING:
9467 case OP_BITSTRING:
9468 case OP_ARRAY:
9469 case OP_TYPE:
9470 case OP_NAME:
9471 case OP_OBJC_NSSTRING:
9472
9473 case UNOP_NEG:
9474 case UNOP_LOGICAL_NOT:
9475 case UNOP_COMPLEMENT:
9476 case UNOP_ADDR:
9477 case UNOP_HIGH:
9478 case UNOP_CAST:
9479 /* Unary, binary and ternary operators: We have to check
9480 their operands. If they are constant, then so is the
9481 result of that operation. For instance, if A and B are
9482 determined to be constants, then so is "A + B".
9483
9484 UNOP_IND is one exception to the rule above, because the
9485 value of *ADDR is not necessarily a constant, even when
9486 ADDR is. */
9487 break;
9488
9489 case OP_VAR_VALUE:
9490 /* Check whether the associated symbol is a constant.
9491
9492 We use SYMBOL_CLASS rather than TYPE_CONST because it's
9493 possible that a buggy compiler could mark a variable as
9494 constant even when it is not, and TYPE_CONST would return
9495 true in this case, while SYMBOL_CLASS wouldn't.
9496
9497 We also have to check for function symbols because they
9498 are always constant. */
9499 {
9500 struct symbol *s = exp->elts[i + 2].symbol;
9501
9502 if (SYMBOL_CLASS (s) != LOC_BLOCK
9503 && SYMBOL_CLASS (s) != LOC_CONST
9504 && SYMBOL_CLASS (s) != LOC_CONST_BYTES)
9505 return 0;
9506 break;
9507 }
9508
9509 /* The default action is to return 0 because we are using
9510 the optimistic approach here: If we don't know something,
9511 then it is not a constant. */
9512 default:
9513 return 0;
9514 }
9515 }
9516
9517 return 1;
9518 }
9519
9520 /* Implement the "dtor" breakpoint_ops method for watchpoints. */
9521
9522 static void
9523 dtor_watchpoint (struct breakpoint *self)
9524 {
9525 struct watchpoint *w = (struct watchpoint *) self;
9526
9527 xfree (w->cond_exp);
9528 xfree (w->exp);
9529 xfree (w->exp_string);
9530 xfree (w->exp_string_reparse);
9531 value_free (w->val);
9532
9533 base_breakpoint_ops.dtor (self);
9534 }
9535
9536 /* Implement the "re_set" breakpoint_ops method for watchpoints. */
9537
9538 static void
9539 re_set_watchpoint (struct breakpoint *b)
9540 {
9541 struct watchpoint *w = (struct watchpoint *) b;
9542
9543 /* Watchpoint can be either on expression using entirely global
9544 variables, or it can be on local variables.
9545
9546 Watchpoints of the first kind are never auto-deleted, and even
9547 persist across program restarts. Since they can use variables
9548 from shared libraries, we need to reparse expression as libraries
9549 are loaded and unloaded.
9550
9551 Watchpoints on local variables can also change meaning as result
9552 of solib event. For example, if a watchpoint uses both a local
9553 and a global variables in expression, it's a local watchpoint,
9554 but unloading of a shared library will make the expression
9555 invalid. This is not a very common use case, but we still
9556 re-evaluate expression, to avoid surprises to the user.
9557
9558 Note that for local watchpoints, we re-evaluate it only if
9559 watchpoints frame id is still valid. If it's not, it means the
9560 watchpoint is out of scope and will be deleted soon. In fact,
9561 I'm not sure we'll ever be called in this case.
9562
9563 If a local watchpoint's frame id is still valid, then
9564 w->exp_valid_block is likewise valid, and we can safely use it.
9565
9566 Don't do anything about disabled watchpoints, since they will be
9567 reevaluated again when enabled. */
9568 update_watchpoint (w, 1 /* reparse */);
9569 }
9570
9571 /* Implement the "insert" breakpoint_ops method for hardware watchpoints. */
9572
9573 static int
9574 insert_watchpoint (struct bp_location *bl)
9575 {
9576 struct watchpoint *w = (struct watchpoint *) bl->owner;
9577 int length = w->exact ? 1 : bl->length;
9578
9579 return target_insert_watchpoint (bl->address, length, bl->watchpoint_type,
9580 w->cond_exp);
9581 }
9582
9583 /* Implement the "remove" breakpoint_ops method for hardware watchpoints. */
9584
9585 static int
9586 remove_watchpoint (struct bp_location *bl)
9587 {
9588 struct watchpoint *w = (struct watchpoint *) bl->owner;
9589 int length = w->exact ? 1 : bl->length;
9590
9591 return target_remove_watchpoint (bl->address, length, bl->watchpoint_type,
9592 w->cond_exp);
9593 }
9594
9595 static int
9596 breakpoint_hit_watchpoint (const struct bp_location *bl,
9597 struct address_space *aspace, CORE_ADDR bp_addr,
9598 const struct target_waitstatus *ws)
9599 {
9600 struct breakpoint *b = bl->owner;
9601 struct watchpoint *w = (struct watchpoint *) b;
9602
9603 /* Continuable hardware watchpoints are treated as non-existent if the
9604 reason we stopped wasn't a hardware watchpoint (we didn't stop on
9605 some data address). Otherwise gdb won't stop on a break instruction
9606 in the code (not from a breakpoint) when a hardware watchpoint has
9607 been defined. Also skip watchpoints which we know did not trigger
9608 (did not match the data address). */
9609 if (is_hardware_watchpoint (b)
9610 && w->watchpoint_triggered == watch_triggered_no)
9611 return 0;
9612
9613 return 1;
9614 }
9615
9616 static void
9617 check_status_watchpoint (bpstat bs)
9618 {
9619 gdb_assert (is_watchpoint (bs->breakpoint_at));
9620
9621 bpstat_check_watchpoint (bs);
9622 }
9623
9624 /* Implement the "resources_needed" breakpoint_ops method for
9625 hardware watchpoints. */
9626
9627 static int
9628 resources_needed_watchpoint (const struct bp_location *bl)
9629 {
9630 struct watchpoint *w = (struct watchpoint *) bl->owner;
9631 int length = w->exact? 1 : bl->length;
9632
9633 return target_region_ok_for_hw_watchpoint (bl->address, length);
9634 }
9635
9636 /* Implement the "works_in_software_mode" breakpoint_ops method for
9637 hardware watchpoints. */
9638
9639 static int
9640 works_in_software_mode_watchpoint (const struct breakpoint *b)
9641 {
9642 /* Read and access watchpoints only work with hardware support. */
9643 return b->type == bp_watchpoint || b->type == bp_hardware_watchpoint;
9644 }
9645
9646 static enum print_stop_action
9647 print_it_watchpoint (bpstat bs)
9648 {
9649 struct cleanup *old_chain;
9650 struct breakpoint *b;
9651 const struct bp_location *bl;
9652 struct ui_stream *stb;
9653 enum print_stop_action result;
9654 struct watchpoint *w;
9655 struct ui_out *uiout = current_uiout;
9656
9657 gdb_assert (bs->bp_location_at != NULL);
9658
9659 bl = bs->bp_location_at;
9660 b = bs->breakpoint_at;
9661 w = (struct watchpoint *) b;
9662
9663 stb = ui_out_stream_new (uiout);
9664 old_chain = make_cleanup_ui_out_stream_delete (stb);
9665
9666 switch (b->type)
9667 {
9668 case bp_watchpoint:
9669 case bp_hardware_watchpoint:
9670 annotate_watchpoint (b->number);
9671 if (ui_out_is_mi_like_p (uiout))
9672 ui_out_field_string
9673 (uiout, "reason",
9674 async_reason_lookup (EXEC_ASYNC_WATCHPOINT_TRIGGER));
9675 mention (b);
9676 make_cleanup_ui_out_tuple_begin_end (uiout, "value");
9677 ui_out_text (uiout, "\nOld value = ");
9678 watchpoint_value_print (bs->old_val, stb->stream);
9679 ui_out_field_stream (uiout, "old", stb);
9680 ui_out_text (uiout, "\nNew value = ");
9681 watchpoint_value_print (w->val, stb->stream);
9682 ui_out_field_stream (uiout, "new", stb);
9683 ui_out_text (uiout, "\n");
9684 /* More than one watchpoint may have been triggered. */
9685 result = PRINT_UNKNOWN;
9686 break;
9687
9688 case bp_read_watchpoint:
9689 if (ui_out_is_mi_like_p (uiout))
9690 ui_out_field_string
9691 (uiout, "reason",
9692 async_reason_lookup (EXEC_ASYNC_READ_WATCHPOINT_TRIGGER));
9693 mention (b);
9694 make_cleanup_ui_out_tuple_begin_end (uiout, "value");
9695 ui_out_text (uiout, "\nValue = ");
9696 watchpoint_value_print (w->val, stb->stream);
9697 ui_out_field_stream (uiout, "value", stb);
9698 ui_out_text (uiout, "\n");
9699 result = PRINT_UNKNOWN;
9700 break;
9701
9702 case bp_access_watchpoint:
9703 if (bs->old_val != NULL)
9704 {
9705 annotate_watchpoint (b->number);
9706 if (ui_out_is_mi_like_p (uiout))
9707 ui_out_field_string
9708 (uiout, "reason",
9709 async_reason_lookup (EXEC_ASYNC_ACCESS_WATCHPOINT_TRIGGER));
9710 mention (b);
9711 make_cleanup_ui_out_tuple_begin_end (uiout, "value");
9712 ui_out_text (uiout, "\nOld value = ");
9713 watchpoint_value_print (bs->old_val, stb->stream);
9714 ui_out_field_stream (uiout, "old", stb);
9715 ui_out_text (uiout, "\nNew value = ");
9716 }
9717 else
9718 {
9719 mention (b);
9720 if (ui_out_is_mi_like_p (uiout))
9721 ui_out_field_string
9722 (uiout, "reason",
9723 async_reason_lookup (EXEC_ASYNC_ACCESS_WATCHPOINT_TRIGGER));
9724 make_cleanup_ui_out_tuple_begin_end (uiout, "value");
9725 ui_out_text (uiout, "\nValue = ");
9726 }
9727 watchpoint_value_print (w->val, stb->stream);
9728 ui_out_field_stream (uiout, "new", stb);
9729 ui_out_text (uiout, "\n");
9730 result = PRINT_UNKNOWN;
9731 break;
9732 default:
9733 result = PRINT_UNKNOWN;
9734 }
9735
9736 do_cleanups (old_chain);
9737 return result;
9738 }
9739
9740 /* Implement the "print_mention" breakpoint_ops method for hardware
9741 watchpoints. */
9742
9743 static void
9744 print_mention_watchpoint (struct breakpoint *b)
9745 {
9746 struct cleanup *ui_out_chain;
9747 struct watchpoint *w = (struct watchpoint *) b;
9748 struct ui_out *uiout = current_uiout;
9749
9750 switch (b->type)
9751 {
9752 case bp_watchpoint:
9753 ui_out_text (uiout, "Watchpoint ");
9754 ui_out_chain = make_cleanup_ui_out_tuple_begin_end (uiout, "wpt");
9755 break;
9756 case bp_hardware_watchpoint:
9757 ui_out_text (uiout, "Hardware watchpoint ");
9758 ui_out_chain = make_cleanup_ui_out_tuple_begin_end (uiout, "wpt");
9759 break;
9760 case bp_read_watchpoint:
9761 ui_out_text (uiout, "Hardware read watchpoint ");
9762 ui_out_chain = make_cleanup_ui_out_tuple_begin_end (uiout, "hw-rwpt");
9763 break;
9764 case bp_access_watchpoint:
9765 ui_out_text (uiout, "Hardware access (read/write) watchpoint ");
9766 ui_out_chain = make_cleanup_ui_out_tuple_begin_end (uiout, "hw-awpt");
9767 break;
9768 default:
9769 internal_error (__FILE__, __LINE__,
9770 _("Invalid hardware watchpoint type."));
9771 }
9772
9773 ui_out_field_int (uiout, "number", b->number);
9774 ui_out_text (uiout, ": ");
9775 ui_out_field_string (uiout, "exp", w->exp_string);
9776 do_cleanups (ui_out_chain);
9777 }
9778
9779 /* Implement the "print_recreate" breakpoint_ops method for
9780 watchpoints. */
9781
9782 static void
9783 print_recreate_watchpoint (struct breakpoint *b, struct ui_file *fp)
9784 {
9785 struct watchpoint *w = (struct watchpoint *) b;
9786
9787 switch (b->type)
9788 {
9789 case bp_watchpoint:
9790 case bp_hardware_watchpoint:
9791 fprintf_unfiltered (fp, "watch");
9792 break;
9793 case bp_read_watchpoint:
9794 fprintf_unfiltered (fp, "rwatch");
9795 break;
9796 case bp_access_watchpoint:
9797 fprintf_unfiltered (fp, "awatch");
9798 break;
9799 default:
9800 internal_error (__FILE__, __LINE__,
9801 _("Invalid watchpoint type."));
9802 }
9803
9804 fprintf_unfiltered (fp, " %s", w->exp_string);
9805 print_recreate_thread (b, fp);
9806 }
9807
9808 /* The breakpoint_ops structure to be used in hardware watchpoints. */
9809
9810 static struct breakpoint_ops watchpoint_breakpoint_ops;
9811
9812 /* Implement the "insert" breakpoint_ops method for
9813 masked hardware watchpoints. */
9814
9815 static int
9816 insert_masked_watchpoint (struct bp_location *bl)
9817 {
9818 struct watchpoint *w = (struct watchpoint *) bl->owner;
9819
9820 return target_insert_mask_watchpoint (bl->address, w->hw_wp_mask,
9821 bl->watchpoint_type);
9822 }
9823
9824 /* Implement the "remove" breakpoint_ops method for
9825 masked hardware watchpoints. */
9826
9827 static int
9828 remove_masked_watchpoint (struct bp_location *bl)
9829 {
9830 struct watchpoint *w = (struct watchpoint *) bl->owner;
9831
9832 return target_remove_mask_watchpoint (bl->address, w->hw_wp_mask,
9833 bl->watchpoint_type);
9834 }
9835
9836 /* Implement the "resources_needed" breakpoint_ops method for
9837 masked hardware watchpoints. */
9838
9839 static int
9840 resources_needed_masked_watchpoint (const struct bp_location *bl)
9841 {
9842 struct watchpoint *w = (struct watchpoint *) bl->owner;
9843
9844 return target_masked_watch_num_registers (bl->address, w->hw_wp_mask);
9845 }
9846
9847 /* Implement the "works_in_software_mode" breakpoint_ops method for
9848 masked hardware watchpoints. */
9849
9850 static int
9851 works_in_software_mode_masked_watchpoint (const struct breakpoint *b)
9852 {
9853 return 0;
9854 }
9855
9856 /* Implement the "print_it" breakpoint_ops method for
9857 masked hardware watchpoints. */
9858
9859 static enum print_stop_action
9860 print_it_masked_watchpoint (bpstat bs)
9861 {
9862 struct breakpoint *b = bs->breakpoint_at;
9863 struct ui_out *uiout = current_uiout;
9864
9865 /* Masked watchpoints have only one location. */
9866 gdb_assert (b->loc && b->loc->next == NULL);
9867
9868 switch (b->type)
9869 {
9870 case bp_hardware_watchpoint:
9871 annotate_watchpoint (b->number);
9872 if (ui_out_is_mi_like_p (uiout))
9873 ui_out_field_string
9874 (uiout, "reason",
9875 async_reason_lookup (EXEC_ASYNC_WATCHPOINT_TRIGGER));
9876 break;
9877
9878 case bp_read_watchpoint:
9879 if (ui_out_is_mi_like_p (uiout))
9880 ui_out_field_string
9881 (uiout, "reason",
9882 async_reason_lookup (EXEC_ASYNC_READ_WATCHPOINT_TRIGGER));
9883 break;
9884
9885 case bp_access_watchpoint:
9886 if (ui_out_is_mi_like_p (uiout))
9887 ui_out_field_string
9888 (uiout, "reason",
9889 async_reason_lookup (EXEC_ASYNC_ACCESS_WATCHPOINT_TRIGGER));
9890 break;
9891 default:
9892 internal_error (__FILE__, __LINE__,
9893 _("Invalid hardware watchpoint type."));
9894 }
9895
9896 mention (b);
9897 ui_out_text (uiout, _("\n\
9898 Check the underlying instruction at PC for the memory\n\
9899 address and value which triggered this watchpoint.\n"));
9900 ui_out_text (uiout, "\n");
9901
9902 /* More than one watchpoint may have been triggered. */
9903 return PRINT_UNKNOWN;
9904 }
9905
9906 /* Implement the "print_one_detail" breakpoint_ops method for
9907 masked hardware watchpoints. */
9908
9909 static void
9910 print_one_detail_masked_watchpoint (const struct breakpoint *b,
9911 struct ui_out *uiout)
9912 {
9913 struct watchpoint *w = (struct watchpoint *) b;
9914
9915 /* Masked watchpoints have only one location. */
9916 gdb_assert (b->loc && b->loc->next == NULL);
9917
9918 ui_out_text (uiout, "\tmask ");
9919 ui_out_field_core_addr (uiout, "mask", b->loc->gdbarch, w->hw_wp_mask);
9920 ui_out_text (uiout, "\n");
9921 }
9922
9923 /* Implement the "print_mention" breakpoint_ops method for
9924 masked hardware watchpoints. */
9925
9926 static void
9927 print_mention_masked_watchpoint (struct breakpoint *b)
9928 {
9929 struct watchpoint *w = (struct watchpoint *) b;
9930 struct ui_out *uiout = current_uiout;
9931 struct cleanup *ui_out_chain;
9932
9933 switch (b->type)
9934 {
9935 case bp_hardware_watchpoint:
9936 ui_out_text (uiout, "Masked hardware watchpoint ");
9937 ui_out_chain = make_cleanup_ui_out_tuple_begin_end (uiout, "wpt");
9938 break;
9939 case bp_read_watchpoint:
9940 ui_out_text (uiout, "Masked hardware read watchpoint ");
9941 ui_out_chain = make_cleanup_ui_out_tuple_begin_end (uiout, "hw-rwpt");
9942 break;
9943 case bp_access_watchpoint:
9944 ui_out_text (uiout, "Masked hardware access (read/write) watchpoint ");
9945 ui_out_chain = make_cleanup_ui_out_tuple_begin_end (uiout, "hw-awpt");
9946 break;
9947 default:
9948 internal_error (__FILE__, __LINE__,
9949 _("Invalid hardware watchpoint type."));
9950 }
9951
9952 ui_out_field_int (uiout, "number", b->number);
9953 ui_out_text (uiout, ": ");
9954 ui_out_field_string (uiout, "exp", w->exp_string);
9955 do_cleanups (ui_out_chain);
9956 }
9957
9958 /* Implement the "print_recreate" breakpoint_ops method for
9959 masked hardware watchpoints. */
9960
9961 static void
9962 print_recreate_masked_watchpoint (struct breakpoint *b, struct ui_file *fp)
9963 {
9964 struct watchpoint *w = (struct watchpoint *) b;
9965 char tmp[40];
9966
9967 switch (b->type)
9968 {
9969 case bp_hardware_watchpoint:
9970 fprintf_unfiltered (fp, "watch");
9971 break;
9972 case bp_read_watchpoint:
9973 fprintf_unfiltered (fp, "rwatch");
9974 break;
9975 case bp_access_watchpoint:
9976 fprintf_unfiltered (fp, "awatch");
9977 break;
9978 default:
9979 internal_error (__FILE__, __LINE__,
9980 _("Invalid hardware watchpoint type."));
9981 }
9982
9983 sprintf_vma (tmp, w->hw_wp_mask);
9984 fprintf_unfiltered (fp, " %s mask 0x%s", w->exp_string, tmp);
9985 print_recreate_thread (b, fp);
9986 }
9987
9988 /* The breakpoint_ops structure to be used in masked hardware watchpoints. */
9989
9990 static struct breakpoint_ops masked_watchpoint_breakpoint_ops;
9991
9992 /* Tell whether the given watchpoint is a masked hardware watchpoint. */
9993
9994 static int
9995 is_masked_watchpoint (const struct breakpoint *b)
9996 {
9997 return b->ops == &masked_watchpoint_breakpoint_ops;
9998 }
9999
10000 /* accessflag: hw_write: watch write,
10001 hw_read: watch read,
10002 hw_access: watch access (read or write) */
10003 static void
10004 watch_command_1 (char *arg, int accessflag, int from_tty,
10005 int just_location, int internal)
10006 {
10007 volatile struct gdb_exception e;
10008 struct breakpoint *b, *scope_breakpoint = NULL;
10009 struct expression *exp;
10010 struct block *exp_valid_block = NULL, *cond_exp_valid_block = NULL;
10011 struct value *val, *mark, *result;
10012 struct frame_info *frame;
10013 char *exp_start = NULL;
10014 char *exp_end = NULL;
10015 char *tok, *end_tok;
10016 int toklen = -1;
10017 char *cond_start = NULL;
10018 char *cond_end = NULL;
10019 enum bptype bp_type;
10020 int thread = -1;
10021 int pc = 0;
10022 /* Flag to indicate whether we are going to use masks for
10023 the hardware watchpoint. */
10024 int use_mask = 0;
10025 CORE_ADDR mask = 0;
10026 struct watchpoint *w;
10027
10028 /* Make sure that we actually have parameters to parse. */
10029 if (arg != NULL && arg[0] != '\0')
10030 {
10031 char *value_start;
10032
10033 /* Look for "parameter value" pairs at the end
10034 of the arguments string. */
10035 for (tok = arg + strlen (arg) - 1; tok > arg; tok--)
10036 {
10037 /* Skip whitespace at the end of the argument list. */
10038 while (tok > arg && (*tok == ' ' || *tok == '\t'))
10039 tok--;
10040
10041 /* Find the beginning of the last token.
10042 This is the value of the parameter. */
10043 while (tok > arg && (*tok != ' ' && *tok != '\t'))
10044 tok--;
10045 value_start = tok + 1;
10046
10047 /* Skip whitespace. */
10048 while (tok > arg && (*tok == ' ' || *tok == '\t'))
10049 tok--;
10050
10051 end_tok = tok;
10052
10053 /* Find the beginning of the second to last token.
10054 This is the parameter itself. */
10055 while (tok > arg && (*tok != ' ' && *tok != '\t'))
10056 tok--;
10057 tok++;
10058 toklen = end_tok - tok + 1;
10059
10060 if (toklen == 6 && !strncmp (tok, "thread", 6))
10061 {
10062 /* At this point we've found a "thread" token, which means
10063 the user is trying to set a watchpoint that triggers
10064 only in a specific thread. */
10065 char *endp;
10066
10067 if (thread != -1)
10068 error(_("You can specify only one thread."));
10069
10070 /* Extract the thread ID from the next token. */
10071 thread = strtol (value_start, &endp, 0);
10072
10073 /* Check if the user provided a valid numeric value for the
10074 thread ID. */
10075 if (*endp != ' ' && *endp != '\t' && *endp != '\0')
10076 error (_("Invalid thread ID specification %s."), value_start);
10077
10078 /* Check if the thread actually exists. */
10079 if (!valid_thread_id (thread))
10080 error (_("Unknown thread %d."), thread);
10081 }
10082 else if (toklen == 4 && !strncmp (tok, "mask", 4))
10083 {
10084 /* We've found a "mask" token, which means the user wants to
10085 create a hardware watchpoint that is going to have the mask
10086 facility. */
10087 struct value *mask_value, *mark;
10088
10089 if (use_mask)
10090 error(_("You can specify only one mask."));
10091
10092 use_mask = just_location = 1;
10093
10094 mark = value_mark ();
10095 mask_value = parse_to_comma_and_eval (&value_start);
10096 mask = value_as_address (mask_value);
10097 value_free_to_mark (mark);
10098 }
10099 else
10100 /* We didn't recognize what we found. We should stop here. */
10101 break;
10102
10103 /* Truncate the string and get rid of the "parameter value" pair before
10104 the arguments string is parsed by the parse_exp_1 function. */
10105 *tok = '\0';
10106 }
10107 }
10108
10109 /* Parse the rest of the arguments. */
10110 innermost_block = NULL;
10111 exp_start = arg;
10112 exp = parse_exp_1 (&arg, 0, 0);
10113 exp_end = arg;
10114 /* Remove trailing whitespace from the expression before saving it.
10115 This makes the eventual display of the expression string a bit
10116 prettier. */
10117 while (exp_end > exp_start && (exp_end[-1] == ' ' || exp_end[-1] == '\t'))
10118 --exp_end;
10119
10120 /* Checking if the expression is not constant. */
10121 if (watchpoint_exp_is_const (exp))
10122 {
10123 int len;
10124
10125 len = exp_end - exp_start;
10126 while (len > 0 && isspace (exp_start[len - 1]))
10127 len--;
10128 error (_("Cannot watch constant value `%.*s'."), len, exp_start);
10129 }
10130
10131 exp_valid_block = innermost_block;
10132 mark = value_mark ();
10133 fetch_subexp_value (exp, &pc, &val, &result, NULL);
10134
10135 if (just_location)
10136 {
10137 int ret;
10138
10139 exp_valid_block = NULL;
10140 val = value_addr (result);
10141 release_value (val);
10142 value_free_to_mark (mark);
10143
10144 if (use_mask)
10145 {
10146 ret = target_masked_watch_num_registers (value_as_address (val),
10147 mask);
10148 if (ret == -1)
10149 error (_("This target does not support masked watchpoints."));
10150 else if (ret == -2)
10151 error (_("Invalid mask or memory region."));
10152 }
10153 }
10154 else if (val != NULL)
10155 release_value (val);
10156
10157 tok = skip_spaces (arg);
10158 end_tok = skip_to_space (tok);
10159
10160 toklen = end_tok - tok;
10161 if (toklen >= 1 && strncmp (tok, "if", toklen) == 0)
10162 {
10163 struct expression *cond;
10164
10165 innermost_block = NULL;
10166 tok = cond_start = end_tok + 1;
10167 cond = parse_exp_1 (&tok, 0, 0);
10168
10169 /* The watchpoint expression may not be local, but the condition
10170 may still be. E.g.: `watch global if local > 0'. */
10171 cond_exp_valid_block = innermost_block;
10172
10173 xfree (cond);
10174 cond_end = tok;
10175 }
10176 if (*tok)
10177 error (_("Junk at end of command."));
10178
10179 if (accessflag == hw_read)
10180 bp_type = bp_read_watchpoint;
10181 else if (accessflag == hw_access)
10182 bp_type = bp_access_watchpoint;
10183 else
10184 bp_type = bp_hardware_watchpoint;
10185
10186 frame = block_innermost_frame (exp_valid_block);
10187
10188 /* If the expression is "local", then set up a "watchpoint scope"
10189 breakpoint at the point where we've left the scope of the watchpoint
10190 expression. Create the scope breakpoint before the watchpoint, so
10191 that we will encounter it first in bpstat_stop_status. */
10192 if (exp_valid_block && frame)
10193 {
10194 if (frame_id_p (frame_unwind_caller_id (frame)))
10195 {
10196 scope_breakpoint
10197 = create_internal_breakpoint (frame_unwind_caller_arch (frame),
10198 frame_unwind_caller_pc (frame),
10199 bp_watchpoint_scope,
10200 &momentary_breakpoint_ops);
10201
10202 scope_breakpoint->enable_state = bp_enabled;
10203
10204 /* Automatically delete the breakpoint when it hits. */
10205 scope_breakpoint->disposition = disp_del;
10206
10207 /* Only break in the proper frame (help with recursion). */
10208 scope_breakpoint->frame_id = frame_unwind_caller_id (frame);
10209
10210 /* Set the address at which we will stop. */
10211 scope_breakpoint->loc->gdbarch
10212 = frame_unwind_caller_arch (frame);
10213 scope_breakpoint->loc->requested_address
10214 = frame_unwind_caller_pc (frame);
10215 scope_breakpoint->loc->address
10216 = adjust_breakpoint_address (scope_breakpoint->loc->gdbarch,
10217 scope_breakpoint->loc->requested_address,
10218 scope_breakpoint->type);
10219 }
10220 }
10221
10222 /* Now set up the breakpoint. */
10223
10224 w = XCNEW (struct watchpoint);
10225 b = &w->base;
10226 if (use_mask)
10227 init_raw_breakpoint_without_location (b, NULL, bp_type,
10228 &masked_watchpoint_breakpoint_ops);
10229 else
10230 init_raw_breakpoint_without_location (b, NULL, bp_type,
10231 &watchpoint_breakpoint_ops);
10232 b->thread = thread;
10233 b->disposition = disp_donttouch;
10234 b->pspace = current_program_space;
10235 w->exp = exp;
10236 w->exp_valid_block = exp_valid_block;
10237 w->cond_exp_valid_block = cond_exp_valid_block;
10238 if (just_location)
10239 {
10240 struct type *t = value_type (val);
10241 CORE_ADDR addr = value_as_address (val);
10242 char *name;
10243
10244 t = check_typedef (TYPE_TARGET_TYPE (check_typedef (t)));
10245 name = type_to_string (t);
10246
10247 w->exp_string_reparse = xstrprintf ("* (%s *) %s", name,
10248 core_addr_to_string (addr));
10249 xfree (name);
10250
10251 w->exp_string = xstrprintf ("-location %.*s",
10252 (int) (exp_end - exp_start), exp_start);
10253
10254 /* The above expression is in C. */
10255 b->language = language_c;
10256 }
10257 else
10258 w->exp_string = savestring (exp_start, exp_end - exp_start);
10259
10260 if (use_mask)
10261 {
10262 w->hw_wp_mask = mask;
10263 }
10264 else
10265 {
10266 w->val = val;
10267 w->val_valid = 1;
10268 }
10269
10270 if (cond_start)
10271 b->cond_string = savestring (cond_start, cond_end - cond_start);
10272 else
10273 b->cond_string = 0;
10274
10275 if (frame)
10276 {
10277 w->watchpoint_frame = get_frame_id (frame);
10278 w->watchpoint_thread = inferior_ptid;
10279 }
10280 else
10281 {
10282 w->watchpoint_frame = null_frame_id;
10283 w->watchpoint_thread = null_ptid;
10284 }
10285
10286 if (scope_breakpoint != NULL)
10287 {
10288 /* The scope breakpoint is related to the watchpoint. We will
10289 need to act on them together. */
10290 b->related_breakpoint = scope_breakpoint;
10291 scope_breakpoint->related_breakpoint = b;
10292 }
10293
10294 if (!just_location)
10295 value_free_to_mark (mark);
10296
10297 TRY_CATCH (e, RETURN_MASK_ALL)
10298 {
10299 /* Finally update the new watchpoint. This creates the locations
10300 that should be inserted. */
10301 update_watchpoint (w, 1);
10302 }
10303 if (e.reason < 0)
10304 {
10305 delete_breakpoint (b);
10306 throw_exception (e);
10307 }
10308
10309 install_breakpoint (internal, b, 1);
10310 }
10311
10312 /* Return count of debug registers needed to watch the given expression.
10313 If the watchpoint cannot be handled in hardware return zero. */
10314
10315 static int
10316 can_use_hardware_watchpoint (struct value *v)
10317 {
10318 int found_memory_cnt = 0;
10319 struct value *head = v;
10320
10321 /* Did the user specifically forbid us to use hardware watchpoints? */
10322 if (!can_use_hw_watchpoints)
10323 return 0;
10324
10325 /* Make sure that the value of the expression depends only upon
10326 memory contents, and values computed from them within GDB. If we
10327 find any register references or function calls, we can't use a
10328 hardware watchpoint.
10329
10330 The idea here is that evaluating an expression generates a series
10331 of values, one holding the value of every subexpression. (The
10332 expression a*b+c has five subexpressions: a, b, a*b, c, and
10333 a*b+c.) GDB's values hold almost enough information to establish
10334 the criteria given above --- they identify memory lvalues,
10335 register lvalues, computed values, etcetera. So we can evaluate
10336 the expression, and then scan the chain of values that leaves
10337 behind to decide whether we can detect any possible change to the
10338 expression's final value using only hardware watchpoints.
10339
10340 However, I don't think that the values returned by inferior
10341 function calls are special in any way. So this function may not
10342 notice that an expression involving an inferior function call
10343 can't be watched with hardware watchpoints. FIXME. */
10344 for (; v; v = value_next (v))
10345 {
10346 if (VALUE_LVAL (v) == lval_memory)
10347 {
10348 if (v != head && value_lazy (v))
10349 /* A lazy memory lvalue in the chain is one that GDB never
10350 needed to fetch; we either just used its address (e.g.,
10351 `a' in `a.b') or we never needed it at all (e.g., `a'
10352 in `a,b'). This doesn't apply to HEAD; if that is
10353 lazy then it was not readable, but watch it anyway. */
10354 ;
10355 else
10356 {
10357 /* Ahh, memory we actually used! Check if we can cover
10358 it with hardware watchpoints. */
10359 struct type *vtype = check_typedef (value_type (v));
10360
10361 /* We only watch structs and arrays if user asked for it
10362 explicitly, never if they just happen to appear in a
10363 middle of some value chain. */
10364 if (v == head
10365 || (TYPE_CODE (vtype) != TYPE_CODE_STRUCT
10366 && TYPE_CODE (vtype) != TYPE_CODE_ARRAY))
10367 {
10368 CORE_ADDR vaddr = value_address (v);
10369 int len;
10370 int num_regs;
10371
10372 len = (target_exact_watchpoints
10373 && is_scalar_type_recursive (vtype))?
10374 1 : TYPE_LENGTH (value_type (v));
10375
10376 num_regs = target_region_ok_for_hw_watchpoint (vaddr, len);
10377 if (!num_regs)
10378 return 0;
10379 else
10380 found_memory_cnt += num_regs;
10381 }
10382 }
10383 }
10384 else if (VALUE_LVAL (v) != not_lval
10385 && deprecated_value_modifiable (v) == 0)
10386 return 0; /* These are values from the history (e.g., $1). */
10387 else if (VALUE_LVAL (v) == lval_register)
10388 return 0; /* Cannot watch a register with a HW watchpoint. */
10389 }
10390
10391 /* The expression itself looks suitable for using a hardware
10392 watchpoint, but give the target machine a chance to reject it. */
10393 return found_memory_cnt;
10394 }
10395
10396 void
10397 watch_command_wrapper (char *arg, int from_tty, int internal)
10398 {
10399 watch_command_1 (arg, hw_write, from_tty, 0, internal);
10400 }
10401
10402 /* A helper function that looks for an argument at the start of a
10403 string. The argument must also either be at the end of the string,
10404 or be followed by whitespace. Returns 1 if it finds the argument,
10405 0 otherwise. If the argument is found, it updates *STR. */
10406
10407 static int
10408 check_for_argument (char **str, char *arg, int arg_len)
10409 {
10410 if (strncmp (*str, arg, arg_len) == 0
10411 && ((*str)[arg_len] == '\0' || isspace ((*str)[arg_len])))
10412 {
10413 *str += arg_len;
10414 return 1;
10415 }
10416 return 0;
10417 }
10418
10419 /* A helper function that looks for the "-location" argument and then
10420 calls watch_command_1. */
10421
10422 static void
10423 watch_maybe_just_location (char *arg, int accessflag, int from_tty)
10424 {
10425 int just_location = 0;
10426
10427 if (arg
10428 && (check_for_argument (&arg, "-location", sizeof ("-location") - 1)
10429 || check_for_argument (&arg, "-l", sizeof ("-l") - 1)))
10430 {
10431 arg = skip_spaces (arg);
10432 just_location = 1;
10433 }
10434
10435 watch_command_1 (arg, accessflag, from_tty, just_location, 0);
10436 }
10437
10438 static void
10439 watch_command (char *arg, int from_tty)
10440 {
10441 watch_maybe_just_location (arg, hw_write, from_tty);
10442 }
10443
10444 void
10445 rwatch_command_wrapper (char *arg, int from_tty, int internal)
10446 {
10447 watch_command_1 (arg, hw_read, from_tty, 0, internal);
10448 }
10449
10450 static void
10451 rwatch_command (char *arg, int from_tty)
10452 {
10453 watch_maybe_just_location (arg, hw_read, from_tty);
10454 }
10455
10456 void
10457 awatch_command_wrapper (char *arg, int from_tty, int internal)
10458 {
10459 watch_command_1 (arg, hw_access, from_tty, 0, internal);
10460 }
10461
10462 static void
10463 awatch_command (char *arg, int from_tty)
10464 {
10465 watch_maybe_just_location (arg, hw_access, from_tty);
10466 }
10467 \f
10468
10469 /* Helper routines for the until_command routine in infcmd.c. Here
10470 because it uses the mechanisms of breakpoints. */
10471
10472 struct until_break_command_continuation_args
10473 {
10474 struct breakpoint *breakpoint;
10475 struct breakpoint *breakpoint2;
10476 int thread_num;
10477 };
10478
10479 /* This function is called by fetch_inferior_event via the
10480 cmd_continuation pointer, to complete the until command. It takes
10481 care of cleaning up the temporary breakpoints set up by the until
10482 command. */
10483 static void
10484 until_break_command_continuation (void *arg, int err)
10485 {
10486 struct until_break_command_continuation_args *a = arg;
10487
10488 delete_breakpoint (a->breakpoint);
10489 if (a->breakpoint2)
10490 delete_breakpoint (a->breakpoint2);
10491 delete_longjmp_breakpoint (a->thread_num);
10492 }
10493
10494 void
10495 until_break_command (char *arg, int from_tty, int anywhere)
10496 {
10497 struct symtabs_and_lines sals;
10498 struct symtab_and_line sal;
10499 struct frame_info *frame = get_selected_frame (NULL);
10500 struct gdbarch *frame_gdbarch = get_frame_arch (frame);
10501 struct frame_id stack_frame_id = get_stack_frame_id (frame);
10502 struct frame_id caller_frame_id = frame_unwind_caller_id (frame);
10503 struct breakpoint *breakpoint;
10504 struct breakpoint *breakpoint2 = NULL;
10505 struct cleanup *old_chain;
10506 int thread;
10507 struct thread_info *tp;
10508
10509 clear_proceed_status ();
10510
10511 /* Set a breakpoint where the user wants it and at return from
10512 this function. */
10513
10514 if (last_displayed_sal_is_valid ())
10515 sals = decode_line_1 (&arg, DECODE_LINE_FUNFIRSTLINE,
10516 get_last_displayed_symtab (),
10517 get_last_displayed_line ());
10518 else
10519 sals = decode_line_1 (&arg, DECODE_LINE_FUNFIRSTLINE,
10520 (struct symtab *) NULL, 0);
10521
10522 if (sals.nelts != 1)
10523 error (_("Couldn't get information on specified line."));
10524
10525 sal = sals.sals[0];
10526 xfree (sals.sals); /* malloc'd, so freed. */
10527
10528 if (*arg)
10529 error (_("Junk at end of arguments."));
10530
10531 resolve_sal_pc (&sal);
10532
10533 tp = inferior_thread ();
10534 thread = tp->num;
10535
10536 old_chain = make_cleanup (null_cleanup, NULL);
10537
10538 /* Installing a breakpoint invalidates the frame chain (as it may
10539 need to switch threads), so do any frame handling first. */
10540
10541 /* Keep within the current frame, or in frames called by the current
10542 one. */
10543
10544 if (frame_id_p (caller_frame_id))
10545 {
10546 struct symtab_and_line sal2;
10547
10548 sal2 = find_pc_line (frame_unwind_caller_pc (frame), 0);
10549 sal2.pc = frame_unwind_caller_pc (frame);
10550 breakpoint2 = set_momentary_breakpoint (frame_unwind_caller_arch (frame),
10551 sal2,
10552 caller_frame_id,
10553 bp_until);
10554 make_cleanup_delete_breakpoint (breakpoint2);
10555
10556 set_longjmp_breakpoint (tp, caller_frame_id);
10557 make_cleanup (delete_longjmp_breakpoint_cleanup, &thread);
10558 }
10559
10560 /* set_momentary_breakpoint could invalidate FRAME. */
10561 frame = NULL;
10562
10563 if (anywhere)
10564 /* If the user told us to continue until a specified location,
10565 we don't specify a frame at which we need to stop. */
10566 breakpoint = set_momentary_breakpoint (frame_gdbarch, sal,
10567 null_frame_id, bp_until);
10568 else
10569 /* Otherwise, specify the selected frame, because we want to stop
10570 only at the very same frame. */
10571 breakpoint = set_momentary_breakpoint (frame_gdbarch, sal,
10572 stack_frame_id, bp_until);
10573 make_cleanup_delete_breakpoint (breakpoint);
10574
10575 proceed (-1, TARGET_SIGNAL_DEFAULT, 0);
10576
10577 /* If we are running asynchronously, and proceed call above has
10578 actually managed to start the target, arrange for breakpoints to
10579 be deleted when the target stops. Otherwise, we're already
10580 stopped and delete breakpoints via cleanup chain. */
10581
10582 if (target_can_async_p () && is_running (inferior_ptid))
10583 {
10584 struct until_break_command_continuation_args *args;
10585 args = xmalloc (sizeof (*args));
10586
10587 args->breakpoint = breakpoint;
10588 args->breakpoint2 = breakpoint2;
10589 args->thread_num = thread;
10590
10591 discard_cleanups (old_chain);
10592 add_continuation (inferior_thread (),
10593 until_break_command_continuation, args,
10594 xfree);
10595 }
10596 else
10597 do_cleanups (old_chain);
10598 }
10599
10600 /* This function attempts to parse an optional "if <cond>" clause
10601 from the arg string. If one is not found, it returns NULL.
10602
10603 Else, it returns a pointer to the condition string. (It does not
10604 attempt to evaluate the string against a particular block.) And,
10605 it updates arg to point to the first character following the parsed
10606 if clause in the arg string. */
10607
10608 static char *
10609 ep_parse_optional_if_clause (char **arg)
10610 {
10611 char *cond_string;
10612
10613 if (((*arg)[0] != 'i') || ((*arg)[1] != 'f') || !isspace ((*arg)[2]))
10614 return NULL;
10615
10616 /* Skip the "if" keyword. */
10617 (*arg) += 2;
10618
10619 /* Skip any extra leading whitespace, and record the start of the
10620 condition string. */
10621 *arg = skip_spaces (*arg);
10622 cond_string = *arg;
10623
10624 /* Assume that the condition occupies the remainder of the arg
10625 string. */
10626 (*arg) += strlen (cond_string);
10627
10628 return cond_string;
10629 }
10630
10631 /* Commands to deal with catching events, such as signals, exceptions,
10632 process start/exit, etc. */
10633
10634 typedef enum
10635 {
10636 catch_fork_temporary, catch_vfork_temporary,
10637 catch_fork_permanent, catch_vfork_permanent
10638 }
10639 catch_fork_kind;
10640
10641 static void
10642 catch_fork_command_1 (char *arg, int from_tty,
10643 struct cmd_list_element *command)
10644 {
10645 struct gdbarch *gdbarch = get_current_arch ();
10646 char *cond_string = NULL;
10647 catch_fork_kind fork_kind;
10648 int tempflag;
10649
10650 fork_kind = (catch_fork_kind) (uintptr_t) get_cmd_context (command);
10651 tempflag = (fork_kind == catch_fork_temporary
10652 || fork_kind == catch_vfork_temporary);
10653
10654 if (!arg)
10655 arg = "";
10656 arg = skip_spaces (arg);
10657
10658 /* The allowed syntax is:
10659 catch [v]fork
10660 catch [v]fork if <cond>
10661
10662 First, check if there's an if clause. */
10663 cond_string = ep_parse_optional_if_clause (&arg);
10664
10665 if ((*arg != '\0') && !isspace (*arg))
10666 error (_("Junk at end of arguments."));
10667
10668 /* If this target supports it, create a fork or vfork catchpoint
10669 and enable reporting of such events. */
10670 switch (fork_kind)
10671 {
10672 case catch_fork_temporary:
10673 case catch_fork_permanent:
10674 create_fork_vfork_event_catchpoint (gdbarch, tempflag, cond_string,
10675 &catch_fork_breakpoint_ops);
10676 break;
10677 case catch_vfork_temporary:
10678 case catch_vfork_permanent:
10679 create_fork_vfork_event_catchpoint (gdbarch, tempflag, cond_string,
10680 &catch_vfork_breakpoint_ops);
10681 break;
10682 default:
10683 error (_("unsupported or unknown fork kind; cannot catch it"));
10684 break;
10685 }
10686 }
10687
10688 static void
10689 catch_exec_command_1 (char *arg, int from_tty,
10690 struct cmd_list_element *command)
10691 {
10692 struct exec_catchpoint *c;
10693 struct gdbarch *gdbarch = get_current_arch ();
10694 int tempflag;
10695 char *cond_string = NULL;
10696
10697 tempflag = get_cmd_context (command) == CATCH_TEMPORARY;
10698
10699 if (!arg)
10700 arg = "";
10701 arg = skip_spaces (arg);
10702
10703 /* The allowed syntax is:
10704 catch exec
10705 catch exec if <cond>
10706
10707 First, check if there's an if clause. */
10708 cond_string = ep_parse_optional_if_clause (&arg);
10709
10710 if ((*arg != '\0') && !isspace (*arg))
10711 error (_("Junk at end of arguments."));
10712
10713 c = XNEW (struct exec_catchpoint);
10714 init_catchpoint (&c->base, gdbarch, tempflag, cond_string,
10715 &catch_exec_breakpoint_ops);
10716 c->exec_pathname = NULL;
10717
10718 install_breakpoint (0, &c->base, 1);
10719 }
10720
10721 static enum print_stop_action
10722 print_it_exception_catchpoint (bpstat bs)
10723 {
10724 struct ui_out *uiout = current_uiout;
10725 struct breakpoint *b = bs->breakpoint_at;
10726 int bp_temp, bp_throw;
10727
10728 annotate_catchpoint (b->number);
10729
10730 bp_throw = strstr (b->addr_string, "throw") != NULL;
10731 if (b->loc->address != b->loc->requested_address)
10732 breakpoint_adjustment_warning (b->loc->requested_address,
10733 b->loc->address,
10734 b->number, 1);
10735 bp_temp = b->disposition == disp_del;
10736 ui_out_text (uiout,
10737 bp_temp ? "Temporary catchpoint "
10738 : "Catchpoint ");
10739 if (!ui_out_is_mi_like_p (uiout))
10740 ui_out_field_int (uiout, "bkptno", b->number);
10741 ui_out_text (uiout,
10742 bp_throw ? " (exception thrown), "
10743 : " (exception caught), ");
10744 if (ui_out_is_mi_like_p (uiout))
10745 {
10746 ui_out_field_string (uiout, "reason",
10747 async_reason_lookup (EXEC_ASYNC_BREAKPOINT_HIT));
10748 ui_out_field_string (uiout, "disp", bpdisp_text (b->disposition));
10749 ui_out_field_int (uiout, "bkptno", b->number);
10750 }
10751 return PRINT_SRC_AND_LOC;
10752 }
10753
10754 static void
10755 print_one_exception_catchpoint (struct breakpoint *b,
10756 struct bp_location **last_loc)
10757 {
10758 struct value_print_options opts;
10759 struct ui_out *uiout = current_uiout;
10760
10761 get_user_print_options (&opts);
10762 if (opts.addressprint)
10763 {
10764 annotate_field (4);
10765 if (b->loc == NULL || b->loc->shlib_disabled)
10766 ui_out_field_string (uiout, "addr", "<PENDING>");
10767 else
10768 ui_out_field_core_addr (uiout, "addr",
10769 b->loc->gdbarch, b->loc->address);
10770 }
10771 annotate_field (5);
10772 if (b->loc)
10773 *last_loc = b->loc;
10774 if (strstr (b->addr_string, "throw") != NULL)
10775 ui_out_field_string (uiout, "what", "exception throw");
10776 else
10777 ui_out_field_string (uiout, "what", "exception catch");
10778 }
10779
10780 static void
10781 print_mention_exception_catchpoint (struct breakpoint *b)
10782 {
10783 struct ui_out *uiout = current_uiout;
10784 int bp_temp;
10785 int bp_throw;
10786
10787 bp_temp = b->disposition == disp_del;
10788 bp_throw = strstr (b->addr_string, "throw") != NULL;
10789 ui_out_text (uiout, bp_temp ? _("Temporary catchpoint ")
10790 : _("Catchpoint "));
10791 ui_out_field_int (uiout, "bkptno", b->number);
10792 ui_out_text (uiout, bp_throw ? _(" (throw)")
10793 : _(" (catch)"));
10794 }
10795
10796 /* Implement the "print_recreate" breakpoint_ops method for throw and
10797 catch catchpoints. */
10798
10799 static void
10800 print_recreate_exception_catchpoint (struct breakpoint *b,
10801 struct ui_file *fp)
10802 {
10803 int bp_temp;
10804 int bp_throw;
10805
10806 bp_temp = b->disposition == disp_del;
10807 bp_throw = strstr (b->addr_string, "throw") != NULL;
10808 fprintf_unfiltered (fp, bp_temp ? "tcatch " : "catch ");
10809 fprintf_unfiltered (fp, bp_throw ? "throw" : "catch");
10810 print_recreate_thread (b, fp);
10811 }
10812
10813 static struct breakpoint_ops gnu_v3_exception_catchpoint_ops;
10814
10815 static int
10816 handle_gnu_v3_exceptions (int tempflag, char *cond_string,
10817 enum exception_event_kind ex_event, int from_tty)
10818 {
10819 char *trigger_func_name;
10820
10821 if (ex_event == EX_EVENT_CATCH)
10822 trigger_func_name = "__cxa_begin_catch";
10823 else
10824 trigger_func_name = "__cxa_throw";
10825
10826 create_breakpoint (get_current_arch (),
10827 trigger_func_name, cond_string, -1,
10828 0 /* condition and thread are valid. */,
10829 tempflag, bp_breakpoint,
10830 0,
10831 AUTO_BOOLEAN_TRUE /* pending */,
10832 &gnu_v3_exception_catchpoint_ops, from_tty,
10833 1 /* enabled */,
10834 0 /* internal */,
10835 0);
10836
10837 return 1;
10838 }
10839
10840 /* Deal with "catch catch" and "catch throw" commands. */
10841
10842 static void
10843 catch_exception_command_1 (enum exception_event_kind ex_event, char *arg,
10844 int tempflag, int from_tty)
10845 {
10846 char *cond_string = NULL;
10847
10848 if (!arg)
10849 arg = "";
10850 arg = skip_spaces (arg);
10851
10852 cond_string = ep_parse_optional_if_clause (&arg);
10853
10854 if ((*arg != '\0') && !isspace (*arg))
10855 error (_("Junk at end of arguments."));
10856
10857 if (ex_event != EX_EVENT_THROW
10858 && ex_event != EX_EVENT_CATCH)
10859 error (_("Unsupported or unknown exception event; cannot catch it"));
10860
10861 if (handle_gnu_v3_exceptions (tempflag, cond_string, ex_event, from_tty))
10862 return;
10863
10864 warning (_("Unsupported with this platform/compiler combination."));
10865 }
10866
10867 /* Implementation of "catch catch" command. */
10868
10869 static void
10870 catch_catch_command (char *arg, int from_tty, struct cmd_list_element *command)
10871 {
10872 int tempflag = get_cmd_context (command) == CATCH_TEMPORARY;
10873
10874 catch_exception_command_1 (EX_EVENT_CATCH, arg, tempflag, from_tty);
10875 }
10876
10877 /* Implementation of "catch throw" command. */
10878
10879 static void
10880 catch_throw_command (char *arg, int from_tty, struct cmd_list_element *command)
10881 {
10882 int tempflag = get_cmd_context (command) == CATCH_TEMPORARY;
10883
10884 catch_exception_command_1 (EX_EVENT_THROW, arg, tempflag, from_tty);
10885 }
10886
10887 void
10888 init_ada_exception_breakpoint (struct breakpoint *b,
10889 struct gdbarch *gdbarch,
10890 struct symtab_and_line sal,
10891 char *addr_string,
10892 const struct breakpoint_ops *ops,
10893 int tempflag,
10894 int from_tty)
10895 {
10896 if (from_tty)
10897 {
10898 struct gdbarch *loc_gdbarch = get_sal_arch (sal);
10899 if (!loc_gdbarch)
10900 loc_gdbarch = gdbarch;
10901
10902 describe_other_breakpoints (loc_gdbarch,
10903 sal.pspace, sal.pc, sal.section, -1);
10904 /* FIXME: brobecker/2006-12-28: Actually, re-implement a special
10905 version for exception catchpoints, because two catchpoints
10906 used for different exception names will use the same address.
10907 In this case, a "breakpoint ... also set at..." warning is
10908 unproductive. Besides, the warning phrasing is also a bit
10909 inappropriate, we should use the word catchpoint, and tell
10910 the user what type of catchpoint it is. The above is good
10911 enough for now, though. */
10912 }
10913
10914 init_raw_breakpoint (b, gdbarch, sal, bp_breakpoint, ops);
10915
10916 b->enable_state = bp_enabled;
10917 b->disposition = tempflag ? disp_del : disp_donttouch;
10918 b->addr_string = addr_string;
10919 b->language = language_ada;
10920 }
10921
10922 /* Splits the argument using space as delimiter. Returns an xmalloc'd
10923 filter list, or NULL if no filtering is required. */
10924 static VEC(int) *
10925 catch_syscall_split_args (char *arg)
10926 {
10927 VEC(int) *result = NULL;
10928 struct cleanup *cleanup = make_cleanup (VEC_cleanup (int), &result);
10929
10930 while (*arg != '\0')
10931 {
10932 int i, syscall_number;
10933 char *endptr;
10934 char cur_name[128];
10935 struct syscall s;
10936
10937 /* Skip whitespace. */
10938 while (isspace (*arg))
10939 arg++;
10940
10941 for (i = 0; i < 127 && arg[i] && !isspace (arg[i]); ++i)
10942 cur_name[i] = arg[i];
10943 cur_name[i] = '\0';
10944 arg += i;
10945
10946 /* Check if the user provided a syscall name or a number. */
10947 syscall_number = (int) strtol (cur_name, &endptr, 0);
10948 if (*endptr == '\0')
10949 get_syscall_by_number (syscall_number, &s);
10950 else
10951 {
10952 /* We have a name. Let's check if it's valid and convert it
10953 to a number. */
10954 get_syscall_by_name (cur_name, &s);
10955
10956 if (s.number == UNKNOWN_SYSCALL)
10957 /* Here we have to issue an error instead of a warning,
10958 because GDB cannot do anything useful if there's no
10959 syscall number to be caught. */
10960 error (_("Unknown syscall name '%s'."), cur_name);
10961 }
10962
10963 /* Ok, it's valid. */
10964 VEC_safe_push (int, result, s.number);
10965 }
10966
10967 discard_cleanups (cleanup);
10968 return result;
10969 }
10970
10971 /* Implement the "catch syscall" command. */
10972
10973 static void
10974 catch_syscall_command_1 (char *arg, int from_tty,
10975 struct cmd_list_element *command)
10976 {
10977 int tempflag;
10978 VEC(int) *filter;
10979 struct syscall s;
10980 struct gdbarch *gdbarch = get_current_arch ();
10981
10982 /* Checking if the feature if supported. */
10983 if (gdbarch_get_syscall_number_p (gdbarch) == 0)
10984 error (_("The feature 'catch syscall' is not supported on \
10985 this architecture yet."));
10986
10987 tempflag = get_cmd_context (command) == CATCH_TEMPORARY;
10988
10989 arg = skip_spaces (arg);
10990
10991 /* We need to do this first "dummy" translation in order
10992 to get the syscall XML file loaded or, most important,
10993 to display a warning to the user if there's no XML file
10994 for his/her architecture. */
10995 get_syscall_by_number (0, &s);
10996
10997 /* The allowed syntax is:
10998 catch syscall
10999 catch syscall <name | number> [<name | number> ... <name | number>]
11000
11001 Let's check if there's a syscall name. */
11002
11003 if (arg != NULL)
11004 filter = catch_syscall_split_args (arg);
11005 else
11006 filter = NULL;
11007
11008 create_syscall_event_catchpoint (tempflag, filter,
11009 &catch_syscall_breakpoint_ops);
11010 }
11011
11012 static void
11013 catch_command (char *arg, int from_tty)
11014 {
11015 error (_("Catch requires an event name."));
11016 }
11017 \f
11018
11019 static void
11020 tcatch_command (char *arg, int from_tty)
11021 {
11022 error (_("Catch requires an event name."));
11023 }
11024
11025 /* A qsort comparison function that sorts breakpoints in order. */
11026
11027 static int
11028 compare_breakpoints (const void *a, const void *b)
11029 {
11030 const breakpoint_p *ba = a;
11031 uintptr_t ua = (uintptr_t) *ba;
11032 const breakpoint_p *bb = b;
11033 uintptr_t ub = (uintptr_t) *bb;
11034
11035 if ((*ba)->number < (*bb)->number)
11036 return -1;
11037 else if ((*ba)->number > (*bb)->number)
11038 return 1;
11039
11040 /* Now sort by address, in case we see, e..g, two breakpoints with
11041 the number 0. */
11042 if (ua < ub)
11043 return -1;
11044 return ub > ub ? 1 : 0;
11045 }
11046
11047 /* Delete breakpoints by address or line. */
11048
11049 static void
11050 clear_command (char *arg, int from_tty)
11051 {
11052 struct breakpoint *b, *prev;
11053 VEC(breakpoint_p) *found = 0;
11054 int ix;
11055 int default_match;
11056 struct symtabs_and_lines sals;
11057 struct symtab_and_line sal;
11058 int i;
11059 struct cleanup *cleanups = make_cleanup (null_cleanup, NULL);
11060
11061 if (arg)
11062 {
11063 sals = decode_line_spec (arg, (DECODE_LINE_FUNFIRSTLINE
11064 | DECODE_LINE_LIST_MODE));
11065 default_match = 0;
11066 }
11067 else
11068 {
11069 sals.sals = (struct symtab_and_line *)
11070 xmalloc (sizeof (struct symtab_and_line));
11071 make_cleanup (xfree, sals.sals);
11072 init_sal (&sal); /* Initialize to zeroes. */
11073
11074 /* Set sal's line, symtab, pc, and pspace to the values
11075 corresponding to the last call to print_frame_info. If the
11076 codepoint is not valid, this will set all the fields to 0. */
11077 get_last_displayed_sal (&sal);
11078 if (sal.symtab == 0)
11079 error (_("No source file specified."));
11080
11081 sals.sals[0] = sal;
11082 sals.nelts = 1;
11083
11084 default_match = 1;
11085 }
11086
11087 /* We don't call resolve_sal_pc here. That's not as bad as it
11088 seems, because all existing breakpoints typically have both
11089 file/line and pc set. So, if clear is given file/line, we can
11090 match this to existing breakpoint without obtaining pc at all.
11091
11092 We only support clearing given the address explicitly
11093 present in breakpoint table. Say, we've set breakpoint
11094 at file:line. There were several PC values for that file:line,
11095 due to optimization, all in one block.
11096
11097 We've picked one PC value. If "clear" is issued with another
11098 PC corresponding to the same file:line, the breakpoint won't
11099 be cleared. We probably can still clear the breakpoint, but
11100 since the other PC value is never presented to user, user
11101 can only find it by guessing, and it does not seem important
11102 to support that. */
11103
11104 /* For each line spec given, delete bps which correspond to it. Do
11105 it in two passes, solely to preserve the current behavior that
11106 from_tty is forced true if we delete more than one
11107 breakpoint. */
11108
11109 found = NULL;
11110 make_cleanup (VEC_cleanup (breakpoint_p), &found);
11111 for (i = 0; i < sals.nelts; i++)
11112 {
11113 int is_abs, sal_name_len;
11114
11115 /* If exact pc given, clear bpts at that pc.
11116 If line given (pc == 0), clear all bpts on specified line.
11117 If defaulting, clear all bpts on default line
11118 or at default pc.
11119
11120 defaulting sal.pc != 0 tests to do
11121
11122 0 1 pc
11123 1 1 pc _and_ line
11124 0 0 line
11125 1 0 <can't happen> */
11126
11127 sal = sals.sals[i];
11128 is_abs = sal.symtab == NULL ? 1 : IS_ABSOLUTE_PATH (sal.symtab->filename);
11129 sal_name_len = is_abs ? 0 : strlen (sal.symtab->filename);
11130
11131 /* Find all matching breakpoints and add them to 'found'. */
11132 ALL_BREAKPOINTS (b)
11133 {
11134 int match = 0;
11135 /* Are we going to delete b? */
11136 if (b->type != bp_none && !is_watchpoint (b))
11137 {
11138 struct bp_location *loc = b->loc;
11139 for (; loc; loc = loc->next)
11140 {
11141 /* If the user specified file:line, don't allow a PC
11142 match. This matches historical gdb behavior. */
11143 int pc_match = (!sal.explicit_line
11144 && sal.pc
11145 && (loc->pspace == sal.pspace)
11146 && (loc->address == sal.pc)
11147 && (!section_is_overlay (loc->section)
11148 || loc->section == sal.section));
11149 int line_match = 0;
11150
11151 if ((default_match || sal.explicit_line)
11152 && loc->source_file != NULL
11153 && sal.symtab != NULL
11154 && sal.pspace == loc->pspace
11155 && loc->line_number == sal.line)
11156 {
11157 if (filename_cmp (loc->source_file,
11158 sal.symtab->filename) == 0)
11159 line_match = 1;
11160 else if (!IS_ABSOLUTE_PATH (sal.symtab->filename)
11161 && compare_filenames_for_search (loc->source_file,
11162 sal.symtab->filename,
11163 sal_name_len))
11164 line_match = 1;
11165 }
11166
11167 if (pc_match || line_match)
11168 {
11169 match = 1;
11170 break;
11171 }
11172 }
11173 }
11174
11175 if (match)
11176 VEC_safe_push(breakpoint_p, found, b);
11177 }
11178 }
11179
11180 /* Now go thru the 'found' chain and delete them. */
11181 if (VEC_empty(breakpoint_p, found))
11182 {
11183 if (arg)
11184 error (_("No breakpoint at %s."), arg);
11185 else
11186 error (_("No breakpoint at this line."));
11187 }
11188
11189 /* Remove duplicates from the vec. */
11190 qsort (VEC_address (breakpoint_p, found),
11191 VEC_length (breakpoint_p, found),
11192 sizeof (breakpoint_p),
11193 compare_breakpoints);
11194 prev = VEC_index (breakpoint_p, found, 0);
11195 for (ix = 1; VEC_iterate (breakpoint_p, found, ix, b); ++ix)
11196 {
11197 if (b == prev)
11198 {
11199 VEC_ordered_remove (breakpoint_p, found, ix);
11200 --ix;
11201 }
11202 }
11203
11204 if (VEC_length(breakpoint_p, found) > 1)
11205 from_tty = 1; /* Always report if deleted more than one. */
11206 if (from_tty)
11207 {
11208 if (VEC_length(breakpoint_p, found) == 1)
11209 printf_unfiltered (_("Deleted breakpoint "));
11210 else
11211 printf_unfiltered (_("Deleted breakpoints "));
11212 }
11213 breakpoints_changed ();
11214
11215 for (ix = 0; VEC_iterate(breakpoint_p, found, ix, b); ix++)
11216 {
11217 if (from_tty)
11218 printf_unfiltered ("%d ", b->number);
11219 delete_breakpoint (b);
11220 }
11221 if (from_tty)
11222 putchar_unfiltered ('\n');
11223
11224 do_cleanups (cleanups);
11225 }
11226 \f
11227 /* Delete breakpoint in BS if they are `delete' breakpoints and
11228 all breakpoints that are marked for deletion, whether hit or not.
11229 This is called after any breakpoint is hit, or after errors. */
11230
11231 void
11232 breakpoint_auto_delete (bpstat bs)
11233 {
11234 struct breakpoint *b, *b_tmp;
11235
11236 for (; bs; bs = bs->next)
11237 if (bs->breakpoint_at
11238 && bs->breakpoint_at->disposition == disp_del
11239 && bs->stop)
11240 delete_breakpoint (bs->breakpoint_at);
11241
11242 ALL_BREAKPOINTS_SAFE (b, b_tmp)
11243 {
11244 if (b->disposition == disp_del_at_next_stop)
11245 delete_breakpoint (b);
11246 }
11247 }
11248
11249 /* A comparison function for bp_location AP and BP being interfaced to
11250 qsort. Sort elements primarily by their ADDRESS (no matter what
11251 does breakpoint_address_is_meaningful say for its OWNER),
11252 secondarily by ordering first bp_permanent OWNERed elements and
11253 terciarily just ensuring the array is sorted stable way despite
11254 qsort being an unstable algorithm. */
11255
11256 static int
11257 bp_location_compare (const void *ap, const void *bp)
11258 {
11259 struct bp_location *a = *(void **) ap;
11260 struct bp_location *b = *(void **) bp;
11261 /* A and B come from existing breakpoints having non-NULL OWNER. */
11262 int a_perm = a->owner->enable_state == bp_permanent;
11263 int b_perm = b->owner->enable_state == bp_permanent;
11264
11265 if (a->address != b->address)
11266 return (a->address > b->address) - (a->address < b->address);
11267
11268 /* Sort locations at the same address by their pspace number, keeping
11269 locations of the same inferior (in a multi-inferior environment)
11270 grouped. */
11271
11272 if (a->pspace->num != b->pspace->num)
11273 return ((a->pspace->num > b->pspace->num)
11274 - (a->pspace->num < b->pspace->num));
11275
11276 /* Sort permanent breakpoints first. */
11277 if (a_perm != b_perm)
11278 return (a_perm < b_perm) - (a_perm > b_perm);
11279
11280 /* Make the internal GDB representation stable across GDB runs
11281 where A and B memory inside GDB can differ. Breakpoint locations of
11282 the same type at the same address can be sorted in arbitrary order. */
11283
11284 if (a->owner->number != b->owner->number)
11285 return ((a->owner->number > b->owner->number)
11286 - (a->owner->number < b->owner->number));
11287
11288 return (a > b) - (a < b);
11289 }
11290
11291 /* Set bp_location_placed_address_before_address_max and
11292 bp_location_shadow_len_after_address_max according to the current
11293 content of the bp_location array. */
11294
11295 static void
11296 bp_location_target_extensions_update (void)
11297 {
11298 struct bp_location *bl, **blp_tmp;
11299
11300 bp_location_placed_address_before_address_max = 0;
11301 bp_location_shadow_len_after_address_max = 0;
11302
11303 ALL_BP_LOCATIONS (bl, blp_tmp)
11304 {
11305 CORE_ADDR start, end, addr;
11306
11307 if (!bp_location_has_shadow (bl))
11308 continue;
11309
11310 start = bl->target_info.placed_address;
11311 end = start + bl->target_info.shadow_len;
11312
11313 gdb_assert (bl->address >= start);
11314 addr = bl->address - start;
11315 if (addr > bp_location_placed_address_before_address_max)
11316 bp_location_placed_address_before_address_max = addr;
11317
11318 /* Zero SHADOW_LEN would not pass bp_location_has_shadow. */
11319
11320 gdb_assert (bl->address < end);
11321 addr = end - bl->address;
11322 if (addr > bp_location_shadow_len_after_address_max)
11323 bp_location_shadow_len_after_address_max = addr;
11324 }
11325 }
11326
11327 /* Download tracepoint locations if they haven't been. */
11328
11329 static void
11330 download_tracepoint_locations (void)
11331 {
11332 struct bp_location *bl, **blp_tmp;
11333 struct cleanup *old_chain;
11334
11335 if (!target_can_download_tracepoint ())
11336 return;
11337
11338 old_chain = save_current_space_and_thread ();
11339
11340 ALL_BP_LOCATIONS (bl, blp_tmp)
11341 {
11342 struct tracepoint *t;
11343
11344 if (!is_tracepoint (bl->owner))
11345 continue;
11346
11347 if ((bl->owner->type == bp_fast_tracepoint
11348 ? !may_insert_fast_tracepoints
11349 : !may_insert_tracepoints))
11350 continue;
11351
11352 /* In tracepoint, locations are _never_ duplicated, so
11353 should_be_inserted is equivalent to
11354 unduplicated_should_be_inserted. */
11355 if (!should_be_inserted (bl) || bl->inserted)
11356 continue;
11357
11358 switch_to_program_space_and_thread (bl->pspace);
11359
11360 target_download_tracepoint (bl);
11361
11362 bl->inserted = 1;
11363 t = (struct tracepoint *) bl->owner;
11364 t->number_on_target = bl->owner->number;
11365 }
11366
11367 do_cleanups (old_chain);
11368 }
11369
11370 /* Swap the insertion/duplication state between two locations. */
11371
11372 static void
11373 swap_insertion (struct bp_location *left, struct bp_location *right)
11374 {
11375 const int left_inserted = left->inserted;
11376 const int left_duplicate = left->duplicate;
11377 const int left_needs_update = left->needs_update;
11378 const struct bp_target_info left_target_info = left->target_info;
11379
11380 /* Locations of tracepoints can never be duplicated. */
11381 if (is_tracepoint (left->owner))
11382 gdb_assert (!left->duplicate);
11383 if (is_tracepoint (right->owner))
11384 gdb_assert (!right->duplicate);
11385
11386 left->inserted = right->inserted;
11387 left->duplicate = right->duplicate;
11388 left->needs_update = right->needs_update;
11389 left->target_info = right->target_info;
11390 right->inserted = left_inserted;
11391 right->duplicate = left_duplicate;
11392 right->needs_update = left_needs_update;
11393 right->target_info = left_target_info;
11394 }
11395
11396 /* Force the re-insertion of the locations at ADDRESS. This is called
11397 once a new/deleted/modified duplicate location is found and we are evaluating
11398 conditions on the target's side. Such conditions need to be updated on
11399 the target. */
11400
11401 static void
11402 force_breakpoint_reinsertion (struct bp_location *bl)
11403 {
11404 struct bp_location **locp = NULL, **loc2p;
11405 struct bp_location *loc;
11406 CORE_ADDR address = 0;
11407 int pspace_num;
11408
11409 address = bl->address;
11410 pspace_num = bl->pspace->num;
11411
11412 /* This is only meaningful if the target is
11413 evaluating conditions and if the user has
11414 opted for condition evaluation on the target's
11415 side. */
11416 if (gdb_evaluates_breakpoint_condition_p ()
11417 || !target_supports_evaluation_of_breakpoint_conditions ())
11418 return;
11419
11420 /* Flag all breakpoint locations with this address and
11421 the same program space as the location
11422 as "its condition has changed". We need to
11423 update the conditions on the target's side. */
11424 ALL_BP_LOCATIONS_AT_ADDR (loc2p, locp, address)
11425 {
11426 loc = *loc2p;
11427
11428 if (!is_breakpoint (loc->owner)
11429 || pspace_num != loc->pspace->num)
11430 continue;
11431
11432 /* Flag the location appropriately. We use a different state to
11433 let everyone know that we already updated the set of locations
11434 with addr bl->address and program space bl->pspace. This is so
11435 we don't have to keep calling these functions just to mark locations
11436 that have already been marked. */
11437 loc->condition_changed = condition_updated;
11438
11439 /* Free the agent expression bytecode as well. We will compute
11440 it later on. */
11441 if (loc->cond_bytecode)
11442 {
11443 free_agent_expr (loc->cond_bytecode);
11444 loc->cond_bytecode = NULL;
11445 }
11446 }
11447 }
11448
11449 /* If SHOULD_INSERT is false, do not insert any breakpoint locations
11450 into the inferior, only remove already-inserted locations that no
11451 longer should be inserted. Functions that delete a breakpoint or
11452 breakpoints should pass false, so that deleting a breakpoint
11453 doesn't have the side effect of inserting the locations of other
11454 breakpoints that are marked not-inserted, but should_be_inserted
11455 returns true on them.
11456
11457 This behaviour is useful is situations close to tear-down -- e.g.,
11458 after an exec, while the target still has execution, but breakpoint
11459 shadows of the previous executable image should *NOT* be restored
11460 to the new image; or before detaching, where the target still has
11461 execution and wants to delete breakpoints from GDB's lists, and all
11462 breakpoints had already been removed from the inferior. */
11463
11464 static void
11465 update_global_location_list (int should_insert)
11466 {
11467 struct breakpoint *b;
11468 struct bp_location **locp, *loc;
11469 struct cleanup *cleanups;
11470 /* Last breakpoint location address that was marked for update. */
11471 CORE_ADDR last_addr = 0;
11472 /* Last breakpoint location program space that was marked for update. */
11473 int last_pspace_num = -1;
11474
11475 /* Used in the duplicates detection below. When iterating over all
11476 bp_locations, points to the first bp_location of a given address.
11477 Breakpoints and watchpoints of different types are never
11478 duplicates of each other. Keep one pointer for each type of
11479 breakpoint/watchpoint, so we only need to loop over all locations
11480 once. */
11481 struct bp_location *bp_loc_first; /* breakpoint */
11482 struct bp_location *wp_loc_first; /* hardware watchpoint */
11483 struct bp_location *awp_loc_first; /* access watchpoint */
11484 struct bp_location *rwp_loc_first; /* read watchpoint */
11485
11486 /* Saved former bp_location array which we compare against the newly
11487 built bp_location from the current state of ALL_BREAKPOINTS. */
11488 struct bp_location **old_location, **old_locp;
11489 unsigned old_location_count;
11490
11491 old_location = bp_location;
11492 old_location_count = bp_location_count;
11493 bp_location = NULL;
11494 bp_location_count = 0;
11495 cleanups = make_cleanup (xfree, old_location);
11496
11497 ALL_BREAKPOINTS (b)
11498 for (loc = b->loc; loc; loc = loc->next)
11499 bp_location_count++;
11500
11501 bp_location = xmalloc (sizeof (*bp_location) * bp_location_count);
11502 locp = bp_location;
11503 ALL_BREAKPOINTS (b)
11504 for (loc = b->loc; loc; loc = loc->next)
11505 *locp++ = loc;
11506 qsort (bp_location, bp_location_count, sizeof (*bp_location),
11507 bp_location_compare);
11508
11509 bp_location_target_extensions_update ();
11510
11511 /* Identify bp_location instances that are no longer present in the
11512 new list, and therefore should be freed. Note that it's not
11513 necessary that those locations should be removed from inferior --
11514 if there's another location at the same address (previously
11515 marked as duplicate), we don't need to remove/insert the
11516 location.
11517
11518 LOCP is kept in sync with OLD_LOCP, each pointing to the current
11519 and former bp_location array state respectively. */
11520
11521 locp = bp_location;
11522 for (old_locp = old_location; old_locp < old_location + old_location_count;
11523 old_locp++)
11524 {
11525 struct bp_location *old_loc = *old_locp;
11526 struct bp_location **loc2p;
11527
11528 /* Tells if 'old_loc' is found among the new locations. If
11529 not, we have to free it. */
11530 int found_object = 0;
11531 /* Tells if the location should remain inserted in the target. */
11532 int keep_in_target = 0;
11533 int removed = 0;
11534
11535 /* Skip LOCP entries which will definitely never be needed.
11536 Stop either at or being the one matching OLD_LOC. */
11537 while (locp < bp_location + bp_location_count
11538 && (*locp)->address < old_loc->address)
11539 locp++;
11540
11541 for (loc2p = locp;
11542 (loc2p < bp_location + bp_location_count
11543 && (*loc2p)->address == old_loc->address);
11544 loc2p++)
11545 {
11546 /* Check if this is a new/duplicated location or a duplicated
11547 location that had its condition modified. If so, we want to send
11548 its condition to the target if evaluation of conditions is taking
11549 place there. */
11550 if ((*loc2p)->condition_changed == condition_modified
11551 && (last_addr != old_loc->address
11552 || last_pspace_num != old_loc->pspace->num))
11553 {
11554 force_breakpoint_reinsertion (*loc2p);
11555 last_pspace_num = old_loc->pspace->num;
11556 }
11557
11558 if (*loc2p == old_loc)
11559 found_object = 1;
11560 }
11561
11562 /* We have already handled this address, update it so that we don't
11563 have to go through updates again. */
11564 last_addr = old_loc->address;
11565
11566 /* Target-side condition evaluation: Handle deleted locations. */
11567 if (!found_object)
11568 force_breakpoint_reinsertion (old_loc);
11569
11570 /* If this location is no longer present, and inserted, look if
11571 there's maybe a new location at the same address. If so,
11572 mark that one inserted, and don't remove this one. This is
11573 needed so that we don't have a time window where a breakpoint
11574 at certain location is not inserted. */
11575
11576 if (old_loc->inserted)
11577 {
11578 /* If the location is inserted now, we might have to remove
11579 it. */
11580
11581 if (found_object && should_be_inserted (old_loc))
11582 {
11583 /* The location is still present in the location list,
11584 and still should be inserted. Don't do anything. */
11585 keep_in_target = 1;
11586 }
11587 else
11588 {
11589 /* This location still exists, but it won't be kept in the
11590 target since it may have been disabled. We proceed to
11591 remove its target-side condition. */
11592
11593 /* The location is either no longer present, or got
11594 disabled. See if there's another location at the
11595 same address, in which case we don't need to remove
11596 this one from the target. */
11597
11598 /* OLD_LOC comes from existing struct breakpoint. */
11599 if (breakpoint_address_is_meaningful (old_loc->owner))
11600 {
11601 for (loc2p = locp;
11602 (loc2p < bp_location + bp_location_count
11603 && (*loc2p)->address == old_loc->address);
11604 loc2p++)
11605 {
11606 struct bp_location *loc2 = *loc2p;
11607
11608 if (breakpoint_locations_match (loc2, old_loc))
11609 {
11610 /* Read watchpoint locations are switched to
11611 access watchpoints, if the former are not
11612 supported, but the latter are. */
11613 if (is_hardware_watchpoint (old_loc->owner))
11614 {
11615 gdb_assert (is_hardware_watchpoint (loc2->owner));
11616 loc2->watchpoint_type = old_loc->watchpoint_type;
11617 }
11618
11619 /* loc2 is a duplicated location. We need to check
11620 if it should be inserted in case it will be
11621 unduplicated. */
11622 if (loc2 != old_loc
11623 && unduplicated_should_be_inserted (loc2))
11624 {
11625 swap_insertion (old_loc, loc2);
11626 keep_in_target = 1;
11627 break;
11628 }
11629 }
11630 }
11631 }
11632 }
11633
11634 if (!keep_in_target)
11635 {
11636 if (remove_breakpoint (old_loc, mark_uninserted))
11637 {
11638 /* This is just about all we can do. We could keep
11639 this location on the global list, and try to
11640 remove it next time, but there's no particular
11641 reason why we will succeed next time.
11642
11643 Note that at this point, old_loc->owner is still
11644 valid, as delete_breakpoint frees the breakpoint
11645 only after calling us. */
11646 printf_filtered (_("warning: Error removing "
11647 "breakpoint %d\n"),
11648 old_loc->owner->number);
11649 }
11650 removed = 1;
11651 }
11652 }
11653
11654 if (!found_object)
11655 {
11656 if (removed && non_stop
11657 && breakpoint_address_is_meaningful (old_loc->owner)
11658 && !is_hardware_watchpoint (old_loc->owner))
11659 {
11660 /* This location was removed from the target. In
11661 non-stop mode, a race condition is possible where
11662 we've removed a breakpoint, but stop events for that
11663 breakpoint are already queued and will arrive later.
11664 We apply an heuristic to be able to distinguish such
11665 SIGTRAPs from other random SIGTRAPs: we keep this
11666 breakpoint location for a bit, and will retire it
11667 after we see some number of events. The theory here
11668 is that reporting of events should, "on the average",
11669 be fair, so after a while we'll see events from all
11670 threads that have anything of interest, and no longer
11671 need to keep this breakpoint location around. We
11672 don't hold locations forever so to reduce chances of
11673 mistaking a non-breakpoint SIGTRAP for a breakpoint
11674 SIGTRAP.
11675
11676 The heuristic failing can be disastrous on
11677 decr_pc_after_break targets.
11678
11679 On decr_pc_after_break targets, like e.g., x86-linux,
11680 if we fail to recognize a late breakpoint SIGTRAP,
11681 because events_till_retirement has reached 0 too
11682 soon, we'll fail to do the PC adjustment, and report
11683 a random SIGTRAP to the user. When the user resumes
11684 the inferior, it will most likely immediately crash
11685 with SIGILL/SIGBUS/SIGSEGV, or worse, get silently
11686 corrupted, because of being resumed e.g., in the
11687 middle of a multi-byte instruction, or skipped a
11688 one-byte instruction. This was actually seen happen
11689 on native x86-linux, and should be less rare on
11690 targets that do not support new thread events, like
11691 remote, due to the heuristic depending on
11692 thread_count.
11693
11694 Mistaking a random SIGTRAP for a breakpoint trap
11695 causes similar symptoms (PC adjustment applied when
11696 it shouldn't), but then again, playing with SIGTRAPs
11697 behind the debugger's back is asking for trouble.
11698
11699 Since hardware watchpoint traps are always
11700 distinguishable from other traps, so we don't need to
11701 apply keep hardware watchpoint moribund locations
11702 around. We simply always ignore hardware watchpoint
11703 traps we can no longer explain. */
11704
11705 old_loc->events_till_retirement = 3 * (thread_count () + 1);
11706 old_loc->owner = NULL;
11707
11708 VEC_safe_push (bp_location_p, moribund_locations, old_loc);
11709 }
11710 else
11711 {
11712 old_loc->owner = NULL;
11713 decref_bp_location (&old_loc);
11714 }
11715 }
11716 }
11717
11718 /* Rescan breakpoints at the same address and section, marking the
11719 first one as "first" and any others as "duplicates". This is so
11720 that the bpt instruction is only inserted once. If we have a
11721 permanent breakpoint at the same place as BPT, make that one the
11722 official one, and the rest as duplicates. Permanent breakpoints
11723 are sorted first for the same address.
11724
11725 Do the same for hardware watchpoints, but also considering the
11726 watchpoint's type (regular/access/read) and length. */
11727
11728 bp_loc_first = NULL;
11729 wp_loc_first = NULL;
11730 awp_loc_first = NULL;
11731 rwp_loc_first = NULL;
11732 ALL_BP_LOCATIONS (loc, locp)
11733 {
11734 /* ALL_BP_LOCATIONS bp_location has LOC->OWNER always
11735 non-NULL. */
11736 struct bp_location **loc_first_p;
11737 b = loc->owner;
11738
11739 if (!should_be_inserted (loc)
11740 || !breakpoint_address_is_meaningful (b)
11741 /* Don't detect duplicate for tracepoint locations because they are
11742 never duplicated. See the comments in field `duplicate' of
11743 `struct bp_location'. */
11744 || is_tracepoint (b))
11745 {
11746 /* Clear the condition modification flag. */
11747 loc->condition_changed = condition_unchanged;
11748 continue;
11749 }
11750
11751 /* Permanent breakpoint should always be inserted. */
11752 if (b->enable_state == bp_permanent && ! loc->inserted)
11753 internal_error (__FILE__, __LINE__,
11754 _("allegedly permanent breakpoint is not "
11755 "actually inserted"));
11756
11757 if (b->type == bp_hardware_watchpoint)
11758 loc_first_p = &wp_loc_first;
11759 else if (b->type == bp_read_watchpoint)
11760 loc_first_p = &rwp_loc_first;
11761 else if (b->type == bp_access_watchpoint)
11762 loc_first_p = &awp_loc_first;
11763 else
11764 loc_first_p = &bp_loc_first;
11765
11766 if (*loc_first_p == NULL
11767 || (overlay_debugging && loc->section != (*loc_first_p)->section)
11768 || !breakpoint_locations_match (loc, *loc_first_p))
11769 {
11770 *loc_first_p = loc;
11771 loc->duplicate = 0;
11772
11773 if (is_breakpoint (loc->owner) && loc->condition_changed)
11774 {
11775 loc->needs_update = 1;
11776 /* Clear the condition modification flag. */
11777 loc->condition_changed = condition_unchanged;
11778 }
11779 continue;
11780 }
11781
11782
11783 /* This and the above ensure the invariant that the first location
11784 is not duplicated, and is the inserted one.
11785 All following are marked as duplicated, and are not inserted. */
11786 if (loc->inserted)
11787 swap_insertion (loc, *loc_first_p);
11788 loc->duplicate = 1;
11789
11790 /* Clear the condition modification flag. */
11791 loc->condition_changed = condition_unchanged;
11792
11793 if ((*loc_first_p)->owner->enable_state == bp_permanent && loc->inserted
11794 && b->enable_state != bp_permanent)
11795 internal_error (__FILE__, __LINE__,
11796 _("another breakpoint was inserted on top of "
11797 "a permanent breakpoint"));
11798 }
11799
11800 if (breakpoints_always_inserted_mode ()
11801 && (have_live_inferiors ()
11802 || (gdbarch_has_global_breakpoints (target_gdbarch))))
11803 {
11804 if (should_insert)
11805 insert_breakpoint_locations ();
11806 else
11807 {
11808 /* Though should_insert is false, we may need to update conditions
11809 on the target's side if it is evaluating such conditions. We
11810 only update conditions for locations that are marked
11811 "needs_update". */
11812 update_inserted_breakpoint_locations ();
11813 }
11814 }
11815
11816 if (should_insert)
11817 download_tracepoint_locations ();
11818
11819 do_cleanups (cleanups);
11820 }
11821
11822 void
11823 breakpoint_retire_moribund (void)
11824 {
11825 struct bp_location *loc;
11826 int ix;
11827
11828 for (ix = 0; VEC_iterate (bp_location_p, moribund_locations, ix, loc); ++ix)
11829 if (--(loc->events_till_retirement) == 0)
11830 {
11831 decref_bp_location (&loc);
11832 VEC_unordered_remove (bp_location_p, moribund_locations, ix);
11833 --ix;
11834 }
11835 }
11836
11837 static void
11838 update_global_location_list_nothrow (int inserting)
11839 {
11840 volatile struct gdb_exception e;
11841
11842 TRY_CATCH (e, RETURN_MASK_ERROR)
11843 update_global_location_list (inserting);
11844 }
11845
11846 /* Clear BKP from a BPS. */
11847
11848 static void
11849 bpstat_remove_bp_location (bpstat bps, struct breakpoint *bpt)
11850 {
11851 bpstat bs;
11852
11853 for (bs = bps; bs; bs = bs->next)
11854 if (bs->breakpoint_at == bpt)
11855 {
11856 bs->breakpoint_at = NULL;
11857 bs->old_val = NULL;
11858 /* bs->commands will be freed later. */
11859 }
11860 }
11861
11862 /* Callback for iterate_over_threads. */
11863 static int
11864 bpstat_remove_breakpoint_callback (struct thread_info *th, void *data)
11865 {
11866 struct breakpoint *bpt = data;
11867
11868 bpstat_remove_bp_location (th->control.stop_bpstat, bpt);
11869 return 0;
11870 }
11871
11872 /* Helper for breakpoint and tracepoint breakpoint_ops->mention
11873 callbacks. */
11874
11875 static void
11876 say_where (struct breakpoint *b)
11877 {
11878 struct ui_out *uiout = current_uiout;
11879 struct value_print_options opts;
11880
11881 get_user_print_options (&opts);
11882
11883 /* i18n: cagney/2005-02-11: Below needs to be merged into a
11884 single string. */
11885 if (b->loc == NULL)
11886 {
11887 printf_filtered (_(" (%s) pending."), b->addr_string);
11888 }
11889 else
11890 {
11891 if (opts.addressprint || b->loc->source_file == NULL)
11892 {
11893 printf_filtered (" at ");
11894 fputs_filtered (paddress (b->loc->gdbarch, b->loc->address),
11895 gdb_stdout);
11896 }
11897 if (b->loc->source_file)
11898 {
11899 /* If there is a single location, we can print the location
11900 more nicely. */
11901 if (b->loc->next == NULL)
11902 printf_filtered (": file %s, line %d.",
11903 b->loc->source_file, b->loc->line_number);
11904 else
11905 /* This is not ideal, but each location may have a
11906 different file name, and this at least reflects the
11907 real situation somewhat. */
11908 printf_filtered (": %s.", b->addr_string);
11909 }
11910
11911 if (b->loc->next)
11912 {
11913 struct bp_location *loc = b->loc;
11914 int n = 0;
11915 for (; loc; loc = loc->next)
11916 ++n;
11917 printf_filtered (" (%d locations)", n);
11918 }
11919 }
11920 }
11921
11922 /* Default bp_location_ops methods. */
11923
11924 static void
11925 bp_location_dtor (struct bp_location *self)
11926 {
11927 xfree (self->cond);
11928 if (self->cond_bytecode)
11929 free_agent_expr (self->cond_bytecode);
11930 xfree (self->function_name);
11931 xfree (self->source_file);
11932 }
11933
11934 static const struct bp_location_ops bp_location_ops =
11935 {
11936 bp_location_dtor
11937 };
11938
11939 /* Default breakpoint_ops methods all breakpoint_ops ultimately
11940 inherit from. */
11941
11942 static void
11943 base_breakpoint_dtor (struct breakpoint *self)
11944 {
11945 decref_counted_command_line (&self->commands);
11946 xfree (self->cond_string);
11947 xfree (self->addr_string);
11948 xfree (self->filter);
11949 xfree (self->addr_string_range_end);
11950 }
11951
11952 static struct bp_location *
11953 base_breakpoint_allocate_location (struct breakpoint *self)
11954 {
11955 struct bp_location *loc;
11956
11957 loc = XNEW (struct bp_location);
11958 init_bp_location (loc, &bp_location_ops, self);
11959 return loc;
11960 }
11961
11962 static void
11963 base_breakpoint_re_set (struct breakpoint *b)
11964 {
11965 /* Nothing to re-set. */
11966 }
11967
11968 #define internal_error_pure_virtual_called() \
11969 gdb_assert_not_reached ("pure virtual function called")
11970
11971 static int
11972 base_breakpoint_insert_location (struct bp_location *bl)
11973 {
11974 internal_error_pure_virtual_called ();
11975 }
11976
11977 static int
11978 base_breakpoint_remove_location (struct bp_location *bl)
11979 {
11980 internal_error_pure_virtual_called ();
11981 }
11982
11983 static int
11984 base_breakpoint_breakpoint_hit (const struct bp_location *bl,
11985 struct address_space *aspace,
11986 CORE_ADDR bp_addr,
11987 const struct target_waitstatus *ws)
11988 {
11989 internal_error_pure_virtual_called ();
11990 }
11991
11992 static void
11993 base_breakpoint_check_status (bpstat bs)
11994 {
11995 /* Always stop. */
11996 }
11997
11998 /* A "works_in_software_mode" breakpoint_ops method that just internal
11999 errors. */
12000
12001 static int
12002 base_breakpoint_works_in_software_mode (const struct breakpoint *b)
12003 {
12004 internal_error_pure_virtual_called ();
12005 }
12006
12007 /* A "resources_needed" breakpoint_ops method that just internal
12008 errors. */
12009
12010 static int
12011 base_breakpoint_resources_needed (const struct bp_location *bl)
12012 {
12013 internal_error_pure_virtual_called ();
12014 }
12015
12016 static enum print_stop_action
12017 base_breakpoint_print_it (bpstat bs)
12018 {
12019 internal_error_pure_virtual_called ();
12020 }
12021
12022 static void
12023 base_breakpoint_print_one_detail (const struct breakpoint *self,
12024 struct ui_out *uiout)
12025 {
12026 /* nothing */
12027 }
12028
12029 static void
12030 base_breakpoint_print_mention (struct breakpoint *b)
12031 {
12032 internal_error_pure_virtual_called ();
12033 }
12034
12035 static void
12036 base_breakpoint_print_recreate (struct breakpoint *b, struct ui_file *fp)
12037 {
12038 internal_error_pure_virtual_called ();
12039 }
12040
12041 static void
12042 base_breakpoint_create_sals_from_address (char **arg,
12043 struct linespec_result *canonical,
12044 enum bptype type_wanted,
12045 char *addr_start,
12046 char **copy_arg)
12047 {
12048 internal_error_pure_virtual_called ();
12049 }
12050
12051 static void
12052 base_breakpoint_create_breakpoints_sal (struct gdbarch *gdbarch,
12053 struct linespec_result *c,
12054 struct linespec_sals *lsal,
12055 char *cond_string,
12056 enum bptype type_wanted,
12057 enum bpdisp disposition,
12058 int thread,
12059 int task, int ignore_count,
12060 const struct breakpoint_ops *o,
12061 int from_tty, int enabled,
12062 int internal, unsigned flags)
12063 {
12064 internal_error_pure_virtual_called ();
12065 }
12066
12067 static void
12068 base_breakpoint_decode_linespec (struct breakpoint *b, char **s,
12069 struct symtabs_and_lines *sals)
12070 {
12071 internal_error_pure_virtual_called ();
12072 }
12073
12074 static struct breakpoint_ops base_breakpoint_ops =
12075 {
12076 base_breakpoint_dtor,
12077 base_breakpoint_allocate_location,
12078 base_breakpoint_re_set,
12079 base_breakpoint_insert_location,
12080 base_breakpoint_remove_location,
12081 base_breakpoint_breakpoint_hit,
12082 base_breakpoint_check_status,
12083 base_breakpoint_resources_needed,
12084 base_breakpoint_works_in_software_mode,
12085 base_breakpoint_print_it,
12086 NULL,
12087 base_breakpoint_print_one_detail,
12088 base_breakpoint_print_mention,
12089 base_breakpoint_print_recreate,
12090 base_breakpoint_create_sals_from_address,
12091 base_breakpoint_create_breakpoints_sal,
12092 base_breakpoint_decode_linespec,
12093 };
12094
12095 /* Default breakpoint_ops methods. */
12096
12097 static void
12098 bkpt_re_set (struct breakpoint *b)
12099 {
12100 /* FIXME: is this still reachable? */
12101 if (b->addr_string == NULL)
12102 {
12103 /* Anything without a string can't be re-set. */
12104 delete_breakpoint (b);
12105 return;
12106 }
12107
12108 breakpoint_re_set_default (b);
12109 }
12110
12111 static int
12112 bkpt_insert_location (struct bp_location *bl)
12113 {
12114 if (bl->loc_type == bp_loc_hardware_breakpoint)
12115 return target_insert_hw_breakpoint (bl->gdbarch,
12116 &bl->target_info);
12117 else
12118 return target_insert_breakpoint (bl->gdbarch,
12119 &bl->target_info);
12120 }
12121
12122 static int
12123 bkpt_remove_location (struct bp_location *bl)
12124 {
12125 if (bl->loc_type == bp_loc_hardware_breakpoint)
12126 return target_remove_hw_breakpoint (bl->gdbarch, &bl->target_info);
12127 else
12128 return target_remove_breakpoint (bl->gdbarch, &bl->target_info);
12129 }
12130
12131 static int
12132 bkpt_breakpoint_hit (const struct bp_location *bl,
12133 struct address_space *aspace, CORE_ADDR bp_addr,
12134 const struct target_waitstatus *ws)
12135 {
12136 struct breakpoint *b = bl->owner;
12137
12138 if (ws->kind != TARGET_WAITKIND_STOPPED
12139 || ws->value.sig != TARGET_SIGNAL_TRAP)
12140 return 0;
12141
12142 if (!breakpoint_address_match (bl->pspace->aspace, bl->address,
12143 aspace, bp_addr))
12144 return 0;
12145
12146 if (overlay_debugging /* unmapped overlay section */
12147 && section_is_overlay (bl->section)
12148 && !section_is_mapped (bl->section))
12149 return 0;
12150
12151 return 1;
12152 }
12153
12154 static int
12155 bkpt_resources_needed (const struct bp_location *bl)
12156 {
12157 gdb_assert (bl->owner->type == bp_hardware_breakpoint);
12158
12159 return 1;
12160 }
12161
12162 static enum print_stop_action
12163 bkpt_print_it (bpstat bs)
12164 {
12165 struct breakpoint *b;
12166 const struct bp_location *bl;
12167 int bp_temp;
12168 struct ui_out *uiout = current_uiout;
12169
12170 gdb_assert (bs->bp_location_at != NULL);
12171
12172 bl = bs->bp_location_at;
12173 b = bs->breakpoint_at;
12174
12175 bp_temp = b->disposition == disp_del;
12176 if (bl->address != bl->requested_address)
12177 breakpoint_adjustment_warning (bl->requested_address,
12178 bl->address,
12179 b->number, 1);
12180 annotate_breakpoint (b->number);
12181 if (bp_temp)
12182 ui_out_text (uiout, "\nTemporary breakpoint ");
12183 else
12184 ui_out_text (uiout, "\nBreakpoint ");
12185 if (ui_out_is_mi_like_p (uiout))
12186 {
12187 ui_out_field_string (uiout, "reason",
12188 async_reason_lookup (EXEC_ASYNC_BREAKPOINT_HIT));
12189 ui_out_field_string (uiout, "disp", bpdisp_text (b->disposition));
12190 }
12191 ui_out_field_int (uiout, "bkptno", b->number);
12192 ui_out_text (uiout, ", ");
12193
12194 return PRINT_SRC_AND_LOC;
12195 }
12196
12197 static void
12198 bkpt_print_mention (struct breakpoint *b)
12199 {
12200 if (ui_out_is_mi_like_p (current_uiout))
12201 return;
12202
12203 switch (b->type)
12204 {
12205 case bp_breakpoint:
12206 case bp_gnu_ifunc_resolver:
12207 if (b->disposition == disp_del)
12208 printf_filtered (_("Temporary breakpoint"));
12209 else
12210 printf_filtered (_("Breakpoint"));
12211 printf_filtered (_(" %d"), b->number);
12212 if (b->type == bp_gnu_ifunc_resolver)
12213 printf_filtered (_(" at gnu-indirect-function resolver"));
12214 break;
12215 case bp_hardware_breakpoint:
12216 printf_filtered (_("Hardware assisted breakpoint %d"), b->number);
12217 break;
12218 }
12219
12220 say_where (b);
12221 }
12222
12223 static void
12224 bkpt_print_recreate (struct breakpoint *tp, struct ui_file *fp)
12225 {
12226 if (tp->type == bp_breakpoint && tp->disposition == disp_del)
12227 fprintf_unfiltered (fp, "tbreak");
12228 else if (tp->type == bp_breakpoint)
12229 fprintf_unfiltered (fp, "break");
12230 else if (tp->type == bp_hardware_breakpoint
12231 && tp->disposition == disp_del)
12232 fprintf_unfiltered (fp, "thbreak");
12233 else if (tp->type == bp_hardware_breakpoint)
12234 fprintf_unfiltered (fp, "hbreak");
12235 else
12236 internal_error (__FILE__, __LINE__,
12237 _("unhandled breakpoint type %d"), (int) tp->type);
12238
12239 fprintf_unfiltered (fp, " %s", tp->addr_string);
12240 print_recreate_thread (tp, fp);
12241 }
12242
12243 static void
12244 bkpt_create_sals_from_address (char **arg,
12245 struct linespec_result *canonical,
12246 enum bptype type_wanted,
12247 char *addr_start, char **copy_arg)
12248 {
12249 create_sals_from_address_default (arg, canonical, type_wanted,
12250 addr_start, copy_arg);
12251 }
12252
12253 static void
12254 bkpt_create_breakpoints_sal (struct gdbarch *gdbarch,
12255 struct linespec_result *canonical,
12256 struct linespec_sals *lsal,
12257 char *cond_string,
12258 enum bptype type_wanted,
12259 enum bpdisp disposition,
12260 int thread,
12261 int task, int ignore_count,
12262 const struct breakpoint_ops *ops,
12263 int from_tty, int enabled,
12264 int internal, unsigned flags)
12265 {
12266 create_breakpoints_sal_default (gdbarch, canonical, lsal,
12267 cond_string, type_wanted,
12268 disposition, thread, task,
12269 ignore_count, ops, from_tty,
12270 enabled, internal, flags);
12271 }
12272
12273 static void
12274 bkpt_decode_linespec (struct breakpoint *b, char **s,
12275 struct symtabs_and_lines *sals)
12276 {
12277 decode_linespec_default (b, s, sals);
12278 }
12279
12280 /* Virtual table for internal breakpoints. */
12281
12282 static void
12283 internal_bkpt_re_set (struct breakpoint *b)
12284 {
12285 switch (b->type)
12286 {
12287 /* Delete overlay event and longjmp master breakpoints; they
12288 will be reset later by breakpoint_re_set. */
12289 case bp_overlay_event:
12290 case bp_longjmp_master:
12291 case bp_std_terminate_master:
12292 case bp_exception_master:
12293 delete_breakpoint (b);
12294 break;
12295
12296 /* This breakpoint is special, it's set up when the inferior
12297 starts and we really don't want to touch it. */
12298 case bp_shlib_event:
12299
12300 /* Like bp_shlib_event, this breakpoint type is special. Once
12301 it is set up, we do not want to touch it. */
12302 case bp_thread_event:
12303 break;
12304 }
12305 }
12306
12307 static void
12308 internal_bkpt_check_status (bpstat bs)
12309 {
12310 if (bs->breakpoint_at->type == bp_shlib_event)
12311 {
12312 /* If requested, stop when the dynamic linker notifies GDB of
12313 events. This allows the user to get control and place
12314 breakpoints in initializer routines for dynamically loaded
12315 objects (among other things). */
12316 bs->stop = stop_on_solib_events;
12317 bs->print = stop_on_solib_events;
12318 }
12319 else
12320 bs->stop = 0;
12321 }
12322
12323 static enum print_stop_action
12324 internal_bkpt_print_it (bpstat bs)
12325 {
12326 struct ui_out *uiout = current_uiout;
12327 struct breakpoint *b;
12328
12329 b = bs->breakpoint_at;
12330
12331 switch (b->type)
12332 {
12333 case bp_shlib_event:
12334 /* Did we stop because the user set the stop_on_solib_events
12335 variable? (If so, we report this as a generic, "Stopped due
12336 to shlib event" message.) */
12337 print_solib_event (0);
12338 break;
12339
12340 case bp_thread_event:
12341 /* Not sure how we will get here.
12342 GDB should not stop for these breakpoints. */
12343 printf_filtered (_("Thread Event Breakpoint: gdb should not stop!\n"));
12344 break;
12345
12346 case bp_overlay_event:
12347 /* By analogy with the thread event, GDB should not stop for these. */
12348 printf_filtered (_("Overlay Event Breakpoint: gdb should not stop!\n"));
12349 break;
12350
12351 case bp_longjmp_master:
12352 /* These should never be enabled. */
12353 printf_filtered (_("Longjmp Master Breakpoint: gdb should not stop!\n"));
12354 break;
12355
12356 case bp_std_terminate_master:
12357 /* These should never be enabled. */
12358 printf_filtered (_("std::terminate Master Breakpoint: "
12359 "gdb should not stop!\n"));
12360 break;
12361
12362 case bp_exception_master:
12363 /* These should never be enabled. */
12364 printf_filtered (_("Exception Master Breakpoint: "
12365 "gdb should not stop!\n"));
12366 break;
12367 }
12368
12369 return PRINT_NOTHING;
12370 }
12371
12372 static void
12373 internal_bkpt_print_mention (struct breakpoint *b)
12374 {
12375 /* Nothing to mention. These breakpoints are internal. */
12376 }
12377
12378 /* Virtual table for momentary breakpoints */
12379
12380 static void
12381 momentary_bkpt_re_set (struct breakpoint *b)
12382 {
12383 /* Keep temporary breakpoints, which can be encountered when we step
12384 over a dlopen call and SOLIB_ADD is resetting the breakpoints.
12385 Otherwise these should have been blown away via the cleanup chain
12386 or by breakpoint_init_inferior when we rerun the executable. */
12387 }
12388
12389 static void
12390 momentary_bkpt_check_status (bpstat bs)
12391 {
12392 /* Nothing. The point of these breakpoints is causing a stop. */
12393 }
12394
12395 static enum print_stop_action
12396 momentary_bkpt_print_it (bpstat bs)
12397 {
12398 struct ui_out *uiout = current_uiout;
12399
12400 if (ui_out_is_mi_like_p (uiout))
12401 {
12402 struct breakpoint *b = bs->breakpoint_at;
12403
12404 switch (b->type)
12405 {
12406 case bp_finish:
12407 ui_out_field_string
12408 (uiout, "reason",
12409 async_reason_lookup (EXEC_ASYNC_FUNCTION_FINISHED));
12410 break;
12411
12412 case bp_until:
12413 ui_out_field_string
12414 (uiout, "reason",
12415 async_reason_lookup (EXEC_ASYNC_LOCATION_REACHED));
12416 break;
12417 }
12418 }
12419
12420 return PRINT_UNKNOWN;
12421 }
12422
12423 static void
12424 momentary_bkpt_print_mention (struct breakpoint *b)
12425 {
12426 /* Nothing to mention. These breakpoints are internal. */
12427 }
12428
12429 /* The breakpoint_ops structure to be used in tracepoints. */
12430
12431 static void
12432 tracepoint_re_set (struct breakpoint *b)
12433 {
12434 breakpoint_re_set_default (b);
12435 }
12436
12437 static int
12438 tracepoint_breakpoint_hit (const struct bp_location *bl,
12439 struct address_space *aspace, CORE_ADDR bp_addr,
12440 const struct target_waitstatus *ws)
12441 {
12442 /* By definition, the inferior does not report stops at
12443 tracepoints. */
12444 return 0;
12445 }
12446
12447 static void
12448 tracepoint_print_one_detail (const struct breakpoint *self,
12449 struct ui_out *uiout)
12450 {
12451 struct tracepoint *tp = (struct tracepoint *) self;
12452 if (tp->static_trace_marker_id)
12453 {
12454 gdb_assert (self->type == bp_static_tracepoint);
12455
12456 ui_out_text (uiout, "\tmarker id is ");
12457 ui_out_field_string (uiout, "static-tracepoint-marker-string-id",
12458 tp->static_trace_marker_id);
12459 ui_out_text (uiout, "\n");
12460 }
12461 }
12462
12463 static void
12464 tracepoint_print_mention (struct breakpoint *b)
12465 {
12466 if (ui_out_is_mi_like_p (current_uiout))
12467 return;
12468
12469 switch (b->type)
12470 {
12471 case bp_tracepoint:
12472 printf_filtered (_("Tracepoint"));
12473 printf_filtered (_(" %d"), b->number);
12474 break;
12475 case bp_fast_tracepoint:
12476 printf_filtered (_("Fast tracepoint"));
12477 printf_filtered (_(" %d"), b->number);
12478 break;
12479 case bp_static_tracepoint:
12480 printf_filtered (_("Static tracepoint"));
12481 printf_filtered (_(" %d"), b->number);
12482 break;
12483 default:
12484 internal_error (__FILE__, __LINE__,
12485 _("unhandled tracepoint type %d"), (int) b->type);
12486 }
12487
12488 say_where (b);
12489 }
12490
12491 static void
12492 tracepoint_print_recreate (struct breakpoint *self, struct ui_file *fp)
12493 {
12494 struct tracepoint *tp = (struct tracepoint *) self;
12495
12496 if (self->type == bp_fast_tracepoint)
12497 fprintf_unfiltered (fp, "ftrace");
12498 if (self->type == bp_static_tracepoint)
12499 fprintf_unfiltered (fp, "strace");
12500 else if (self->type == bp_tracepoint)
12501 fprintf_unfiltered (fp, "trace");
12502 else
12503 internal_error (__FILE__, __LINE__,
12504 _("unhandled tracepoint type %d"), (int) self->type);
12505
12506 fprintf_unfiltered (fp, " %s", self->addr_string);
12507 print_recreate_thread (self, fp);
12508
12509 if (tp->pass_count)
12510 fprintf_unfiltered (fp, " passcount %d\n", tp->pass_count);
12511 }
12512
12513 static void
12514 tracepoint_create_sals_from_address (char **arg,
12515 struct linespec_result *canonical,
12516 enum bptype type_wanted,
12517 char *addr_start, char **copy_arg)
12518 {
12519 create_sals_from_address_default (arg, canonical, type_wanted,
12520 addr_start, copy_arg);
12521 }
12522
12523 static void
12524 tracepoint_create_breakpoints_sal (struct gdbarch *gdbarch,
12525 struct linespec_result *canonical,
12526 struct linespec_sals *lsal,
12527 char *cond_string,
12528 enum bptype type_wanted,
12529 enum bpdisp disposition,
12530 int thread,
12531 int task, int ignore_count,
12532 const struct breakpoint_ops *ops,
12533 int from_tty, int enabled,
12534 int internal, unsigned flags)
12535 {
12536 create_breakpoints_sal_default (gdbarch, canonical, lsal,
12537 cond_string, type_wanted,
12538 disposition, thread, task,
12539 ignore_count, ops, from_tty,
12540 enabled, internal, flags);
12541 }
12542
12543 static void
12544 tracepoint_decode_linespec (struct breakpoint *b, char **s,
12545 struct symtabs_and_lines *sals)
12546 {
12547 decode_linespec_default (b, s, sals);
12548 }
12549
12550 struct breakpoint_ops tracepoint_breakpoint_ops;
12551
12552 /* The breakpoint_ops structure to be used on static tracepoints with
12553 markers (`-m'). */
12554
12555 static void
12556 strace_marker_create_sals_from_address (char **arg,
12557 struct linespec_result *canonical,
12558 enum bptype type_wanted,
12559 char *addr_start, char **copy_arg)
12560 {
12561 struct linespec_sals lsal;
12562
12563 lsal.sals = decode_static_tracepoint_spec (arg);
12564
12565 *copy_arg = savestring (addr_start, *arg - addr_start);
12566
12567 canonical->addr_string = xstrdup (*copy_arg);
12568 lsal.canonical = xstrdup (*copy_arg);
12569 VEC_safe_push (linespec_sals, canonical->sals, &lsal);
12570 }
12571
12572 static void
12573 strace_marker_create_breakpoints_sal (struct gdbarch *gdbarch,
12574 struct linespec_result *canonical,
12575 struct linespec_sals *lsal,
12576 char *cond_string,
12577 enum bptype type_wanted,
12578 enum bpdisp disposition,
12579 int thread,
12580 int task, int ignore_count,
12581 const struct breakpoint_ops *ops,
12582 int from_tty, int enabled,
12583 int internal, unsigned flags)
12584 {
12585 int i;
12586
12587 /* If the user is creating a static tracepoint by marker id
12588 (strace -m MARKER_ID), then store the sals index, so that
12589 breakpoint_re_set can try to match up which of the newly
12590 found markers corresponds to this one, and, don't try to
12591 expand multiple locations for each sal, given than SALS
12592 already should contain all sals for MARKER_ID. */
12593
12594 for (i = 0; i < lsal->sals.nelts; ++i)
12595 {
12596 struct symtabs_and_lines expanded;
12597 struct tracepoint *tp;
12598 struct cleanup *old_chain;
12599 char *addr_string;
12600
12601 expanded.nelts = 1;
12602 expanded.sals = &lsal->sals.sals[i];
12603
12604 addr_string = xstrdup (canonical->addr_string);
12605 old_chain = make_cleanup (xfree, addr_string);
12606
12607 tp = XCNEW (struct tracepoint);
12608 init_breakpoint_sal (&tp->base, gdbarch, expanded,
12609 addr_string, NULL,
12610 cond_string, type_wanted, disposition,
12611 thread, task, ignore_count, ops,
12612 from_tty, enabled, internal, flags,
12613 canonical->special_display);
12614 /* Given that its possible to have multiple markers with
12615 the same string id, if the user is creating a static
12616 tracepoint by marker id ("strace -m MARKER_ID"), then
12617 store the sals index, so that breakpoint_re_set can
12618 try to match up which of the newly found markers
12619 corresponds to this one */
12620 tp->static_trace_marker_id_idx = i;
12621
12622 install_breakpoint (internal, &tp->base, 0);
12623
12624 discard_cleanups (old_chain);
12625 }
12626 }
12627
12628 static void
12629 strace_marker_decode_linespec (struct breakpoint *b, char **s,
12630 struct symtabs_and_lines *sals)
12631 {
12632 struct tracepoint *tp = (struct tracepoint *) b;
12633
12634 *sals = decode_static_tracepoint_spec (s);
12635 if (sals->nelts > tp->static_trace_marker_id_idx)
12636 {
12637 sals->sals[0] = sals->sals[tp->static_trace_marker_id_idx];
12638 sals->nelts = 1;
12639 }
12640 else
12641 error (_("marker %s not found"), tp->static_trace_marker_id);
12642 }
12643
12644 static struct breakpoint_ops strace_marker_breakpoint_ops;
12645
12646 static int
12647 strace_marker_p (struct breakpoint *b)
12648 {
12649 return b->ops == &strace_marker_breakpoint_ops;
12650 }
12651
12652 /* Delete a breakpoint and clean up all traces of it in the data
12653 structures. */
12654
12655 void
12656 delete_breakpoint (struct breakpoint *bpt)
12657 {
12658 struct breakpoint *b;
12659
12660 gdb_assert (bpt != NULL);
12661
12662 /* Has this bp already been deleted? This can happen because
12663 multiple lists can hold pointers to bp's. bpstat lists are
12664 especial culprits.
12665
12666 One example of this happening is a watchpoint's scope bp. When
12667 the scope bp triggers, we notice that the watchpoint is out of
12668 scope, and delete it. We also delete its scope bp. But the
12669 scope bp is marked "auto-deleting", and is already on a bpstat.
12670 That bpstat is then checked for auto-deleting bp's, which are
12671 deleted.
12672
12673 A real solution to this problem might involve reference counts in
12674 bp's, and/or giving them pointers back to their referencing
12675 bpstat's, and teaching delete_breakpoint to only free a bp's
12676 storage when no more references were extent. A cheaper bandaid
12677 was chosen. */
12678 if (bpt->type == bp_none)
12679 return;
12680
12681 /* At least avoid this stale reference until the reference counting
12682 of breakpoints gets resolved. */
12683 if (bpt->related_breakpoint != bpt)
12684 {
12685 struct breakpoint *related;
12686 struct watchpoint *w;
12687
12688 if (bpt->type == bp_watchpoint_scope)
12689 w = (struct watchpoint *) bpt->related_breakpoint;
12690 else if (bpt->related_breakpoint->type == bp_watchpoint_scope)
12691 w = (struct watchpoint *) bpt;
12692 else
12693 w = NULL;
12694 if (w != NULL)
12695 watchpoint_del_at_next_stop (w);
12696
12697 /* Unlink bpt from the bpt->related_breakpoint ring. */
12698 for (related = bpt; related->related_breakpoint != bpt;
12699 related = related->related_breakpoint);
12700 related->related_breakpoint = bpt->related_breakpoint;
12701 bpt->related_breakpoint = bpt;
12702 }
12703
12704 /* watch_command_1 creates a watchpoint but only sets its number if
12705 update_watchpoint succeeds in creating its bp_locations. If there's
12706 a problem in that process, we'll be asked to delete the half-created
12707 watchpoint. In that case, don't announce the deletion. */
12708 if (bpt->number)
12709 observer_notify_breakpoint_deleted (bpt);
12710
12711 if (breakpoint_chain == bpt)
12712 breakpoint_chain = bpt->next;
12713
12714 ALL_BREAKPOINTS (b)
12715 if (b->next == bpt)
12716 {
12717 b->next = bpt->next;
12718 break;
12719 }
12720
12721 /* Be sure no bpstat's are pointing at the breakpoint after it's
12722 been freed. */
12723 /* FIXME, how can we find all bpstat's? We just check stop_bpstat
12724 in all threads for now. Note that we cannot just remove bpstats
12725 pointing at bpt from the stop_bpstat list entirely, as breakpoint
12726 commands are associated with the bpstat; if we remove it here,
12727 then the later call to bpstat_do_actions (&stop_bpstat); in
12728 event-top.c won't do anything, and temporary breakpoints with
12729 commands won't work. */
12730
12731 iterate_over_threads (bpstat_remove_breakpoint_callback, bpt);
12732
12733 /* Now that breakpoint is removed from breakpoint list, update the
12734 global location list. This will remove locations that used to
12735 belong to this breakpoint. Do this before freeing the breakpoint
12736 itself, since remove_breakpoint looks at location's owner. It
12737 might be better design to have location completely
12738 self-contained, but it's not the case now. */
12739 update_global_location_list (0);
12740
12741 bpt->ops->dtor (bpt);
12742 /* On the chance that someone will soon try again to delete this
12743 same bp, we mark it as deleted before freeing its storage. */
12744 bpt->type = bp_none;
12745 xfree (bpt);
12746 }
12747
12748 static void
12749 do_delete_breakpoint_cleanup (void *b)
12750 {
12751 delete_breakpoint (b);
12752 }
12753
12754 struct cleanup *
12755 make_cleanup_delete_breakpoint (struct breakpoint *b)
12756 {
12757 return make_cleanup (do_delete_breakpoint_cleanup, b);
12758 }
12759
12760 /* Iterator function to call a user-provided callback function once
12761 for each of B and its related breakpoints. */
12762
12763 static void
12764 iterate_over_related_breakpoints (struct breakpoint *b,
12765 void (*function) (struct breakpoint *,
12766 void *),
12767 void *data)
12768 {
12769 struct breakpoint *related;
12770
12771 related = b;
12772 do
12773 {
12774 struct breakpoint *next;
12775
12776 /* FUNCTION may delete RELATED. */
12777 next = related->related_breakpoint;
12778
12779 if (next == related)
12780 {
12781 /* RELATED is the last ring entry. */
12782 function (related, data);
12783
12784 /* FUNCTION may have deleted it, so we'd never reach back to
12785 B. There's nothing left to do anyway, so just break
12786 out. */
12787 break;
12788 }
12789 else
12790 function (related, data);
12791
12792 related = next;
12793 }
12794 while (related != b);
12795 }
12796
12797 static void
12798 do_delete_breakpoint (struct breakpoint *b, void *ignore)
12799 {
12800 delete_breakpoint (b);
12801 }
12802
12803 /* A callback for map_breakpoint_numbers that calls
12804 delete_breakpoint. */
12805
12806 static void
12807 do_map_delete_breakpoint (struct breakpoint *b, void *ignore)
12808 {
12809 iterate_over_related_breakpoints (b, do_delete_breakpoint, NULL);
12810 }
12811
12812 void
12813 delete_command (char *arg, int from_tty)
12814 {
12815 struct breakpoint *b, *b_tmp;
12816
12817 dont_repeat ();
12818
12819 if (arg == 0)
12820 {
12821 int breaks_to_delete = 0;
12822
12823 /* Delete all breakpoints if no argument. Do not delete
12824 internal breakpoints, these have to be deleted with an
12825 explicit breakpoint number argument. */
12826 ALL_BREAKPOINTS (b)
12827 if (user_breakpoint_p (b))
12828 {
12829 breaks_to_delete = 1;
12830 break;
12831 }
12832
12833 /* Ask user only if there are some breakpoints to delete. */
12834 if (!from_tty
12835 || (breaks_to_delete && query (_("Delete all breakpoints? "))))
12836 {
12837 ALL_BREAKPOINTS_SAFE (b, b_tmp)
12838 if (user_breakpoint_p (b))
12839 delete_breakpoint (b);
12840 }
12841 }
12842 else
12843 map_breakpoint_numbers (arg, do_map_delete_breakpoint, NULL);
12844 }
12845
12846 static int
12847 all_locations_are_pending (struct bp_location *loc)
12848 {
12849 for (; loc; loc = loc->next)
12850 if (!loc->shlib_disabled
12851 && !loc->pspace->executing_startup)
12852 return 0;
12853 return 1;
12854 }
12855
12856 /* Subroutine of update_breakpoint_locations to simplify it.
12857 Return non-zero if multiple fns in list LOC have the same name.
12858 Null names are ignored. */
12859
12860 static int
12861 ambiguous_names_p (struct bp_location *loc)
12862 {
12863 struct bp_location *l;
12864 htab_t htab = htab_create_alloc (13, htab_hash_string,
12865 (int (*) (const void *,
12866 const void *)) streq,
12867 NULL, xcalloc, xfree);
12868
12869 for (l = loc; l != NULL; l = l->next)
12870 {
12871 const char **slot;
12872 const char *name = l->function_name;
12873
12874 /* Allow for some names to be NULL, ignore them. */
12875 if (name == NULL)
12876 continue;
12877
12878 slot = (const char **) htab_find_slot (htab, (const void *) name,
12879 INSERT);
12880 /* NOTE: We can assume slot != NULL here because xcalloc never
12881 returns NULL. */
12882 if (*slot != NULL)
12883 {
12884 htab_delete (htab);
12885 return 1;
12886 }
12887 *slot = name;
12888 }
12889
12890 htab_delete (htab);
12891 return 0;
12892 }
12893
12894 /* When symbols change, it probably means the sources changed as well,
12895 and it might mean the static tracepoint markers are no longer at
12896 the same address or line numbers they used to be at last we
12897 checked. Losing your static tracepoints whenever you rebuild is
12898 undesirable. This function tries to resync/rematch gdb static
12899 tracepoints with the markers on the target, for static tracepoints
12900 that have not been set by marker id. Static tracepoint that have
12901 been set by marker id are reset by marker id in breakpoint_re_set.
12902 The heuristic is:
12903
12904 1) For a tracepoint set at a specific address, look for a marker at
12905 the old PC. If one is found there, assume to be the same marker.
12906 If the name / string id of the marker found is different from the
12907 previous known name, assume that means the user renamed the marker
12908 in the sources, and output a warning.
12909
12910 2) For a tracepoint set at a given line number, look for a marker
12911 at the new address of the old line number. If one is found there,
12912 assume to be the same marker. If the name / string id of the
12913 marker found is different from the previous known name, assume that
12914 means the user renamed the marker in the sources, and output a
12915 warning.
12916
12917 3) If a marker is no longer found at the same address or line, it
12918 may mean the marker no longer exists. But it may also just mean
12919 the code changed a bit. Maybe the user added a few lines of code
12920 that made the marker move up or down (in line number terms). Ask
12921 the target for info about the marker with the string id as we knew
12922 it. If found, update line number and address in the matching
12923 static tracepoint. This will get confused if there's more than one
12924 marker with the same ID (possible in UST, although unadvised
12925 precisely because it confuses tools). */
12926
12927 static struct symtab_and_line
12928 update_static_tracepoint (struct breakpoint *b, struct symtab_and_line sal)
12929 {
12930 struct tracepoint *tp = (struct tracepoint *) b;
12931 struct static_tracepoint_marker marker;
12932 CORE_ADDR pc;
12933 int i;
12934
12935 pc = sal.pc;
12936 if (sal.line)
12937 find_line_pc (sal.symtab, sal.line, &pc);
12938
12939 if (target_static_tracepoint_marker_at (pc, &marker))
12940 {
12941 if (strcmp (tp->static_trace_marker_id, marker.str_id) != 0)
12942 warning (_("static tracepoint %d changed probed marker from %s to %s"),
12943 b->number,
12944 tp->static_trace_marker_id, marker.str_id);
12945
12946 xfree (tp->static_trace_marker_id);
12947 tp->static_trace_marker_id = xstrdup (marker.str_id);
12948 release_static_tracepoint_marker (&marker);
12949
12950 return sal;
12951 }
12952
12953 /* Old marker wasn't found on target at lineno. Try looking it up
12954 by string ID. */
12955 if (!sal.explicit_pc
12956 && sal.line != 0
12957 && sal.symtab != NULL
12958 && tp->static_trace_marker_id != NULL)
12959 {
12960 VEC(static_tracepoint_marker_p) *markers;
12961
12962 markers
12963 = target_static_tracepoint_markers_by_strid (tp->static_trace_marker_id);
12964
12965 if (!VEC_empty(static_tracepoint_marker_p, markers))
12966 {
12967 struct symtab_and_line sal2;
12968 struct symbol *sym;
12969 struct static_tracepoint_marker *tpmarker;
12970 struct ui_out *uiout = current_uiout;
12971
12972 tpmarker = VEC_index (static_tracepoint_marker_p, markers, 0);
12973
12974 xfree (tp->static_trace_marker_id);
12975 tp->static_trace_marker_id = xstrdup (tpmarker->str_id);
12976
12977 warning (_("marker for static tracepoint %d (%s) not "
12978 "found at previous line number"),
12979 b->number, tp->static_trace_marker_id);
12980
12981 init_sal (&sal2);
12982
12983 sal2.pc = tpmarker->address;
12984
12985 sal2 = find_pc_line (tpmarker->address, 0);
12986 sym = find_pc_sect_function (tpmarker->address, NULL);
12987 ui_out_text (uiout, "Now in ");
12988 if (sym)
12989 {
12990 ui_out_field_string (uiout, "func",
12991 SYMBOL_PRINT_NAME (sym));
12992 ui_out_text (uiout, " at ");
12993 }
12994 ui_out_field_string (uiout, "file", sal2.symtab->filename);
12995 ui_out_text (uiout, ":");
12996
12997 if (ui_out_is_mi_like_p (uiout))
12998 {
12999 char *fullname = symtab_to_fullname (sal2.symtab);
13000
13001 if (fullname)
13002 ui_out_field_string (uiout, "fullname", fullname);
13003 }
13004
13005 ui_out_field_int (uiout, "line", sal2.line);
13006 ui_out_text (uiout, "\n");
13007
13008 b->loc->line_number = sal2.line;
13009
13010 xfree (b->loc->source_file);
13011 if (sym)
13012 b->loc->source_file = xstrdup (sal2.symtab->filename);
13013 else
13014 b->loc->source_file = NULL;
13015
13016 xfree (b->addr_string);
13017 b->addr_string = xstrprintf ("%s:%d",
13018 sal2.symtab->filename,
13019 b->loc->line_number);
13020
13021 /* Might be nice to check if function changed, and warn if
13022 so. */
13023
13024 release_static_tracepoint_marker (tpmarker);
13025 }
13026 }
13027 return sal;
13028 }
13029
13030 /* Returns 1 iff locations A and B are sufficiently same that
13031 we don't need to report breakpoint as changed. */
13032
13033 static int
13034 locations_are_equal (struct bp_location *a, struct bp_location *b)
13035 {
13036 while (a && b)
13037 {
13038 if (a->address != b->address)
13039 return 0;
13040
13041 if (a->shlib_disabled != b->shlib_disabled)
13042 return 0;
13043
13044 if (a->enabled != b->enabled)
13045 return 0;
13046
13047 a = a->next;
13048 b = b->next;
13049 }
13050
13051 if ((a == NULL) != (b == NULL))
13052 return 0;
13053
13054 return 1;
13055 }
13056
13057 /* Create new breakpoint locations for B (a hardware or software breakpoint)
13058 based on SALS and SALS_END. If SALS_END.NELTS is not zero, then B is
13059 a ranged breakpoint. */
13060
13061 void
13062 update_breakpoint_locations (struct breakpoint *b,
13063 struct symtabs_and_lines sals,
13064 struct symtabs_and_lines sals_end)
13065 {
13066 int i;
13067 struct bp_location *existing_locations = b->loc;
13068
13069 if (sals_end.nelts != 0 && (sals.nelts != 1 || sals_end.nelts != 1))
13070 {
13071 /* Ranged breakpoints have only one start location and one end
13072 location. */
13073 b->enable_state = bp_disabled;
13074 update_global_location_list (1);
13075 printf_unfiltered (_("Could not reset ranged breakpoint %d: "
13076 "multiple locations found\n"),
13077 b->number);
13078 return;
13079 }
13080
13081 /* If there's no new locations, and all existing locations are
13082 pending, don't do anything. This optimizes the common case where
13083 all locations are in the same shared library, that was unloaded.
13084 We'd like to retain the location, so that when the library is
13085 loaded again, we don't loose the enabled/disabled status of the
13086 individual locations. */
13087 if (all_locations_are_pending (existing_locations) && sals.nelts == 0)
13088 return;
13089
13090 b->loc = NULL;
13091
13092 for (i = 0; i < sals.nelts; ++i)
13093 {
13094 struct bp_location *new_loc;
13095
13096 switch_to_program_space_and_thread (sals.sals[i].pspace);
13097
13098 new_loc = add_location_to_breakpoint (b, &(sals.sals[i]));
13099
13100 /* Reparse conditions, they might contain references to the
13101 old symtab. */
13102 if (b->cond_string != NULL)
13103 {
13104 char *s;
13105 volatile struct gdb_exception e;
13106
13107 s = b->cond_string;
13108 TRY_CATCH (e, RETURN_MASK_ERROR)
13109 {
13110 new_loc->cond = parse_exp_1 (&s, block_for_pc (sals.sals[i].pc),
13111 0);
13112 }
13113 if (e.reason < 0)
13114 {
13115 warning (_("failed to reevaluate condition "
13116 "for breakpoint %d: %s"),
13117 b->number, e.message);
13118 new_loc->enabled = 0;
13119 }
13120 }
13121
13122 if (sals_end.nelts)
13123 {
13124 CORE_ADDR end = find_breakpoint_range_end (sals_end.sals[0]);
13125
13126 new_loc->length = end - sals.sals[0].pc + 1;
13127 }
13128 }
13129
13130 /* Update locations of permanent breakpoints. */
13131 if (b->enable_state == bp_permanent)
13132 make_breakpoint_permanent (b);
13133
13134 /* If possible, carry over 'disable' status from existing
13135 breakpoints. */
13136 {
13137 struct bp_location *e = existing_locations;
13138 /* If there are multiple breakpoints with the same function name,
13139 e.g. for inline functions, comparing function names won't work.
13140 Instead compare pc addresses; this is just a heuristic as things
13141 may have moved, but in practice it gives the correct answer
13142 often enough until a better solution is found. */
13143 int have_ambiguous_names = ambiguous_names_p (b->loc);
13144
13145 for (; e; e = e->next)
13146 {
13147 if (!e->enabled && e->function_name)
13148 {
13149 struct bp_location *l = b->loc;
13150 if (have_ambiguous_names)
13151 {
13152 for (; l; l = l->next)
13153 if (breakpoint_locations_match (e, l))
13154 {
13155 l->enabled = 0;
13156 break;
13157 }
13158 }
13159 else
13160 {
13161 for (; l; l = l->next)
13162 if (l->function_name
13163 && strcmp (e->function_name, l->function_name) == 0)
13164 {
13165 l->enabled = 0;
13166 break;
13167 }
13168 }
13169 }
13170 }
13171 }
13172
13173 if (!locations_are_equal (existing_locations, b->loc))
13174 observer_notify_breakpoint_modified (b);
13175
13176 update_global_location_list (1);
13177 }
13178
13179 /* Find the SaL locations corresponding to the given ADDR_STRING.
13180 On return, FOUND will be 1 if any SaL was found, zero otherwise. */
13181
13182 static struct symtabs_and_lines
13183 addr_string_to_sals (struct breakpoint *b, char *addr_string, int *found)
13184 {
13185 char *s;
13186 struct symtabs_and_lines sals = {0};
13187 volatile struct gdb_exception e;
13188
13189 gdb_assert (b->ops != NULL);
13190 s = addr_string;
13191
13192 TRY_CATCH (e, RETURN_MASK_ERROR)
13193 {
13194 b->ops->decode_linespec (b, &s, &sals);
13195 }
13196 if (e.reason < 0)
13197 {
13198 int not_found_and_ok = 0;
13199 /* For pending breakpoints, it's expected that parsing will
13200 fail until the right shared library is loaded. User has
13201 already told to create pending breakpoints and don't need
13202 extra messages. If breakpoint is in bp_shlib_disabled
13203 state, then user already saw the message about that
13204 breakpoint being disabled, and don't want to see more
13205 errors. */
13206 if (e.error == NOT_FOUND_ERROR
13207 && (b->condition_not_parsed
13208 || (b->loc && b->loc->shlib_disabled)
13209 || (b->loc && b->loc->pspace->executing_startup)
13210 || b->enable_state == bp_disabled))
13211 not_found_and_ok = 1;
13212
13213 if (!not_found_and_ok)
13214 {
13215 /* We surely don't want to warn about the same breakpoint
13216 10 times. One solution, implemented here, is disable
13217 the breakpoint on error. Another solution would be to
13218 have separate 'warning emitted' flag. Since this
13219 happens only when a binary has changed, I don't know
13220 which approach is better. */
13221 b->enable_state = bp_disabled;
13222 throw_exception (e);
13223 }
13224 }
13225
13226 if (e.reason == 0 || e.error != NOT_FOUND_ERROR)
13227 {
13228 int i;
13229
13230 for (i = 0; i < sals.nelts; ++i)
13231 resolve_sal_pc (&sals.sals[i]);
13232 if (b->condition_not_parsed && s && s[0])
13233 {
13234 char *cond_string = 0;
13235 int thread = -1;
13236 int task = 0;
13237
13238 find_condition_and_thread (s, sals.sals[0].pc,
13239 &cond_string, &thread, &task);
13240 if (cond_string)
13241 b->cond_string = cond_string;
13242 b->thread = thread;
13243 b->task = task;
13244 b->condition_not_parsed = 0;
13245 }
13246
13247 if (b->type == bp_static_tracepoint && !strace_marker_p (b))
13248 sals.sals[0] = update_static_tracepoint (b, sals.sals[0]);
13249
13250 *found = 1;
13251 }
13252 else
13253 *found = 0;
13254
13255 return sals;
13256 }
13257
13258 /* The default re_set method, for typical hardware or software
13259 breakpoints. Reevaluate the breakpoint and recreate its
13260 locations. */
13261
13262 static void
13263 breakpoint_re_set_default (struct breakpoint *b)
13264 {
13265 int found;
13266 struct symtabs_and_lines sals, sals_end;
13267 struct symtabs_and_lines expanded = {0};
13268 struct symtabs_and_lines expanded_end = {0};
13269
13270 sals = addr_string_to_sals (b, b->addr_string, &found);
13271 if (found)
13272 {
13273 make_cleanup (xfree, sals.sals);
13274 expanded = sals;
13275 }
13276
13277 if (b->addr_string_range_end)
13278 {
13279 sals_end = addr_string_to_sals (b, b->addr_string_range_end, &found);
13280 if (found)
13281 {
13282 make_cleanup (xfree, sals_end.sals);
13283 expanded_end = sals_end;
13284 }
13285 }
13286
13287 update_breakpoint_locations (b, expanded, expanded_end);
13288 }
13289
13290 /* Default method for creating SALs from an address string. It basically
13291 calls parse_breakpoint_sals. Return 1 for success, zero for failure. */
13292
13293 static void
13294 create_sals_from_address_default (char **arg,
13295 struct linespec_result *canonical,
13296 enum bptype type_wanted,
13297 char *addr_start, char **copy_arg)
13298 {
13299 parse_breakpoint_sals (arg, canonical);
13300 }
13301
13302 /* Call create_breakpoints_sal for the given arguments. This is the default
13303 function for the `create_breakpoints_sal' method of
13304 breakpoint_ops. */
13305
13306 static void
13307 create_breakpoints_sal_default (struct gdbarch *gdbarch,
13308 struct linespec_result *canonical,
13309 struct linespec_sals *lsal,
13310 char *cond_string,
13311 enum bptype type_wanted,
13312 enum bpdisp disposition,
13313 int thread,
13314 int task, int ignore_count,
13315 const struct breakpoint_ops *ops,
13316 int from_tty, int enabled,
13317 int internal, unsigned flags)
13318 {
13319 create_breakpoints_sal (gdbarch, canonical, cond_string,
13320 type_wanted, disposition,
13321 thread, task, ignore_count, ops, from_tty,
13322 enabled, internal, flags);
13323 }
13324
13325 /* Decode the line represented by S by calling decode_line_full. This is the
13326 default function for the `decode_linespec' method of breakpoint_ops. */
13327
13328 static void
13329 decode_linespec_default (struct breakpoint *b, char **s,
13330 struct symtabs_and_lines *sals)
13331 {
13332 struct linespec_result canonical;
13333
13334 init_linespec_result (&canonical);
13335 decode_line_full (s, DECODE_LINE_FUNFIRSTLINE,
13336 (struct symtab *) NULL, 0,
13337 &canonical, multiple_symbols_all,
13338 b->filter);
13339
13340 /* We should get 0 or 1 resulting SALs. */
13341 gdb_assert (VEC_length (linespec_sals, canonical.sals) < 2);
13342
13343 if (VEC_length (linespec_sals, canonical.sals) > 0)
13344 {
13345 struct linespec_sals *lsal;
13346
13347 lsal = VEC_index (linespec_sals, canonical.sals, 0);
13348 *sals = lsal->sals;
13349 /* Arrange it so the destructor does not free the
13350 contents. */
13351 lsal->sals.sals = NULL;
13352 }
13353
13354 destroy_linespec_result (&canonical);
13355 }
13356
13357 /* Prepare the global context for a re-set of breakpoint B. */
13358
13359 static struct cleanup *
13360 prepare_re_set_context (struct breakpoint *b)
13361 {
13362 struct cleanup *cleanups;
13363
13364 input_radix = b->input_radix;
13365 cleanups = save_current_space_and_thread ();
13366 if (b->pspace != NULL)
13367 switch_to_program_space_and_thread (b->pspace);
13368 set_language (b->language);
13369
13370 return cleanups;
13371 }
13372
13373 /* Reset a breakpoint given it's struct breakpoint * BINT.
13374 The value we return ends up being the return value from catch_errors.
13375 Unused in this case. */
13376
13377 static int
13378 breakpoint_re_set_one (void *bint)
13379 {
13380 /* Get past catch_errs. */
13381 struct breakpoint *b = (struct breakpoint *) bint;
13382 struct cleanup *cleanups;
13383
13384 cleanups = prepare_re_set_context (b);
13385 b->ops->re_set (b);
13386 do_cleanups (cleanups);
13387 return 0;
13388 }
13389
13390 /* Re-set all breakpoints after symbols have been re-loaded. */
13391 void
13392 breakpoint_re_set (void)
13393 {
13394 struct breakpoint *b, *b_tmp;
13395 enum language save_language;
13396 int save_input_radix;
13397 struct cleanup *old_chain;
13398
13399 save_language = current_language->la_language;
13400 save_input_radix = input_radix;
13401 old_chain = save_current_program_space ();
13402
13403 ALL_BREAKPOINTS_SAFE (b, b_tmp)
13404 {
13405 /* Format possible error msg. */
13406 char *message = xstrprintf ("Error in re-setting breakpoint %d: ",
13407 b->number);
13408 struct cleanup *cleanups = make_cleanup (xfree, message);
13409 catch_errors (breakpoint_re_set_one, b, message, RETURN_MASK_ALL);
13410 do_cleanups (cleanups);
13411 }
13412 set_language (save_language);
13413 input_radix = save_input_radix;
13414
13415 jit_breakpoint_re_set ();
13416
13417 do_cleanups (old_chain);
13418
13419 create_overlay_event_breakpoint ();
13420 create_longjmp_master_breakpoint ();
13421 create_std_terminate_master_breakpoint ();
13422 create_exception_master_breakpoint ();
13423
13424 /* While we're at it, reset the skip list too. */
13425 skip_re_set ();
13426 }
13427 \f
13428 /* Reset the thread number of this breakpoint:
13429
13430 - If the breakpoint is for all threads, leave it as-is.
13431 - Else, reset it to the current thread for inferior_ptid. */
13432 void
13433 breakpoint_re_set_thread (struct breakpoint *b)
13434 {
13435 if (b->thread != -1)
13436 {
13437 if (in_thread_list (inferior_ptid))
13438 b->thread = pid_to_thread_id (inferior_ptid);
13439
13440 /* We're being called after following a fork. The new fork is
13441 selected as current, and unless this was a vfork will have a
13442 different program space from the original thread. Reset that
13443 as well. */
13444 b->loc->pspace = current_program_space;
13445 }
13446 }
13447
13448 /* Set ignore-count of breakpoint number BPTNUM to COUNT.
13449 If from_tty is nonzero, it prints a message to that effect,
13450 which ends with a period (no newline). */
13451
13452 void
13453 set_ignore_count (int bptnum, int count, int from_tty)
13454 {
13455 struct breakpoint *b;
13456
13457 if (count < 0)
13458 count = 0;
13459
13460 ALL_BREAKPOINTS (b)
13461 if (b->number == bptnum)
13462 {
13463 if (is_tracepoint (b))
13464 {
13465 if (from_tty && count != 0)
13466 printf_filtered (_("Ignore count ignored for tracepoint %d."),
13467 bptnum);
13468 return;
13469 }
13470
13471 b->ignore_count = count;
13472 if (from_tty)
13473 {
13474 if (count == 0)
13475 printf_filtered (_("Will stop next time "
13476 "breakpoint %d is reached."),
13477 bptnum);
13478 else if (count == 1)
13479 printf_filtered (_("Will ignore next crossing of breakpoint %d."),
13480 bptnum);
13481 else
13482 printf_filtered (_("Will ignore next %d "
13483 "crossings of breakpoint %d."),
13484 count, bptnum);
13485 }
13486 breakpoints_changed ();
13487 observer_notify_breakpoint_modified (b);
13488 return;
13489 }
13490
13491 error (_("No breakpoint number %d."), bptnum);
13492 }
13493
13494 /* Command to set ignore-count of breakpoint N to COUNT. */
13495
13496 static void
13497 ignore_command (char *args, int from_tty)
13498 {
13499 char *p = args;
13500 int num;
13501
13502 if (p == 0)
13503 error_no_arg (_("a breakpoint number"));
13504
13505 num = get_number (&p);
13506 if (num == 0)
13507 error (_("bad breakpoint number: '%s'"), args);
13508 if (*p == 0)
13509 error (_("Second argument (specified ignore-count) is missing."));
13510
13511 set_ignore_count (num,
13512 longest_to_int (value_as_long (parse_and_eval (p))),
13513 from_tty);
13514 if (from_tty)
13515 printf_filtered ("\n");
13516 }
13517 \f
13518 /* Call FUNCTION on each of the breakpoints
13519 whose numbers are given in ARGS. */
13520
13521 static void
13522 map_breakpoint_numbers (char *args, void (*function) (struct breakpoint *,
13523 void *),
13524 void *data)
13525 {
13526 int num;
13527 struct breakpoint *b, *tmp;
13528 int match;
13529 struct get_number_or_range_state state;
13530
13531 if (args == 0)
13532 error_no_arg (_("one or more breakpoint numbers"));
13533
13534 init_number_or_range (&state, args);
13535
13536 while (!state.finished)
13537 {
13538 char *p = state.string;
13539
13540 match = 0;
13541
13542 num = get_number_or_range (&state);
13543 if (num == 0)
13544 {
13545 warning (_("bad breakpoint number at or near '%s'"), p);
13546 }
13547 else
13548 {
13549 ALL_BREAKPOINTS_SAFE (b, tmp)
13550 if (b->number == num)
13551 {
13552 match = 1;
13553 function (b, data);
13554 break;
13555 }
13556 if (match == 0)
13557 printf_unfiltered (_("No breakpoint number %d.\n"), num);
13558 }
13559 }
13560 }
13561
13562 static struct bp_location *
13563 find_location_by_number (char *number)
13564 {
13565 char *dot = strchr (number, '.');
13566 char *p1;
13567 int bp_num;
13568 int loc_num;
13569 struct breakpoint *b;
13570 struct bp_location *loc;
13571
13572 *dot = '\0';
13573
13574 p1 = number;
13575 bp_num = get_number (&p1);
13576 if (bp_num == 0)
13577 error (_("Bad breakpoint number '%s'"), number);
13578
13579 ALL_BREAKPOINTS (b)
13580 if (b->number == bp_num)
13581 {
13582 break;
13583 }
13584
13585 if (!b || b->number != bp_num)
13586 error (_("Bad breakpoint number '%s'"), number);
13587
13588 p1 = dot+1;
13589 loc_num = get_number (&p1);
13590 if (loc_num == 0)
13591 error (_("Bad breakpoint location number '%s'"), number);
13592
13593 --loc_num;
13594 loc = b->loc;
13595 for (;loc_num && loc; --loc_num, loc = loc->next)
13596 ;
13597 if (!loc)
13598 error (_("Bad breakpoint location number '%s'"), dot+1);
13599
13600 return loc;
13601 }
13602
13603
13604 /* Set ignore-count of breakpoint number BPTNUM to COUNT.
13605 If from_tty is nonzero, it prints a message to that effect,
13606 which ends with a period (no newline). */
13607
13608 void
13609 disable_breakpoint (struct breakpoint *bpt)
13610 {
13611 /* Never disable a watchpoint scope breakpoint; we want to
13612 hit them when we leave scope so we can delete both the
13613 watchpoint and its scope breakpoint at that time. */
13614 if (bpt->type == bp_watchpoint_scope)
13615 return;
13616
13617 /* You can't disable permanent breakpoints. */
13618 if (bpt->enable_state == bp_permanent)
13619 return;
13620
13621 bpt->enable_state = bp_disabled;
13622
13623 /* Mark breakpoint locations modified. */
13624 mark_breakpoint_modified (bpt);
13625
13626 if (target_supports_enable_disable_tracepoint ()
13627 && current_trace_status ()->running && is_tracepoint (bpt))
13628 {
13629 struct bp_location *location;
13630
13631 for (location = bpt->loc; location; location = location->next)
13632 target_disable_tracepoint (location);
13633 }
13634
13635 update_global_location_list (0);
13636
13637 observer_notify_breakpoint_modified (bpt);
13638 }
13639
13640 /* A callback for iterate_over_related_breakpoints. */
13641
13642 static void
13643 do_disable_breakpoint (struct breakpoint *b, void *ignore)
13644 {
13645 disable_breakpoint (b);
13646 }
13647
13648 /* A callback for map_breakpoint_numbers that calls
13649 disable_breakpoint. */
13650
13651 static void
13652 do_map_disable_breakpoint (struct breakpoint *b, void *ignore)
13653 {
13654 iterate_over_related_breakpoints (b, do_disable_breakpoint, NULL);
13655 }
13656
13657 static void
13658 disable_command (char *args, int from_tty)
13659 {
13660 if (args == 0)
13661 {
13662 struct breakpoint *bpt;
13663
13664 ALL_BREAKPOINTS (bpt)
13665 if (user_breakpoint_p (bpt))
13666 disable_breakpoint (bpt);
13667 }
13668 else if (strchr (args, '.'))
13669 {
13670 struct bp_location *loc = find_location_by_number (args);
13671 if (loc)
13672 {
13673 if (loc->enabled)
13674 {
13675 loc->enabled = 0;
13676 mark_breakpoint_location_modified (loc);
13677 }
13678 if (target_supports_enable_disable_tracepoint ()
13679 && current_trace_status ()->running && loc->owner
13680 && is_tracepoint (loc->owner))
13681 target_disable_tracepoint (loc);
13682 }
13683 update_global_location_list (0);
13684 }
13685 else
13686 map_breakpoint_numbers (args, do_map_disable_breakpoint, NULL);
13687 }
13688
13689 static void
13690 enable_breakpoint_disp (struct breakpoint *bpt, enum bpdisp disposition,
13691 int count)
13692 {
13693 int target_resources_ok;
13694
13695 if (bpt->type == bp_hardware_breakpoint)
13696 {
13697 int i;
13698 i = hw_breakpoint_used_count ();
13699 target_resources_ok =
13700 target_can_use_hardware_watchpoint (bp_hardware_breakpoint,
13701 i + 1, 0);
13702 if (target_resources_ok == 0)
13703 error (_("No hardware breakpoint support in the target."));
13704 else if (target_resources_ok < 0)
13705 error (_("Hardware breakpoints used exceeds limit."));
13706 }
13707
13708 if (is_watchpoint (bpt))
13709 {
13710 /* Initialize it just to avoid a GCC false warning. */
13711 enum enable_state orig_enable_state = 0;
13712 volatile struct gdb_exception e;
13713
13714 TRY_CATCH (e, RETURN_MASK_ALL)
13715 {
13716 struct watchpoint *w = (struct watchpoint *) bpt;
13717
13718 orig_enable_state = bpt->enable_state;
13719 bpt->enable_state = bp_enabled;
13720 update_watchpoint (w, 1 /* reparse */);
13721 }
13722 if (e.reason < 0)
13723 {
13724 bpt->enable_state = orig_enable_state;
13725 exception_fprintf (gdb_stderr, e, _("Cannot enable watchpoint %d: "),
13726 bpt->number);
13727 return;
13728 }
13729 }
13730
13731 if (bpt->enable_state != bp_permanent)
13732 bpt->enable_state = bp_enabled;
13733
13734 bpt->enable_state = bp_enabled;
13735
13736 /* Mark breakpoint locations modified. */
13737 mark_breakpoint_modified (bpt);
13738
13739 if (target_supports_enable_disable_tracepoint ()
13740 && current_trace_status ()->running && is_tracepoint (bpt))
13741 {
13742 struct bp_location *location;
13743
13744 for (location = bpt->loc; location; location = location->next)
13745 target_enable_tracepoint (location);
13746 }
13747
13748 bpt->disposition = disposition;
13749 bpt->enable_count = count;
13750 update_global_location_list (1);
13751 breakpoints_changed ();
13752
13753 observer_notify_breakpoint_modified (bpt);
13754 }
13755
13756
13757 void
13758 enable_breakpoint (struct breakpoint *bpt)
13759 {
13760 enable_breakpoint_disp (bpt, bpt->disposition, 0);
13761 }
13762
13763 static void
13764 do_enable_breakpoint (struct breakpoint *bpt, void *arg)
13765 {
13766 enable_breakpoint (bpt);
13767 }
13768
13769 /* A callback for map_breakpoint_numbers that calls
13770 enable_breakpoint. */
13771
13772 static void
13773 do_map_enable_breakpoint (struct breakpoint *b, void *ignore)
13774 {
13775 iterate_over_related_breakpoints (b, do_enable_breakpoint, NULL);
13776 }
13777
13778 /* The enable command enables the specified breakpoints (or all defined
13779 breakpoints) so they once again become (or continue to be) effective
13780 in stopping the inferior. */
13781
13782 static void
13783 enable_command (char *args, int from_tty)
13784 {
13785 if (args == 0)
13786 {
13787 struct breakpoint *bpt;
13788
13789 ALL_BREAKPOINTS (bpt)
13790 if (user_breakpoint_p (bpt))
13791 enable_breakpoint (bpt);
13792 }
13793 else if (strchr (args, '.'))
13794 {
13795 struct bp_location *loc = find_location_by_number (args);
13796 if (loc)
13797 {
13798 if (!loc->enabled)
13799 {
13800 loc->enabled = 1;
13801 mark_breakpoint_location_modified (loc);
13802 }
13803 if (target_supports_enable_disable_tracepoint ()
13804 && current_trace_status ()->running && loc->owner
13805 && is_tracepoint (loc->owner))
13806 target_enable_tracepoint (loc);
13807 }
13808 update_global_location_list (1);
13809 }
13810 else
13811 map_breakpoint_numbers (args, do_map_enable_breakpoint, NULL);
13812 }
13813
13814 /* This struct packages up disposition data for application to multiple
13815 breakpoints. */
13816
13817 struct disp_data
13818 {
13819 enum bpdisp disp;
13820 int count;
13821 };
13822
13823 static void
13824 do_enable_breakpoint_disp (struct breakpoint *bpt, void *arg)
13825 {
13826 struct disp_data disp_data = *(struct disp_data *) arg;
13827
13828 enable_breakpoint_disp (bpt, disp_data.disp, disp_data.count);
13829 }
13830
13831 static void
13832 do_map_enable_once_breakpoint (struct breakpoint *bpt, void *ignore)
13833 {
13834 struct disp_data disp = { disp_disable, 1 };
13835
13836 iterate_over_related_breakpoints (bpt, do_enable_breakpoint_disp, &disp);
13837 }
13838
13839 static void
13840 enable_once_command (char *args, int from_tty)
13841 {
13842 map_breakpoint_numbers (args, do_map_enable_once_breakpoint, NULL);
13843 }
13844
13845 static void
13846 do_map_enable_count_breakpoint (struct breakpoint *bpt, void *countptr)
13847 {
13848 struct disp_data disp = { disp_disable, *(int *) countptr };
13849
13850 iterate_over_related_breakpoints (bpt, do_enable_breakpoint_disp, &disp);
13851 }
13852
13853 static void
13854 enable_count_command (char *args, int from_tty)
13855 {
13856 int count = get_number (&args);
13857
13858 map_breakpoint_numbers (args, do_map_enable_count_breakpoint, &count);
13859 }
13860
13861 static void
13862 do_map_enable_delete_breakpoint (struct breakpoint *bpt, void *ignore)
13863 {
13864 struct disp_data disp = { disp_del, 1 };
13865
13866 iterate_over_related_breakpoints (bpt, do_enable_breakpoint_disp, &disp);
13867 }
13868
13869 static void
13870 enable_delete_command (char *args, int from_tty)
13871 {
13872 map_breakpoint_numbers (args, do_map_enable_delete_breakpoint, NULL);
13873 }
13874 \f
13875 static void
13876 set_breakpoint_cmd (char *args, int from_tty)
13877 {
13878 }
13879
13880 static void
13881 show_breakpoint_cmd (char *args, int from_tty)
13882 {
13883 }
13884
13885 /* Invalidate last known value of any hardware watchpoint if
13886 the memory which that value represents has been written to by
13887 GDB itself. */
13888
13889 static void
13890 invalidate_bp_value_on_memory_change (CORE_ADDR addr, int len,
13891 const bfd_byte *data)
13892 {
13893 struct breakpoint *bp;
13894
13895 ALL_BREAKPOINTS (bp)
13896 if (bp->enable_state == bp_enabled
13897 && bp->type == bp_hardware_watchpoint)
13898 {
13899 struct watchpoint *wp = (struct watchpoint *) bp;
13900
13901 if (wp->val_valid && wp->val)
13902 {
13903 struct bp_location *loc;
13904
13905 for (loc = bp->loc; loc != NULL; loc = loc->next)
13906 if (loc->loc_type == bp_loc_hardware_watchpoint
13907 && loc->address + loc->length > addr
13908 && addr + len > loc->address)
13909 {
13910 value_free (wp->val);
13911 wp->val = NULL;
13912 wp->val_valid = 0;
13913 }
13914 }
13915 }
13916 }
13917
13918 /* Use the last displayed codepoint's values, or nothing
13919 if they aren't valid. */
13920
13921 struct symtabs_and_lines
13922 decode_line_spec_1 (char *string, int flags)
13923 {
13924 struct symtabs_and_lines sals;
13925
13926 if (string == 0)
13927 error (_("Empty line specification."));
13928 if (last_displayed_sal_is_valid ())
13929 sals = decode_line_1 (&string, flags,
13930 get_last_displayed_symtab (),
13931 get_last_displayed_line ());
13932 else
13933 sals = decode_line_1 (&string, flags, (struct symtab *) NULL, 0);
13934 if (*string)
13935 error (_("Junk at end of line specification: %s"), string);
13936 return sals;
13937 }
13938
13939 /* Create and insert a raw software breakpoint at PC. Return an
13940 identifier, which should be used to remove the breakpoint later.
13941 In general, places which call this should be using something on the
13942 breakpoint chain instead; this function should be eliminated
13943 someday. */
13944
13945 void *
13946 deprecated_insert_raw_breakpoint (struct gdbarch *gdbarch,
13947 struct address_space *aspace, CORE_ADDR pc)
13948 {
13949 struct bp_target_info *bp_tgt;
13950
13951 bp_tgt = XZALLOC (struct bp_target_info);
13952
13953 bp_tgt->placed_address_space = aspace;
13954 bp_tgt->placed_address = pc;
13955
13956 if (target_insert_breakpoint (gdbarch, bp_tgt) != 0)
13957 {
13958 /* Could not insert the breakpoint. */
13959 xfree (bp_tgt);
13960 return NULL;
13961 }
13962
13963 return bp_tgt;
13964 }
13965
13966 /* Remove a breakpoint BP inserted by
13967 deprecated_insert_raw_breakpoint. */
13968
13969 int
13970 deprecated_remove_raw_breakpoint (struct gdbarch *gdbarch, void *bp)
13971 {
13972 struct bp_target_info *bp_tgt = bp;
13973 int ret;
13974
13975 ret = target_remove_breakpoint (gdbarch, bp_tgt);
13976 xfree (bp_tgt);
13977
13978 return ret;
13979 }
13980
13981 /* One (or perhaps two) breakpoints used for software single
13982 stepping. */
13983
13984 static void *single_step_breakpoints[2];
13985 static struct gdbarch *single_step_gdbarch[2];
13986
13987 /* Create and insert a breakpoint for software single step. */
13988
13989 void
13990 insert_single_step_breakpoint (struct gdbarch *gdbarch,
13991 struct address_space *aspace,
13992 CORE_ADDR next_pc)
13993 {
13994 void **bpt_p;
13995
13996 if (single_step_breakpoints[0] == NULL)
13997 {
13998 bpt_p = &single_step_breakpoints[0];
13999 single_step_gdbarch[0] = gdbarch;
14000 }
14001 else
14002 {
14003 gdb_assert (single_step_breakpoints[1] == NULL);
14004 bpt_p = &single_step_breakpoints[1];
14005 single_step_gdbarch[1] = gdbarch;
14006 }
14007
14008 /* NOTE drow/2006-04-11: A future improvement to this function would
14009 be to only create the breakpoints once, and actually put them on
14010 the breakpoint chain. That would let us use set_raw_breakpoint.
14011 We could adjust the addresses each time they were needed. Doing
14012 this requires corresponding changes elsewhere where single step
14013 breakpoints are handled, however. So, for now, we use this. */
14014
14015 *bpt_p = deprecated_insert_raw_breakpoint (gdbarch, aspace, next_pc);
14016 if (*bpt_p == NULL)
14017 error (_("Could not insert single-step breakpoint at %s"),
14018 paddress (gdbarch, next_pc));
14019 }
14020
14021 /* Check if the breakpoints used for software single stepping
14022 were inserted or not. */
14023
14024 int
14025 single_step_breakpoints_inserted (void)
14026 {
14027 return (single_step_breakpoints[0] != NULL
14028 || single_step_breakpoints[1] != NULL);
14029 }
14030
14031 /* Remove and delete any breakpoints used for software single step. */
14032
14033 void
14034 remove_single_step_breakpoints (void)
14035 {
14036 gdb_assert (single_step_breakpoints[0] != NULL);
14037
14038 /* See insert_single_step_breakpoint for more about this deprecated
14039 call. */
14040 deprecated_remove_raw_breakpoint (single_step_gdbarch[0],
14041 single_step_breakpoints[0]);
14042 single_step_gdbarch[0] = NULL;
14043 single_step_breakpoints[0] = NULL;
14044
14045 if (single_step_breakpoints[1] != NULL)
14046 {
14047 deprecated_remove_raw_breakpoint (single_step_gdbarch[1],
14048 single_step_breakpoints[1]);
14049 single_step_gdbarch[1] = NULL;
14050 single_step_breakpoints[1] = NULL;
14051 }
14052 }
14053
14054 /* Delete software single step breakpoints without removing them from
14055 the inferior. This is intended to be used if the inferior's address
14056 space where they were inserted is already gone, e.g. after exit or
14057 exec. */
14058
14059 void
14060 cancel_single_step_breakpoints (void)
14061 {
14062 int i;
14063
14064 for (i = 0; i < 2; i++)
14065 if (single_step_breakpoints[i])
14066 {
14067 xfree (single_step_breakpoints[i]);
14068 single_step_breakpoints[i] = NULL;
14069 single_step_gdbarch[i] = NULL;
14070 }
14071 }
14072
14073 /* Detach software single-step breakpoints from INFERIOR_PTID without
14074 removing them. */
14075
14076 static void
14077 detach_single_step_breakpoints (void)
14078 {
14079 int i;
14080
14081 for (i = 0; i < 2; i++)
14082 if (single_step_breakpoints[i])
14083 target_remove_breakpoint (single_step_gdbarch[i],
14084 single_step_breakpoints[i]);
14085 }
14086
14087 /* Check whether a software single-step breakpoint is inserted at
14088 PC. */
14089
14090 static int
14091 single_step_breakpoint_inserted_here_p (struct address_space *aspace,
14092 CORE_ADDR pc)
14093 {
14094 int i;
14095
14096 for (i = 0; i < 2; i++)
14097 {
14098 struct bp_target_info *bp_tgt = single_step_breakpoints[i];
14099 if (bp_tgt
14100 && breakpoint_address_match (bp_tgt->placed_address_space,
14101 bp_tgt->placed_address,
14102 aspace, pc))
14103 return 1;
14104 }
14105
14106 return 0;
14107 }
14108
14109 /* Returns 0 if 'bp' is NOT a syscall catchpoint,
14110 non-zero otherwise. */
14111 static int
14112 is_syscall_catchpoint_enabled (struct breakpoint *bp)
14113 {
14114 if (syscall_catchpoint_p (bp)
14115 && bp->enable_state != bp_disabled
14116 && bp->enable_state != bp_call_disabled)
14117 return 1;
14118 else
14119 return 0;
14120 }
14121
14122 int
14123 catch_syscall_enabled (void)
14124 {
14125 struct catch_syscall_inferior_data *inf_data
14126 = get_catch_syscall_inferior_data (current_inferior ());
14127
14128 return inf_data->total_syscalls_count != 0;
14129 }
14130
14131 int
14132 catching_syscall_number (int syscall_number)
14133 {
14134 struct breakpoint *bp;
14135
14136 ALL_BREAKPOINTS (bp)
14137 if (is_syscall_catchpoint_enabled (bp))
14138 {
14139 struct syscall_catchpoint *c = (struct syscall_catchpoint *) bp;
14140
14141 if (c->syscalls_to_be_caught)
14142 {
14143 int i, iter;
14144 for (i = 0;
14145 VEC_iterate (int, c->syscalls_to_be_caught, i, iter);
14146 i++)
14147 if (syscall_number == iter)
14148 return 1;
14149 }
14150 else
14151 return 1;
14152 }
14153
14154 return 0;
14155 }
14156
14157 /* Complete syscall names. Used by "catch syscall". */
14158 static char **
14159 catch_syscall_completer (struct cmd_list_element *cmd,
14160 char *text, char *word)
14161 {
14162 const char **list = get_syscall_names ();
14163 char **retlist
14164 = (list == NULL) ? NULL : complete_on_enum (list, text, word);
14165
14166 xfree (list);
14167 return retlist;
14168 }
14169
14170 /* Tracepoint-specific operations. */
14171
14172 /* Set tracepoint count to NUM. */
14173 static void
14174 set_tracepoint_count (int num)
14175 {
14176 tracepoint_count = num;
14177 set_internalvar_integer (lookup_internalvar ("tpnum"), num);
14178 }
14179
14180 static void
14181 trace_command (char *arg, int from_tty)
14182 {
14183 if (create_breakpoint (get_current_arch (),
14184 arg,
14185 NULL, 0, 1 /* parse arg */,
14186 0 /* tempflag */,
14187 bp_tracepoint /* type_wanted */,
14188 0 /* Ignore count */,
14189 pending_break_support,
14190 &tracepoint_breakpoint_ops,
14191 from_tty,
14192 1 /* enabled */,
14193 0 /* internal */, 0))
14194 set_tracepoint_count (breakpoint_count);
14195 }
14196
14197 static void
14198 ftrace_command (char *arg, int from_tty)
14199 {
14200 if (create_breakpoint (get_current_arch (),
14201 arg,
14202 NULL, 0, 1 /* parse arg */,
14203 0 /* tempflag */,
14204 bp_fast_tracepoint /* type_wanted */,
14205 0 /* Ignore count */,
14206 pending_break_support,
14207 &tracepoint_breakpoint_ops,
14208 from_tty,
14209 1 /* enabled */,
14210 0 /* internal */, 0))
14211 set_tracepoint_count (breakpoint_count);
14212 }
14213
14214 /* strace command implementation. Creates a static tracepoint. */
14215
14216 static void
14217 strace_command (char *arg, int from_tty)
14218 {
14219 struct breakpoint_ops *ops;
14220
14221 /* Decide if we are dealing with a static tracepoint marker (`-m'),
14222 or with a normal static tracepoint. */
14223 if (arg && strncmp (arg, "-m", 2) == 0 && isspace (arg[2]))
14224 ops = &strace_marker_breakpoint_ops;
14225 else
14226 ops = &tracepoint_breakpoint_ops;
14227
14228 if (create_breakpoint (get_current_arch (),
14229 arg,
14230 NULL, 0, 1 /* parse arg */,
14231 0 /* tempflag */,
14232 bp_static_tracepoint /* type_wanted */,
14233 0 /* Ignore count */,
14234 pending_break_support,
14235 ops,
14236 from_tty,
14237 1 /* enabled */,
14238 0 /* internal */, 0))
14239 set_tracepoint_count (breakpoint_count);
14240 }
14241
14242 /* Set up a fake reader function that gets command lines from a linked
14243 list that was acquired during tracepoint uploading. */
14244
14245 static struct uploaded_tp *this_utp;
14246 static int next_cmd;
14247
14248 static char *
14249 read_uploaded_action (void)
14250 {
14251 char *rslt;
14252
14253 VEC_iterate (char_ptr, this_utp->cmd_strings, next_cmd, rslt);
14254
14255 next_cmd++;
14256
14257 return rslt;
14258 }
14259
14260 /* Given information about a tracepoint as recorded on a target (which
14261 can be either a live system or a trace file), attempt to create an
14262 equivalent GDB tracepoint. This is not a reliable process, since
14263 the target does not necessarily have all the information used when
14264 the tracepoint was originally defined. */
14265
14266 struct tracepoint *
14267 create_tracepoint_from_upload (struct uploaded_tp *utp)
14268 {
14269 char *addr_str, small_buf[100];
14270 struct tracepoint *tp;
14271
14272 if (utp->at_string)
14273 addr_str = utp->at_string;
14274 else
14275 {
14276 /* In the absence of a source location, fall back to raw
14277 address. Since there is no way to confirm that the address
14278 means the same thing as when the trace was started, warn the
14279 user. */
14280 warning (_("Uploaded tracepoint %d has no "
14281 "source location, using raw address"),
14282 utp->number);
14283 sprintf (small_buf, "*%s", hex_string (utp->addr));
14284 addr_str = small_buf;
14285 }
14286
14287 /* There's not much we can do with a sequence of bytecodes. */
14288 if (utp->cond && !utp->cond_string)
14289 warning (_("Uploaded tracepoint %d condition "
14290 "has no source form, ignoring it"),
14291 utp->number);
14292
14293 if (!create_breakpoint (get_current_arch (),
14294 addr_str,
14295 utp->cond_string, -1, 0 /* parse cond/thread */,
14296 0 /* tempflag */,
14297 utp->type /* type_wanted */,
14298 0 /* Ignore count */,
14299 pending_break_support,
14300 &tracepoint_breakpoint_ops,
14301 0 /* from_tty */,
14302 utp->enabled /* enabled */,
14303 0 /* internal */,
14304 CREATE_BREAKPOINT_FLAGS_INSERTED))
14305 return NULL;
14306
14307 set_tracepoint_count (breakpoint_count);
14308
14309 /* Get the tracepoint we just created. */
14310 tp = get_tracepoint (tracepoint_count);
14311 gdb_assert (tp != NULL);
14312
14313 if (utp->pass > 0)
14314 {
14315 sprintf (small_buf, "%d %d", utp->pass, tp->base.number);
14316
14317 trace_pass_command (small_buf, 0);
14318 }
14319
14320 /* If we have uploaded versions of the original commands, set up a
14321 special-purpose "reader" function and call the usual command line
14322 reader, then pass the result to the breakpoint command-setting
14323 function. */
14324 if (!VEC_empty (char_ptr, utp->cmd_strings))
14325 {
14326 struct command_line *cmd_list;
14327
14328 this_utp = utp;
14329 next_cmd = 0;
14330
14331 cmd_list = read_command_lines_1 (read_uploaded_action, 1, NULL, NULL);
14332
14333 breakpoint_set_commands (&tp->base, cmd_list);
14334 }
14335 else if (!VEC_empty (char_ptr, utp->actions)
14336 || !VEC_empty (char_ptr, utp->step_actions))
14337 warning (_("Uploaded tracepoint %d actions "
14338 "have no source form, ignoring them"),
14339 utp->number);
14340
14341 /* Copy any status information that might be available. */
14342 tp->base.hit_count = utp->hit_count;
14343 tp->traceframe_usage = utp->traceframe_usage;
14344
14345 return tp;
14346 }
14347
14348 /* Print information on tracepoint number TPNUM_EXP, or all if
14349 omitted. */
14350
14351 static void
14352 tracepoints_info (char *args, int from_tty)
14353 {
14354 struct ui_out *uiout = current_uiout;
14355 int num_printed;
14356
14357 num_printed = breakpoint_1 (args, 0, is_tracepoint);
14358
14359 if (num_printed == 0)
14360 {
14361 if (args == NULL || *args == '\0')
14362 ui_out_message (uiout, 0, "No tracepoints.\n");
14363 else
14364 ui_out_message (uiout, 0, "No tracepoint matching '%s'.\n", args);
14365 }
14366
14367 default_collect_info ();
14368 }
14369
14370 /* The 'enable trace' command enables tracepoints.
14371 Not supported by all targets. */
14372 static void
14373 enable_trace_command (char *args, int from_tty)
14374 {
14375 enable_command (args, from_tty);
14376 }
14377
14378 /* The 'disable trace' command disables tracepoints.
14379 Not supported by all targets. */
14380 static void
14381 disable_trace_command (char *args, int from_tty)
14382 {
14383 disable_command (args, from_tty);
14384 }
14385
14386 /* Remove a tracepoint (or all if no argument). */
14387 static void
14388 delete_trace_command (char *arg, int from_tty)
14389 {
14390 struct breakpoint *b, *b_tmp;
14391
14392 dont_repeat ();
14393
14394 if (arg == 0)
14395 {
14396 int breaks_to_delete = 0;
14397
14398 /* Delete all breakpoints if no argument.
14399 Do not delete internal or call-dummy breakpoints, these
14400 have to be deleted with an explicit breakpoint number
14401 argument. */
14402 ALL_TRACEPOINTS (b)
14403 if (is_tracepoint (b) && user_breakpoint_p (b))
14404 {
14405 breaks_to_delete = 1;
14406 break;
14407 }
14408
14409 /* Ask user only if there are some breakpoints to delete. */
14410 if (!from_tty
14411 || (breaks_to_delete && query (_("Delete all tracepoints? "))))
14412 {
14413 ALL_BREAKPOINTS_SAFE (b, b_tmp)
14414 if (is_tracepoint (b) && user_breakpoint_p (b))
14415 delete_breakpoint (b);
14416 }
14417 }
14418 else
14419 map_breakpoint_numbers (arg, do_map_delete_breakpoint, NULL);
14420 }
14421
14422 /* Helper function for trace_pass_command. */
14423
14424 static void
14425 trace_pass_set_count (struct tracepoint *tp, int count, int from_tty)
14426 {
14427 tp->pass_count = count;
14428 observer_notify_tracepoint_modified (tp->base.number);
14429 if (from_tty)
14430 printf_filtered (_("Setting tracepoint %d's passcount to %d\n"),
14431 tp->base.number, count);
14432 }
14433
14434 /* Set passcount for tracepoint.
14435
14436 First command argument is passcount, second is tracepoint number.
14437 If tracepoint number omitted, apply to most recently defined.
14438 Also accepts special argument "all". */
14439
14440 static void
14441 trace_pass_command (char *args, int from_tty)
14442 {
14443 struct tracepoint *t1;
14444 unsigned int count;
14445
14446 if (args == 0 || *args == 0)
14447 error (_("passcount command requires an "
14448 "argument (count + optional TP num)"));
14449
14450 count = strtoul (args, &args, 10); /* Count comes first, then TP num. */
14451
14452 while (*args && isspace ((int) *args))
14453 args++;
14454
14455 if (*args && strncasecmp (args, "all", 3) == 0)
14456 {
14457 struct breakpoint *b;
14458
14459 args += 3; /* Skip special argument "all". */
14460 if (*args)
14461 error (_("Junk at end of arguments."));
14462
14463 ALL_TRACEPOINTS (b)
14464 {
14465 t1 = (struct tracepoint *) b;
14466 trace_pass_set_count (t1, count, from_tty);
14467 }
14468 }
14469 else if (*args == '\0')
14470 {
14471 t1 = get_tracepoint_by_number (&args, NULL, 1);
14472 if (t1)
14473 trace_pass_set_count (t1, count, from_tty);
14474 }
14475 else
14476 {
14477 struct get_number_or_range_state state;
14478
14479 init_number_or_range (&state, args);
14480 while (!state.finished)
14481 {
14482 t1 = get_tracepoint_by_number (&args, &state, 1);
14483 if (t1)
14484 trace_pass_set_count (t1, count, from_tty);
14485 }
14486 }
14487 }
14488
14489 struct tracepoint *
14490 get_tracepoint (int num)
14491 {
14492 struct breakpoint *t;
14493
14494 ALL_TRACEPOINTS (t)
14495 if (t->number == num)
14496 return (struct tracepoint *) t;
14497
14498 return NULL;
14499 }
14500
14501 /* Find the tracepoint with the given target-side number (which may be
14502 different from the tracepoint number after disconnecting and
14503 reconnecting). */
14504
14505 struct tracepoint *
14506 get_tracepoint_by_number_on_target (int num)
14507 {
14508 struct breakpoint *b;
14509
14510 ALL_TRACEPOINTS (b)
14511 {
14512 struct tracepoint *t = (struct tracepoint *) b;
14513
14514 if (t->number_on_target == num)
14515 return t;
14516 }
14517
14518 return NULL;
14519 }
14520
14521 /* Utility: parse a tracepoint number and look it up in the list.
14522 If STATE is not NULL, use, get_number_or_range_state and ignore ARG.
14523 If OPTIONAL_P is true, then if the argument is missing, the most
14524 recent tracepoint (tracepoint_count) is returned. */
14525 struct tracepoint *
14526 get_tracepoint_by_number (char **arg,
14527 struct get_number_or_range_state *state,
14528 int optional_p)
14529 {
14530 extern int tracepoint_count;
14531 struct breakpoint *t;
14532 int tpnum;
14533 char *instring = arg == NULL ? NULL : *arg;
14534
14535 if (state)
14536 {
14537 gdb_assert (!state->finished);
14538 tpnum = get_number_or_range (state);
14539 }
14540 else if (arg == NULL || *arg == NULL || ! **arg)
14541 {
14542 if (optional_p)
14543 tpnum = tracepoint_count;
14544 else
14545 error_no_arg (_("tracepoint number"));
14546 }
14547 else
14548 tpnum = get_number (arg);
14549
14550 if (tpnum <= 0)
14551 {
14552 if (instring && *instring)
14553 printf_filtered (_("bad tracepoint number at or near '%s'\n"),
14554 instring);
14555 else
14556 printf_filtered (_("Tracepoint argument missing "
14557 "and no previous tracepoint\n"));
14558 return NULL;
14559 }
14560
14561 ALL_TRACEPOINTS (t)
14562 if (t->number == tpnum)
14563 {
14564 return (struct tracepoint *) t;
14565 }
14566
14567 printf_unfiltered ("No tracepoint number %d.\n", tpnum);
14568 return NULL;
14569 }
14570
14571 void
14572 print_recreate_thread (struct breakpoint *b, struct ui_file *fp)
14573 {
14574 if (b->thread != -1)
14575 fprintf_unfiltered (fp, " thread %d", b->thread);
14576
14577 if (b->task != 0)
14578 fprintf_unfiltered (fp, " task %d", b->task);
14579
14580 fprintf_unfiltered (fp, "\n");
14581 }
14582
14583 /* Save information on user settable breakpoints (watchpoints, etc) to
14584 a new script file named FILENAME. If FILTER is non-NULL, call it
14585 on each breakpoint and only include the ones for which it returns
14586 non-zero. */
14587
14588 static void
14589 save_breakpoints (char *filename, int from_tty,
14590 int (*filter) (const struct breakpoint *))
14591 {
14592 struct breakpoint *tp;
14593 int any = 0;
14594 char *pathname;
14595 struct cleanup *cleanup;
14596 struct ui_file *fp;
14597 int extra_trace_bits = 0;
14598
14599 if (filename == 0 || *filename == 0)
14600 error (_("Argument required (file name in which to save)"));
14601
14602 /* See if we have anything to save. */
14603 ALL_BREAKPOINTS (tp)
14604 {
14605 /* Skip internal and momentary breakpoints. */
14606 if (!user_breakpoint_p (tp))
14607 continue;
14608
14609 /* If we have a filter, only save the breakpoints it accepts. */
14610 if (filter && !filter (tp))
14611 continue;
14612
14613 any = 1;
14614
14615 if (is_tracepoint (tp))
14616 {
14617 extra_trace_bits = 1;
14618
14619 /* We can stop searching. */
14620 break;
14621 }
14622 }
14623
14624 if (!any)
14625 {
14626 warning (_("Nothing to save."));
14627 return;
14628 }
14629
14630 pathname = tilde_expand (filename);
14631 cleanup = make_cleanup (xfree, pathname);
14632 fp = gdb_fopen (pathname, "w");
14633 if (!fp)
14634 error (_("Unable to open file '%s' for saving (%s)"),
14635 filename, safe_strerror (errno));
14636 make_cleanup_ui_file_delete (fp);
14637
14638 if (extra_trace_bits)
14639 save_trace_state_variables (fp);
14640
14641 ALL_BREAKPOINTS (tp)
14642 {
14643 /* Skip internal and momentary breakpoints. */
14644 if (!user_breakpoint_p (tp))
14645 continue;
14646
14647 /* If we have a filter, only save the breakpoints it accepts. */
14648 if (filter && !filter (tp))
14649 continue;
14650
14651 tp->ops->print_recreate (tp, fp);
14652
14653 /* Note, we can't rely on tp->number for anything, as we can't
14654 assume the recreated breakpoint numbers will match. Use $bpnum
14655 instead. */
14656
14657 if (tp->cond_string)
14658 fprintf_unfiltered (fp, " condition $bpnum %s\n", tp->cond_string);
14659
14660 if (tp->ignore_count)
14661 fprintf_unfiltered (fp, " ignore $bpnum %d\n", tp->ignore_count);
14662
14663 if (tp->commands)
14664 {
14665 volatile struct gdb_exception ex;
14666
14667 fprintf_unfiltered (fp, " commands\n");
14668
14669 ui_out_redirect (current_uiout, fp);
14670 TRY_CATCH (ex, RETURN_MASK_ALL)
14671 {
14672 print_command_lines (current_uiout, tp->commands->commands, 2);
14673 }
14674 ui_out_redirect (current_uiout, NULL);
14675
14676 if (ex.reason < 0)
14677 throw_exception (ex);
14678
14679 fprintf_unfiltered (fp, " end\n");
14680 }
14681
14682 if (tp->enable_state == bp_disabled)
14683 fprintf_unfiltered (fp, "disable\n");
14684
14685 /* If this is a multi-location breakpoint, check if the locations
14686 should be individually disabled. Watchpoint locations are
14687 special, and not user visible. */
14688 if (!is_watchpoint (tp) && tp->loc && tp->loc->next)
14689 {
14690 struct bp_location *loc;
14691 int n = 1;
14692
14693 for (loc = tp->loc; loc != NULL; loc = loc->next, n++)
14694 if (!loc->enabled)
14695 fprintf_unfiltered (fp, "disable $bpnum.%d\n", n);
14696 }
14697 }
14698
14699 if (extra_trace_bits && *default_collect)
14700 fprintf_unfiltered (fp, "set default-collect %s\n", default_collect);
14701
14702 do_cleanups (cleanup);
14703 if (from_tty)
14704 printf_filtered (_("Saved to file '%s'.\n"), filename);
14705 }
14706
14707 /* The `save breakpoints' command. */
14708
14709 static void
14710 save_breakpoints_command (char *args, int from_tty)
14711 {
14712 save_breakpoints (args, from_tty, NULL);
14713 }
14714
14715 /* The `save tracepoints' command. */
14716
14717 static void
14718 save_tracepoints_command (char *args, int from_tty)
14719 {
14720 save_breakpoints (args, from_tty, is_tracepoint);
14721 }
14722
14723 /* Create a vector of all tracepoints. */
14724
14725 VEC(breakpoint_p) *
14726 all_tracepoints (void)
14727 {
14728 VEC(breakpoint_p) *tp_vec = 0;
14729 struct breakpoint *tp;
14730
14731 ALL_TRACEPOINTS (tp)
14732 {
14733 VEC_safe_push (breakpoint_p, tp_vec, tp);
14734 }
14735
14736 return tp_vec;
14737 }
14738
14739 \f
14740 /* This help string is used for the break, hbreak, tbreak and thbreak
14741 commands. It is defined as a macro to prevent duplication.
14742 COMMAND should be a string constant containing the name of the
14743 command. */
14744 #define BREAK_ARGS_HELP(command) \
14745 command" [LOCATION] [thread THREADNUM] [if CONDITION]\n\
14746 LOCATION may be a line number, function name, or \"*\" and an address.\n\
14747 If a line number is specified, break at start of code for that line.\n\
14748 If a function is specified, break at start of code for that function.\n\
14749 If an address is specified, break at that exact address.\n\
14750 With no LOCATION, uses current execution address of the selected\n\
14751 stack frame. This is useful for breaking on return to a stack frame.\n\
14752 \n\
14753 THREADNUM is the number from \"info threads\".\n\
14754 CONDITION is a boolean expression.\n\
14755 \n\
14756 Multiple breakpoints at one place are permitted, and useful if their\n\
14757 conditions are different.\n\
14758 \n\
14759 Do \"help breakpoints\" for info on other commands dealing with breakpoints."
14760
14761 /* List of subcommands for "catch". */
14762 static struct cmd_list_element *catch_cmdlist;
14763
14764 /* List of subcommands for "tcatch". */
14765 static struct cmd_list_element *tcatch_cmdlist;
14766
14767 void
14768 add_catch_command (char *name, char *docstring,
14769 void (*sfunc) (char *args, int from_tty,
14770 struct cmd_list_element *command),
14771 char **(*completer) (struct cmd_list_element *cmd,
14772 char *text, char *word),
14773 void *user_data_catch,
14774 void *user_data_tcatch)
14775 {
14776 struct cmd_list_element *command;
14777
14778 command = add_cmd (name, class_breakpoint, NULL, docstring,
14779 &catch_cmdlist);
14780 set_cmd_sfunc (command, sfunc);
14781 set_cmd_context (command, user_data_catch);
14782 set_cmd_completer (command, completer);
14783
14784 command = add_cmd (name, class_breakpoint, NULL, docstring,
14785 &tcatch_cmdlist);
14786 set_cmd_sfunc (command, sfunc);
14787 set_cmd_context (command, user_data_tcatch);
14788 set_cmd_completer (command, completer);
14789 }
14790
14791 static void
14792 clear_syscall_counts (struct inferior *inf)
14793 {
14794 struct catch_syscall_inferior_data *inf_data
14795 = get_catch_syscall_inferior_data (inf);
14796
14797 inf_data->total_syscalls_count = 0;
14798 inf_data->any_syscall_count = 0;
14799 VEC_free (int, inf_data->syscalls_counts);
14800 }
14801
14802 static void
14803 save_command (char *arg, int from_tty)
14804 {
14805 printf_unfiltered (_("\"save\" must be followed by "
14806 "the name of a save subcommand.\n"));
14807 help_list (save_cmdlist, "save ", -1, gdb_stdout);
14808 }
14809
14810 struct breakpoint *
14811 iterate_over_breakpoints (int (*callback) (struct breakpoint *, void *),
14812 void *data)
14813 {
14814 struct breakpoint *b, *b_tmp;
14815
14816 ALL_BREAKPOINTS_SAFE (b, b_tmp)
14817 {
14818 if ((*callback) (b, data))
14819 return b;
14820 }
14821
14822 return NULL;
14823 }
14824
14825 /* Zero if any of the breakpoint's locations could be a location where
14826 functions have been inlined, nonzero otherwise. */
14827
14828 static int
14829 is_non_inline_function (struct breakpoint *b)
14830 {
14831 /* The shared library event breakpoint is set on the address of a
14832 non-inline function. */
14833 if (b->type == bp_shlib_event)
14834 return 1;
14835
14836 return 0;
14837 }
14838
14839 /* Nonzero if the specified PC cannot be a location where functions
14840 have been inlined. */
14841
14842 int
14843 pc_at_non_inline_function (struct address_space *aspace, CORE_ADDR pc,
14844 const struct target_waitstatus *ws)
14845 {
14846 struct breakpoint *b;
14847 struct bp_location *bl;
14848
14849 ALL_BREAKPOINTS (b)
14850 {
14851 if (!is_non_inline_function (b))
14852 continue;
14853
14854 for (bl = b->loc; bl != NULL; bl = bl->next)
14855 {
14856 if (!bl->shlib_disabled
14857 && bpstat_check_location (bl, aspace, pc, ws))
14858 return 1;
14859 }
14860 }
14861
14862 return 0;
14863 }
14864
14865 void
14866 initialize_breakpoint_ops (void)
14867 {
14868 static int initialized = 0;
14869
14870 struct breakpoint_ops *ops;
14871
14872 if (initialized)
14873 return;
14874 initialized = 1;
14875
14876 /* The breakpoint_ops structure to be inherit by all kinds of
14877 breakpoints (real breakpoints, i.e., user "break" breakpoints,
14878 internal and momentary breakpoints, etc.). */
14879 ops = &bkpt_base_breakpoint_ops;
14880 *ops = base_breakpoint_ops;
14881 ops->re_set = bkpt_re_set;
14882 ops->insert_location = bkpt_insert_location;
14883 ops->remove_location = bkpt_remove_location;
14884 ops->breakpoint_hit = bkpt_breakpoint_hit;
14885 ops->create_sals_from_address = bkpt_create_sals_from_address;
14886 ops->create_breakpoints_sal = bkpt_create_breakpoints_sal;
14887 ops->decode_linespec = bkpt_decode_linespec;
14888
14889 /* The breakpoint_ops structure to be used in regular breakpoints. */
14890 ops = &bkpt_breakpoint_ops;
14891 *ops = bkpt_base_breakpoint_ops;
14892 ops->re_set = bkpt_re_set;
14893 ops->resources_needed = bkpt_resources_needed;
14894 ops->print_it = bkpt_print_it;
14895 ops->print_mention = bkpt_print_mention;
14896 ops->print_recreate = bkpt_print_recreate;
14897
14898 /* Ranged breakpoints. */
14899 ops = &ranged_breakpoint_ops;
14900 *ops = bkpt_breakpoint_ops;
14901 ops->breakpoint_hit = breakpoint_hit_ranged_breakpoint;
14902 ops->resources_needed = resources_needed_ranged_breakpoint;
14903 ops->print_it = print_it_ranged_breakpoint;
14904 ops->print_one = print_one_ranged_breakpoint;
14905 ops->print_one_detail = print_one_detail_ranged_breakpoint;
14906 ops->print_mention = print_mention_ranged_breakpoint;
14907 ops->print_recreate = print_recreate_ranged_breakpoint;
14908
14909 /* Internal breakpoints. */
14910 ops = &internal_breakpoint_ops;
14911 *ops = bkpt_base_breakpoint_ops;
14912 ops->re_set = internal_bkpt_re_set;
14913 ops->check_status = internal_bkpt_check_status;
14914 ops->print_it = internal_bkpt_print_it;
14915 ops->print_mention = internal_bkpt_print_mention;
14916
14917 /* Momentary breakpoints. */
14918 ops = &momentary_breakpoint_ops;
14919 *ops = bkpt_base_breakpoint_ops;
14920 ops->re_set = momentary_bkpt_re_set;
14921 ops->check_status = momentary_bkpt_check_status;
14922 ops->print_it = momentary_bkpt_print_it;
14923 ops->print_mention = momentary_bkpt_print_mention;
14924
14925 /* GNU v3 exception catchpoints. */
14926 ops = &gnu_v3_exception_catchpoint_ops;
14927 *ops = bkpt_breakpoint_ops;
14928 ops->print_it = print_it_exception_catchpoint;
14929 ops->print_one = print_one_exception_catchpoint;
14930 ops->print_mention = print_mention_exception_catchpoint;
14931 ops->print_recreate = print_recreate_exception_catchpoint;
14932
14933 /* Watchpoints. */
14934 ops = &watchpoint_breakpoint_ops;
14935 *ops = base_breakpoint_ops;
14936 ops->dtor = dtor_watchpoint;
14937 ops->re_set = re_set_watchpoint;
14938 ops->insert_location = insert_watchpoint;
14939 ops->remove_location = remove_watchpoint;
14940 ops->breakpoint_hit = breakpoint_hit_watchpoint;
14941 ops->check_status = check_status_watchpoint;
14942 ops->resources_needed = resources_needed_watchpoint;
14943 ops->works_in_software_mode = works_in_software_mode_watchpoint;
14944 ops->print_it = print_it_watchpoint;
14945 ops->print_mention = print_mention_watchpoint;
14946 ops->print_recreate = print_recreate_watchpoint;
14947
14948 /* Masked watchpoints. */
14949 ops = &masked_watchpoint_breakpoint_ops;
14950 *ops = watchpoint_breakpoint_ops;
14951 ops->insert_location = insert_masked_watchpoint;
14952 ops->remove_location = remove_masked_watchpoint;
14953 ops->resources_needed = resources_needed_masked_watchpoint;
14954 ops->works_in_software_mode = works_in_software_mode_masked_watchpoint;
14955 ops->print_it = print_it_masked_watchpoint;
14956 ops->print_one_detail = print_one_detail_masked_watchpoint;
14957 ops->print_mention = print_mention_masked_watchpoint;
14958 ops->print_recreate = print_recreate_masked_watchpoint;
14959
14960 /* Tracepoints. */
14961 ops = &tracepoint_breakpoint_ops;
14962 *ops = base_breakpoint_ops;
14963 ops->re_set = tracepoint_re_set;
14964 ops->breakpoint_hit = tracepoint_breakpoint_hit;
14965 ops->print_one_detail = tracepoint_print_one_detail;
14966 ops->print_mention = tracepoint_print_mention;
14967 ops->print_recreate = tracepoint_print_recreate;
14968 ops->create_sals_from_address = tracepoint_create_sals_from_address;
14969 ops->create_breakpoints_sal = tracepoint_create_breakpoints_sal;
14970 ops->decode_linespec = tracepoint_decode_linespec;
14971
14972 /* Static tracepoints with marker (`-m'). */
14973 ops = &strace_marker_breakpoint_ops;
14974 *ops = tracepoint_breakpoint_ops;
14975 ops->create_sals_from_address = strace_marker_create_sals_from_address;
14976 ops->create_breakpoints_sal = strace_marker_create_breakpoints_sal;
14977 ops->decode_linespec = strace_marker_decode_linespec;
14978
14979 /* Fork catchpoints. */
14980 ops = &catch_fork_breakpoint_ops;
14981 *ops = base_breakpoint_ops;
14982 ops->insert_location = insert_catch_fork;
14983 ops->remove_location = remove_catch_fork;
14984 ops->breakpoint_hit = breakpoint_hit_catch_fork;
14985 ops->print_it = print_it_catch_fork;
14986 ops->print_one = print_one_catch_fork;
14987 ops->print_mention = print_mention_catch_fork;
14988 ops->print_recreate = print_recreate_catch_fork;
14989
14990 /* Vfork catchpoints. */
14991 ops = &catch_vfork_breakpoint_ops;
14992 *ops = base_breakpoint_ops;
14993 ops->insert_location = insert_catch_vfork;
14994 ops->remove_location = remove_catch_vfork;
14995 ops->breakpoint_hit = breakpoint_hit_catch_vfork;
14996 ops->print_it = print_it_catch_vfork;
14997 ops->print_one = print_one_catch_vfork;
14998 ops->print_mention = print_mention_catch_vfork;
14999 ops->print_recreate = print_recreate_catch_vfork;
15000
15001 /* Exec catchpoints. */
15002 ops = &catch_exec_breakpoint_ops;
15003 *ops = base_breakpoint_ops;
15004 ops->dtor = dtor_catch_exec;
15005 ops->insert_location = insert_catch_exec;
15006 ops->remove_location = remove_catch_exec;
15007 ops->breakpoint_hit = breakpoint_hit_catch_exec;
15008 ops->print_it = print_it_catch_exec;
15009 ops->print_one = print_one_catch_exec;
15010 ops->print_mention = print_mention_catch_exec;
15011 ops->print_recreate = print_recreate_catch_exec;
15012
15013 /* Syscall catchpoints. */
15014 ops = &catch_syscall_breakpoint_ops;
15015 *ops = base_breakpoint_ops;
15016 ops->dtor = dtor_catch_syscall;
15017 ops->insert_location = insert_catch_syscall;
15018 ops->remove_location = remove_catch_syscall;
15019 ops->breakpoint_hit = breakpoint_hit_catch_syscall;
15020 ops->print_it = print_it_catch_syscall;
15021 ops->print_one = print_one_catch_syscall;
15022 ops->print_mention = print_mention_catch_syscall;
15023 ops->print_recreate = print_recreate_catch_syscall;
15024
15025 /* Solib-related catchpoints. */
15026 ops = &catch_solib_breakpoint_ops;
15027 *ops = base_breakpoint_ops;
15028 ops->dtor = dtor_catch_solib;
15029 ops->insert_location = insert_catch_solib;
15030 ops->remove_location = remove_catch_solib;
15031 ops->breakpoint_hit = breakpoint_hit_catch_solib;
15032 ops->check_status = check_status_catch_solib;
15033 ops->print_it = print_it_catch_solib;
15034 ops->print_one = print_one_catch_solib;
15035 ops->print_mention = print_mention_catch_solib;
15036 ops->print_recreate = print_recreate_catch_solib;
15037 }
15038
15039 void
15040 _initialize_breakpoint (void)
15041 {
15042 struct cmd_list_element *c;
15043
15044 initialize_breakpoint_ops ();
15045
15046 observer_attach_solib_unloaded (disable_breakpoints_in_unloaded_shlib);
15047 observer_attach_inferior_exit (clear_syscall_counts);
15048 observer_attach_memory_changed (invalidate_bp_value_on_memory_change);
15049
15050 breakpoint_objfile_key = register_objfile_data ();
15051
15052 catch_syscall_inferior_data
15053 = register_inferior_data_with_cleanup (catch_syscall_inferior_data_cleanup);
15054
15055 breakpoint_chain = 0;
15056 /* Don't bother to call set_breakpoint_count. $bpnum isn't useful
15057 before a breakpoint is set. */
15058 breakpoint_count = 0;
15059
15060 tracepoint_count = 0;
15061
15062 add_com ("ignore", class_breakpoint, ignore_command, _("\
15063 Set ignore-count of breakpoint number N to COUNT.\n\
15064 Usage is `ignore N COUNT'."));
15065 if (xdb_commands)
15066 add_com_alias ("bc", "ignore", class_breakpoint, 1);
15067
15068 add_com ("commands", class_breakpoint, commands_command, _("\
15069 Set commands to be executed when a breakpoint is hit.\n\
15070 Give breakpoint number as argument after \"commands\".\n\
15071 With no argument, the targeted breakpoint is the last one set.\n\
15072 The commands themselves follow starting on the next line.\n\
15073 Type a line containing \"end\" to indicate the end of them.\n\
15074 Give \"silent\" as the first line to make the breakpoint silent;\n\
15075 then no output is printed when it is hit, except what the commands print."));
15076
15077 add_com ("condition", class_breakpoint, condition_command, _("\
15078 Specify breakpoint number N to break only if COND is true.\n\
15079 Usage is `condition N COND', where N is an integer and COND is an\n\
15080 expression to be evaluated whenever breakpoint N is reached."));
15081
15082 c = add_com ("tbreak", class_breakpoint, tbreak_command, _("\
15083 Set a temporary breakpoint.\n\
15084 Like \"break\" except the breakpoint is only temporary,\n\
15085 so it will be deleted when hit. Equivalent to \"break\" followed\n\
15086 by using \"enable delete\" on the breakpoint number.\n\
15087 \n"
15088 BREAK_ARGS_HELP ("tbreak")));
15089 set_cmd_completer (c, location_completer);
15090
15091 c = add_com ("hbreak", class_breakpoint, hbreak_command, _("\
15092 Set a hardware assisted breakpoint.\n\
15093 Like \"break\" except the breakpoint requires hardware support,\n\
15094 some target hardware may not have this support.\n\
15095 \n"
15096 BREAK_ARGS_HELP ("hbreak")));
15097 set_cmd_completer (c, location_completer);
15098
15099 c = add_com ("thbreak", class_breakpoint, thbreak_command, _("\
15100 Set a temporary hardware assisted breakpoint.\n\
15101 Like \"hbreak\" except the breakpoint is only temporary,\n\
15102 so it will be deleted when hit.\n\
15103 \n"
15104 BREAK_ARGS_HELP ("thbreak")));
15105 set_cmd_completer (c, location_completer);
15106
15107 add_prefix_cmd ("enable", class_breakpoint, enable_command, _("\
15108 Enable some breakpoints.\n\
15109 Give breakpoint numbers (separated by spaces) as arguments.\n\
15110 With no subcommand, breakpoints are enabled until you command otherwise.\n\
15111 This is used to cancel the effect of the \"disable\" command.\n\
15112 With a subcommand you can enable temporarily."),
15113 &enablelist, "enable ", 1, &cmdlist);
15114 if (xdb_commands)
15115 add_com ("ab", class_breakpoint, enable_command, _("\
15116 Enable some breakpoints.\n\
15117 Give breakpoint numbers (separated by spaces) as arguments.\n\
15118 With no subcommand, breakpoints are enabled until you command otherwise.\n\
15119 This is used to cancel the effect of the \"disable\" command.\n\
15120 With a subcommand you can enable temporarily."));
15121
15122 add_com_alias ("en", "enable", class_breakpoint, 1);
15123
15124 add_prefix_cmd ("breakpoints", class_breakpoint, enable_command, _("\
15125 Enable some breakpoints.\n\
15126 Give breakpoint numbers (separated by spaces) as arguments.\n\
15127 This is used to cancel the effect of the \"disable\" command.\n\
15128 May be abbreviated to simply \"enable\".\n"),
15129 &enablebreaklist, "enable breakpoints ", 1, &enablelist);
15130
15131 add_cmd ("once", no_class, enable_once_command, _("\
15132 Enable breakpoints for one hit. Give breakpoint numbers.\n\
15133 If a breakpoint is hit while enabled in this fashion, it becomes disabled."),
15134 &enablebreaklist);
15135
15136 add_cmd ("delete", no_class, enable_delete_command, _("\
15137 Enable breakpoints and delete when hit. Give breakpoint numbers.\n\
15138 If a breakpoint is hit while enabled in this fashion, it is deleted."),
15139 &enablebreaklist);
15140
15141 add_cmd ("count", no_class, enable_count_command, _("\
15142 Enable breakpoints for COUNT hits. Give count and then breakpoint numbers.\n\
15143 If a breakpoint is hit while enabled in this fashion,\n\
15144 the count is decremented; when it reaches zero, the breakpoint is disabled."),
15145 &enablebreaklist);
15146
15147 add_cmd ("delete", no_class, enable_delete_command, _("\
15148 Enable breakpoints and delete when hit. Give breakpoint numbers.\n\
15149 If a breakpoint is hit while enabled in this fashion, it is deleted."),
15150 &enablelist);
15151
15152 add_cmd ("once", no_class, enable_once_command, _("\
15153 Enable breakpoints for one hit. Give breakpoint numbers.\n\
15154 If a breakpoint is hit while enabled in this fashion, it becomes disabled."),
15155 &enablelist);
15156
15157 add_cmd ("count", no_class, enable_count_command, _("\
15158 Enable breakpoints for COUNT hits. Give count and then breakpoint numbers.\n\
15159 If a breakpoint is hit while enabled in this fashion,\n\
15160 the count is decremented; when it reaches zero, the breakpoint is disabled."),
15161 &enablelist);
15162
15163 add_prefix_cmd ("disable", class_breakpoint, disable_command, _("\
15164 Disable some breakpoints.\n\
15165 Arguments are breakpoint numbers with spaces in between.\n\
15166 To disable all breakpoints, give no argument.\n\
15167 A disabled breakpoint is not forgotten, but has no effect until re-enabled."),
15168 &disablelist, "disable ", 1, &cmdlist);
15169 add_com_alias ("dis", "disable", class_breakpoint, 1);
15170 add_com_alias ("disa", "disable", class_breakpoint, 1);
15171 if (xdb_commands)
15172 add_com ("sb", class_breakpoint, disable_command, _("\
15173 Disable some breakpoints.\n\
15174 Arguments are breakpoint numbers with spaces in between.\n\
15175 To disable all breakpoints, give no argument.\n\
15176 A disabled breakpoint is not forgotten, but has no effect until re-enabled."));
15177
15178 add_cmd ("breakpoints", class_alias, disable_command, _("\
15179 Disable some breakpoints.\n\
15180 Arguments are breakpoint numbers with spaces in between.\n\
15181 To disable all breakpoints, give no argument.\n\
15182 A disabled breakpoint is not forgotten, but has no effect until re-enabled.\n\
15183 This command may be abbreviated \"disable\"."),
15184 &disablelist);
15185
15186 add_prefix_cmd ("delete", class_breakpoint, delete_command, _("\
15187 Delete some breakpoints or auto-display expressions.\n\
15188 Arguments are breakpoint numbers with spaces in between.\n\
15189 To delete all breakpoints, give no argument.\n\
15190 \n\
15191 Also a prefix command for deletion of other GDB objects.\n\
15192 The \"unset\" command is also an alias for \"delete\"."),
15193 &deletelist, "delete ", 1, &cmdlist);
15194 add_com_alias ("d", "delete", class_breakpoint, 1);
15195 add_com_alias ("del", "delete", class_breakpoint, 1);
15196 if (xdb_commands)
15197 add_com ("db", class_breakpoint, delete_command, _("\
15198 Delete some breakpoints.\n\
15199 Arguments are breakpoint numbers with spaces in between.\n\
15200 To delete all breakpoints, give no argument.\n"));
15201
15202 add_cmd ("breakpoints", class_alias, delete_command, _("\
15203 Delete some breakpoints or auto-display expressions.\n\
15204 Arguments are breakpoint numbers with spaces in between.\n\
15205 To delete all breakpoints, give no argument.\n\
15206 This command may be abbreviated \"delete\"."),
15207 &deletelist);
15208
15209 add_com ("clear", class_breakpoint, clear_command, _("\
15210 Clear breakpoint at specified line or function.\n\
15211 Argument may be line number, function name, or \"*\" and an address.\n\
15212 If line number is specified, all breakpoints in that line are cleared.\n\
15213 If function is specified, breakpoints at beginning of function are cleared.\n\
15214 If an address is specified, breakpoints at that address are cleared.\n\
15215 \n\
15216 With no argument, clears all breakpoints in the line that the selected frame\n\
15217 is executing in.\n\
15218 \n\
15219 See also the \"delete\" command which clears breakpoints by number."));
15220 add_com_alias ("cl", "clear", class_breakpoint, 1);
15221
15222 c = add_com ("break", class_breakpoint, break_command, _("\
15223 Set breakpoint at specified line or function.\n"
15224 BREAK_ARGS_HELP ("break")));
15225 set_cmd_completer (c, location_completer);
15226
15227 add_com_alias ("b", "break", class_run, 1);
15228 add_com_alias ("br", "break", class_run, 1);
15229 add_com_alias ("bre", "break", class_run, 1);
15230 add_com_alias ("brea", "break", class_run, 1);
15231
15232 if (xdb_commands)
15233 add_com_alias ("ba", "break", class_breakpoint, 1);
15234
15235 if (dbx_commands)
15236 {
15237 add_abbrev_prefix_cmd ("stop", class_breakpoint, stop_command, _("\
15238 Break in function/address or break at a line in the current file."),
15239 &stoplist, "stop ", 1, &cmdlist);
15240 add_cmd ("in", class_breakpoint, stopin_command,
15241 _("Break in function or address."), &stoplist);
15242 add_cmd ("at", class_breakpoint, stopat_command,
15243 _("Break at a line in the current file."), &stoplist);
15244 add_com ("status", class_info, breakpoints_info, _("\
15245 Status of user-settable breakpoints, or breakpoint number NUMBER.\n\
15246 The \"Type\" column indicates one of:\n\
15247 \tbreakpoint - normal breakpoint\n\
15248 \twatchpoint - watchpoint\n\
15249 The \"Disp\" column contains one of \"keep\", \"del\", or \"dis\" to indicate\n\
15250 the disposition of the breakpoint after it gets hit. \"dis\" means that the\n\
15251 breakpoint will be disabled. The \"Address\" and \"What\" columns indicate the\n\
15252 address and file/line number respectively.\n\
15253 \n\
15254 Convenience variable \"$_\" and default examine address for \"x\"\n\
15255 are set to the address of the last breakpoint listed unless the command\n\
15256 is prefixed with \"server \".\n\n\
15257 Convenience variable \"$bpnum\" contains the number of the last\n\
15258 breakpoint set."));
15259 }
15260
15261 add_info ("breakpoints", breakpoints_info, _("\
15262 Status of specified breakpoints (all user-settable breakpoints if no argument).\n\
15263 The \"Type\" column indicates one of:\n\
15264 \tbreakpoint - normal breakpoint\n\
15265 \twatchpoint - watchpoint\n\
15266 The \"Disp\" column contains one of \"keep\", \"del\", or \"dis\" to indicate\n\
15267 the disposition of the breakpoint after it gets hit. \"dis\" means that the\n\
15268 breakpoint will be disabled. The \"Address\" and \"What\" columns indicate the\n\
15269 address and file/line number respectively.\n\
15270 \n\
15271 Convenience variable \"$_\" and default examine address for \"x\"\n\
15272 are set to the address of the last breakpoint listed unless the command\n\
15273 is prefixed with \"server \".\n\n\
15274 Convenience variable \"$bpnum\" contains the number of the last\n\
15275 breakpoint set."));
15276
15277 add_info_alias ("b", "breakpoints", 1);
15278
15279 if (xdb_commands)
15280 add_com ("lb", class_breakpoint, breakpoints_info, _("\
15281 Status of user-settable breakpoints, or breakpoint number NUMBER.\n\
15282 The \"Type\" column indicates one of:\n\
15283 \tbreakpoint - normal breakpoint\n\
15284 \twatchpoint - watchpoint\n\
15285 The \"Disp\" column contains one of \"keep\", \"del\", or \"dis\" to indicate\n\
15286 the disposition of the breakpoint after it gets hit. \"dis\" means that the\n\
15287 breakpoint will be disabled. The \"Address\" and \"What\" columns indicate the\n\
15288 address and file/line number respectively.\n\
15289 \n\
15290 Convenience variable \"$_\" and default examine address for \"x\"\n\
15291 are set to the address of the last breakpoint listed unless the command\n\
15292 is prefixed with \"server \".\n\n\
15293 Convenience variable \"$bpnum\" contains the number of the last\n\
15294 breakpoint set."));
15295
15296 add_cmd ("breakpoints", class_maintenance, maintenance_info_breakpoints, _("\
15297 Status of all breakpoints, or breakpoint number NUMBER.\n\
15298 The \"Type\" column indicates one of:\n\
15299 \tbreakpoint - normal breakpoint\n\
15300 \twatchpoint - watchpoint\n\
15301 \tlongjmp - internal breakpoint used to step through longjmp()\n\
15302 \tlongjmp resume - internal breakpoint at the target of longjmp()\n\
15303 \tuntil - internal breakpoint used by the \"until\" command\n\
15304 \tfinish - internal breakpoint used by the \"finish\" command\n\
15305 The \"Disp\" column contains one of \"keep\", \"del\", or \"dis\" to indicate\n\
15306 the disposition of the breakpoint after it gets hit. \"dis\" means that the\n\
15307 breakpoint will be disabled. The \"Address\" and \"What\" columns indicate the\n\
15308 address and file/line number respectively.\n\
15309 \n\
15310 Convenience variable \"$_\" and default examine address for \"x\"\n\
15311 are set to the address of the last breakpoint listed unless the command\n\
15312 is prefixed with \"server \".\n\n\
15313 Convenience variable \"$bpnum\" contains the number of the last\n\
15314 breakpoint set."),
15315 &maintenanceinfolist);
15316
15317 add_prefix_cmd ("catch", class_breakpoint, catch_command, _("\
15318 Set catchpoints to catch events."),
15319 &catch_cmdlist, "catch ",
15320 0/*allow-unknown*/, &cmdlist);
15321
15322 add_prefix_cmd ("tcatch", class_breakpoint, tcatch_command, _("\
15323 Set temporary catchpoints to catch events."),
15324 &tcatch_cmdlist, "tcatch ",
15325 0/*allow-unknown*/, &cmdlist);
15326
15327 /* Add catch and tcatch sub-commands. */
15328 add_catch_command ("catch", _("\
15329 Catch an exception, when caught."),
15330 catch_catch_command,
15331 NULL,
15332 CATCH_PERMANENT,
15333 CATCH_TEMPORARY);
15334 add_catch_command ("throw", _("\
15335 Catch an exception, when thrown."),
15336 catch_throw_command,
15337 NULL,
15338 CATCH_PERMANENT,
15339 CATCH_TEMPORARY);
15340 add_catch_command ("fork", _("Catch calls to fork."),
15341 catch_fork_command_1,
15342 NULL,
15343 (void *) (uintptr_t) catch_fork_permanent,
15344 (void *) (uintptr_t) catch_fork_temporary);
15345 add_catch_command ("vfork", _("Catch calls to vfork."),
15346 catch_fork_command_1,
15347 NULL,
15348 (void *) (uintptr_t) catch_vfork_permanent,
15349 (void *) (uintptr_t) catch_vfork_temporary);
15350 add_catch_command ("exec", _("Catch calls to exec."),
15351 catch_exec_command_1,
15352 NULL,
15353 CATCH_PERMANENT,
15354 CATCH_TEMPORARY);
15355 add_catch_command ("load", _("Catch loads of shared libraries.\n\
15356 Usage: catch load [REGEX]\n\
15357 If REGEX is given, only stop for libraries matching the regular expression."),
15358 catch_load_command_1,
15359 NULL,
15360 CATCH_PERMANENT,
15361 CATCH_TEMPORARY);
15362 add_catch_command ("unload", _("Catch unloads of shared libraries.\n\
15363 Usage: catch unload [REGEX]\n\
15364 If REGEX is given, only stop for libraries matching the regular expression."),
15365 catch_unload_command_1,
15366 NULL,
15367 CATCH_PERMANENT,
15368 CATCH_TEMPORARY);
15369 add_catch_command ("syscall", _("\
15370 Catch system calls by their names and/or numbers.\n\
15371 Arguments say which system calls to catch. If no arguments\n\
15372 are given, every system call will be caught.\n\
15373 Arguments, if given, should be one or more system call names\n\
15374 (if your system supports that), or system call numbers."),
15375 catch_syscall_command_1,
15376 catch_syscall_completer,
15377 CATCH_PERMANENT,
15378 CATCH_TEMPORARY);
15379
15380 c = add_com ("watch", class_breakpoint, watch_command, _("\
15381 Set a watchpoint for an expression.\n\
15382 Usage: watch [-l|-location] EXPRESSION\n\
15383 A watchpoint stops execution of your program whenever the value of\n\
15384 an expression changes.\n\
15385 If -l or -location is given, this evaluates EXPRESSION and watches\n\
15386 the memory to which it refers."));
15387 set_cmd_completer (c, expression_completer);
15388
15389 c = add_com ("rwatch", class_breakpoint, rwatch_command, _("\
15390 Set a read watchpoint for an expression.\n\
15391 Usage: rwatch [-l|-location] EXPRESSION\n\
15392 A watchpoint stops execution of your program whenever the value of\n\
15393 an expression is read.\n\
15394 If -l or -location is given, this evaluates EXPRESSION and watches\n\
15395 the memory to which it refers."));
15396 set_cmd_completer (c, expression_completer);
15397
15398 c = add_com ("awatch", class_breakpoint, awatch_command, _("\
15399 Set a watchpoint for an expression.\n\
15400 Usage: awatch [-l|-location] EXPRESSION\n\
15401 A watchpoint stops execution of your program whenever the value of\n\
15402 an expression is either read or written.\n\
15403 If -l or -location is given, this evaluates EXPRESSION and watches\n\
15404 the memory to which it refers."));
15405 set_cmd_completer (c, expression_completer);
15406
15407 add_info ("watchpoints", watchpoints_info, _("\
15408 Status of specified watchpoints (all watchpoints if no argument)."));
15409
15410 /* XXX: cagney/2005-02-23: This should be a boolean, and should
15411 respond to changes - contrary to the description. */
15412 add_setshow_zinteger_cmd ("can-use-hw-watchpoints", class_support,
15413 &can_use_hw_watchpoints, _("\
15414 Set debugger's willingness to use watchpoint hardware."), _("\
15415 Show debugger's willingness to use watchpoint hardware."), _("\
15416 If zero, gdb will not use hardware for new watchpoints, even if\n\
15417 such is available. (However, any hardware watchpoints that were\n\
15418 created before setting this to nonzero, will continue to use watchpoint\n\
15419 hardware.)"),
15420 NULL,
15421 show_can_use_hw_watchpoints,
15422 &setlist, &showlist);
15423
15424 can_use_hw_watchpoints = 1;
15425
15426 /* Tracepoint manipulation commands. */
15427
15428 c = add_com ("trace", class_breakpoint, trace_command, _("\
15429 Set a tracepoint at specified line or function.\n\
15430 \n"
15431 BREAK_ARGS_HELP ("trace") "\n\
15432 Do \"help tracepoints\" for info on other tracepoint commands."));
15433 set_cmd_completer (c, location_completer);
15434
15435 add_com_alias ("tp", "trace", class_alias, 0);
15436 add_com_alias ("tr", "trace", class_alias, 1);
15437 add_com_alias ("tra", "trace", class_alias, 1);
15438 add_com_alias ("trac", "trace", class_alias, 1);
15439
15440 c = add_com ("ftrace", class_breakpoint, ftrace_command, _("\
15441 Set a fast tracepoint at specified line or function.\n\
15442 \n"
15443 BREAK_ARGS_HELP ("ftrace") "\n\
15444 Do \"help tracepoints\" for info on other tracepoint commands."));
15445 set_cmd_completer (c, location_completer);
15446
15447 c = add_com ("strace", class_breakpoint, strace_command, _("\
15448 Set a static tracepoint at specified line, function or marker.\n\
15449 \n\
15450 strace [LOCATION] [if CONDITION]\n\
15451 LOCATION may be a line number, function name, \"*\" and an address,\n\
15452 or -m MARKER_ID.\n\
15453 If a line number is specified, probe the marker at start of code\n\
15454 for that line. If a function is specified, probe the marker at start\n\
15455 of code for that function. If an address is specified, probe the marker\n\
15456 at that exact address. If a marker id is specified, probe the marker\n\
15457 with that name. With no LOCATION, uses current execution address of\n\
15458 the selected stack frame.\n\
15459 Static tracepoints accept an extra collect action -- ``collect $_sdata''.\n\
15460 This collects arbitrary user data passed in the probe point call to the\n\
15461 tracing library. You can inspect it when analyzing the trace buffer,\n\
15462 by printing the $_sdata variable like any other convenience variable.\n\
15463 \n\
15464 CONDITION is a boolean expression.\n\
15465 \n\
15466 Multiple tracepoints at one place are permitted, and useful if their\n\
15467 conditions are different.\n\
15468 \n\
15469 Do \"help breakpoints\" for info on other commands dealing with breakpoints.\n\
15470 Do \"help tracepoints\" for info on other tracepoint commands."));
15471 set_cmd_completer (c, location_completer);
15472
15473 add_info ("tracepoints", tracepoints_info, _("\
15474 Status of specified tracepoints (all tracepoints if no argument).\n\
15475 Convenience variable \"$tpnum\" contains the number of the\n\
15476 last tracepoint set."));
15477
15478 add_info_alias ("tp", "tracepoints", 1);
15479
15480 add_cmd ("tracepoints", class_trace, delete_trace_command, _("\
15481 Delete specified tracepoints.\n\
15482 Arguments are tracepoint numbers, separated by spaces.\n\
15483 No argument means delete all tracepoints."),
15484 &deletelist);
15485
15486 c = add_cmd ("tracepoints", class_trace, disable_trace_command, _("\
15487 Disable specified tracepoints.\n\
15488 Arguments are tracepoint numbers, separated by spaces.\n\
15489 No argument means disable all tracepoints."),
15490 &disablelist);
15491 deprecate_cmd (c, "disable");
15492
15493 c = add_cmd ("tracepoints", class_trace, enable_trace_command, _("\
15494 Enable specified tracepoints.\n\
15495 Arguments are tracepoint numbers, separated by spaces.\n\
15496 No argument means enable all tracepoints."),
15497 &enablelist);
15498 deprecate_cmd (c, "enable");
15499
15500 add_com ("passcount", class_trace, trace_pass_command, _("\
15501 Set the passcount for a tracepoint.\n\
15502 The trace will end when the tracepoint has been passed 'count' times.\n\
15503 Usage: passcount COUNT TPNUM, where TPNUM may also be \"all\";\n\
15504 if TPNUM is omitted, passcount refers to the last tracepoint defined."));
15505
15506 add_prefix_cmd ("save", class_breakpoint, save_command,
15507 _("Save breakpoint definitions as a script."),
15508 &save_cmdlist, "save ",
15509 0/*allow-unknown*/, &cmdlist);
15510
15511 c = add_cmd ("breakpoints", class_breakpoint, save_breakpoints_command, _("\
15512 Save current breakpoint definitions as a script.\n\
15513 This includes all types of breakpoints (breakpoints, watchpoints,\n\
15514 catchpoints, tracepoints). Use the 'source' command in another debug\n\
15515 session to restore them."),
15516 &save_cmdlist);
15517 set_cmd_completer (c, filename_completer);
15518
15519 c = add_cmd ("tracepoints", class_trace, save_tracepoints_command, _("\
15520 Save current tracepoint definitions as a script.\n\
15521 Use the 'source' command in another debug session to restore them."),
15522 &save_cmdlist);
15523 set_cmd_completer (c, filename_completer);
15524
15525 c = add_com_alias ("save-tracepoints", "save tracepoints", class_trace, 0);
15526 deprecate_cmd (c, "save tracepoints");
15527
15528 add_prefix_cmd ("breakpoint", class_maintenance, set_breakpoint_cmd, _("\
15529 Breakpoint specific settings\n\
15530 Configure various breakpoint-specific variables such as\n\
15531 pending breakpoint behavior"),
15532 &breakpoint_set_cmdlist, "set breakpoint ",
15533 0/*allow-unknown*/, &setlist);
15534 add_prefix_cmd ("breakpoint", class_maintenance, show_breakpoint_cmd, _("\
15535 Breakpoint specific settings\n\
15536 Configure various breakpoint-specific variables such as\n\
15537 pending breakpoint behavior"),
15538 &breakpoint_show_cmdlist, "show breakpoint ",
15539 0/*allow-unknown*/, &showlist);
15540
15541 add_setshow_auto_boolean_cmd ("pending", no_class,
15542 &pending_break_support, _("\
15543 Set debugger's behavior regarding pending breakpoints."), _("\
15544 Show debugger's behavior regarding pending breakpoints."), _("\
15545 If on, an unrecognized breakpoint location will cause gdb to create a\n\
15546 pending breakpoint. If off, an unrecognized breakpoint location results in\n\
15547 an error. If auto, an unrecognized breakpoint location results in a\n\
15548 user-query to see if a pending breakpoint should be created."),
15549 NULL,
15550 show_pending_break_support,
15551 &breakpoint_set_cmdlist,
15552 &breakpoint_show_cmdlist);
15553
15554 pending_break_support = AUTO_BOOLEAN_AUTO;
15555
15556 add_setshow_boolean_cmd ("auto-hw", no_class,
15557 &automatic_hardware_breakpoints, _("\
15558 Set automatic usage of hardware breakpoints."), _("\
15559 Show automatic usage of hardware breakpoints."), _("\
15560 If set, the debugger will automatically use hardware breakpoints for\n\
15561 breakpoints set with \"break\" but falling in read-only memory. If not set,\n\
15562 a warning will be emitted for such breakpoints."),
15563 NULL,
15564 show_automatic_hardware_breakpoints,
15565 &breakpoint_set_cmdlist,
15566 &breakpoint_show_cmdlist);
15567
15568 add_setshow_enum_cmd ("always-inserted", class_support,
15569 always_inserted_enums, &always_inserted_mode, _("\
15570 Set mode for inserting breakpoints."), _("\
15571 Show mode for inserting breakpoints."), _("\
15572 When this mode is off, breakpoints are inserted in inferior when it is\n\
15573 resumed, and removed when execution stops. When this mode is on,\n\
15574 breakpoints are inserted immediately and removed only when the user\n\
15575 deletes the breakpoint. When this mode is auto (which is the default),\n\
15576 the behaviour depends on the non-stop setting (see help set non-stop).\n\
15577 In this case, if gdb is controlling the inferior in non-stop mode, gdb\n\
15578 behaves as if always-inserted mode is on; if gdb is controlling the\n\
15579 inferior in all-stop mode, gdb behaves as if always-inserted mode is off."),
15580 NULL,
15581 &show_always_inserted_mode,
15582 &breakpoint_set_cmdlist,
15583 &breakpoint_show_cmdlist);
15584
15585 add_setshow_enum_cmd ("condition-evaluation", class_breakpoint,
15586 condition_evaluation_enums,
15587 &condition_evaluation_mode_1, _("\
15588 Set mode of breakpoint condition evaluation."), _("\
15589 Show mode of breakpoint condition evaluation."), _("\
15590 When this is set to \"host\", breakpoint conditions will be\n\
15591 evaluated on the host's side by GDB. When it is set to \"target\",\n\
15592 breakpoint conditions will be downloaded to the target (if the target\n\
15593 supports such feature) and conditions will be evaluated on the target's side.\n\
15594 If this is set to \"auto\" (default), this will be automatically set to\n\
15595 \"target\" if it supports condition evaluation, otherwise it will\n\
15596 be set to \"gdb\""),
15597 &set_condition_evaluation_mode,
15598 &show_condition_evaluation_mode,
15599 &breakpoint_set_cmdlist,
15600 &breakpoint_show_cmdlist);
15601
15602 add_com ("break-range", class_breakpoint, break_range_command, _("\
15603 Set a breakpoint for an address range.\n\
15604 break-range START-LOCATION, END-LOCATION\n\
15605 where START-LOCATION and END-LOCATION can be one of the following:\n\
15606 LINENUM, for that line in the current file,\n\
15607 FILE:LINENUM, for that line in that file,\n\
15608 +OFFSET, for that number of lines after the current line\n\
15609 or the start of the range\n\
15610 FUNCTION, for the first line in that function,\n\
15611 FILE:FUNCTION, to distinguish among like-named static functions.\n\
15612 *ADDRESS, for the instruction at that address.\n\
15613 \n\
15614 The breakpoint will stop execution of the inferior whenever it executes\n\
15615 an instruction at any address within the [START-LOCATION, END-LOCATION]\n\
15616 range (including START-LOCATION and END-LOCATION)."));
15617
15618 automatic_hardware_breakpoints = 1;
15619
15620 observer_attach_about_to_proceed (breakpoint_about_to_proceed);
15621 }
This page took 0.369161 seconds and 4 git commands to generate.