Eliminate catch_exceptions/catch_exceptions_with_msg
[deliverable/binutils-gdb.git] / gdb / breakpoint.c
1 /* Everything about breakpoints, for GDB.
2
3 Copyright (C) 1986-2017 Free Software Foundation, Inc.
4
5 This file is part of GDB.
6
7 This program is free software; you can redistribute it and/or modify
8 it under the terms of the GNU General Public License as published by
9 the Free Software Foundation; either version 3 of the License, or
10 (at your option) any later version.
11
12 This program is distributed in the hope that it will be useful,
13 but WITHOUT ANY WARRANTY; without even the implied warranty of
14 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 GNU General Public License for more details.
16
17 You should have received a copy of the GNU General Public License
18 along with this program. If not, see <http://www.gnu.org/licenses/>. */
19
20 #include "defs.h"
21 #include "arch-utils.h"
22 #include <ctype.h>
23 #include "hashtab.h"
24 #include "symtab.h"
25 #include "frame.h"
26 #include "breakpoint.h"
27 #include "tracepoint.h"
28 #include "gdbtypes.h"
29 #include "expression.h"
30 #include "gdbcore.h"
31 #include "gdbcmd.h"
32 #include "value.h"
33 #include "command.h"
34 #include "inferior.h"
35 #include "infrun.h"
36 #include "gdbthread.h"
37 #include "target.h"
38 #include "language.h"
39 #include "gdb-demangle.h"
40 #include "filenames.h"
41 #include "annotate.h"
42 #include "symfile.h"
43 #include "objfiles.h"
44 #include "source.h"
45 #include "linespec.h"
46 #include "completer.h"
47 #include "ui-out.h"
48 #include "cli/cli-script.h"
49 #include "block.h"
50 #include "solib.h"
51 #include "solist.h"
52 #include "observer.h"
53 #include "memattr.h"
54 #include "ada-lang.h"
55 #include "top.h"
56 #include "valprint.h"
57 #include "jit.h"
58 #include "parser-defs.h"
59 #include "gdb_regex.h"
60 #include "probe.h"
61 #include "cli/cli-utils.h"
62 #include "continuations.h"
63 #include "stack.h"
64 #include "skip.h"
65 #include "ax-gdb.h"
66 #include "dummy-frame.h"
67 #include "interps.h"
68 #include "format.h"
69 #include "thread-fsm.h"
70 #include "tid-parse.h"
71
72 /* readline include files */
73 #include "readline/readline.h"
74 #include "readline/history.h"
75
76 /* readline defines this. */
77 #undef savestring
78
79 #include "mi/mi-common.h"
80 #include "extension.h"
81 #include <algorithm>
82 #include "progspace-and-thread.h"
83 #include "common/array-view.h"
84 #include "common/gdb_optional.h"
85
86 /* Enums for exception-handling support. */
87 enum exception_event_kind
88 {
89 EX_EVENT_THROW,
90 EX_EVENT_RETHROW,
91 EX_EVENT_CATCH
92 };
93
94 /* Prototypes for local functions. */
95
96 static void disable_command (char *, int);
97
98 static void enable_command (char *, int);
99
100 static void map_breakpoint_numbers (const char *,
101 gdb::function_view<void (breakpoint *)>);
102
103 static void ignore_command (char *, int);
104
105 static void breakpoint_re_set_default (struct breakpoint *);
106
107 static void
108 create_sals_from_location_default (const struct event_location *location,
109 struct linespec_result *canonical,
110 enum bptype type_wanted);
111
112 static void create_breakpoints_sal_default (struct gdbarch *,
113 struct linespec_result *,
114 gdb::unique_xmalloc_ptr<char>,
115 gdb::unique_xmalloc_ptr<char>,
116 enum bptype,
117 enum bpdisp, int, int,
118 int,
119 const struct breakpoint_ops *,
120 int, int, int, unsigned);
121
122 static std::vector<symtab_and_line> decode_location_default
123 (struct breakpoint *b, const struct event_location *location,
124 struct program_space *search_pspace);
125
126 static void clear_command (char *, int);
127
128 static void catch_command (char *, int);
129
130 static int can_use_hardware_watchpoint (struct value *);
131
132 static void mention (struct breakpoint *);
133
134 static struct breakpoint *set_raw_breakpoint_without_location (struct gdbarch *,
135 enum bptype,
136 const struct breakpoint_ops *);
137 static struct bp_location *add_location_to_breakpoint (struct breakpoint *,
138 const struct symtab_and_line *);
139
140 /* This function is used in gdbtk sources and thus can not be made
141 static. */
142 struct breakpoint *set_raw_breakpoint (struct gdbarch *gdbarch,
143 struct symtab_and_line,
144 enum bptype,
145 const struct breakpoint_ops *);
146
147 static struct breakpoint *
148 momentary_breakpoint_from_master (struct breakpoint *orig,
149 enum bptype type,
150 const struct breakpoint_ops *ops,
151 int loc_enabled);
152
153 static void breakpoint_adjustment_warning (CORE_ADDR, CORE_ADDR, int, int);
154
155 static CORE_ADDR adjust_breakpoint_address (struct gdbarch *gdbarch,
156 CORE_ADDR bpaddr,
157 enum bptype bptype);
158
159 static void describe_other_breakpoints (struct gdbarch *,
160 struct program_space *, CORE_ADDR,
161 struct obj_section *, int);
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 int breakpoint_location_address_range_overlap (struct bp_location *,
171 struct address_space *,
172 CORE_ADDR, int);
173
174 static void info_breakpoints_command (char *, int);
175
176 static void info_watchpoints_command (char *, int);
177
178 static void cleanup_executing_breakpoints (void *);
179
180 static void commands_command (char *, int);
181
182 static void condition_command (char *, int);
183
184 static int remove_breakpoint (struct bp_location *);
185 static int remove_breakpoint_1 (struct bp_location *, enum remove_bp_reason);
186
187 static enum print_stop_action print_bp_stop_message (bpstat bs);
188
189 static int hw_breakpoint_used_count (void);
190
191 static int hw_watchpoint_use_count (struct breakpoint *);
192
193 static int hw_watchpoint_used_count_others (struct breakpoint *except,
194 enum bptype type,
195 int *other_type_used);
196
197 static void hbreak_command (char *, int);
198
199 static void thbreak_command (char *, int);
200
201 static void enable_breakpoint_disp (struct breakpoint *, enum bpdisp,
202 int count);
203
204 static void stop_command (char *arg, int from_tty);
205
206 static void tcatch_command (char *arg, int from_tty);
207
208 static void free_bp_location (struct bp_location *loc);
209 static void incref_bp_location (struct bp_location *loc);
210 static void decref_bp_location (struct bp_location **loc);
211
212 static struct bp_location *allocate_bp_location (struct breakpoint *bpt);
213
214 /* update_global_location_list's modes of operation wrt to whether to
215 insert locations now. */
216 enum ugll_insert_mode
217 {
218 /* Don't insert any breakpoint locations into the inferior, only
219 remove already-inserted locations that no longer should be
220 inserted. Functions that delete a breakpoint or breakpoints
221 should specify this mode, so that deleting a breakpoint doesn't
222 have the side effect of inserting the locations of other
223 breakpoints that are marked not-inserted, but should_be_inserted
224 returns true on them.
225
226 This behavior is useful is situations close to tear-down -- e.g.,
227 after an exec, while the target still has execution, but
228 breakpoint shadows of the previous executable image should *NOT*
229 be restored to the new image; or before detaching, where the
230 target still has execution and wants to delete breakpoints from
231 GDB's lists, and all breakpoints had already been removed from
232 the inferior. */
233 UGLL_DONT_INSERT,
234
235 /* May insert breakpoints iff breakpoints_should_be_inserted_now
236 claims breakpoints should be inserted now. */
237 UGLL_MAY_INSERT,
238
239 /* Insert locations now, irrespective of
240 breakpoints_should_be_inserted_now. E.g., say all threads are
241 stopped right now, and the user did "continue". We need to
242 insert breakpoints _before_ resuming the target, but
243 UGLL_MAY_INSERT wouldn't insert them, because
244 breakpoints_should_be_inserted_now returns false at that point,
245 as no thread is running yet. */
246 UGLL_INSERT
247 };
248
249 static void update_global_location_list (enum ugll_insert_mode);
250
251 static void update_global_location_list_nothrow (enum ugll_insert_mode);
252
253 static int is_hardware_watchpoint (const struct breakpoint *bpt);
254
255 static void insert_breakpoint_locations (void);
256
257 static void info_tracepoints_command (char *, int);
258
259 static void enable_trace_command (char *, int);
260
261 static void disable_trace_command (char *, int);
262
263 static void trace_pass_command (char *, int);
264
265 static void set_tracepoint_count (int num);
266
267 static int is_masked_watchpoint (const struct breakpoint *b);
268
269 static struct bp_location **get_first_locp_gte_addr (CORE_ADDR address);
270
271 /* Return 1 if B refers to a static tracepoint set by marker ("-m"), zero
272 otherwise. */
273
274 static int strace_marker_p (struct breakpoint *b);
275
276 /* The breakpoint_ops structure to be inherited by all breakpoint_ops
277 that are implemented on top of software or hardware breakpoints
278 (user breakpoints, internal and momentary breakpoints, etc.). */
279 static struct breakpoint_ops bkpt_base_breakpoint_ops;
280
281 /* Internal breakpoints class type. */
282 static struct breakpoint_ops internal_breakpoint_ops;
283
284 /* Momentary breakpoints class type. */
285 static struct breakpoint_ops momentary_breakpoint_ops;
286
287 /* The breakpoint_ops structure to be used in regular user created
288 breakpoints. */
289 struct breakpoint_ops bkpt_breakpoint_ops;
290
291 /* Breakpoints set on probes. */
292 static struct breakpoint_ops bkpt_probe_breakpoint_ops;
293
294 /* Dynamic printf class type. */
295 struct breakpoint_ops dprintf_breakpoint_ops;
296
297 /* The style in which to perform a dynamic printf. This is a user
298 option because different output options have different tradeoffs;
299 if GDB does the printing, there is better error handling if there
300 is a problem with any of the arguments, but using an inferior
301 function lets you have special-purpose printers and sending of
302 output to the same place as compiled-in print functions. */
303
304 static const char dprintf_style_gdb[] = "gdb";
305 static const char dprintf_style_call[] = "call";
306 static const char dprintf_style_agent[] = "agent";
307 static const char *const dprintf_style_enums[] = {
308 dprintf_style_gdb,
309 dprintf_style_call,
310 dprintf_style_agent,
311 NULL
312 };
313 static const char *dprintf_style = dprintf_style_gdb;
314
315 /* The function to use for dynamic printf if the preferred style is to
316 call into the inferior. The value is simply a string that is
317 copied into the command, so it can be anything that GDB can
318 evaluate to a callable address, not necessarily a function name. */
319
320 static char *dprintf_function;
321
322 /* The channel to use for dynamic printf if the preferred style is to
323 call into the inferior; if a nonempty string, it will be passed to
324 the call as the first argument, with the format string as the
325 second. As with the dprintf function, this can be anything that
326 GDB knows how to evaluate, so in addition to common choices like
327 "stderr", this could be an app-specific expression like
328 "mystreams[curlogger]". */
329
330 static char *dprintf_channel;
331
332 /* True if dprintf commands should continue to operate even if GDB
333 has disconnected. */
334 static int disconnected_dprintf = 1;
335
336 struct command_line *
337 breakpoint_commands (struct breakpoint *b)
338 {
339 return b->commands ? b->commands.get () : NULL;
340 }
341
342 /* Flag indicating that a command has proceeded the inferior past the
343 current breakpoint. */
344
345 static int breakpoint_proceeded;
346
347 const char *
348 bpdisp_text (enum bpdisp disp)
349 {
350 /* NOTE: the following values are a part of MI protocol and
351 represent values of 'disp' field returned when inferior stops at
352 a breakpoint. */
353 static const char * const bpdisps[] = {"del", "dstp", "dis", "keep"};
354
355 return bpdisps[(int) disp];
356 }
357
358 /* Prototypes for exported functions. */
359 /* If FALSE, gdb will not use hardware support for watchpoints, even
360 if such is available. */
361 static int can_use_hw_watchpoints;
362
363 static void
364 show_can_use_hw_watchpoints (struct ui_file *file, int from_tty,
365 struct cmd_list_element *c,
366 const char *value)
367 {
368 fprintf_filtered (file,
369 _("Debugger's willingness to use "
370 "watchpoint hardware is %s.\n"),
371 value);
372 }
373
374 /* If AUTO_BOOLEAN_FALSE, gdb will not attempt to create pending breakpoints.
375 If AUTO_BOOLEAN_TRUE, gdb will automatically create pending breakpoints
376 for unrecognized breakpoint locations.
377 If AUTO_BOOLEAN_AUTO, gdb will query when breakpoints are unrecognized. */
378 static enum auto_boolean pending_break_support;
379 static void
380 show_pending_break_support (struct ui_file *file, int from_tty,
381 struct cmd_list_element *c,
382 const char *value)
383 {
384 fprintf_filtered (file,
385 _("Debugger's behavior regarding "
386 "pending breakpoints is %s.\n"),
387 value);
388 }
389
390 /* If 1, gdb will automatically use hardware breakpoints for breakpoints
391 set with "break" but falling in read-only memory.
392 If 0, gdb will warn about such breakpoints, but won't automatically
393 use hardware breakpoints. */
394 static int automatic_hardware_breakpoints;
395 static void
396 show_automatic_hardware_breakpoints (struct ui_file *file, int from_tty,
397 struct cmd_list_element *c,
398 const char *value)
399 {
400 fprintf_filtered (file,
401 _("Automatic usage of hardware breakpoints is %s.\n"),
402 value);
403 }
404
405 /* If on, GDB keeps breakpoints inserted even if the inferior is
406 stopped, and immediately inserts any new breakpoints as soon as
407 they're created. If off (default), GDB keeps breakpoints off of
408 the target as long as possible. That is, it delays inserting
409 breakpoints until the next resume, and removes them again when the
410 target fully stops. This is a bit safer in case GDB crashes while
411 processing user input. */
412 static int always_inserted_mode = 0;
413
414 static void
415 show_always_inserted_mode (struct ui_file *file, int from_tty,
416 struct cmd_list_element *c, const char *value)
417 {
418 fprintf_filtered (file, _("Always inserted breakpoint mode is %s.\n"),
419 value);
420 }
421
422 /* See breakpoint.h. */
423
424 int
425 breakpoints_should_be_inserted_now (void)
426 {
427 if (gdbarch_has_global_breakpoints (target_gdbarch ()))
428 {
429 /* If breakpoints are global, they should be inserted even if no
430 thread under gdb's control is running, or even if there are
431 no threads under GDB's control yet. */
432 return 1;
433 }
434 else if (target_has_execution)
435 {
436 struct thread_info *tp;
437
438 if (always_inserted_mode)
439 {
440 /* The user wants breakpoints inserted even if all threads
441 are stopped. */
442 return 1;
443 }
444
445 if (threads_are_executing ())
446 return 1;
447
448 /* Don't remove breakpoints yet if, even though all threads are
449 stopped, we still have events to process. */
450 ALL_NON_EXITED_THREADS (tp)
451 if (tp->resumed
452 && tp->suspend.waitstatus_pending_p)
453 return 1;
454 }
455 return 0;
456 }
457
458 static const char condition_evaluation_both[] = "host or target";
459
460 /* Modes for breakpoint condition evaluation. */
461 static const char condition_evaluation_auto[] = "auto";
462 static const char condition_evaluation_host[] = "host";
463 static const char condition_evaluation_target[] = "target";
464 static const char *const condition_evaluation_enums[] = {
465 condition_evaluation_auto,
466 condition_evaluation_host,
467 condition_evaluation_target,
468 NULL
469 };
470
471 /* Global that holds the current mode for breakpoint condition evaluation. */
472 static const char *condition_evaluation_mode_1 = condition_evaluation_auto;
473
474 /* Global that we use to display information to the user (gets its value from
475 condition_evaluation_mode_1. */
476 static const char *condition_evaluation_mode = condition_evaluation_auto;
477
478 /* Translate a condition evaluation mode MODE into either "host"
479 or "target". This is used mostly to translate from "auto" to the
480 real setting that is being used. It returns the translated
481 evaluation mode. */
482
483 static const char *
484 translate_condition_evaluation_mode (const char *mode)
485 {
486 if (mode == condition_evaluation_auto)
487 {
488 if (target_supports_evaluation_of_breakpoint_conditions ())
489 return condition_evaluation_target;
490 else
491 return condition_evaluation_host;
492 }
493 else
494 return mode;
495 }
496
497 /* Discovers what condition_evaluation_auto translates to. */
498
499 static const char *
500 breakpoint_condition_evaluation_mode (void)
501 {
502 return translate_condition_evaluation_mode (condition_evaluation_mode);
503 }
504
505 /* Return true if GDB should evaluate breakpoint conditions or false
506 otherwise. */
507
508 static int
509 gdb_evaluates_breakpoint_condition_p (void)
510 {
511 const char *mode = breakpoint_condition_evaluation_mode ();
512
513 return (mode == condition_evaluation_host);
514 }
515
516 /* Are we executing breakpoint commands? */
517 static int executing_breakpoint_commands;
518
519 /* Are overlay event breakpoints enabled? */
520 static int overlay_events_enabled;
521
522 /* See description in breakpoint.h. */
523 int target_exact_watchpoints = 0;
524
525 /* Walk the following statement or block through all breakpoints.
526 ALL_BREAKPOINTS_SAFE does so even if the statement deletes the
527 current breakpoint. */
528
529 #define ALL_BREAKPOINTS(B) for (B = breakpoint_chain; B; B = B->next)
530
531 #define ALL_BREAKPOINTS_SAFE(B,TMP) \
532 for (B = breakpoint_chain; \
533 B ? (TMP=B->next, 1): 0; \
534 B = TMP)
535
536 /* Similar iterator for the low-level breakpoints. SAFE variant is
537 not provided so update_global_location_list must not be called
538 while executing the block of ALL_BP_LOCATIONS. */
539
540 #define ALL_BP_LOCATIONS(B,BP_TMP) \
541 for (BP_TMP = bp_locations; \
542 BP_TMP < bp_locations + bp_locations_count && (B = *BP_TMP);\
543 BP_TMP++)
544
545 /* Iterates through locations with address ADDRESS for the currently selected
546 program space. BP_LOCP_TMP points to each object. BP_LOCP_START points
547 to where the loop should start from.
548 If BP_LOCP_START is a NULL pointer, the macro automatically seeks the
549 appropriate location to start with. */
550
551 #define ALL_BP_LOCATIONS_AT_ADDR(BP_LOCP_TMP, BP_LOCP_START, ADDRESS) \
552 for (BP_LOCP_START = BP_LOCP_START == NULL ? get_first_locp_gte_addr (ADDRESS) : BP_LOCP_START, \
553 BP_LOCP_TMP = BP_LOCP_START; \
554 BP_LOCP_START \
555 && (BP_LOCP_TMP < bp_locations + bp_locations_count \
556 && (*BP_LOCP_TMP)->address == ADDRESS); \
557 BP_LOCP_TMP++)
558
559 /* Iterator for tracepoints only. */
560
561 #define ALL_TRACEPOINTS(B) \
562 for (B = breakpoint_chain; B; B = B->next) \
563 if (is_tracepoint (B))
564
565 /* Chains of all breakpoints defined. */
566
567 struct breakpoint *breakpoint_chain;
568
569 /* Array is sorted by bp_locations_compare - primarily by the ADDRESS. */
570
571 static struct bp_location **bp_locations;
572
573 /* Number of elements of BP_LOCATIONS. */
574
575 static unsigned bp_locations_count;
576
577 /* Maximum alignment offset between bp_target_info.PLACED_ADDRESS and
578 ADDRESS for the current elements of BP_LOCATIONS which get a valid
579 result from bp_location_has_shadow. You can use it for roughly
580 limiting the subrange of BP_LOCATIONS to scan for shadow bytes for
581 an address you need to read. */
582
583 static CORE_ADDR bp_locations_placed_address_before_address_max;
584
585 /* Maximum offset plus alignment between bp_target_info.PLACED_ADDRESS
586 + bp_target_info.SHADOW_LEN and ADDRESS for the current elements of
587 BP_LOCATIONS which get a valid result from bp_location_has_shadow.
588 You can use it for roughly limiting the subrange of BP_LOCATIONS to
589 scan for shadow bytes for an address you need to read. */
590
591 static CORE_ADDR bp_locations_shadow_len_after_address_max;
592
593 /* The locations that no longer correspond to any breakpoint, unlinked
594 from the bp_locations array, but for which a hit may still be
595 reported by a target. */
596 VEC(bp_location_p) *moribund_locations = NULL;
597
598 /* Number of last breakpoint made. */
599
600 static int breakpoint_count;
601
602 /* The value of `breakpoint_count' before the last command that
603 created breakpoints. If the last (break-like) command created more
604 than one breakpoint, then the difference between BREAKPOINT_COUNT
605 and PREV_BREAKPOINT_COUNT is more than one. */
606 static int prev_breakpoint_count;
607
608 /* Number of last tracepoint made. */
609
610 static int tracepoint_count;
611
612 static struct cmd_list_element *breakpoint_set_cmdlist;
613 static struct cmd_list_element *breakpoint_show_cmdlist;
614 struct cmd_list_element *save_cmdlist;
615
616 /* See declaration at breakpoint.h. */
617
618 struct breakpoint *
619 breakpoint_find_if (int (*func) (struct breakpoint *b, void *d),
620 void *user_data)
621 {
622 struct breakpoint *b = NULL;
623
624 ALL_BREAKPOINTS (b)
625 {
626 if (func (b, user_data) != 0)
627 break;
628 }
629
630 return b;
631 }
632
633 /* Return whether a breakpoint is an active enabled breakpoint. */
634 static int
635 breakpoint_enabled (struct breakpoint *b)
636 {
637 return (b->enable_state == bp_enabled);
638 }
639
640 /* Set breakpoint count to NUM. */
641
642 static void
643 set_breakpoint_count (int num)
644 {
645 prev_breakpoint_count = breakpoint_count;
646 breakpoint_count = num;
647 set_internalvar_integer (lookup_internalvar ("bpnum"), num);
648 }
649
650 /* Used by `start_rbreak_breakpoints' below, to record the current
651 breakpoint count before "rbreak" creates any breakpoint. */
652 static int rbreak_start_breakpoint_count;
653
654 /* Called at the start an "rbreak" command to record the first
655 breakpoint made. */
656
657 void
658 start_rbreak_breakpoints (void)
659 {
660 rbreak_start_breakpoint_count = breakpoint_count;
661 }
662
663 /* Called at the end of an "rbreak" command to record the last
664 breakpoint made. */
665
666 void
667 end_rbreak_breakpoints (void)
668 {
669 prev_breakpoint_count = rbreak_start_breakpoint_count;
670 }
671
672 /* Used in run_command to zero the hit count when a new run starts. */
673
674 void
675 clear_breakpoint_hit_counts (void)
676 {
677 struct breakpoint *b;
678
679 ALL_BREAKPOINTS (b)
680 b->hit_count = 0;
681 }
682
683 \f
684 /* Return the breakpoint with the specified number, or NULL
685 if the number does not refer to an existing breakpoint. */
686
687 struct breakpoint *
688 get_breakpoint (int num)
689 {
690 struct breakpoint *b;
691
692 ALL_BREAKPOINTS (b)
693 if (b->number == num)
694 return b;
695
696 return NULL;
697 }
698
699 \f
700
701 /* Mark locations as "conditions have changed" in case the target supports
702 evaluating conditions on its side. */
703
704 static void
705 mark_breakpoint_modified (struct breakpoint *b)
706 {
707 struct bp_location *loc;
708
709 /* This is only meaningful if the target is
710 evaluating conditions and if the user has
711 opted for condition evaluation on the target's
712 side. */
713 if (gdb_evaluates_breakpoint_condition_p ()
714 || !target_supports_evaluation_of_breakpoint_conditions ())
715 return;
716
717 if (!is_breakpoint (b))
718 return;
719
720 for (loc = b->loc; loc; loc = loc->next)
721 loc->condition_changed = condition_modified;
722 }
723
724 /* Mark location as "conditions have changed" in case the target supports
725 evaluating conditions on its side. */
726
727 static void
728 mark_breakpoint_location_modified (struct bp_location *loc)
729 {
730 /* This is only meaningful if the target is
731 evaluating conditions and if the user has
732 opted for condition evaluation on the target's
733 side. */
734 if (gdb_evaluates_breakpoint_condition_p ()
735 || !target_supports_evaluation_of_breakpoint_conditions ())
736
737 return;
738
739 if (!is_breakpoint (loc->owner))
740 return;
741
742 loc->condition_changed = condition_modified;
743 }
744
745 /* Sets the condition-evaluation mode using the static global
746 condition_evaluation_mode. */
747
748 static void
749 set_condition_evaluation_mode (char *args, int from_tty,
750 struct cmd_list_element *c)
751 {
752 const char *old_mode, *new_mode;
753
754 if ((condition_evaluation_mode_1 == condition_evaluation_target)
755 && !target_supports_evaluation_of_breakpoint_conditions ())
756 {
757 condition_evaluation_mode_1 = condition_evaluation_mode;
758 warning (_("Target does not support breakpoint condition evaluation.\n"
759 "Using host evaluation mode instead."));
760 return;
761 }
762
763 new_mode = translate_condition_evaluation_mode (condition_evaluation_mode_1);
764 old_mode = translate_condition_evaluation_mode (condition_evaluation_mode);
765
766 /* Flip the switch. Flip it even if OLD_MODE == NEW_MODE as one of the
767 settings was "auto". */
768 condition_evaluation_mode = condition_evaluation_mode_1;
769
770 /* Only update the mode if the user picked a different one. */
771 if (new_mode != old_mode)
772 {
773 struct bp_location *loc, **loc_tmp;
774 /* If the user switched to a different evaluation mode, we
775 need to synch the changes with the target as follows:
776
777 "host" -> "target": Send all (valid) conditions to the target.
778 "target" -> "host": Remove all the conditions from the target.
779 */
780
781 if (new_mode == condition_evaluation_target)
782 {
783 /* Mark everything modified and synch conditions with the
784 target. */
785 ALL_BP_LOCATIONS (loc, loc_tmp)
786 mark_breakpoint_location_modified (loc);
787 }
788 else
789 {
790 /* Manually mark non-duplicate locations to synch conditions
791 with the target. We do this to remove all the conditions the
792 target knows about. */
793 ALL_BP_LOCATIONS (loc, loc_tmp)
794 if (is_breakpoint (loc->owner) && loc->inserted)
795 loc->needs_update = 1;
796 }
797
798 /* Do the update. */
799 update_global_location_list (UGLL_MAY_INSERT);
800 }
801
802 return;
803 }
804
805 /* Shows the current mode of breakpoint condition evaluation. Explicitly shows
806 what "auto" is translating to. */
807
808 static void
809 show_condition_evaluation_mode (struct ui_file *file, int from_tty,
810 struct cmd_list_element *c, const char *value)
811 {
812 if (condition_evaluation_mode == condition_evaluation_auto)
813 fprintf_filtered (file,
814 _("Breakpoint condition evaluation "
815 "mode is %s (currently %s).\n"),
816 value,
817 breakpoint_condition_evaluation_mode ());
818 else
819 fprintf_filtered (file, _("Breakpoint condition evaluation mode is %s.\n"),
820 value);
821 }
822
823 /* A comparison function for bp_location AP and BP that is used by
824 bsearch. This comparison function only cares about addresses, unlike
825 the more general bp_locations_compare function. */
826
827 static int
828 bp_locations_compare_addrs (const void *ap, const void *bp)
829 {
830 const struct bp_location *a = *(const struct bp_location **) ap;
831 const struct bp_location *b = *(const struct bp_location **) bp;
832
833 if (a->address == b->address)
834 return 0;
835 else
836 return ((a->address > b->address) - (a->address < b->address));
837 }
838
839 /* Helper function to skip all bp_locations with addresses
840 less than ADDRESS. It returns the first bp_location that
841 is greater than or equal to ADDRESS. If none is found, just
842 return NULL. */
843
844 static struct bp_location **
845 get_first_locp_gte_addr (CORE_ADDR address)
846 {
847 struct bp_location dummy_loc;
848 struct bp_location *dummy_locp = &dummy_loc;
849 struct bp_location **locp_found = NULL;
850
851 /* Initialize the dummy location's address field. */
852 dummy_loc.address = address;
853
854 /* Find a close match to the first location at ADDRESS. */
855 locp_found = ((struct bp_location **)
856 bsearch (&dummy_locp, bp_locations, bp_locations_count,
857 sizeof (struct bp_location **),
858 bp_locations_compare_addrs));
859
860 /* Nothing was found, nothing left to do. */
861 if (locp_found == NULL)
862 return NULL;
863
864 /* We may have found a location that is at ADDRESS but is not the first in the
865 location's list. Go backwards (if possible) and locate the first one. */
866 while ((locp_found - 1) >= bp_locations
867 && (*(locp_found - 1))->address == address)
868 locp_found--;
869
870 return locp_found;
871 }
872
873 void
874 set_breakpoint_condition (struct breakpoint *b, const char *exp,
875 int from_tty)
876 {
877 xfree (b->cond_string);
878 b->cond_string = NULL;
879
880 if (is_watchpoint (b))
881 {
882 struct watchpoint *w = (struct watchpoint *) b;
883
884 w->cond_exp.reset ();
885 }
886 else
887 {
888 struct bp_location *loc;
889
890 for (loc = b->loc; loc; loc = loc->next)
891 {
892 loc->cond.reset ();
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 const 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, 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, loc->address,
934 block_for_pc (loc->address), 0);
935 if (*arg)
936 error (_("Junk at end of expression"));
937 }
938 }
939 }
940 mark_breakpoint_modified (b);
941
942 observer_notify_breakpoint_modified (b);
943 }
944
945 /* Completion for the "condition" command. */
946
947 static void
948 condition_completer (struct cmd_list_element *cmd,
949 completion_tracker &tracker,
950 const char *text, const char *word)
951 {
952 const char *space;
953
954 text = skip_spaces (text);
955 space = skip_to_space (text);
956 if (*space == '\0')
957 {
958 int len;
959 struct breakpoint *b;
960 VEC (char_ptr) *result = NULL;
961
962 if (text[0] == '$')
963 {
964 /* We don't support completion of history indices. */
965 if (!isdigit (text[1]))
966 complete_internalvar (tracker, &text[1]);
967 return;
968 }
969
970 /* We're completing the breakpoint number. */
971 len = strlen (text);
972
973 ALL_BREAKPOINTS (b)
974 {
975 char number[50];
976
977 xsnprintf (number, sizeof (number), "%d", b->number);
978
979 if (strncmp (number, text, len) == 0)
980 {
981 gdb::unique_xmalloc_ptr<char> copy (xstrdup (number));
982 tracker.add_completion (std::move (copy));
983 }
984 }
985
986 return;
987 }
988
989 /* We're completing the expression part. */
990 text = skip_spaces (space);
991 expression_completer (cmd, tracker, text, word);
992 }
993
994 /* condition N EXP -- set break condition of breakpoint N to EXP. */
995
996 static void
997 condition_command (char *arg, int from_tty)
998 {
999 struct breakpoint *b;
1000 char *p;
1001 int bnum;
1002
1003 if (arg == 0)
1004 error_no_arg (_("breakpoint number"));
1005
1006 p = arg;
1007 bnum = get_number (&p);
1008 if (bnum == 0)
1009 error (_("Bad breakpoint argument: '%s'"), arg);
1010
1011 ALL_BREAKPOINTS (b)
1012 if (b->number == bnum)
1013 {
1014 /* Check if this breakpoint has a "stop" method implemented in an
1015 extension language. This method and conditions entered into GDB
1016 from the CLI are mutually exclusive. */
1017 const struct extension_language_defn *extlang
1018 = get_breakpoint_cond_ext_lang (b, EXT_LANG_NONE);
1019
1020 if (extlang != NULL)
1021 {
1022 error (_("Only one stop condition allowed. There is currently"
1023 " a %s stop condition defined for this breakpoint."),
1024 ext_lang_capitalized_name (extlang));
1025 }
1026 set_breakpoint_condition (b, p, from_tty);
1027
1028 if (is_breakpoint (b))
1029 update_global_location_list (UGLL_MAY_INSERT);
1030
1031 return;
1032 }
1033
1034 error (_("No breakpoint number %d."), bnum);
1035 }
1036
1037 /* Check that COMMAND do not contain commands that are suitable
1038 only for tracepoints and not suitable for ordinary breakpoints.
1039 Throw if any such commands is found. */
1040
1041 static void
1042 check_no_tracepoint_commands (struct command_line *commands)
1043 {
1044 struct command_line *c;
1045
1046 for (c = commands; c; c = c->next)
1047 {
1048 int i;
1049
1050 if (c->control_type == while_stepping_control)
1051 error (_("The 'while-stepping' command can "
1052 "only be used for tracepoints"));
1053
1054 for (i = 0; i < c->body_count; ++i)
1055 check_no_tracepoint_commands ((c->body_list)[i]);
1056
1057 /* Not that command parsing removes leading whitespace and comment
1058 lines and also empty lines. So, we only need to check for
1059 command directly. */
1060 if (strstr (c->line, "collect ") == c->line)
1061 error (_("The 'collect' command can only be used for tracepoints"));
1062
1063 if (strstr (c->line, "teval ") == c->line)
1064 error (_("The 'teval' command can only be used for tracepoints"));
1065 }
1066 }
1067
1068 struct longjmp_breakpoint : public breakpoint
1069 {
1070 ~longjmp_breakpoint () override;
1071 };
1072
1073 /* Encapsulate tests for different types of tracepoints. */
1074
1075 static bool
1076 is_tracepoint_type (bptype type)
1077 {
1078 return (type == bp_tracepoint
1079 || type == bp_fast_tracepoint
1080 || type == bp_static_tracepoint);
1081 }
1082
1083 static bool
1084 is_longjmp_type (bptype type)
1085 {
1086 return type == bp_longjmp || type == bp_exception;
1087 }
1088
1089 int
1090 is_tracepoint (const struct breakpoint *b)
1091 {
1092 return is_tracepoint_type (b->type);
1093 }
1094
1095 /* Factory function to create an appropriate instance of breakpoint given
1096 TYPE. */
1097
1098 static std::unique_ptr<breakpoint>
1099 new_breakpoint_from_type (bptype type)
1100 {
1101 breakpoint *b;
1102
1103 if (is_tracepoint_type (type))
1104 b = new tracepoint ();
1105 else if (is_longjmp_type (type))
1106 b = new longjmp_breakpoint ();
1107 else
1108 b = new breakpoint ();
1109
1110 return std::unique_ptr<breakpoint> (b);
1111 }
1112
1113 /* A helper function that validates that COMMANDS are valid for a
1114 breakpoint. This function will throw an exception if a problem is
1115 found. */
1116
1117 static void
1118 validate_commands_for_breakpoint (struct breakpoint *b,
1119 struct command_line *commands)
1120 {
1121 if (is_tracepoint (b))
1122 {
1123 struct tracepoint *t = (struct tracepoint *) b;
1124 struct command_line *c;
1125 struct command_line *while_stepping = 0;
1126
1127 /* Reset the while-stepping step count. The previous commands
1128 might have included a while-stepping action, while the new
1129 ones might not. */
1130 t->step_count = 0;
1131
1132 /* We need to verify that each top-level element of commands is
1133 valid for tracepoints, that there's at most one
1134 while-stepping element, and that the while-stepping's body
1135 has valid tracing commands excluding nested while-stepping.
1136 We also need to validate the tracepoint action line in the
1137 context of the tracepoint --- validate_actionline actually
1138 has side effects, like setting the tracepoint's
1139 while-stepping STEP_COUNT, in addition to checking if the
1140 collect/teval actions parse and make sense in the
1141 tracepoint's context. */
1142 for (c = commands; c; c = c->next)
1143 {
1144 if (c->control_type == while_stepping_control)
1145 {
1146 if (b->type == bp_fast_tracepoint)
1147 error (_("The 'while-stepping' command "
1148 "cannot be used for fast tracepoint"));
1149 else if (b->type == bp_static_tracepoint)
1150 error (_("The 'while-stepping' command "
1151 "cannot be used for static tracepoint"));
1152
1153 if (while_stepping)
1154 error (_("The 'while-stepping' command "
1155 "can be used only once"));
1156 else
1157 while_stepping = c;
1158 }
1159
1160 validate_actionline (c->line, b);
1161 }
1162 if (while_stepping)
1163 {
1164 struct command_line *c2;
1165
1166 gdb_assert (while_stepping->body_count == 1);
1167 c2 = while_stepping->body_list[0];
1168 for (; c2; c2 = c2->next)
1169 {
1170 if (c2->control_type == while_stepping_control)
1171 error (_("The 'while-stepping' command cannot be nested"));
1172 }
1173 }
1174 }
1175 else
1176 {
1177 check_no_tracepoint_commands (commands);
1178 }
1179 }
1180
1181 /* Return a vector of all the static tracepoints set at ADDR. The
1182 caller is responsible for releasing the vector. */
1183
1184 VEC(breakpoint_p) *
1185 static_tracepoints_here (CORE_ADDR addr)
1186 {
1187 struct breakpoint *b;
1188 VEC(breakpoint_p) *found = 0;
1189 struct bp_location *loc;
1190
1191 ALL_BREAKPOINTS (b)
1192 if (b->type == bp_static_tracepoint)
1193 {
1194 for (loc = b->loc; loc; loc = loc->next)
1195 if (loc->address == addr)
1196 VEC_safe_push(breakpoint_p, found, b);
1197 }
1198
1199 return found;
1200 }
1201
1202 /* Set the command list of B to COMMANDS. If breakpoint is tracepoint,
1203 validate that only allowed commands are included. */
1204
1205 void
1206 breakpoint_set_commands (struct breakpoint *b,
1207 command_line_up &&commands)
1208 {
1209 validate_commands_for_breakpoint (b, commands.get ());
1210
1211 b->commands = std::move (commands);
1212 observer_notify_breakpoint_modified (b);
1213 }
1214
1215 /* Set the internal `silent' flag on the breakpoint. Note that this
1216 is not the same as the "silent" that may appear in the breakpoint's
1217 commands. */
1218
1219 void
1220 breakpoint_set_silent (struct breakpoint *b, int silent)
1221 {
1222 int old_silent = b->silent;
1223
1224 b->silent = silent;
1225 if (old_silent != silent)
1226 observer_notify_breakpoint_modified (b);
1227 }
1228
1229 /* Set the thread for this breakpoint. If THREAD is -1, make the
1230 breakpoint work for any thread. */
1231
1232 void
1233 breakpoint_set_thread (struct breakpoint *b, int thread)
1234 {
1235 int old_thread = b->thread;
1236
1237 b->thread = thread;
1238 if (old_thread != thread)
1239 observer_notify_breakpoint_modified (b);
1240 }
1241
1242 /* Set the task for this breakpoint. If TASK is 0, make the
1243 breakpoint work for any task. */
1244
1245 void
1246 breakpoint_set_task (struct breakpoint *b, int task)
1247 {
1248 int old_task = b->task;
1249
1250 b->task = task;
1251 if (old_task != task)
1252 observer_notify_breakpoint_modified (b);
1253 }
1254
1255 void
1256 check_tracepoint_command (char *line, void *closure)
1257 {
1258 struct breakpoint *b = (struct breakpoint *) closure;
1259
1260 validate_actionline (line, b);
1261 }
1262
1263 static void
1264 commands_command_1 (const char *arg, int from_tty,
1265 struct command_line *control)
1266 {
1267 counted_command_line cmd;
1268
1269 std::string new_arg;
1270
1271 if (arg == NULL || !*arg)
1272 {
1273 if (breakpoint_count - prev_breakpoint_count > 1)
1274 new_arg = string_printf ("%d-%d", prev_breakpoint_count + 1,
1275 breakpoint_count);
1276 else if (breakpoint_count > 0)
1277 new_arg = string_printf ("%d", breakpoint_count);
1278 arg = new_arg.c_str ();
1279 }
1280
1281 map_breakpoint_numbers
1282 (arg, [&] (breakpoint *b)
1283 {
1284 if (cmd == NULL)
1285 {
1286 if (control != NULL)
1287 cmd = copy_command_lines (control->body_list[0]);
1288 else
1289 {
1290 struct cleanup *old_chain;
1291 char *str;
1292
1293 str = xstrprintf (_("Type commands for breakpoint(s) "
1294 "%s, one per line."),
1295 arg);
1296
1297 old_chain = make_cleanup (xfree, str);
1298
1299 cmd = read_command_lines (str,
1300 from_tty, 1,
1301 (is_tracepoint (b)
1302 ? check_tracepoint_command : 0),
1303 b);
1304
1305 do_cleanups (old_chain);
1306 }
1307 }
1308
1309 /* If a breakpoint was on the list more than once, we don't need to
1310 do anything. */
1311 if (b->commands != cmd)
1312 {
1313 validate_commands_for_breakpoint (b, cmd.get ());
1314 b->commands = cmd;
1315 observer_notify_breakpoint_modified (b);
1316 }
1317 });
1318
1319 if (cmd == NULL)
1320 error (_("No breakpoints specified."));
1321 }
1322
1323 static void
1324 commands_command (char *arg, int from_tty)
1325 {
1326 commands_command_1 (arg, from_tty, NULL);
1327 }
1328
1329 /* Like commands_command, but instead of reading the commands from
1330 input stream, takes them from an already parsed command structure.
1331
1332 This is used by cli-script.c to DTRT with breakpoint commands
1333 that are part of if and while bodies. */
1334 enum command_control_type
1335 commands_from_control_command (const char *arg, struct command_line *cmd)
1336 {
1337 commands_command_1 (arg, 0, cmd);
1338 return simple_control;
1339 }
1340
1341 /* Return non-zero if BL->TARGET_INFO contains valid information. */
1342
1343 static int
1344 bp_location_has_shadow (struct bp_location *bl)
1345 {
1346 if (bl->loc_type != bp_loc_software_breakpoint)
1347 return 0;
1348 if (!bl->inserted)
1349 return 0;
1350 if (bl->target_info.shadow_len == 0)
1351 /* BL isn't valid, or doesn't shadow memory. */
1352 return 0;
1353 return 1;
1354 }
1355
1356 /* Update BUF, which is LEN bytes read from the target address
1357 MEMADDR, by replacing a memory breakpoint with its shadowed
1358 contents.
1359
1360 If READBUF is not NULL, this buffer must not overlap with the of
1361 the breakpoint location's shadow_contents buffer. Otherwise, a
1362 failed assertion internal error will be raised. */
1363
1364 static void
1365 one_breakpoint_xfer_memory (gdb_byte *readbuf, gdb_byte *writebuf,
1366 const gdb_byte *writebuf_org,
1367 ULONGEST memaddr, LONGEST len,
1368 struct bp_target_info *target_info,
1369 struct gdbarch *gdbarch)
1370 {
1371 /* Now do full processing of the found relevant range of elements. */
1372 CORE_ADDR bp_addr = 0;
1373 int bp_size = 0;
1374 int bptoffset = 0;
1375
1376 if (!breakpoint_address_match (target_info->placed_address_space, 0,
1377 current_program_space->aspace, 0))
1378 {
1379 /* The breakpoint is inserted in a different address space. */
1380 return;
1381 }
1382
1383 /* Addresses and length of the part of the breakpoint that
1384 we need to copy. */
1385 bp_addr = target_info->placed_address;
1386 bp_size = target_info->shadow_len;
1387
1388 if (bp_addr + bp_size <= memaddr)
1389 {
1390 /* The breakpoint is entirely before the chunk of memory we are
1391 reading. */
1392 return;
1393 }
1394
1395 if (bp_addr >= memaddr + len)
1396 {
1397 /* The breakpoint is entirely after the chunk of memory we are
1398 reading. */
1399 return;
1400 }
1401
1402 /* Offset within shadow_contents. */
1403 if (bp_addr < memaddr)
1404 {
1405 /* Only copy the second part of the breakpoint. */
1406 bp_size -= memaddr - bp_addr;
1407 bptoffset = memaddr - bp_addr;
1408 bp_addr = memaddr;
1409 }
1410
1411 if (bp_addr + bp_size > memaddr + len)
1412 {
1413 /* Only copy the first part of the breakpoint. */
1414 bp_size -= (bp_addr + bp_size) - (memaddr + len);
1415 }
1416
1417 if (readbuf != NULL)
1418 {
1419 /* Verify that the readbuf buffer does not overlap with the
1420 shadow_contents buffer. */
1421 gdb_assert (target_info->shadow_contents >= readbuf + len
1422 || readbuf >= (target_info->shadow_contents
1423 + target_info->shadow_len));
1424
1425 /* Update the read buffer with this inserted breakpoint's
1426 shadow. */
1427 memcpy (readbuf + bp_addr - memaddr,
1428 target_info->shadow_contents + bptoffset, bp_size);
1429 }
1430 else
1431 {
1432 const unsigned char *bp;
1433 CORE_ADDR addr = target_info->reqstd_address;
1434 int placed_size;
1435
1436 /* Update the shadow with what we want to write to memory. */
1437 memcpy (target_info->shadow_contents + bptoffset,
1438 writebuf_org + bp_addr - memaddr, bp_size);
1439
1440 /* Determine appropriate breakpoint contents and size for this
1441 address. */
1442 bp = gdbarch_breakpoint_from_pc (gdbarch, &addr, &placed_size);
1443
1444 /* Update the final write buffer with this inserted
1445 breakpoint's INSN. */
1446 memcpy (writebuf + bp_addr - memaddr, bp + bptoffset, bp_size);
1447 }
1448 }
1449
1450 /* Update BUF, which is LEN bytes read from the target address MEMADDR,
1451 by replacing any memory breakpoints with their shadowed contents.
1452
1453 If READBUF is not NULL, this buffer must not overlap with any of
1454 the breakpoint location's shadow_contents buffers. Otherwise,
1455 a failed assertion internal error will be raised.
1456
1457 The range of shadowed area by each bp_location is:
1458 bl->address - bp_locations_placed_address_before_address_max
1459 up to bl->address + bp_locations_shadow_len_after_address_max
1460 The range we were requested to resolve shadows for is:
1461 memaddr ... memaddr + len
1462 Thus the safe cutoff boundaries for performance optimization are
1463 memaddr + len <= (bl->address
1464 - bp_locations_placed_address_before_address_max)
1465 and:
1466 bl->address + bp_locations_shadow_len_after_address_max <= memaddr */
1467
1468 void
1469 breakpoint_xfer_memory (gdb_byte *readbuf, gdb_byte *writebuf,
1470 const gdb_byte *writebuf_org,
1471 ULONGEST memaddr, LONGEST len)
1472 {
1473 /* Left boundary, right boundary and median element of our binary
1474 search. */
1475 unsigned bc_l, bc_r, bc;
1476
1477 /* Find BC_L which is a leftmost element which may affect BUF
1478 content. It is safe to report lower value but a failure to
1479 report higher one. */
1480
1481 bc_l = 0;
1482 bc_r = bp_locations_count;
1483 while (bc_l + 1 < bc_r)
1484 {
1485 struct bp_location *bl;
1486
1487 bc = (bc_l + bc_r) / 2;
1488 bl = bp_locations[bc];
1489
1490 /* Check first BL->ADDRESS will not overflow due to the added
1491 constant. Then advance the left boundary only if we are sure
1492 the BC element can in no way affect the BUF content (MEMADDR
1493 to MEMADDR + LEN range).
1494
1495 Use the BP_LOCATIONS_SHADOW_LEN_AFTER_ADDRESS_MAX safety
1496 offset so that we cannot miss a breakpoint with its shadow
1497 range tail still reaching MEMADDR. */
1498
1499 if ((bl->address + bp_locations_shadow_len_after_address_max
1500 >= bl->address)
1501 && (bl->address + bp_locations_shadow_len_after_address_max
1502 <= memaddr))
1503 bc_l = bc;
1504 else
1505 bc_r = bc;
1506 }
1507
1508 /* Due to the binary search above, we need to make sure we pick the
1509 first location that's at BC_L's address. E.g., if there are
1510 multiple locations at the same address, BC_L may end up pointing
1511 at a duplicate location, and miss the "master"/"inserted"
1512 location. Say, given locations L1, L2 and L3 at addresses A and
1513 B:
1514
1515 L1@A, L2@A, L3@B, ...
1516
1517 BC_L could end up pointing at location L2, while the "master"
1518 location could be L1. Since the `loc->inserted' flag is only set
1519 on "master" locations, we'd forget to restore the shadow of L1
1520 and L2. */
1521 while (bc_l > 0
1522 && bp_locations[bc_l]->address == bp_locations[bc_l - 1]->address)
1523 bc_l--;
1524
1525 /* Now do full processing of the found relevant range of elements. */
1526
1527 for (bc = bc_l; bc < bp_locations_count; bc++)
1528 {
1529 struct bp_location *bl = bp_locations[bc];
1530
1531 /* bp_location array has BL->OWNER always non-NULL. */
1532 if (bl->owner->type == bp_none)
1533 warning (_("reading through apparently deleted breakpoint #%d?"),
1534 bl->owner->number);
1535
1536 /* Performance optimization: any further element can no longer affect BUF
1537 content. */
1538
1539 if (bl->address >= bp_locations_placed_address_before_address_max
1540 && memaddr + len <= (bl->address
1541 - bp_locations_placed_address_before_address_max))
1542 break;
1543
1544 if (!bp_location_has_shadow (bl))
1545 continue;
1546
1547 one_breakpoint_xfer_memory (readbuf, writebuf, writebuf_org,
1548 memaddr, len, &bl->target_info, bl->gdbarch);
1549 }
1550 }
1551
1552 \f
1553
1554 /* Return true if BPT is either a software breakpoint or a hardware
1555 breakpoint. */
1556
1557 int
1558 is_breakpoint (const struct breakpoint *bpt)
1559 {
1560 return (bpt->type == bp_breakpoint
1561 || bpt->type == bp_hardware_breakpoint
1562 || bpt->type == bp_dprintf);
1563 }
1564
1565 /* Return true if BPT is of any hardware watchpoint kind. */
1566
1567 static int
1568 is_hardware_watchpoint (const struct breakpoint *bpt)
1569 {
1570 return (bpt->type == bp_hardware_watchpoint
1571 || bpt->type == bp_read_watchpoint
1572 || bpt->type == bp_access_watchpoint);
1573 }
1574
1575 /* Return true if BPT is of any watchpoint kind, hardware or
1576 software. */
1577
1578 int
1579 is_watchpoint (const struct breakpoint *bpt)
1580 {
1581 return (is_hardware_watchpoint (bpt)
1582 || bpt->type == bp_watchpoint);
1583 }
1584
1585 /* Returns true if the current thread and its running state are safe
1586 to evaluate or update watchpoint B. Watchpoints on local
1587 expressions need to be evaluated in the context of the thread that
1588 was current when the watchpoint was created, and, that thread needs
1589 to be stopped to be able to select the correct frame context.
1590 Watchpoints on global expressions can be evaluated on any thread,
1591 and in any state. It is presently left to the target allowing
1592 memory accesses when threads are running. */
1593
1594 static int
1595 watchpoint_in_thread_scope (struct watchpoint *b)
1596 {
1597 return (b->pspace == current_program_space
1598 && (ptid_equal (b->watchpoint_thread, null_ptid)
1599 || (ptid_equal (inferior_ptid, b->watchpoint_thread)
1600 && !is_executing (inferior_ptid))));
1601 }
1602
1603 /* Set watchpoint B to disp_del_at_next_stop, even including its possible
1604 associated bp_watchpoint_scope breakpoint. */
1605
1606 static void
1607 watchpoint_del_at_next_stop (struct watchpoint *w)
1608 {
1609 if (w->related_breakpoint != w)
1610 {
1611 gdb_assert (w->related_breakpoint->type == bp_watchpoint_scope);
1612 gdb_assert (w->related_breakpoint->related_breakpoint == w);
1613 w->related_breakpoint->disposition = disp_del_at_next_stop;
1614 w->related_breakpoint->related_breakpoint = w->related_breakpoint;
1615 w->related_breakpoint = w;
1616 }
1617 w->disposition = disp_del_at_next_stop;
1618 }
1619
1620 /* Extract a bitfield value from value VAL using the bit parameters contained in
1621 watchpoint W. */
1622
1623 static struct value *
1624 extract_bitfield_from_watchpoint_value (struct watchpoint *w, struct value *val)
1625 {
1626 struct value *bit_val;
1627
1628 if (val == NULL)
1629 return NULL;
1630
1631 bit_val = allocate_value (value_type (val));
1632
1633 unpack_value_bitfield (bit_val,
1634 w->val_bitpos,
1635 w->val_bitsize,
1636 value_contents_for_printing (val),
1637 value_offset (val),
1638 val);
1639
1640 return bit_val;
1641 }
1642
1643 /* Allocate a dummy location and add it to B, which must be a software
1644 watchpoint. This is required because even if a software watchpoint
1645 is not watching any memory, bpstat_stop_status requires a location
1646 to be able to report stops. */
1647
1648 static void
1649 software_watchpoint_add_no_memory_location (struct breakpoint *b,
1650 struct program_space *pspace)
1651 {
1652 gdb_assert (b->type == bp_watchpoint && b->loc == NULL);
1653
1654 b->loc = allocate_bp_location (b);
1655 b->loc->pspace = pspace;
1656 b->loc->address = -1;
1657 b->loc->length = -1;
1658 }
1659
1660 /* Returns true if B is a software watchpoint that is not watching any
1661 memory (e.g., "watch $pc"). */
1662
1663 static int
1664 is_no_memory_software_watchpoint (struct breakpoint *b)
1665 {
1666 return (b->type == bp_watchpoint
1667 && b->loc != NULL
1668 && b->loc->next == NULL
1669 && b->loc->address == -1
1670 && b->loc->length == -1);
1671 }
1672
1673 /* Assuming that B is a watchpoint:
1674 - Reparse watchpoint expression, if REPARSE is non-zero
1675 - Evaluate expression and store the result in B->val
1676 - Evaluate the condition if there is one, and store the result
1677 in b->loc->cond.
1678 - Update the list of values that must be watched in B->loc.
1679
1680 If the watchpoint disposition is disp_del_at_next_stop, then do
1681 nothing. If this is local watchpoint that is out of scope, delete
1682 it.
1683
1684 Even with `set breakpoint always-inserted on' the watchpoints are
1685 removed + inserted on each stop here. Normal breakpoints must
1686 never be removed because they might be missed by a running thread
1687 when debugging in non-stop mode. On the other hand, hardware
1688 watchpoints (is_hardware_watchpoint; processed here) are specific
1689 to each LWP since they are stored in each LWP's hardware debug
1690 registers. Therefore, such LWP must be stopped first in order to
1691 be able to modify its hardware watchpoints.
1692
1693 Hardware watchpoints must be reset exactly once after being
1694 presented to the user. It cannot be done sooner, because it would
1695 reset the data used to present the watchpoint hit to the user. And
1696 it must not be done later because it could display the same single
1697 watchpoint hit during multiple GDB stops. Note that the latter is
1698 relevant only to the hardware watchpoint types bp_read_watchpoint
1699 and bp_access_watchpoint. False hit by bp_hardware_watchpoint is
1700 not user-visible - its hit is suppressed if the memory content has
1701 not changed.
1702
1703 The following constraints influence the location where we can reset
1704 hardware watchpoints:
1705
1706 * target_stopped_by_watchpoint and target_stopped_data_address are
1707 called several times when GDB stops.
1708
1709 [linux]
1710 * Multiple hardware watchpoints can be hit at the same time,
1711 causing GDB to stop. GDB only presents one hardware watchpoint
1712 hit at a time as the reason for stopping, and all the other hits
1713 are presented later, one after the other, each time the user
1714 requests the execution to be resumed. Execution is not resumed
1715 for the threads still having pending hit event stored in
1716 LWP_INFO->STATUS. While the watchpoint is already removed from
1717 the inferior on the first stop the thread hit event is kept being
1718 reported from its cached value by linux_nat_stopped_data_address
1719 until the real thread resume happens after the watchpoint gets
1720 presented and thus its LWP_INFO->STATUS gets reset.
1721
1722 Therefore the hardware watchpoint hit can get safely reset on the
1723 watchpoint removal from inferior. */
1724
1725 static void
1726 update_watchpoint (struct watchpoint *b, int reparse)
1727 {
1728 int within_current_scope;
1729 struct frame_id saved_frame_id;
1730 int frame_saved;
1731
1732 /* If this is a local watchpoint, we only want to check if the
1733 watchpoint frame is in scope if the current thread is the thread
1734 that was used to create the watchpoint. */
1735 if (!watchpoint_in_thread_scope (b))
1736 return;
1737
1738 if (b->disposition == disp_del_at_next_stop)
1739 return;
1740
1741 frame_saved = 0;
1742
1743 /* Determine if the watchpoint is within scope. */
1744 if (b->exp_valid_block == NULL)
1745 within_current_scope = 1;
1746 else
1747 {
1748 struct frame_info *fi = get_current_frame ();
1749 struct gdbarch *frame_arch = get_frame_arch (fi);
1750 CORE_ADDR frame_pc = get_frame_pc (fi);
1751
1752 /* If we're at a point where the stack has been destroyed
1753 (e.g. in a function epilogue), unwinding may not work
1754 properly. Do not attempt to recreate locations at this
1755 point. See similar comments in watchpoint_check. */
1756 if (gdbarch_stack_frame_destroyed_p (frame_arch, frame_pc))
1757 return;
1758
1759 /* Save the current frame's ID so we can restore it after
1760 evaluating the watchpoint expression on its own frame. */
1761 /* FIXME drow/2003-09-09: It would be nice if evaluate_expression
1762 took a frame parameter, so that we didn't have to change the
1763 selected frame. */
1764 frame_saved = 1;
1765 saved_frame_id = get_frame_id (get_selected_frame (NULL));
1766
1767 fi = frame_find_by_id (b->watchpoint_frame);
1768 within_current_scope = (fi != NULL);
1769 if (within_current_scope)
1770 select_frame (fi);
1771 }
1772
1773 /* We don't free locations. They are stored in the bp_location array
1774 and update_global_location_list will eventually delete them and
1775 remove breakpoints if needed. */
1776 b->loc = NULL;
1777
1778 if (within_current_scope && reparse)
1779 {
1780 const char *s;
1781
1782 b->exp.reset ();
1783 s = b->exp_string_reparse ? b->exp_string_reparse : b->exp_string;
1784 b->exp = parse_exp_1 (&s, 0, b->exp_valid_block, 0);
1785 /* If the meaning of expression itself changed, the old value is
1786 no longer relevant. We don't want to report a watchpoint hit
1787 to the user when the old value and the new value may actually
1788 be completely different objects. */
1789 value_free (b->val);
1790 b->val = NULL;
1791 b->val_valid = 0;
1792
1793 /* Note that unlike with breakpoints, the watchpoint's condition
1794 expression is stored in the breakpoint object, not in the
1795 locations (re)created below. */
1796 if (b->cond_string != NULL)
1797 {
1798 b->cond_exp.reset ();
1799
1800 s = b->cond_string;
1801 b->cond_exp = parse_exp_1 (&s, 0, b->cond_exp_valid_block, 0);
1802 }
1803 }
1804
1805 /* If we failed to parse the expression, for example because
1806 it refers to a global variable in a not-yet-loaded shared library,
1807 don't try to insert watchpoint. We don't automatically delete
1808 such watchpoint, though, since failure to parse expression
1809 is different from out-of-scope watchpoint. */
1810 if (!target_has_execution)
1811 {
1812 /* Without execution, memory can't change. No use to try and
1813 set watchpoint locations. The watchpoint will be reset when
1814 the target gains execution, through breakpoint_re_set. */
1815 if (!can_use_hw_watchpoints)
1816 {
1817 if (b->ops->works_in_software_mode (b))
1818 b->type = bp_watchpoint;
1819 else
1820 error (_("Can't set read/access watchpoint when "
1821 "hardware watchpoints are disabled."));
1822 }
1823 }
1824 else if (within_current_scope && b->exp)
1825 {
1826 int pc = 0;
1827 struct value *val_chain, *v, *result, *next;
1828 struct program_space *frame_pspace;
1829
1830 fetch_subexp_value (b->exp.get (), &pc, &v, &result, &val_chain, 0);
1831
1832 /* Avoid setting b->val if it's already set. The meaning of
1833 b->val is 'the last value' user saw, and we should update
1834 it only if we reported that last value to user. As it
1835 happens, the code that reports it updates b->val directly.
1836 We don't keep track of the memory value for masked
1837 watchpoints. */
1838 if (!b->val_valid && !is_masked_watchpoint (b))
1839 {
1840 if (b->val_bitsize != 0)
1841 {
1842 v = extract_bitfield_from_watchpoint_value (b, v);
1843 if (v != NULL)
1844 release_value (v);
1845 }
1846 b->val = v;
1847 b->val_valid = 1;
1848 }
1849
1850 frame_pspace = get_frame_program_space (get_selected_frame (NULL));
1851
1852 /* Look at each value on the value chain. */
1853 for (v = val_chain; v; v = value_next (v))
1854 {
1855 /* If it's a memory location, and GDB actually needed
1856 its contents to evaluate the expression, then we
1857 must watch it. If the first value returned is
1858 still lazy, that means an error occurred reading it;
1859 watch it anyway in case it becomes readable. */
1860 if (VALUE_LVAL (v) == lval_memory
1861 && (v == val_chain || ! value_lazy (v)))
1862 {
1863 struct type *vtype = check_typedef (value_type (v));
1864
1865 /* We only watch structs and arrays if user asked
1866 for it explicitly, never if they just happen to
1867 appear in the middle of some value chain. */
1868 if (v == result
1869 || (TYPE_CODE (vtype) != TYPE_CODE_STRUCT
1870 && TYPE_CODE (vtype) != TYPE_CODE_ARRAY))
1871 {
1872 CORE_ADDR addr;
1873 enum target_hw_bp_type type;
1874 struct bp_location *loc, **tmp;
1875 int bitpos = 0, bitsize = 0;
1876
1877 if (value_bitsize (v) != 0)
1878 {
1879 /* Extract the bit parameters out from the bitfield
1880 sub-expression. */
1881 bitpos = value_bitpos (v);
1882 bitsize = value_bitsize (v);
1883 }
1884 else if (v == result && b->val_bitsize != 0)
1885 {
1886 /* If VAL_BITSIZE != 0 then RESULT is actually a bitfield
1887 lvalue whose bit parameters are saved in the fields
1888 VAL_BITPOS and VAL_BITSIZE. */
1889 bitpos = b->val_bitpos;
1890 bitsize = b->val_bitsize;
1891 }
1892
1893 addr = value_address (v);
1894 if (bitsize != 0)
1895 {
1896 /* Skip the bytes that don't contain the bitfield. */
1897 addr += bitpos / 8;
1898 }
1899
1900 type = hw_write;
1901 if (b->type == bp_read_watchpoint)
1902 type = hw_read;
1903 else if (b->type == bp_access_watchpoint)
1904 type = hw_access;
1905
1906 loc = allocate_bp_location (b);
1907 for (tmp = &(b->loc); *tmp != NULL; tmp = &((*tmp)->next))
1908 ;
1909 *tmp = loc;
1910 loc->gdbarch = get_type_arch (value_type (v));
1911
1912 loc->pspace = frame_pspace;
1913 loc->address = addr;
1914
1915 if (bitsize != 0)
1916 {
1917 /* Just cover the bytes that make up the bitfield. */
1918 loc->length = ((bitpos % 8) + bitsize + 7) / 8;
1919 }
1920 else
1921 loc->length = TYPE_LENGTH (value_type (v));
1922
1923 loc->watchpoint_type = type;
1924 }
1925 }
1926 }
1927
1928 /* Change the type of breakpoint between hardware assisted or
1929 an ordinary watchpoint depending on the hardware support
1930 and free hardware slots. REPARSE is set when the inferior
1931 is started. */
1932 if (reparse)
1933 {
1934 int reg_cnt;
1935 enum bp_loc_type loc_type;
1936 struct bp_location *bl;
1937
1938 reg_cnt = can_use_hardware_watchpoint (val_chain);
1939
1940 if (reg_cnt)
1941 {
1942 int i, target_resources_ok, other_type_used;
1943 enum bptype type;
1944
1945 /* Use an exact watchpoint when there's only one memory region to be
1946 watched, and only one debug register is needed to watch it. */
1947 b->exact = target_exact_watchpoints && reg_cnt == 1;
1948
1949 /* We need to determine how many resources are already
1950 used for all other hardware watchpoints plus this one
1951 to see if we still have enough resources to also fit
1952 this watchpoint in as well. */
1953
1954 /* If this is a software watchpoint, we try to turn it
1955 to a hardware one -- count resources as if B was of
1956 hardware watchpoint type. */
1957 type = b->type;
1958 if (type == bp_watchpoint)
1959 type = bp_hardware_watchpoint;
1960
1961 /* This watchpoint may or may not have been placed on
1962 the list yet at this point (it won't be in the list
1963 if we're trying to create it for the first time,
1964 through watch_command), so always account for it
1965 manually. */
1966
1967 /* Count resources used by all watchpoints except B. */
1968 i = hw_watchpoint_used_count_others (b, type, &other_type_used);
1969
1970 /* Add in the resources needed for B. */
1971 i += hw_watchpoint_use_count (b);
1972
1973 target_resources_ok
1974 = target_can_use_hardware_watchpoint (type, i, other_type_used);
1975 if (target_resources_ok <= 0)
1976 {
1977 int sw_mode = b->ops->works_in_software_mode (b);
1978
1979 if (target_resources_ok == 0 && !sw_mode)
1980 error (_("Target does not support this type of "
1981 "hardware watchpoint."));
1982 else if (target_resources_ok < 0 && !sw_mode)
1983 error (_("There are not enough available hardware "
1984 "resources for this watchpoint."));
1985
1986 /* Downgrade to software watchpoint. */
1987 b->type = bp_watchpoint;
1988 }
1989 else
1990 {
1991 /* If this was a software watchpoint, we've just
1992 found we have enough resources to turn it to a
1993 hardware watchpoint. Otherwise, this is a
1994 nop. */
1995 b->type = type;
1996 }
1997 }
1998 else if (!b->ops->works_in_software_mode (b))
1999 {
2000 if (!can_use_hw_watchpoints)
2001 error (_("Can't set read/access watchpoint when "
2002 "hardware watchpoints are disabled."));
2003 else
2004 error (_("Expression cannot be implemented with "
2005 "read/access watchpoint."));
2006 }
2007 else
2008 b->type = bp_watchpoint;
2009
2010 loc_type = (b->type == bp_watchpoint? bp_loc_other
2011 : bp_loc_hardware_watchpoint);
2012 for (bl = b->loc; bl; bl = bl->next)
2013 bl->loc_type = loc_type;
2014 }
2015
2016 for (v = val_chain; v; v = next)
2017 {
2018 next = value_next (v);
2019 if (v != b->val)
2020 value_free (v);
2021 }
2022
2023 /* If a software watchpoint is not watching any memory, then the
2024 above left it without any location set up. But,
2025 bpstat_stop_status requires a location to be able to report
2026 stops, so make sure there's at least a dummy one. */
2027 if (b->type == bp_watchpoint && b->loc == NULL)
2028 software_watchpoint_add_no_memory_location (b, frame_pspace);
2029 }
2030 else if (!within_current_scope)
2031 {
2032 printf_filtered (_("\
2033 Watchpoint %d deleted because the program has left the block\n\
2034 in which its expression is valid.\n"),
2035 b->number);
2036 watchpoint_del_at_next_stop (b);
2037 }
2038
2039 /* Restore the selected frame. */
2040 if (frame_saved)
2041 select_frame (frame_find_by_id (saved_frame_id));
2042 }
2043
2044
2045 /* Returns 1 iff breakpoint location should be
2046 inserted in the inferior. We don't differentiate the type of BL's owner
2047 (breakpoint vs. tracepoint), although insert_location in tracepoint's
2048 breakpoint_ops is not defined, because in insert_bp_location,
2049 tracepoint's insert_location will not be called. */
2050 static int
2051 should_be_inserted (struct bp_location *bl)
2052 {
2053 if (bl->owner == NULL || !breakpoint_enabled (bl->owner))
2054 return 0;
2055
2056 if (bl->owner->disposition == disp_del_at_next_stop)
2057 return 0;
2058
2059 if (!bl->enabled || bl->shlib_disabled || bl->duplicate)
2060 return 0;
2061
2062 if (user_breakpoint_p (bl->owner) && bl->pspace->executing_startup)
2063 return 0;
2064
2065 /* This is set for example, when we're attached to the parent of a
2066 vfork, and have detached from the child. The child is running
2067 free, and we expect it to do an exec or exit, at which point the
2068 OS makes the parent schedulable again (and the target reports
2069 that the vfork is done). Until the child is done with the shared
2070 memory region, do not insert breakpoints in the parent, otherwise
2071 the child could still trip on the parent's breakpoints. Since
2072 the parent is blocked anyway, it won't miss any breakpoint. */
2073 if (bl->pspace->breakpoints_not_allowed)
2074 return 0;
2075
2076 /* Don't insert a breakpoint if we're trying to step past its
2077 location, except if the breakpoint is a single-step breakpoint,
2078 and the breakpoint's thread is the thread which is stepping past
2079 a breakpoint. */
2080 if ((bl->loc_type == bp_loc_software_breakpoint
2081 || bl->loc_type == bp_loc_hardware_breakpoint)
2082 && stepping_past_instruction_at (bl->pspace->aspace,
2083 bl->address)
2084 /* The single-step breakpoint may be inserted at the location
2085 we're trying to step if the instruction branches to itself.
2086 However, the instruction won't be executed at all and it may
2087 break the semantics of the instruction, for example, the
2088 instruction is a conditional branch or updates some flags.
2089 We can't fix it unless GDB is able to emulate the instruction
2090 or switch to displaced stepping. */
2091 && !(bl->owner->type == bp_single_step
2092 && thread_is_stepping_over_breakpoint (bl->owner->thread)))
2093 {
2094 if (debug_infrun)
2095 {
2096 fprintf_unfiltered (gdb_stdlog,
2097 "infrun: skipping breakpoint: "
2098 "stepping past insn at: %s\n",
2099 paddress (bl->gdbarch, bl->address));
2100 }
2101 return 0;
2102 }
2103
2104 /* Don't insert watchpoints if we're trying to step past the
2105 instruction that triggered one. */
2106 if ((bl->loc_type == bp_loc_hardware_watchpoint)
2107 && stepping_past_nonsteppable_watchpoint ())
2108 {
2109 if (debug_infrun)
2110 {
2111 fprintf_unfiltered (gdb_stdlog,
2112 "infrun: stepping past non-steppable watchpoint. "
2113 "skipping watchpoint at %s:%d\n",
2114 paddress (bl->gdbarch, bl->address),
2115 bl->length);
2116 }
2117 return 0;
2118 }
2119
2120 return 1;
2121 }
2122
2123 /* Same as should_be_inserted but does the check assuming
2124 that the location is not duplicated. */
2125
2126 static int
2127 unduplicated_should_be_inserted (struct bp_location *bl)
2128 {
2129 int result;
2130 const int save_duplicate = bl->duplicate;
2131
2132 bl->duplicate = 0;
2133 result = should_be_inserted (bl);
2134 bl->duplicate = save_duplicate;
2135 return result;
2136 }
2137
2138 /* Parses a conditional described by an expression COND into an
2139 agent expression bytecode suitable for evaluation
2140 by the bytecode interpreter. Return NULL if there was
2141 any error during parsing. */
2142
2143 static agent_expr_up
2144 parse_cond_to_aexpr (CORE_ADDR scope, struct expression *cond)
2145 {
2146 if (cond == NULL)
2147 return NULL;
2148
2149 agent_expr_up aexpr;
2150
2151 /* We don't want to stop processing, so catch any errors
2152 that may show up. */
2153 TRY
2154 {
2155 aexpr = gen_eval_for_expr (scope, cond);
2156 }
2157
2158 CATCH (ex, RETURN_MASK_ERROR)
2159 {
2160 /* If we got here, it means the condition could not be parsed to a valid
2161 bytecode expression and thus can't be evaluated on the target's side.
2162 It's no use iterating through the conditions. */
2163 }
2164 END_CATCH
2165
2166 /* We have a valid agent expression. */
2167 return aexpr;
2168 }
2169
2170 /* Based on location BL, create a list of breakpoint conditions to be
2171 passed on to the target. If we have duplicated locations with different
2172 conditions, we will add such conditions to the list. The idea is that the
2173 target will evaluate the list of conditions and will only notify GDB when
2174 one of them is true. */
2175
2176 static void
2177 build_target_condition_list (struct bp_location *bl)
2178 {
2179 struct bp_location **locp = NULL, **loc2p;
2180 int null_condition_or_parse_error = 0;
2181 int modified = bl->needs_update;
2182 struct bp_location *loc;
2183
2184 /* Release conditions left over from a previous insert. */
2185 bl->target_info.conditions.clear ();
2186
2187 /* This is only meaningful if the target is
2188 evaluating conditions and if the user has
2189 opted for condition evaluation on the target's
2190 side. */
2191 if (gdb_evaluates_breakpoint_condition_p ()
2192 || !target_supports_evaluation_of_breakpoint_conditions ())
2193 return;
2194
2195 /* Do a first pass to check for locations with no assigned
2196 conditions or conditions that fail to parse to a valid agent expression
2197 bytecode. If any of these happen, then it's no use to send conditions
2198 to the target since this location will always trigger and generate a
2199 response back to GDB. */
2200 ALL_BP_LOCATIONS_AT_ADDR (loc2p, locp, bl->address)
2201 {
2202 loc = (*loc2p);
2203 if (is_breakpoint (loc->owner) && loc->pspace->num == bl->pspace->num)
2204 {
2205 if (modified)
2206 {
2207 /* Re-parse the conditions since something changed. In that
2208 case we already freed the condition bytecodes (see
2209 force_breakpoint_reinsertion). We just
2210 need to parse the condition to bytecodes again. */
2211 loc->cond_bytecode = parse_cond_to_aexpr (bl->address,
2212 loc->cond.get ());
2213 }
2214
2215 /* If we have a NULL bytecode expression, it means something
2216 went wrong or we have a null condition expression. */
2217 if (!loc->cond_bytecode)
2218 {
2219 null_condition_or_parse_error = 1;
2220 break;
2221 }
2222 }
2223 }
2224
2225 /* If any of these happened, it means we will have to evaluate the conditions
2226 for the location's address on gdb's side. It is no use keeping bytecodes
2227 for all the other duplicate locations, thus we free all of them here.
2228
2229 This is so we have a finer control over which locations' conditions are
2230 being evaluated by GDB or the remote stub. */
2231 if (null_condition_or_parse_error)
2232 {
2233 ALL_BP_LOCATIONS_AT_ADDR (loc2p, locp, bl->address)
2234 {
2235 loc = (*loc2p);
2236 if (is_breakpoint (loc->owner) && loc->pspace->num == bl->pspace->num)
2237 {
2238 /* Only go as far as the first NULL bytecode is
2239 located. */
2240 if (!loc->cond_bytecode)
2241 return;
2242
2243 loc->cond_bytecode.reset ();
2244 }
2245 }
2246 }
2247
2248 /* No NULL conditions or failed bytecode generation. Build a condition list
2249 for this location's address. */
2250 ALL_BP_LOCATIONS_AT_ADDR (loc2p, locp, bl->address)
2251 {
2252 loc = (*loc2p);
2253 if (loc->cond
2254 && is_breakpoint (loc->owner)
2255 && loc->pspace->num == bl->pspace->num
2256 && loc->owner->enable_state == bp_enabled
2257 && loc->enabled)
2258 {
2259 /* Add the condition to the vector. This will be used later
2260 to send the conditions to the target. */
2261 bl->target_info.conditions.push_back (loc->cond_bytecode.get ());
2262 }
2263 }
2264
2265 return;
2266 }
2267
2268 /* Parses a command described by string CMD into an agent expression
2269 bytecode suitable for evaluation by the bytecode interpreter.
2270 Return NULL if there was any error during parsing. */
2271
2272 static agent_expr_up
2273 parse_cmd_to_aexpr (CORE_ADDR scope, char *cmd)
2274 {
2275 struct cleanup *old_cleanups = 0;
2276 struct expression **argvec;
2277 const char *cmdrest;
2278 const char *format_start, *format_end;
2279 struct format_piece *fpieces;
2280 int nargs;
2281 struct gdbarch *gdbarch = get_current_arch ();
2282
2283 if (cmd == NULL)
2284 return NULL;
2285
2286 cmdrest = cmd;
2287
2288 if (*cmdrest == ',')
2289 ++cmdrest;
2290 cmdrest = skip_spaces (cmdrest);
2291
2292 if (*cmdrest++ != '"')
2293 error (_("No format string following the location"));
2294
2295 format_start = cmdrest;
2296
2297 fpieces = parse_format_string (&cmdrest);
2298
2299 old_cleanups = make_cleanup (free_format_pieces_cleanup, &fpieces);
2300
2301 format_end = cmdrest;
2302
2303 if (*cmdrest++ != '"')
2304 error (_("Bad format string, non-terminated '\"'."));
2305
2306 cmdrest = skip_spaces (cmdrest);
2307
2308 if (!(*cmdrest == ',' || *cmdrest == '\0'))
2309 error (_("Invalid argument syntax"));
2310
2311 if (*cmdrest == ',')
2312 cmdrest++;
2313 cmdrest = skip_spaces (cmdrest);
2314
2315 /* For each argument, make an expression. */
2316
2317 argvec = (struct expression **) alloca (strlen (cmd)
2318 * sizeof (struct expression *));
2319
2320 nargs = 0;
2321 while (*cmdrest != '\0')
2322 {
2323 const char *cmd1;
2324
2325 cmd1 = cmdrest;
2326 expression_up expr = parse_exp_1 (&cmd1, scope, block_for_pc (scope), 1);
2327 argvec[nargs++] = expr.release ();
2328 cmdrest = cmd1;
2329 if (*cmdrest == ',')
2330 ++cmdrest;
2331 }
2332
2333 agent_expr_up aexpr;
2334
2335 /* We don't want to stop processing, so catch any errors
2336 that may show up. */
2337 TRY
2338 {
2339 aexpr = gen_printf (scope, gdbarch, 0, 0,
2340 format_start, format_end - format_start,
2341 fpieces, nargs, argvec);
2342 }
2343 CATCH (ex, RETURN_MASK_ERROR)
2344 {
2345 /* If we got here, it means the command could not be parsed to a valid
2346 bytecode expression and thus can't be evaluated on the target's side.
2347 It's no use iterating through the other commands. */
2348 }
2349 END_CATCH
2350
2351 do_cleanups (old_cleanups);
2352
2353 /* We have a valid agent expression, return it. */
2354 return aexpr;
2355 }
2356
2357 /* Based on location BL, create a list of breakpoint commands to be
2358 passed on to the target. If we have duplicated locations with
2359 different commands, we will add any such to the list. */
2360
2361 static void
2362 build_target_command_list (struct bp_location *bl)
2363 {
2364 struct bp_location **locp = NULL, **loc2p;
2365 int null_command_or_parse_error = 0;
2366 int modified = bl->needs_update;
2367 struct bp_location *loc;
2368
2369 /* Clear commands left over from a previous insert. */
2370 bl->target_info.tcommands.clear ();
2371
2372 if (!target_can_run_breakpoint_commands ())
2373 return;
2374
2375 /* For now, limit to agent-style dprintf breakpoints. */
2376 if (dprintf_style != dprintf_style_agent)
2377 return;
2378
2379 /* For now, if we have any duplicate location that isn't a dprintf,
2380 don't install the target-side commands, as that would make the
2381 breakpoint not be reported to the core, and we'd lose
2382 control. */
2383 ALL_BP_LOCATIONS_AT_ADDR (loc2p, locp, bl->address)
2384 {
2385 loc = (*loc2p);
2386 if (is_breakpoint (loc->owner)
2387 && loc->pspace->num == bl->pspace->num
2388 && loc->owner->type != bp_dprintf)
2389 return;
2390 }
2391
2392 /* Do a first pass to check for locations with no assigned
2393 conditions or conditions that fail to parse to a valid agent expression
2394 bytecode. If any of these happen, then it's no use to send conditions
2395 to the target since this location will always trigger and generate a
2396 response back to GDB. */
2397 ALL_BP_LOCATIONS_AT_ADDR (loc2p, locp, bl->address)
2398 {
2399 loc = (*loc2p);
2400 if (is_breakpoint (loc->owner) && loc->pspace->num == bl->pspace->num)
2401 {
2402 if (modified)
2403 {
2404 /* Re-parse the commands since something changed. In that
2405 case we already freed the command bytecodes (see
2406 force_breakpoint_reinsertion). We just
2407 need to parse the command to bytecodes again. */
2408 loc->cmd_bytecode
2409 = parse_cmd_to_aexpr (bl->address,
2410 loc->owner->extra_string);
2411 }
2412
2413 /* If we have a NULL bytecode expression, it means something
2414 went wrong or we have a null command expression. */
2415 if (!loc->cmd_bytecode)
2416 {
2417 null_command_or_parse_error = 1;
2418 break;
2419 }
2420 }
2421 }
2422
2423 /* If anything failed, then we're not doing target-side commands,
2424 and so clean up. */
2425 if (null_command_or_parse_error)
2426 {
2427 ALL_BP_LOCATIONS_AT_ADDR (loc2p, locp, bl->address)
2428 {
2429 loc = (*loc2p);
2430 if (is_breakpoint (loc->owner)
2431 && loc->pspace->num == bl->pspace->num)
2432 {
2433 /* Only go as far as the first NULL bytecode is
2434 located. */
2435 if (loc->cmd_bytecode == NULL)
2436 return;
2437
2438 loc->cmd_bytecode.reset ();
2439 }
2440 }
2441 }
2442
2443 /* No NULL commands or failed bytecode generation. Build a command list
2444 for this location's address. */
2445 ALL_BP_LOCATIONS_AT_ADDR (loc2p, locp, bl->address)
2446 {
2447 loc = (*loc2p);
2448 if (loc->owner->extra_string
2449 && is_breakpoint (loc->owner)
2450 && loc->pspace->num == bl->pspace->num
2451 && loc->owner->enable_state == bp_enabled
2452 && loc->enabled)
2453 {
2454 /* Add the command to the vector. This will be used later
2455 to send the commands to the target. */
2456 bl->target_info.tcommands.push_back (loc->cmd_bytecode.get ());
2457 }
2458 }
2459
2460 bl->target_info.persist = 0;
2461 /* Maybe flag this location as persistent. */
2462 if (bl->owner->type == bp_dprintf && disconnected_dprintf)
2463 bl->target_info.persist = 1;
2464 }
2465
2466 /* Return the kind of breakpoint on address *ADDR. Get the kind
2467 of breakpoint according to ADDR except single-step breakpoint.
2468 Get the kind of single-step breakpoint according to the current
2469 registers state. */
2470
2471 static int
2472 breakpoint_kind (struct bp_location *bl, CORE_ADDR *addr)
2473 {
2474 if (bl->owner->type == bp_single_step)
2475 {
2476 struct thread_info *thr = find_thread_global_id (bl->owner->thread);
2477 struct regcache *regcache;
2478
2479 regcache = get_thread_regcache (thr->ptid);
2480
2481 return gdbarch_breakpoint_kind_from_current_state (bl->gdbarch,
2482 regcache, addr);
2483 }
2484 else
2485 return gdbarch_breakpoint_kind_from_pc (bl->gdbarch, addr);
2486 }
2487
2488 /* Insert a low-level "breakpoint" of some type. BL is the breakpoint
2489 location. Any error messages are printed to TMP_ERROR_STREAM; and
2490 DISABLED_BREAKS, and HW_BREAKPOINT_ERROR are used to report problems.
2491 Returns 0 for success, 1 if the bp_location type is not supported or
2492 -1 for failure.
2493
2494 NOTE drow/2003-09-09: This routine could be broken down to an
2495 object-style method for each breakpoint or catchpoint type. */
2496 static int
2497 insert_bp_location (struct bp_location *bl,
2498 struct ui_file *tmp_error_stream,
2499 int *disabled_breaks,
2500 int *hw_breakpoint_error,
2501 int *hw_bp_error_explained_already)
2502 {
2503 enum errors bp_err = GDB_NO_ERROR;
2504 const char *bp_err_message = NULL;
2505
2506 if (!should_be_inserted (bl) || (bl->inserted && !bl->needs_update))
2507 return 0;
2508
2509 /* Note we don't initialize bl->target_info, as that wipes out
2510 the breakpoint location's shadow_contents if the breakpoint
2511 is still inserted at that location. This in turn breaks
2512 target_read_memory which depends on these buffers when
2513 a memory read is requested at the breakpoint location:
2514 Once the target_info has been wiped, we fail to see that
2515 we have a breakpoint inserted at that address and thus
2516 read the breakpoint instead of returning the data saved in
2517 the breakpoint location's shadow contents. */
2518 bl->target_info.reqstd_address = bl->address;
2519 bl->target_info.placed_address_space = bl->pspace->aspace;
2520 bl->target_info.length = bl->length;
2521
2522 /* When working with target-side conditions, we must pass all the conditions
2523 for the same breakpoint address down to the target since GDB will not
2524 insert those locations. With a list of breakpoint conditions, the target
2525 can decide when to stop and notify GDB. */
2526
2527 if (is_breakpoint (bl->owner))
2528 {
2529 build_target_condition_list (bl);
2530 build_target_command_list (bl);
2531 /* Reset the modification marker. */
2532 bl->needs_update = 0;
2533 }
2534
2535 if (bl->loc_type == bp_loc_software_breakpoint
2536 || bl->loc_type == bp_loc_hardware_breakpoint)
2537 {
2538 if (bl->owner->type != bp_hardware_breakpoint)
2539 {
2540 /* If the explicitly specified breakpoint type
2541 is not hardware breakpoint, check the memory map to see
2542 if the breakpoint address is in read only memory or not.
2543
2544 Two important cases are:
2545 - location type is not hardware breakpoint, memory
2546 is readonly. We change the type of the location to
2547 hardware breakpoint.
2548 - location type is hardware breakpoint, memory is
2549 read-write. This means we've previously made the
2550 location hardware one, but then the memory map changed,
2551 so we undo.
2552
2553 When breakpoints are removed, remove_breakpoints will use
2554 location types we've just set here, the only possible
2555 problem is that memory map has changed during running
2556 program, but it's not going to work anyway with current
2557 gdb. */
2558 struct mem_region *mr
2559 = lookup_mem_region (bl->target_info.reqstd_address);
2560
2561 if (mr)
2562 {
2563 if (automatic_hardware_breakpoints)
2564 {
2565 enum bp_loc_type new_type;
2566
2567 if (mr->attrib.mode != MEM_RW)
2568 new_type = bp_loc_hardware_breakpoint;
2569 else
2570 new_type = bp_loc_software_breakpoint;
2571
2572 if (new_type != bl->loc_type)
2573 {
2574 static int said = 0;
2575
2576 bl->loc_type = new_type;
2577 if (!said)
2578 {
2579 fprintf_filtered (gdb_stdout,
2580 _("Note: automatically using "
2581 "hardware breakpoints for "
2582 "read-only addresses.\n"));
2583 said = 1;
2584 }
2585 }
2586 }
2587 else if (bl->loc_type == bp_loc_software_breakpoint
2588 && mr->attrib.mode != MEM_RW)
2589 {
2590 fprintf_unfiltered (tmp_error_stream,
2591 _("Cannot insert breakpoint %d.\n"
2592 "Cannot set software breakpoint "
2593 "at read-only address %s\n"),
2594 bl->owner->number,
2595 paddress (bl->gdbarch, bl->address));
2596 return 1;
2597 }
2598 }
2599 }
2600
2601 /* First check to see if we have to handle an overlay. */
2602 if (overlay_debugging == ovly_off
2603 || bl->section == NULL
2604 || !(section_is_overlay (bl->section)))
2605 {
2606 /* No overlay handling: just set the breakpoint. */
2607 TRY
2608 {
2609 int val;
2610
2611 val = bl->owner->ops->insert_location (bl);
2612 if (val)
2613 bp_err = GENERIC_ERROR;
2614 }
2615 CATCH (e, RETURN_MASK_ALL)
2616 {
2617 bp_err = e.error;
2618 bp_err_message = e.message;
2619 }
2620 END_CATCH
2621 }
2622 else
2623 {
2624 /* This breakpoint is in an overlay section.
2625 Shall we set a breakpoint at the LMA? */
2626 if (!overlay_events_enabled)
2627 {
2628 /* Yes -- overlay event support is not active,
2629 so we must try to set a breakpoint at the LMA.
2630 This will not work for a hardware breakpoint. */
2631 if (bl->loc_type == bp_loc_hardware_breakpoint)
2632 warning (_("hardware breakpoint %d not supported in overlay!"),
2633 bl->owner->number);
2634 else
2635 {
2636 CORE_ADDR addr = overlay_unmapped_address (bl->address,
2637 bl->section);
2638 /* Set a software (trap) breakpoint at the LMA. */
2639 bl->overlay_target_info = bl->target_info;
2640 bl->overlay_target_info.reqstd_address = addr;
2641
2642 /* No overlay handling: just set the breakpoint. */
2643 TRY
2644 {
2645 int val;
2646
2647 bl->overlay_target_info.kind
2648 = breakpoint_kind (bl, &addr);
2649 bl->overlay_target_info.placed_address = addr;
2650 val = target_insert_breakpoint (bl->gdbarch,
2651 &bl->overlay_target_info);
2652 if (val)
2653 bp_err = GENERIC_ERROR;
2654 }
2655 CATCH (e, RETURN_MASK_ALL)
2656 {
2657 bp_err = e.error;
2658 bp_err_message = e.message;
2659 }
2660 END_CATCH
2661
2662 if (bp_err != GDB_NO_ERROR)
2663 fprintf_unfiltered (tmp_error_stream,
2664 "Overlay breakpoint %d "
2665 "failed: in ROM?\n",
2666 bl->owner->number);
2667 }
2668 }
2669 /* Shall we set a breakpoint at the VMA? */
2670 if (section_is_mapped (bl->section))
2671 {
2672 /* Yes. This overlay section is mapped into memory. */
2673 TRY
2674 {
2675 int val;
2676
2677 val = bl->owner->ops->insert_location (bl);
2678 if (val)
2679 bp_err = GENERIC_ERROR;
2680 }
2681 CATCH (e, RETURN_MASK_ALL)
2682 {
2683 bp_err = e.error;
2684 bp_err_message = e.message;
2685 }
2686 END_CATCH
2687 }
2688 else
2689 {
2690 /* No. This breakpoint will not be inserted.
2691 No error, but do not mark the bp as 'inserted'. */
2692 return 0;
2693 }
2694 }
2695
2696 if (bp_err != GDB_NO_ERROR)
2697 {
2698 /* Can't set the breakpoint. */
2699
2700 /* In some cases, we might not be able to insert a
2701 breakpoint in a shared library that has already been
2702 removed, but we have not yet processed the shlib unload
2703 event. Unfortunately, some targets that implement
2704 breakpoint insertion themselves can't tell why the
2705 breakpoint insertion failed (e.g., the remote target
2706 doesn't define error codes), so we must treat generic
2707 errors as memory errors. */
2708 if ((bp_err == GENERIC_ERROR || bp_err == MEMORY_ERROR)
2709 && bl->loc_type == bp_loc_software_breakpoint
2710 && (solib_name_from_address (bl->pspace, bl->address)
2711 || shared_objfile_contains_address_p (bl->pspace,
2712 bl->address)))
2713 {
2714 /* See also: disable_breakpoints_in_shlibs. */
2715 bl->shlib_disabled = 1;
2716 observer_notify_breakpoint_modified (bl->owner);
2717 if (!*disabled_breaks)
2718 {
2719 fprintf_unfiltered (tmp_error_stream,
2720 "Cannot insert breakpoint %d.\n",
2721 bl->owner->number);
2722 fprintf_unfiltered (tmp_error_stream,
2723 "Temporarily disabling shared "
2724 "library breakpoints:\n");
2725 }
2726 *disabled_breaks = 1;
2727 fprintf_unfiltered (tmp_error_stream,
2728 "breakpoint #%d\n", bl->owner->number);
2729 return 0;
2730 }
2731 else
2732 {
2733 if (bl->loc_type == bp_loc_hardware_breakpoint)
2734 {
2735 *hw_breakpoint_error = 1;
2736 *hw_bp_error_explained_already = bp_err_message != NULL;
2737 fprintf_unfiltered (tmp_error_stream,
2738 "Cannot insert hardware breakpoint %d%s",
2739 bl->owner->number, bp_err_message ? ":" : ".\n");
2740 if (bp_err_message != NULL)
2741 fprintf_unfiltered (tmp_error_stream, "%s.\n", bp_err_message);
2742 }
2743 else
2744 {
2745 if (bp_err_message == NULL)
2746 {
2747 std::string message
2748 = memory_error_message (TARGET_XFER_E_IO,
2749 bl->gdbarch, bl->address);
2750
2751 fprintf_unfiltered (tmp_error_stream,
2752 "Cannot insert breakpoint %d.\n"
2753 "%s\n",
2754 bl->owner->number, message.c_str ());
2755 }
2756 else
2757 {
2758 fprintf_unfiltered (tmp_error_stream,
2759 "Cannot insert breakpoint %d: %s\n",
2760 bl->owner->number,
2761 bp_err_message);
2762 }
2763 }
2764 return 1;
2765
2766 }
2767 }
2768 else
2769 bl->inserted = 1;
2770
2771 return 0;
2772 }
2773
2774 else if (bl->loc_type == bp_loc_hardware_watchpoint
2775 /* NOTE drow/2003-09-08: This state only exists for removing
2776 watchpoints. It's not clear that it's necessary... */
2777 && bl->owner->disposition != disp_del_at_next_stop)
2778 {
2779 int val;
2780
2781 gdb_assert (bl->owner->ops != NULL
2782 && bl->owner->ops->insert_location != NULL);
2783
2784 val = bl->owner->ops->insert_location (bl);
2785
2786 /* If trying to set a read-watchpoint, and it turns out it's not
2787 supported, try emulating one with an access watchpoint. */
2788 if (val == 1 && bl->watchpoint_type == hw_read)
2789 {
2790 struct bp_location *loc, **loc_temp;
2791
2792 /* But don't try to insert it, if there's already another
2793 hw_access location that would be considered a duplicate
2794 of this one. */
2795 ALL_BP_LOCATIONS (loc, loc_temp)
2796 if (loc != bl
2797 && loc->watchpoint_type == hw_access
2798 && watchpoint_locations_match (bl, loc))
2799 {
2800 bl->duplicate = 1;
2801 bl->inserted = 1;
2802 bl->target_info = loc->target_info;
2803 bl->watchpoint_type = hw_access;
2804 val = 0;
2805 break;
2806 }
2807
2808 if (val == 1)
2809 {
2810 bl->watchpoint_type = hw_access;
2811 val = bl->owner->ops->insert_location (bl);
2812
2813 if (val)
2814 /* Back to the original value. */
2815 bl->watchpoint_type = hw_read;
2816 }
2817 }
2818
2819 bl->inserted = (val == 0);
2820 }
2821
2822 else if (bl->owner->type == bp_catchpoint)
2823 {
2824 int val;
2825
2826 gdb_assert (bl->owner->ops != NULL
2827 && bl->owner->ops->insert_location != NULL);
2828
2829 val = bl->owner->ops->insert_location (bl);
2830 if (val)
2831 {
2832 bl->owner->enable_state = bp_disabled;
2833
2834 if (val == 1)
2835 warning (_("\
2836 Error inserting catchpoint %d: Your system does not support this type\n\
2837 of catchpoint."), bl->owner->number);
2838 else
2839 warning (_("Error inserting catchpoint %d."), bl->owner->number);
2840 }
2841
2842 bl->inserted = (val == 0);
2843
2844 /* We've already printed an error message if there was a problem
2845 inserting this catchpoint, and we've disabled the catchpoint,
2846 so just return success. */
2847 return 0;
2848 }
2849
2850 return 0;
2851 }
2852
2853 /* This function is called when program space PSPACE is about to be
2854 deleted. It takes care of updating breakpoints to not reference
2855 PSPACE anymore. */
2856
2857 void
2858 breakpoint_program_space_exit (struct program_space *pspace)
2859 {
2860 struct breakpoint *b, *b_temp;
2861 struct bp_location *loc, **loc_temp;
2862
2863 /* Remove any breakpoint that was set through this program space. */
2864 ALL_BREAKPOINTS_SAFE (b, b_temp)
2865 {
2866 if (b->pspace == pspace)
2867 delete_breakpoint (b);
2868 }
2869
2870 /* Breakpoints set through other program spaces could have locations
2871 bound to PSPACE as well. Remove those. */
2872 ALL_BP_LOCATIONS (loc, loc_temp)
2873 {
2874 struct bp_location *tmp;
2875
2876 if (loc->pspace == pspace)
2877 {
2878 /* ALL_BP_LOCATIONS bp_location has LOC->OWNER always non-NULL. */
2879 if (loc->owner->loc == loc)
2880 loc->owner->loc = loc->next;
2881 else
2882 for (tmp = loc->owner->loc; tmp->next != NULL; tmp = tmp->next)
2883 if (tmp->next == loc)
2884 {
2885 tmp->next = loc->next;
2886 break;
2887 }
2888 }
2889 }
2890
2891 /* Now update the global location list to permanently delete the
2892 removed locations above. */
2893 update_global_location_list (UGLL_DONT_INSERT);
2894 }
2895
2896 /* Make sure all breakpoints are inserted in inferior.
2897 Throws exception on any error.
2898 A breakpoint that is already inserted won't be inserted
2899 again, so calling this function twice is safe. */
2900 void
2901 insert_breakpoints (void)
2902 {
2903 struct breakpoint *bpt;
2904
2905 ALL_BREAKPOINTS (bpt)
2906 if (is_hardware_watchpoint (bpt))
2907 {
2908 struct watchpoint *w = (struct watchpoint *) bpt;
2909
2910 update_watchpoint (w, 0 /* don't reparse. */);
2911 }
2912
2913 /* Updating watchpoints creates new locations, so update the global
2914 location list. Explicitly tell ugll to insert locations and
2915 ignore breakpoints_always_inserted_mode. */
2916 update_global_location_list (UGLL_INSERT);
2917 }
2918
2919 /* Invoke CALLBACK for each of bp_location. */
2920
2921 void
2922 iterate_over_bp_locations (walk_bp_location_callback callback)
2923 {
2924 struct bp_location *loc, **loc_tmp;
2925
2926 ALL_BP_LOCATIONS (loc, loc_tmp)
2927 {
2928 callback (loc, NULL);
2929 }
2930 }
2931
2932 /* This is used when we need to synch breakpoint conditions between GDB and the
2933 target. It is the case with deleting and disabling of breakpoints when using
2934 always-inserted mode. */
2935
2936 static void
2937 update_inserted_breakpoint_locations (void)
2938 {
2939 struct bp_location *bl, **blp_tmp;
2940 int error_flag = 0;
2941 int val = 0;
2942 int disabled_breaks = 0;
2943 int hw_breakpoint_error = 0;
2944 int hw_bp_details_reported = 0;
2945
2946 string_file tmp_error_stream;
2947
2948 /* Explicitly mark the warning -- this will only be printed if
2949 there was an error. */
2950 tmp_error_stream.puts ("Warning:\n");
2951
2952 scoped_restore_current_pspace_and_thread restore_pspace_thread;
2953
2954 ALL_BP_LOCATIONS (bl, blp_tmp)
2955 {
2956 /* We only want to update software breakpoints and hardware
2957 breakpoints. */
2958 if (!is_breakpoint (bl->owner))
2959 continue;
2960
2961 /* We only want to update locations that are already inserted
2962 and need updating. This is to avoid unwanted insertion during
2963 deletion of breakpoints. */
2964 if (!bl->inserted || (bl->inserted && !bl->needs_update))
2965 continue;
2966
2967 switch_to_program_space_and_thread (bl->pspace);
2968
2969 /* For targets that support global breakpoints, there's no need
2970 to select an inferior to insert breakpoint to. In fact, even
2971 if we aren't attached to any process yet, we should still
2972 insert breakpoints. */
2973 if (!gdbarch_has_global_breakpoints (target_gdbarch ())
2974 && ptid_equal (inferior_ptid, null_ptid))
2975 continue;
2976
2977 val = insert_bp_location (bl, &tmp_error_stream, &disabled_breaks,
2978 &hw_breakpoint_error, &hw_bp_details_reported);
2979 if (val)
2980 error_flag = val;
2981 }
2982
2983 if (error_flag)
2984 {
2985 target_terminal::ours_for_output ();
2986 error_stream (tmp_error_stream);
2987 }
2988 }
2989
2990 /* Used when starting or continuing the program. */
2991
2992 static void
2993 insert_breakpoint_locations (void)
2994 {
2995 struct breakpoint *bpt;
2996 struct bp_location *bl, **blp_tmp;
2997 int error_flag = 0;
2998 int val = 0;
2999 int disabled_breaks = 0;
3000 int hw_breakpoint_error = 0;
3001 int hw_bp_error_explained_already = 0;
3002
3003 string_file tmp_error_stream;
3004
3005 /* Explicitly mark the warning -- this will only be printed if
3006 there was an error. */
3007 tmp_error_stream.puts ("Warning:\n");
3008
3009 scoped_restore_current_pspace_and_thread restore_pspace_thread;
3010
3011 ALL_BP_LOCATIONS (bl, blp_tmp)
3012 {
3013 if (!should_be_inserted (bl) || (bl->inserted && !bl->needs_update))
3014 continue;
3015
3016 /* There is no point inserting thread-specific breakpoints if
3017 the thread no longer exists. ALL_BP_LOCATIONS bp_location
3018 has BL->OWNER always non-NULL. */
3019 if (bl->owner->thread != -1
3020 && !valid_global_thread_id (bl->owner->thread))
3021 continue;
3022
3023 switch_to_program_space_and_thread (bl->pspace);
3024
3025 /* For targets that support global breakpoints, there's no need
3026 to select an inferior to insert breakpoint to. In fact, even
3027 if we aren't attached to any process yet, we should still
3028 insert breakpoints. */
3029 if (!gdbarch_has_global_breakpoints (target_gdbarch ())
3030 && ptid_equal (inferior_ptid, null_ptid))
3031 continue;
3032
3033 val = insert_bp_location (bl, &tmp_error_stream, &disabled_breaks,
3034 &hw_breakpoint_error, &hw_bp_error_explained_already);
3035 if (val)
3036 error_flag = val;
3037 }
3038
3039 /* If we failed to insert all locations of a watchpoint, remove
3040 them, as half-inserted watchpoint is of limited use. */
3041 ALL_BREAKPOINTS (bpt)
3042 {
3043 int some_failed = 0;
3044 struct bp_location *loc;
3045
3046 if (!is_hardware_watchpoint (bpt))
3047 continue;
3048
3049 if (!breakpoint_enabled (bpt))
3050 continue;
3051
3052 if (bpt->disposition == disp_del_at_next_stop)
3053 continue;
3054
3055 for (loc = bpt->loc; loc; loc = loc->next)
3056 if (!loc->inserted && should_be_inserted (loc))
3057 {
3058 some_failed = 1;
3059 break;
3060 }
3061 if (some_failed)
3062 {
3063 for (loc = bpt->loc; loc; loc = loc->next)
3064 if (loc->inserted)
3065 remove_breakpoint (loc);
3066
3067 hw_breakpoint_error = 1;
3068 tmp_error_stream.printf ("Could not insert "
3069 "hardware watchpoint %d.\n",
3070 bpt->number);
3071 error_flag = -1;
3072 }
3073 }
3074
3075 if (error_flag)
3076 {
3077 /* If a hardware breakpoint or watchpoint was inserted, add a
3078 message about possibly exhausted resources. */
3079 if (hw_breakpoint_error && !hw_bp_error_explained_already)
3080 {
3081 tmp_error_stream.printf ("Could not insert hardware breakpoints:\n\
3082 You may have requested too many hardware breakpoints/watchpoints.\n");
3083 }
3084 target_terminal::ours_for_output ();
3085 error_stream (tmp_error_stream);
3086 }
3087 }
3088
3089 /* Used when the program stops.
3090 Returns zero if successful, or non-zero if there was a problem
3091 removing a breakpoint location. */
3092
3093 int
3094 remove_breakpoints (void)
3095 {
3096 struct bp_location *bl, **blp_tmp;
3097 int val = 0;
3098
3099 ALL_BP_LOCATIONS (bl, blp_tmp)
3100 {
3101 if (bl->inserted && !is_tracepoint (bl->owner))
3102 val |= remove_breakpoint (bl);
3103 }
3104 return val;
3105 }
3106
3107 /* When a thread exits, remove breakpoints that are related to
3108 that thread. */
3109
3110 static void
3111 remove_threaded_breakpoints (struct thread_info *tp, int silent)
3112 {
3113 struct breakpoint *b, *b_tmp;
3114
3115 ALL_BREAKPOINTS_SAFE (b, b_tmp)
3116 {
3117 if (b->thread == tp->global_num && user_breakpoint_p (b))
3118 {
3119 b->disposition = disp_del_at_next_stop;
3120
3121 printf_filtered (_("\
3122 Thread-specific breakpoint %d deleted - thread %s no longer in the thread list.\n"),
3123 b->number, print_thread_id (tp));
3124
3125 /* Hide it from the user. */
3126 b->number = 0;
3127 }
3128 }
3129 }
3130
3131 /* Remove breakpoints of process PID. */
3132
3133 int
3134 remove_breakpoints_pid (int pid)
3135 {
3136 struct bp_location *bl, **blp_tmp;
3137 int val;
3138 struct inferior *inf = find_inferior_pid (pid);
3139
3140 ALL_BP_LOCATIONS (bl, blp_tmp)
3141 {
3142 if (bl->pspace != inf->pspace)
3143 continue;
3144
3145 if (bl->inserted && !bl->target_info.persist)
3146 {
3147 val = remove_breakpoint (bl);
3148 if (val != 0)
3149 return val;
3150 }
3151 }
3152 return 0;
3153 }
3154
3155 int
3156 reattach_breakpoints (int pid)
3157 {
3158 struct bp_location *bl, **blp_tmp;
3159 int val;
3160 int dummy1 = 0, dummy2 = 0, dummy3 = 0;
3161 struct inferior *inf;
3162 struct thread_info *tp;
3163
3164 tp = any_live_thread_of_process (pid);
3165 if (tp == NULL)
3166 return 1;
3167
3168 inf = find_inferior_pid (pid);
3169
3170 scoped_restore save_inferior_ptid = make_scoped_restore (&inferior_ptid);
3171 inferior_ptid = tp->ptid;
3172
3173 string_file tmp_error_stream;
3174
3175 ALL_BP_LOCATIONS (bl, blp_tmp)
3176 {
3177 if (bl->pspace != inf->pspace)
3178 continue;
3179
3180 if (bl->inserted)
3181 {
3182 bl->inserted = 0;
3183 val = insert_bp_location (bl, &tmp_error_stream, &dummy1, &dummy2, &dummy3);
3184 if (val != 0)
3185 return val;
3186 }
3187 }
3188 return 0;
3189 }
3190
3191 static int internal_breakpoint_number = -1;
3192
3193 /* Set the breakpoint number of B, depending on the value of INTERNAL.
3194 If INTERNAL is non-zero, the breakpoint number will be populated
3195 from internal_breakpoint_number and that variable decremented.
3196 Otherwise the breakpoint number will be populated from
3197 breakpoint_count and that value incremented. Internal breakpoints
3198 do not set the internal var bpnum. */
3199 static void
3200 set_breakpoint_number (int internal, struct breakpoint *b)
3201 {
3202 if (internal)
3203 b->number = internal_breakpoint_number--;
3204 else
3205 {
3206 set_breakpoint_count (breakpoint_count + 1);
3207 b->number = breakpoint_count;
3208 }
3209 }
3210
3211 static struct breakpoint *
3212 create_internal_breakpoint (struct gdbarch *gdbarch,
3213 CORE_ADDR address, enum bptype type,
3214 const struct breakpoint_ops *ops)
3215 {
3216 symtab_and_line sal;
3217 sal.pc = address;
3218 sal.section = find_pc_overlay (sal.pc);
3219 sal.pspace = current_program_space;
3220
3221 breakpoint *b = set_raw_breakpoint (gdbarch, sal, type, ops);
3222 b->number = internal_breakpoint_number--;
3223 b->disposition = disp_donttouch;
3224
3225 return b;
3226 }
3227
3228 static const char *const longjmp_names[] =
3229 {
3230 "longjmp", "_longjmp", "siglongjmp", "_siglongjmp"
3231 };
3232 #define NUM_LONGJMP_NAMES ARRAY_SIZE(longjmp_names)
3233
3234 /* Per-objfile data private to breakpoint.c. */
3235 struct breakpoint_objfile_data
3236 {
3237 /* Minimal symbol for "_ovly_debug_event" (if any). */
3238 struct bound_minimal_symbol overlay_msym;
3239
3240 /* Minimal symbol(s) for "longjmp", "siglongjmp", etc. (if any). */
3241 struct bound_minimal_symbol longjmp_msym[NUM_LONGJMP_NAMES];
3242
3243 /* True if we have looked for longjmp probes. */
3244 int longjmp_searched;
3245
3246 /* SystemTap probe points for longjmp (if any). */
3247 VEC (probe_p) *longjmp_probes;
3248
3249 /* Minimal symbol for "std::terminate()" (if any). */
3250 struct bound_minimal_symbol terminate_msym;
3251
3252 /* Minimal symbol for "_Unwind_DebugHook" (if any). */
3253 struct bound_minimal_symbol exception_msym;
3254
3255 /* True if we have looked for exception probes. */
3256 int exception_searched;
3257
3258 /* SystemTap probe points for unwinding (if any). */
3259 VEC (probe_p) *exception_probes;
3260 };
3261
3262 static const struct objfile_data *breakpoint_objfile_key;
3263
3264 /* Minimal symbol not found sentinel. */
3265 static struct minimal_symbol msym_not_found;
3266
3267 /* Returns TRUE if MSYM point to the "not found" sentinel. */
3268
3269 static int
3270 msym_not_found_p (const struct minimal_symbol *msym)
3271 {
3272 return msym == &msym_not_found;
3273 }
3274
3275 /* Return per-objfile data needed by breakpoint.c.
3276 Allocate the data if necessary. */
3277
3278 static struct breakpoint_objfile_data *
3279 get_breakpoint_objfile_data (struct objfile *objfile)
3280 {
3281 struct breakpoint_objfile_data *bp_objfile_data;
3282
3283 bp_objfile_data = ((struct breakpoint_objfile_data *)
3284 objfile_data (objfile, breakpoint_objfile_key));
3285 if (bp_objfile_data == NULL)
3286 {
3287 bp_objfile_data =
3288 XOBNEW (&objfile->objfile_obstack, struct breakpoint_objfile_data);
3289
3290 memset (bp_objfile_data, 0, sizeof (*bp_objfile_data));
3291 set_objfile_data (objfile, breakpoint_objfile_key, bp_objfile_data);
3292 }
3293 return bp_objfile_data;
3294 }
3295
3296 static void
3297 free_breakpoint_probes (struct objfile *obj, void *data)
3298 {
3299 struct breakpoint_objfile_data *bp_objfile_data
3300 = (struct breakpoint_objfile_data *) data;
3301
3302 VEC_free (probe_p, bp_objfile_data->longjmp_probes);
3303 VEC_free (probe_p, bp_objfile_data->exception_probes);
3304 }
3305
3306 static void
3307 create_overlay_event_breakpoint (void)
3308 {
3309 struct objfile *objfile;
3310 const char *const func_name = "_ovly_debug_event";
3311
3312 ALL_OBJFILES (objfile)
3313 {
3314 struct breakpoint *b;
3315 struct breakpoint_objfile_data *bp_objfile_data;
3316 CORE_ADDR addr;
3317 struct explicit_location explicit_loc;
3318
3319 bp_objfile_data = get_breakpoint_objfile_data (objfile);
3320
3321 if (msym_not_found_p (bp_objfile_data->overlay_msym.minsym))
3322 continue;
3323
3324 if (bp_objfile_data->overlay_msym.minsym == NULL)
3325 {
3326 struct bound_minimal_symbol m;
3327
3328 m = lookup_minimal_symbol_text (func_name, objfile);
3329 if (m.minsym == NULL)
3330 {
3331 /* Avoid future lookups in this objfile. */
3332 bp_objfile_data->overlay_msym.minsym = &msym_not_found;
3333 continue;
3334 }
3335 bp_objfile_data->overlay_msym = m;
3336 }
3337
3338 addr = BMSYMBOL_VALUE_ADDRESS (bp_objfile_data->overlay_msym);
3339 b = create_internal_breakpoint (get_objfile_arch (objfile), addr,
3340 bp_overlay_event,
3341 &internal_breakpoint_ops);
3342 initialize_explicit_location (&explicit_loc);
3343 explicit_loc.function_name = ASTRDUP (func_name);
3344 b->location = new_explicit_location (&explicit_loc);
3345
3346 if (overlay_debugging == ovly_auto)
3347 {
3348 b->enable_state = bp_enabled;
3349 overlay_events_enabled = 1;
3350 }
3351 else
3352 {
3353 b->enable_state = bp_disabled;
3354 overlay_events_enabled = 0;
3355 }
3356 }
3357 }
3358
3359 static void
3360 create_longjmp_master_breakpoint (void)
3361 {
3362 struct program_space *pspace;
3363
3364 scoped_restore_current_program_space restore_pspace;
3365
3366 ALL_PSPACES (pspace)
3367 {
3368 struct objfile *objfile;
3369
3370 set_current_program_space (pspace);
3371
3372 ALL_OBJFILES (objfile)
3373 {
3374 int i;
3375 struct gdbarch *gdbarch;
3376 struct breakpoint_objfile_data *bp_objfile_data;
3377
3378 gdbarch = get_objfile_arch (objfile);
3379
3380 bp_objfile_data = get_breakpoint_objfile_data (objfile);
3381
3382 if (!bp_objfile_data->longjmp_searched)
3383 {
3384 VEC (probe_p) *ret;
3385
3386 ret = find_probes_in_objfile (objfile, "libc", "longjmp");
3387 if (ret != NULL)
3388 {
3389 /* We are only interested in checking one element. */
3390 struct probe *p = VEC_index (probe_p, ret, 0);
3391
3392 if (!can_evaluate_probe_arguments (p))
3393 {
3394 /* We cannot use the probe interface here, because it does
3395 not know how to evaluate arguments. */
3396 VEC_free (probe_p, ret);
3397 ret = NULL;
3398 }
3399 }
3400 bp_objfile_data->longjmp_probes = ret;
3401 bp_objfile_data->longjmp_searched = 1;
3402 }
3403
3404 if (bp_objfile_data->longjmp_probes != NULL)
3405 {
3406 int i;
3407 struct probe *probe;
3408 struct gdbarch *gdbarch = get_objfile_arch (objfile);
3409
3410 for (i = 0;
3411 VEC_iterate (probe_p,
3412 bp_objfile_data->longjmp_probes,
3413 i, probe);
3414 ++i)
3415 {
3416 struct breakpoint *b;
3417
3418 b = create_internal_breakpoint (gdbarch,
3419 get_probe_address (probe,
3420 objfile),
3421 bp_longjmp_master,
3422 &internal_breakpoint_ops);
3423 b->location = new_probe_location ("-probe-stap libc:longjmp");
3424 b->enable_state = bp_disabled;
3425 }
3426
3427 continue;
3428 }
3429
3430 if (!gdbarch_get_longjmp_target_p (gdbarch))
3431 continue;
3432
3433 for (i = 0; i < NUM_LONGJMP_NAMES; i++)
3434 {
3435 struct breakpoint *b;
3436 const char *func_name;
3437 CORE_ADDR addr;
3438 struct explicit_location explicit_loc;
3439
3440 if (msym_not_found_p (bp_objfile_data->longjmp_msym[i].minsym))
3441 continue;
3442
3443 func_name = longjmp_names[i];
3444 if (bp_objfile_data->longjmp_msym[i].minsym == NULL)
3445 {
3446 struct bound_minimal_symbol m;
3447
3448 m = lookup_minimal_symbol_text (func_name, objfile);
3449 if (m.minsym == NULL)
3450 {
3451 /* Prevent future lookups in this objfile. */
3452 bp_objfile_data->longjmp_msym[i].minsym = &msym_not_found;
3453 continue;
3454 }
3455 bp_objfile_data->longjmp_msym[i] = m;
3456 }
3457
3458 addr = BMSYMBOL_VALUE_ADDRESS (bp_objfile_data->longjmp_msym[i]);
3459 b = create_internal_breakpoint (gdbarch, addr, bp_longjmp_master,
3460 &internal_breakpoint_ops);
3461 initialize_explicit_location (&explicit_loc);
3462 explicit_loc.function_name = ASTRDUP (func_name);
3463 b->location = new_explicit_location (&explicit_loc);
3464 b->enable_state = bp_disabled;
3465 }
3466 }
3467 }
3468 }
3469
3470 /* Create a master std::terminate breakpoint. */
3471 static void
3472 create_std_terminate_master_breakpoint (void)
3473 {
3474 struct program_space *pspace;
3475 const char *const func_name = "std::terminate()";
3476
3477 scoped_restore_current_program_space restore_pspace;
3478
3479 ALL_PSPACES (pspace)
3480 {
3481 struct objfile *objfile;
3482 CORE_ADDR addr;
3483
3484 set_current_program_space (pspace);
3485
3486 ALL_OBJFILES (objfile)
3487 {
3488 struct breakpoint *b;
3489 struct breakpoint_objfile_data *bp_objfile_data;
3490 struct explicit_location explicit_loc;
3491
3492 bp_objfile_data = get_breakpoint_objfile_data (objfile);
3493
3494 if (msym_not_found_p (bp_objfile_data->terminate_msym.minsym))
3495 continue;
3496
3497 if (bp_objfile_data->terminate_msym.minsym == NULL)
3498 {
3499 struct bound_minimal_symbol m;
3500
3501 m = lookup_minimal_symbol (func_name, NULL, objfile);
3502 if (m.minsym == NULL || (MSYMBOL_TYPE (m.minsym) != mst_text
3503 && MSYMBOL_TYPE (m.minsym) != mst_file_text))
3504 {
3505 /* Prevent future lookups in this objfile. */
3506 bp_objfile_data->terminate_msym.minsym = &msym_not_found;
3507 continue;
3508 }
3509 bp_objfile_data->terminate_msym = m;
3510 }
3511
3512 addr = BMSYMBOL_VALUE_ADDRESS (bp_objfile_data->terminate_msym);
3513 b = create_internal_breakpoint (get_objfile_arch (objfile), addr,
3514 bp_std_terminate_master,
3515 &internal_breakpoint_ops);
3516 initialize_explicit_location (&explicit_loc);
3517 explicit_loc.function_name = ASTRDUP (func_name);
3518 b->location = new_explicit_location (&explicit_loc);
3519 b->enable_state = bp_disabled;
3520 }
3521 }
3522 }
3523
3524 /* Install a master breakpoint on the unwinder's debug hook. */
3525
3526 static void
3527 create_exception_master_breakpoint (void)
3528 {
3529 struct objfile *objfile;
3530 const char *const func_name = "_Unwind_DebugHook";
3531
3532 ALL_OBJFILES (objfile)
3533 {
3534 struct breakpoint *b;
3535 struct gdbarch *gdbarch;
3536 struct breakpoint_objfile_data *bp_objfile_data;
3537 CORE_ADDR addr;
3538 struct explicit_location explicit_loc;
3539
3540 bp_objfile_data = get_breakpoint_objfile_data (objfile);
3541
3542 /* We prefer the SystemTap probe point if it exists. */
3543 if (!bp_objfile_data->exception_searched)
3544 {
3545 VEC (probe_p) *ret;
3546
3547 ret = find_probes_in_objfile (objfile, "libgcc", "unwind");
3548
3549 if (ret != NULL)
3550 {
3551 /* We are only interested in checking one element. */
3552 struct probe *p = VEC_index (probe_p, ret, 0);
3553
3554 if (!can_evaluate_probe_arguments (p))
3555 {
3556 /* We cannot use the probe interface here, because it does
3557 not know how to evaluate arguments. */
3558 VEC_free (probe_p, ret);
3559 ret = NULL;
3560 }
3561 }
3562 bp_objfile_data->exception_probes = ret;
3563 bp_objfile_data->exception_searched = 1;
3564 }
3565
3566 if (bp_objfile_data->exception_probes != NULL)
3567 {
3568 struct gdbarch *gdbarch = get_objfile_arch (objfile);
3569 int i;
3570 struct probe *probe;
3571
3572 for (i = 0;
3573 VEC_iterate (probe_p,
3574 bp_objfile_data->exception_probes,
3575 i, probe);
3576 ++i)
3577 {
3578 struct breakpoint *b;
3579
3580 b = create_internal_breakpoint (gdbarch,
3581 get_probe_address (probe,
3582 objfile),
3583 bp_exception_master,
3584 &internal_breakpoint_ops);
3585 b->location = new_probe_location ("-probe-stap libgcc:unwind");
3586 b->enable_state = bp_disabled;
3587 }
3588
3589 continue;
3590 }
3591
3592 /* Otherwise, try the hook function. */
3593
3594 if (msym_not_found_p (bp_objfile_data->exception_msym.minsym))
3595 continue;
3596
3597 gdbarch = get_objfile_arch (objfile);
3598
3599 if (bp_objfile_data->exception_msym.minsym == NULL)
3600 {
3601 struct bound_minimal_symbol debug_hook;
3602
3603 debug_hook = lookup_minimal_symbol (func_name, NULL, objfile);
3604 if (debug_hook.minsym == NULL)
3605 {
3606 bp_objfile_data->exception_msym.minsym = &msym_not_found;
3607 continue;
3608 }
3609
3610 bp_objfile_data->exception_msym = debug_hook;
3611 }
3612
3613 addr = BMSYMBOL_VALUE_ADDRESS (bp_objfile_data->exception_msym);
3614 addr = gdbarch_convert_from_func_ptr_addr (gdbarch, addr,
3615 &current_target);
3616 b = create_internal_breakpoint (gdbarch, addr, bp_exception_master,
3617 &internal_breakpoint_ops);
3618 initialize_explicit_location (&explicit_loc);
3619 explicit_loc.function_name = ASTRDUP (func_name);
3620 b->location = new_explicit_location (&explicit_loc);
3621 b->enable_state = bp_disabled;
3622 }
3623 }
3624
3625 /* Does B have a location spec? */
3626
3627 static int
3628 breakpoint_event_location_empty_p (const struct breakpoint *b)
3629 {
3630 return b->location != NULL && event_location_empty_p (b->location.get ());
3631 }
3632
3633 void
3634 update_breakpoints_after_exec (void)
3635 {
3636 struct breakpoint *b, *b_tmp;
3637 struct bp_location *bploc, **bplocp_tmp;
3638
3639 /* We're about to delete breakpoints from GDB's lists. If the
3640 INSERTED flag is true, GDB will try to lift the breakpoints by
3641 writing the breakpoints' "shadow contents" back into memory. The
3642 "shadow contents" are NOT valid after an exec, so GDB should not
3643 do that. Instead, the target is responsible from marking
3644 breakpoints out as soon as it detects an exec. We don't do that
3645 here instead, because there may be other attempts to delete
3646 breakpoints after detecting an exec and before reaching here. */
3647 ALL_BP_LOCATIONS (bploc, bplocp_tmp)
3648 if (bploc->pspace == current_program_space)
3649 gdb_assert (!bploc->inserted);
3650
3651 ALL_BREAKPOINTS_SAFE (b, b_tmp)
3652 {
3653 if (b->pspace != current_program_space)
3654 continue;
3655
3656 /* Solib breakpoints must be explicitly reset after an exec(). */
3657 if (b->type == bp_shlib_event)
3658 {
3659 delete_breakpoint (b);
3660 continue;
3661 }
3662
3663 /* JIT breakpoints must be explicitly reset after an exec(). */
3664 if (b->type == bp_jit_event)
3665 {
3666 delete_breakpoint (b);
3667 continue;
3668 }
3669
3670 /* Thread event breakpoints must be set anew after an exec(),
3671 as must overlay event and longjmp master breakpoints. */
3672 if (b->type == bp_thread_event || b->type == bp_overlay_event
3673 || b->type == bp_longjmp_master || b->type == bp_std_terminate_master
3674 || b->type == bp_exception_master)
3675 {
3676 delete_breakpoint (b);
3677 continue;
3678 }
3679
3680 /* Step-resume breakpoints are meaningless after an exec(). */
3681 if (b->type == bp_step_resume || b->type == bp_hp_step_resume)
3682 {
3683 delete_breakpoint (b);
3684 continue;
3685 }
3686
3687 /* Just like single-step breakpoints. */
3688 if (b->type == bp_single_step)
3689 {
3690 delete_breakpoint (b);
3691 continue;
3692 }
3693
3694 /* Longjmp and longjmp-resume breakpoints are also meaningless
3695 after an exec. */
3696 if (b->type == bp_longjmp || b->type == bp_longjmp_resume
3697 || b->type == bp_longjmp_call_dummy
3698 || b->type == bp_exception || b->type == bp_exception_resume)
3699 {
3700 delete_breakpoint (b);
3701 continue;
3702 }
3703
3704 if (b->type == bp_catchpoint)
3705 {
3706 /* For now, none of the bp_catchpoint breakpoints need to
3707 do anything at this point. In the future, if some of
3708 the catchpoints need to something, we will need to add
3709 a new method, and call this method from here. */
3710 continue;
3711 }
3712
3713 /* bp_finish is a special case. The only way we ought to be able
3714 to see one of these when an exec() has happened, is if the user
3715 caught a vfork, and then said "finish". Ordinarily a finish just
3716 carries them to the call-site of the current callee, by setting
3717 a temporary bp there and resuming. But in this case, the finish
3718 will carry them entirely through the vfork & exec.
3719
3720 We don't want to allow a bp_finish to remain inserted now. But
3721 we can't safely delete it, 'cause finish_command has a handle to
3722 the bp on a bpstat, and will later want to delete it. There's a
3723 chance (and I've seen it happen) that if we delete the bp_finish
3724 here, that its storage will get reused by the time finish_command
3725 gets 'round to deleting the "use to be a bp_finish" breakpoint.
3726 We really must allow finish_command to delete a bp_finish.
3727
3728 In the absence of a general solution for the "how do we know
3729 it's safe to delete something others may have handles to?"
3730 problem, what we'll do here is just uninsert the bp_finish, and
3731 let finish_command delete it.
3732
3733 (We know the bp_finish is "doomed" in the sense that it's
3734 momentary, and will be deleted as soon as finish_command sees
3735 the inferior stopped. So it doesn't matter that the bp's
3736 address is probably bogus in the new a.out, unlike e.g., the
3737 solib breakpoints.) */
3738
3739 if (b->type == bp_finish)
3740 {
3741 continue;
3742 }
3743
3744 /* Without a symbolic address, we have little hope of the
3745 pre-exec() address meaning the same thing in the post-exec()
3746 a.out. */
3747 if (breakpoint_event_location_empty_p (b))
3748 {
3749 delete_breakpoint (b);
3750 continue;
3751 }
3752 }
3753 }
3754
3755 int
3756 detach_breakpoints (ptid_t ptid)
3757 {
3758 struct bp_location *bl, **blp_tmp;
3759 int val = 0;
3760 scoped_restore save_inferior_ptid = make_scoped_restore (&inferior_ptid);
3761 struct inferior *inf = current_inferior ();
3762
3763 if (ptid_get_pid (ptid) == ptid_get_pid (inferior_ptid))
3764 error (_("Cannot detach breakpoints of inferior_ptid"));
3765
3766 /* Set inferior_ptid; remove_breakpoint_1 uses this global. */
3767 inferior_ptid = ptid;
3768 ALL_BP_LOCATIONS (bl, blp_tmp)
3769 {
3770 if (bl->pspace != inf->pspace)
3771 continue;
3772
3773 /* This function must physically remove breakpoints locations
3774 from the specified ptid, without modifying the breakpoint
3775 package's state. Locations of type bp_loc_other are only
3776 maintained at GDB side. So, there is no need to remove
3777 these bp_loc_other locations. Moreover, removing these
3778 would modify the breakpoint package's state. */
3779 if (bl->loc_type == bp_loc_other)
3780 continue;
3781
3782 if (bl->inserted)
3783 val |= remove_breakpoint_1 (bl, DETACH_BREAKPOINT);
3784 }
3785
3786 return val;
3787 }
3788
3789 /* Remove the breakpoint location BL from the current address space.
3790 Note that this is used to detach breakpoints from a child fork.
3791 When we get here, the child isn't in the inferior list, and neither
3792 do we have objects to represent its address space --- we should
3793 *not* look at bl->pspace->aspace here. */
3794
3795 static int
3796 remove_breakpoint_1 (struct bp_location *bl, enum remove_bp_reason reason)
3797 {
3798 int val;
3799
3800 /* BL is never in moribund_locations by our callers. */
3801 gdb_assert (bl->owner != NULL);
3802
3803 /* The type of none suggests that owner is actually deleted.
3804 This should not ever happen. */
3805 gdb_assert (bl->owner->type != bp_none);
3806
3807 if (bl->loc_type == bp_loc_software_breakpoint
3808 || bl->loc_type == bp_loc_hardware_breakpoint)
3809 {
3810 /* "Normal" instruction breakpoint: either the standard
3811 trap-instruction bp (bp_breakpoint), or a
3812 bp_hardware_breakpoint. */
3813
3814 /* First check to see if we have to handle an overlay. */
3815 if (overlay_debugging == ovly_off
3816 || bl->section == NULL
3817 || !(section_is_overlay (bl->section)))
3818 {
3819 /* No overlay handling: just remove the breakpoint. */
3820
3821 /* If we're trying to uninsert a memory breakpoint that we
3822 know is set in a dynamic object that is marked
3823 shlib_disabled, then either the dynamic object was
3824 removed with "remove-symbol-file" or with
3825 "nosharedlibrary". In the former case, we don't know
3826 whether another dynamic object might have loaded over the
3827 breakpoint's address -- the user might well let us know
3828 about it next with add-symbol-file (the whole point of
3829 add-symbol-file is letting the user manually maintain a
3830 list of dynamically loaded objects). If we have the
3831 breakpoint's shadow memory, that is, this is a software
3832 breakpoint managed by GDB, check whether the breakpoint
3833 is still inserted in memory, to avoid overwriting wrong
3834 code with stale saved shadow contents. Note that HW
3835 breakpoints don't have shadow memory, as they're
3836 implemented using a mechanism that is not dependent on
3837 being able to modify the target's memory, and as such
3838 they should always be removed. */
3839 if (bl->shlib_disabled
3840 && bl->target_info.shadow_len != 0
3841 && !memory_validate_breakpoint (bl->gdbarch, &bl->target_info))
3842 val = 0;
3843 else
3844 val = bl->owner->ops->remove_location (bl, reason);
3845 }
3846 else
3847 {
3848 /* This breakpoint is in an overlay section.
3849 Did we set a breakpoint at the LMA? */
3850 if (!overlay_events_enabled)
3851 {
3852 /* Yes -- overlay event support is not active, so we
3853 should have set a breakpoint at the LMA. Remove it.
3854 */
3855 /* Ignore any failures: if the LMA is in ROM, we will
3856 have already warned when we failed to insert it. */
3857 if (bl->loc_type == bp_loc_hardware_breakpoint)
3858 target_remove_hw_breakpoint (bl->gdbarch,
3859 &bl->overlay_target_info);
3860 else
3861 target_remove_breakpoint (bl->gdbarch,
3862 &bl->overlay_target_info,
3863 reason);
3864 }
3865 /* Did we set a breakpoint at the VMA?
3866 If so, we will have marked the breakpoint 'inserted'. */
3867 if (bl->inserted)
3868 {
3869 /* Yes -- remove it. Previously we did not bother to
3870 remove the breakpoint if the section had been
3871 unmapped, but let's not rely on that being safe. We
3872 don't know what the overlay manager might do. */
3873
3874 /* However, we should remove *software* breakpoints only
3875 if the section is still mapped, or else we overwrite
3876 wrong code with the saved shadow contents. */
3877 if (bl->loc_type == bp_loc_hardware_breakpoint
3878 || section_is_mapped (bl->section))
3879 val = bl->owner->ops->remove_location (bl, reason);
3880 else
3881 val = 0;
3882 }
3883 else
3884 {
3885 /* No -- not inserted, so no need to remove. No error. */
3886 val = 0;
3887 }
3888 }
3889
3890 /* In some cases, we might not be able to remove a breakpoint in
3891 a shared library that has already been removed, but we have
3892 not yet processed the shlib unload event. Similarly for an
3893 unloaded add-symbol-file object - the user might not yet have
3894 had the chance to remove-symbol-file it. shlib_disabled will
3895 be set if the library/object has already been removed, but
3896 the breakpoint hasn't been uninserted yet, e.g., after
3897 "nosharedlibrary" or "remove-symbol-file" with breakpoints
3898 always-inserted mode. */
3899 if (val
3900 && (bl->loc_type == bp_loc_software_breakpoint
3901 && (bl->shlib_disabled
3902 || solib_name_from_address (bl->pspace, bl->address)
3903 || shared_objfile_contains_address_p (bl->pspace,
3904 bl->address))))
3905 val = 0;
3906
3907 if (val)
3908 return val;
3909 bl->inserted = (reason == DETACH_BREAKPOINT);
3910 }
3911 else if (bl->loc_type == bp_loc_hardware_watchpoint)
3912 {
3913 gdb_assert (bl->owner->ops != NULL
3914 && bl->owner->ops->remove_location != NULL);
3915
3916 bl->inserted = (reason == DETACH_BREAKPOINT);
3917 bl->owner->ops->remove_location (bl, reason);
3918
3919 /* Failure to remove any of the hardware watchpoints comes here. */
3920 if (reason == REMOVE_BREAKPOINT && bl->inserted)
3921 warning (_("Could not remove hardware watchpoint %d."),
3922 bl->owner->number);
3923 }
3924 else if (bl->owner->type == bp_catchpoint
3925 && breakpoint_enabled (bl->owner)
3926 && !bl->duplicate)
3927 {
3928 gdb_assert (bl->owner->ops != NULL
3929 && bl->owner->ops->remove_location != NULL);
3930
3931 val = bl->owner->ops->remove_location (bl, reason);
3932 if (val)
3933 return val;
3934
3935 bl->inserted = (reason == DETACH_BREAKPOINT);
3936 }
3937
3938 return 0;
3939 }
3940
3941 static int
3942 remove_breakpoint (struct bp_location *bl)
3943 {
3944 /* BL is never in moribund_locations by our callers. */
3945 gdb_assert (bl->owner != NULL);
3946
3947 /* The type of none suggests that owner is actually deleted.
3948 This should not ever happen. */
3949 gdb_assert (bl->owner->type != bp_none);
3950
3951 scoped_restore_current_pspace_and_thread restore_pspace_thread;
3952
3953 switch_to_program_space_and_thread (bl->pspace);
3954
3955 return remove_breakpoint_1 (bl, REMOVE_BREAKPOINT);
3956 }
3957
3958 /* Clear the "inserted" flag in all breakpoints. */
3959
3960 void
3961 mark_breakpoints_out (void)
3962 {
3963 struct bp_location *bl, **blp_tmp;
3964
3965 ALL_BP_LOCATIONS (bl, blp_tmp)
3966 if (bl->pspace == current_program_space)
3967 bl->inserted = 0;
3968 }
3969
3970 /* Clear the "inserted" flag in all breakpoints and delete any
3971 breakpoints which should go away between runs of the program.
3972
3973 Plus other such housekeeping that has to be done for breakpoints
3974 between runs.
3975
3976 Note: this function gets called at the end of a run (by
3977 generic_mourn_inferior) and when a run begins (by
3978 init_wait_for_inferior). */
3979
3980
3981
3982 void
3983 breakpoint_init_inferior (enum inf_context context)
3984 {
3985 struct breakpoint *b, *b_tmp;
3986 struct bp_location *bl;
3987 int ix;
3988 struct program_space *pspace = current_program_space;
3989
3990 /* If breakpoint locations are shared across processes, then there's
3991 nothing to do. */
3992 if (gdbarch_has_global_breakpoints (target_gdbarch ()))
3993 return;
3994
3995 mark_breakpoints_out ();
3996
3997 ALL_BREAKPOINTS_SAFE (b, b_tmp)
3998 {
3999 if (b->loc && b->loc->pspace != pspace)
4000 continue;
4001
4002 switch (b->type)
4003 {
4004 case bp_call_dummy:
4005 case bp_longjmp_call_dummy:
4006
4007 /* If the call dummy breakpoint is at the entry point it will
4008 cause problems when the inferior is rerun, so we better get
4009 rid of it. */
4010
4011 case bp_watchpoint_scope:
4012
4013 /* Also get rid of scope breakpoints. */
4014
4015 case bp_shlib_event:
4016
4017 /* Also remove solib event breakpoints. Their addresses may
4018 have changed since the last time we ran the program.
4019 Actually we may now be debugging against different target;
4020 and so the solib backend that installed this breakpoint may
4021 not be used in by the target. E.g.,
4022
4023 (gdb) file prog-linux
4024 (gdb) run # native linux target
4025 ...
4026 (gdb) kill
4027 (gdb) file prog-win.exe
4028 (gdb) tar rem :9999 # remote Windows gdbserver.
4029 */
4030
4031 case bp_step_resume:
4032
4033 /* Also remove step-resume breakpoints. */
4034
4035 case bp_single_step:
4036
4037 /* Also remove single-step breakpoints. */
4038
4039 delete_breakpoint (b);
4040 break;
4041
4042 case bp_watchpoint:
4043 case bp_hardware_watchpoint:
4044 case bp_read_watchpoint:
4045 case bp_access_watchpoint:
4046 {
4047 struct watchpoint *w = (struct watchpoint *) b;
4048
4049 /* Likewise for watchpoints on local expressions. */
4050 if (w->exp_valid_block != NULL)
4051 delete_breakpoint (b);
4052 else
4053 {
4054 /* Get rid of existing locations, which are no longer
4055 valid. New ones will be created in
4056 update_watchpoint, when the inferior is restarted.
4057 The next update_global_location_list call will
4058 garbage collect them. */
4059 b->loc = NULL;
4060
4061 if (context == inf_starting)
4062 {
4063 /* Reset val field to force reread of starting value in
4064 insert_breakpoints. */
4065 if (w->val)
4066 value_free (w->val);
4067 w->val = NULL;
4068 w->val_valid = 0;
4069 }
4070 }
4071 }
4072 break;
4073 default:
4074 break;
4075 }
4076 }
4077
4078 /* Get rid of the moribund locations. */
4079 for (ix = 0; VEC_iterate (bp_location_p, moribund_locations, ix, bl); ++ix)
4080 decref_bp_location (&bl);
4081 VEC_free (bp_location_p, moribund_locations);
4082 }
4083
4084 /* These functions concern about actual breakpoints inserted in the
4085 target --- to e.g. check if we need to do decr_pc adjustment or if
4086 we need to hop over the bkpt --- so we check for address space
4087 match, not program space. */
4088
4089 /* breakpoint_here_p (PC) returns non-zero if an enabled breakpoint
4090 exists at PC. It returns ordinary_breakpoint_here if it's an
4091 ordinary breakpoint, or permanent_breakpoint_here if it's a
4092 permanent breakpoint.
4093 - When continuing from a location with an ordinary breakpoint, we
4094 actually single step once before calling insert_breakpoints.
4095 - When continuing from a location with a permanent breakpoint, we
4096 need to use the `SKIP_PERMANENT_BREAKPOINT' macro, provided by
4097 the target, to advance the PC past the breakpoint. */
4098
4099 enum breakpoint_here
4100 breakpoint_here_p (struct address_space *aspace, CORE_ADDR pc)
4101 {
4102 struct bp_location *bl, **blp_tmp;
4103 int any_breakpoint_here = 0;
4104
4105 ALL_BP_LOCATIONS (bl, blp_tmp)
4106 {
4107 if (bl->loc_type != bp_loc_software_breakpoint
4108 && bl->loc_type != bp_loc_hardware_breakpoint)
4109 continue;
4110
4111 /* ALL_BP_LOCATIONS bp_location has BL->OWNER always non-NULL. */
4112 if ((breakpoint_enabled (bl->owner)
4113 || bl->permanent)
4114 && breakpoint_location_address_match (bl, aspace, pc))
4115 {
4116 if (overlay_debugging
4117 && section_is_overlay (bl->section)
4118 && !section_is_mapped (bl->section))
4119 continue; /* unmapped overlay -- can't be a match */
4120 else if (bl->permanent)
4121 return permanent_breakpoint_here;
4122 else
4123 any_breakpoint_here = 1;
4124 }
4125 }
4126
4127 return any_breakpoint_here ? ordinary_breakpoint_here : no_breakpoint_here;
4128 }
4129
4130 /* See breakpoint.h. */
4131
4132 int
4133 breakpoint_in_range_p (struct address_space *aspace,
4134 CORE_ADDR addr, ULONGEST len)
4135 {
4136 struct bp_location *bl, **blp_tmp;
4137
4138 ALL_BP_LOCATIONS (bl, blp_tmp)
4139 {
4140 if (bl->loc_type != bp_loc_software_breakpoint
4141 && bl->loc_type != bp_loc_hardware_breakpoint)
4142 continue;
4143
4144 if ((breakpoint_enabled (bl->owner)
4145 || bl->permanent)
4146 && breakpoint_location_address_range_overlap (bl, aspace,
4147 addr, len))
4148 {
4149 if (overlay_debugging
4150 && section_is_overlay (bl->section)
4151 && !section_is_mapped (bl->section))
4152 {
4153 /* Unmapped overlay -- can't be a match. */
4154 continue;
4155 }
4156
4157 return 1;
4158 }
4159 }
4160
4161 return 0;
4162 }
4163
4164 /* Return true if there's a moribund breakpoint at PC. */
4165
4166 int
4167 moribund_breakpoint_here_p (struct address_space *aspace, CORE_ADDR pc)
4168 {
4169 struct bp_location *loc;
4170 int ix;
4171
4172 for (ix = 0; VEC_iterate (bp_location_p, moribund_locations, ix, loc); ++ix)
4173 if (breakpoint_location_address_match (loc, aspace, pc))
4174 return 1;
4175
4176 return 0;
4177 }
4178
4179 /* Returns non-zero iff BL is inserted at PC, in address space
4180 ASPACE. */
4181
4182 static int
4183 bp_location_inserted_here_p (struct bp_location *bl,
4184 struct address_space *aspace, CORE_ADDR pc)
4185 {
4186 if (bl->inserted
4187 && breakpoint_address_match (bl->pspace->aspace, bl->address,
4188 aspace, pc))
4189 {
4190 if (overlay_debugging
4191 && section_is_overlay (bl->section)
4192 && !section_is_mapped (bl->section))
4193 return 0; /* unmapped overlay -- can't be a match */
4194 else
4195 return 1;
4196 }
4197 return 0;
4198 }
4199
4200 /* Returns non-zero iff there's a breakpoint inserted at PC. */
4201
4202 int
4203 breakpoint_inserted_here_p (struct address_space *aspace, CORE_ADDR pc)
4204 {
4205 struct bp_location **blp, **blp_tmp = NULL;
4206
4207 ALL_BP_LOCATIONS_AT_ADDR (blp, blp_tmp, pc)
4208 {
4209 struct bp_location *bl = *blp;
4210
4211 if (bl->loc_type != bp_loc_software_breakpoint
4212 && bl->loc_type != bp_loc_hardware_breakpoint)
4213 continue;
4214
4215 if (bp_location_inserted_here_p (bl, aspace, pc))
4216 return 1;
4217 }
4218 return 0;
4219 }
4220
4221 /* This function returns non-zero iff there is a software breakpoint
4222 inserted at PC. */
4223
4224 int
4225 software_breakpoint_inserted_here_p (struct address_space *aspace,
4226 CORE_ADDR pc)
4227 {
4228 struct bp_location **blp, **blp_tmp = NULL;
4229
4230 ALL_BP_LOCATIONS_AT_ADDR (blp, blp_tmp, pc)
4231 {
4232 struct bp_location *bl = *blp;
4233
4234 if (bl->loc_type != bp_loc_software_breakpoint)
4235 continue;
4236
4237 if (bp_location_inserted_here_p (bl, aspace, pc))
4238 return 1;
4239 }
4240
4241 return 0;
4242 }
4243
4244 /* See breakpoint.h. */
4245
4246 int
4247 hardware_breakpoint_inserted_here_p (struct address_space *aspace,
4248 CORE_ADDR pc)
4249 {
4250 struct bp_location **blp, **blp_tmp = NULL;
4251
4252 ALL_BP_LOCATIONS_AT_ADDR (blp, blp_tmp, pc)
4253 {
4254 struct bp_location *bl = *blp;
4255
4256 if (bl->loc_type != bp_loc_hardware_breakpoint)
4257 continue;
4258
4259 if (bp_location_inserted_here_p (bl, aspace, pc))
4260 return 1;
4261 }
4262
4263 return 0;
4264 }
4265
4266 int
4267 hardware_watchpoint_inserted_in_range (struct address_space *aspace,
4268 CORE_ADDR addr, ULONGEST len)
4269 {
4270 struct breakpoint *bpt;
4271
4272 ALL_BREAKPOINTS (bpt)
4273 {
4274 struct bp_location *loc;
4275
4276 if (bpt->type != bp_hardware_watchpoint
4277 && bpt->type != bp_access_watchpoint)
4278 continue;
4279
4280 if (!breakpoint_enabled (bpt))
4281 continue;
4282
4283 for (loc = bpt->loc; loc; loc = loc->next)
4284 if (loc->pspace->aspace == aspace && loc->inserted)
4285 {
4286 CORE_ADDR l, h;
4287
4288 /* Check for intersection. */
4289 l = std::max<CORE_ADDR> (loc->address, addr);
4290 h = std::min<CORE_ADDR> (loc->address + loc->length, addr + len);
4291 if (l < h)
4292 return 1;
4293 }
4294 }
4295 return 0;
4296 }
4297 \f
4298
4299 /* bpstat stuff. External routines' interfaces are documented
4300 in breakpoint.h. */
4301
4302 int
4303 is_catchpoint (struct breakpoint *ep)
4304 {
4305 return (ep->type == bp_catchpoint);
4306 }
4307
4308 /* Frees any storage that is part of a bpstat. Does not walk the
4309 'next' chain. */
4310
4311 bpstats::~bpstats ()
4312 {
4313 if (old_val != NULL)
4314 value_free (old_val);
4315 if (bp_location_at != NULL)
4316 decref_bp_location (&bp_location_at);
4317 }
4318
4319 /* Clear a bpstat so that it says we are not at any breakpoint.
4320 Also free any storage that is part of a bpstat. */
4321
4322 void
4323 bpstat_clear (bpstat *bsp)
4324 {
4325 bpstat p;
4326 bpstat q;
4327
4328 if (bsp == 0)
4329 return;
4330 p = *bsp;
4331 while (p != NULL)
4332 {
4333 q = p->next;
4334 delete p;
4335 p = q;
4336 }
4337 *bsp = NULL;
4338 }
4339
4340 bpstats::bpstats (const bpstats &other)
4341 : next (NULL),
4342 bp_location_at (other.bp_location_at),
4343 breakpoint_at (other.breakpoint_at),
4344 commands (other.commands),
4345 old_val (other.old_val),
4346 print (other.print),
4347 stop (other.stop),
4348 print_it (other.print_it)
4349 {
4350 if (old_val != NULL)
4351 {
4352 old_val = value_copy (old_val);
4353 release_value (old_val);
4354 }
4355 incref_bp_location (bp_location_at);
4356 }
4357
4358 /* Return a copy of a bpstat. Like "bs1 = bs2" but all storage that
4359 is part of the bpstat is copied as well. */
4360
4361 bpstat
4362 bpstat_copy (bpstat bs)
4363 {
4364 bpstat p = NULL;
4365 bpstat tmp;
4366 bpstat retval = NULL;
4367
4368 if (bs == NULL)
4369 return bs;
4370
4371 for (; bs != NULL; bs = bs->next)
4372 {
4373 tmp = new bpstats (*bs);
4374
4375 if (p == NULL)
4376 /* This is the first thing in the chain. */
4377 retval = tmp;
4378 else
4379 p->next = tmp;
4380 p = tmp;
4381 }
4382 p->next = NULL;
4383 return retval;
4384 }
4385
4386 /* Find the bpstat associated with this breakpoint. */
4387
4388 bpstat
4389 bpstat_find_breakpoint (bpstat bsp, struct breakpoint *breakpoint)
4390 {
4391 if (bsp == NULL)
4392 return NULL;
4393
4394 for (; bsp != NULL; bsp = bsp->next)
4395 {
4396 if (bsp->breakpoint_at == breakpoint)
4397 return bsp;
4398 }
4399 return NULL;
4400 }
4401
4402 /* See breakpoint.h. */
4403
4404 int
4405 bpstat_explains_signal (bpstat bsp, enum gdb_signal sig)
4406 {
4407 for (; bsp != NULL; bsp = bsp->next)
4408 {
4409 if (bsp->breakpoint_at == NULL)
4410 {
4411 /* A moribund location can never explain a signal other than
4412 GDB_SIGNAL_TRAP. */
4413 if (sig == GDB_SIGNAL_TRAP)
4414 return 1;
4415 }
4416 else
4417 {
4418 if (bsp->breakpoint_at->ops->explains_signal (bsp->breakpoint_at,
4419 sig))
4420 return 1;
4421 }
4422 }
4423
4424 return 0;
4425 }
4426
4427 /* Put in *NUM the breakpoint number of the first breakpoint we are
4428 stopped at. *BSP upon return is a bpstat which points to the
4429 remaining breakpoints stopped at (but which is not guaranteed to be
4430 good for anything but further calls to bpstat_num).
4431
4432 Return 0 if passed a bpstat which does not indicate any breakpoints.
4433 Return -1 if stopped at a breakpoint that has been deleted since
4434 we set it.
4435 Return 1 otherwise. */
4436
4437 int
4438 bpstat_num (bpstat *bsp, int *num)
4439 {
4440 struct breakpoint *b;
4441
4442 if ((*bsp) == NULL)
4443 return 0; /* No more breakpoint values */
4444
4445 /* We assume we'll never have several bpstats that correspond to a
4446 single breakpoint -- otherwise, this function might return the
4447 same number more than once and this will look ugly. */
4448 b = (*bsp)->breakpoint_at;
4449 *bsp = (*bsp)->next;
4450 if (b == NULL)
4451 return -1; /* breakpoint that's been deleted since */
4452
4453 *num = b->number; /* We have its number */
4454 return 1;
4455 }
4456
4457 /* See breakpoint.h. */
4458
4459 void
4460 bpstat_clear_actions (void)
4461 {
4462 struct thread_info *tp;
4463 bpstat bs;
4464
4465 if (ptid_equal (inferior_ptid, null_ptid))
4466 return;
4467
4468 tp = find_thread_ptid (inferior_ptid);
4469 if (tp == NULL)
4470 return;
4471
4472 for (bs = tp->control.stop_bpstat; bs != NULL; bs = bs->next)
4473 {
4474 bs->commands = NULL;
4475
4476 if (bs->old_val != NULL)
4477 {
4478 value_free (bs->old_val);
4479 bs->old_val = NULL;
4480 }
4481 }
4482 }
4483
4484 /* Called when a command is about to proceed the inferior. */
4485
4486 static void
4487 breakpoint_about_to_proceed (void)
4488 {
4489 if (!ptid_equal (inferior_ptid, null_ptid))
4490 {
4491 struct thread_info *tp = inferior_thread ();
4492
4493 /* Allow inferior function calls in breakpoint commands to not
4494 interrupt the command list. When the call finishes
4495 successfully, the inferior will be standing at the same
4496 breakpoint as if nothing happened. */
4497 if (tp->control.in_infcall)
4498 return;
4499 }
4500
4501 breakpoint_proceeded = 1;
4502 }
4503
4504 /* Stub for cleaning up our state if we error-out of a breakpoint
4505 command. */
4506 static void
4507 cleanup_executing_breakpoints (void *ignore)
4508 {
4509 executing_breakpoint_commands = 0;
4510 }
4511
4512 /* Return non-zero iff CMD as the first line of a command sequence is `silent'
4513 or its equivalent. */
4514
4515 static int
4516 command_line_is_silent (struct command_line *cmd)
4517 {
4518 return cmd && (strcmp ("silent", cmd->line) == 0);
4519 }
4520
4521 /* Execute all the commands associated with all the breakpoints at
4522 this location. Any of these commands could cause the process to
4523 proceed beyond this point, etc. We look out for such changes by
4524 checking the global "breakpoint_proceeded" after each command.
4525
4526 Returns true if a breakpoint command resumed the inferior. In that
4527 case, it is the caller's responsibility to recall it again with the
4528 bpstat of the current thread. */
4529
4530 static int
4531 bpstat_do_actions_1 (bpstat *bsp)
4532 {
4533 bpstat bs;
4534 struct cleanup *old_chain;
4535 int again = 0;
4536
4537 /* Avoid endless recursion if a `source' command is contained
4538 in bs->commands. */
4539 if (executing_breakpoint_commands)
4540 return 0;
4541
4542 executing_breakpoint_commands = 1;
4543 old_chain = make_cleanup (cleanup_executing_breakpoints, 0);
4544
4545 scoped_restore preventer = prevent_dont_repeat ();
4546
4547 /* This pointer will iterate over the list of bpstat's. */
4548 bs = *bsp;
4549
4550 breakpoint_proceeded = 0;
4551 for (; bs != NULL; bs = bs->next)
4552 {
4553 struct command_line *cmd = NULL;
4554
4555 /* Take ownership of the BSP's command tree, if it has one.
4556
4557 The command tree could legitimately contain commands like
4558 'step' and 'next', which call clear_proceed_status, which
4559 frees stop_bpstat's command tree. To make sure this doesn't
4560 free the tree we're executing out from under us, we need to
4561 take ownership of the tree ourselves. Since a given bpstat's
4562 commands are only executed once, we don't need to copy it; we
4563 can clear the pointer in the bpstat, and make sure we free
4564 the tree when we're done. */
4565 counted_command_line ccmd = bs->commands;
4566 bs->commands = NULL;
4567 if (ccmd != NULL)
4568 cmd = ccmd.get ();
4569 if (command_line_is_silent (cmd))
4570 {
4571 /* The action has been already done by bpstat_stop_status. */
4572 cmd = cmd->next;
4573 }
4574
4575 while (cmd != NULL)
4576 {
4577 execute_control_command (cmd);
4578
4579 if (breakpoint_proceeded)
4580 break;
4581 else
4582 cmd = cmd->next;
4583 }
4584
4585 if (breakpoint_proceeded)
4586 {
4587 if (current_ui->async)
4588 /* If we are in async mode, then the target might be still
4589 running, not stopped at any breakpoint, so nothing for
4590 us to do here -- just return to the event loop. */
4591 ;
4592 else
4593 /* In sync mode, when execute_control_command returns
4594 we're already standing on the next breakpoint.
4595 Breakpoint commands for that stop were not run, since
4596 execute_command does not run breakpoint commands --
4597 only command_line_handler does, but that one is not
4598 involved in execution of breakpoint commands. So, we
4599 can now execute breakpoint commands. It should be
4600 noted that making execute_command do bpstat actions is
4601 not an option -- in this case we'll have recursive
4602 invocation of bpstat for each breakpoint with a
4603 command, and can easily blow up GDB stack. Instead, we
4604 return true, which will trigger the caller to recall us
4605 with the new stop_bpstat. */
4606 again = 1;
4607 break;
4608 }
4609 }
4610 do_cleanups (old_chain);
4611 return again;
4612 }
4613
4614 void
4615 bpstat_do_actions (void)
4616 {
4617 struct cleanup *cleanup_if_error = make_bpstat_clear_actions_cleanup ();
4618
4619 /* Do any commands attached to breakpoint we are stopped at. */
4620 while (!ptid_equal (inferior_ptid, null_ptid)
4621 && target_has_execution
4622 && !is_exited (inferior_ptid)
4623 && !is_executing (inferior_ptid))
4624 /* Since in sync mode, bpstat_do_actions may resume the inferior,
4625 and only return when it is stopped at the next breakpoint, we
4626 keep doing breakpoint actions until it returns false to
4627 indicate the inferior was not resumed. */
4628 if (!bpstat_do_actions_1 (&inferior_thread ()->control.stop_bpstat))
4629 break;
4630
4631 discard_cleanups (cleanup_if_error);
4632 }
4633
4634 /* Print out the (old or new) value associated with a watchpoint. */
4635
4636 static void
4637 watchpoint_value_print (struct value *val, struct ui_file *stream)
4638 {
4639 if (val == NULL)
4640 fprintf_unfiltered (stream, _("<unreadable>"));
4641 else
4642 {
4643 struct value_print_options opts;
4644 get_user_print_options (&opts);
4645 value_print (val, stream, &opts);
4646 }
4647 }
4648
4649 /* Print the "Thread ID hit" part of "Thread ID hit Breakpoint N" if
4650 debugging multiple threads. */
4651
4652 void
4653 maybe_print_thread_hit_breakpoint (struct ui_out *uiout)
4654 {
4655 if (uiout->is_mi_like_p ())
4656 return;
4657
4658 uiout->text ("\n");
4659
4660 if (show_thread_that_caused_stop ())
4661 {
4662 const char *name;
4663 struct thread_info *thr = inferior_thread ();
4664
4665 uiout->text ("Thread ");
4666 uiout->field_fmt ("thread-id", "%s", print_thread_id (thr));
4667
4668 name = thr->name != NULL ? thr->name : target_thread_name (thr);
4669 if (name != NULL)
4670 {
4671 uiout->text (" \"");
4672 uiout->field_fmt ("name", "%s", name);
4673 uiout->text ("\"");
4674 }
4675
4676 uiout->text (" hit ");
4677 }
4678 }
4679
4680 /* Generic routine for printing messages indicating why we
4681 stopped. The behavior of this function depends on the value
4682 'print_it' in the bpstat structure. Under some circumstances we
4683 may decide not to print anything here and delegate the task to
4684 normal_stop(). */
4685
4686 static enum print_stop_action
4687 print_bp_stop_message (bpstat bs)
4688 {
4689 switch (bs->print_it)
4690 {
4691 case print_it_noop:
4692 /* Nothing should be printed for this bpstat entry. */
4693 return PRINT_UNKNOWN;
4694 break;
4695
4696 case print_it_done:
4697 /* We still want to print the frame, but we already printed the
4698 relevant messages. */
4699 return PRINT_SRC_AND_LOC;
4700 break;
4701
4702 case print_it_normal:
4703 {
4704 struct breakpoint *b = bs->breakpoint_at;
4705
4706 /* bs->breakpoint_at can be NULL if it was a momentary breakpoint
4707 which has since been deleted. */
4708 if (b == NULL)
4709 return PRINT_UNKNOWN;
4710
4711 /* Normal case. Call the breakpoint's print_it method. */
4712 return b->ops->print_it (bs);
4713 }
4714 break;
4715
4716 default:
4717 internal_error (__FILE__, __LINE__,
4718 _("print_bp_stop_message: unrecognized enum value"));
4719 break;
4720 }
4721 }
4722
4723 /* A helper function that prints a shared library stopped event. */
4724
4725 static void
4726 print_solib_event (int is_catchpoint)
4727 {
4728 int any_deleted
4729 = !VEC_empty (char_ptr, current_program_space->deleted_solibs);
4730 int any_added
4731 = !VEC_empty (so_list_ptr, current_program_space->added_solibs);
4732
4733 if (!is_catchpoint)
4734 {
4735 if (any_added || any_deleted)
4736 current_uiout->text (_("Stopped due to shared library event:\n"));
4737 else
4738 current_uiout->text (_("Stopped due to shared library event (no "
4739 "libraries added or removed)\n"));
4740 }
4741
4742 if (current_uiout->is_mi_like_p ())
4743 current_uiout->field_string ("reason",
4744 async_reason_lookup (EXEC_ASYNC_SOLIB_EVENT));
4745
4746 if (any_deleted)
4747 {
4748 char *name;
4749 int ix;
4750
4751 current_uiout->text (_(" Inferior unloaded "));
4752 ui_out_emit_list list_emitter (current_uiout, "removed");
4753 for (ix = 0;
4754 VEC_iterate (char_ptr, current_program_space->deleted_solibs,
4755 ix, name);
4756 ++ix)
4757 {
4758 if (ix > 0)
4759 current_uiout->text (" ");
4760 current_uiout->field_string ("library", name);
4761 current_uiout->text ("\n");
4762 }
4763 }
4764
4765 if (any_added)
4766 {
4767 struct so_list *iter;
4768 int ix;
4769
4770 current_uiout->text (_(" Inferior loaded "));
4771 ui_out_emit_list list_emitter (current_uiout, "added");
4772 for (ix = 0;
4773 VEC_iterate (so_list_ptr, current_program_space->added_solibs,
4774 ix, iter);
4775 ++ix)
4776 {
4777 if (ix > 0)
4778 current_uiout->text (" ");
4779 current_uiout->field_string ("library", iter->so_name);
4780 current_uiout->text ("\n");
4781 }
4782 }
4783 }
4784
4785 /* Print a message indicating what happened. This is called from
4786 normal_stop(). The input to this routine is the head of the bpstat
4787 list - a list of the eventpoints that caused this stop. KIND is
4788 the target_waitkind for the stopping event. This
4789 routine calls the generic print routine for printing a message
4790 about reasons for stopping. This will print (for example) the
4791 "Breakpoint n," part of the output. The return value of this
4792 routine is one of:
4793
4794 PRINT_UNKNOWN: Means we printed nothing.
4795 PRINT_SRC_AND_LOC: Means we printed something, and expect subsequent
4796 code to print the location. An example is
4797 "Breakpoint 1, " which should be followed by
4798 the location.
4799 PRINT_SRC_ONLY: Means we printed something, but there is no need
4800 to also print the location part of the message.
4801 An example is the catch/throw messages, which
4802 don't require a location appended to the end.
4803 PRINT_NOTHING: We have done some printing and we don't need any
4804 further info to be printed. */
4805
4806 enum print_stop_action
4807 bpstat_print (bpstat bs, int kind)
4808 {
4809 enum print_stop_action val;
4810
4811 /* Maybe another breakpoint in the chain caused us to stop.
4812 (Currently all watchpoints go on the bpstat whether hit or not.
4813 That probably could (should) be changed, provided care is taken
4814 with respect to bpstat_explains_signal). */
4815 for (; bs; bs = bs->next)
4816 {
4817 val = print_bp_stop_message (bs);
4818 if (val == PRINT_SRC_ONLY
4819 || val == PRINT_SRC_AND_LOC
4820 || val == PRINT_NOTHING)
4821 return val;
4822 }
4823
4824 /* If we had hit a shared library event breakpoint,
4825 print_bp_stop_message would print out this message. If we hit an
4826 OS-level shared library event, do the same thing. */
4827 if (kind == TARGET_WAITKIND_LOADED)
4828 {
4829 print_solib_event (0);
4830 return PRINT_NOTHING;
4831 }
4832
4833 /* We reached the end of the chain, or we got a null BS to start
4834 with and nothing was printed. */
4835 return PRINT_UNKNOWN;
4836 }
4837
4838 /* Evaluate the boolean expression EXP and return the result. */
4839
4840 static bool
4841 breakpoint_cond_eval (expression *exp)
4842 {
4843 struct value *mark = value_mark ();
4844 bool res = value_true (evaluate_expression (exp));
4845
4846 value_free_to_mark (mark);
4847 return res;
4848 }
4849
4850 /* Allocate a new bpstat. Link it to the FIFO list by BS_LINK_POINTER. */
4851
4852 bpstats::bpstats (struct bp_location *bl, bpstat **bs_link_pointer)
4853 : next (NULL),
4854 bp_location_at (bl),
4855 breakpoint_at (bl->owner),
4856 commands (NULL),
4857 old_val (NULL),
4858 print (0),
4859 stop (0),
4860 print_it (print_it_normal)
4861 {
4862 incref_bp_location (bl);
4863 **bs_link_pointer = this;
4864 *bs_link_pointer = &next;
4865 }
4866
4867 bpstats::bpstats ()
4868 : next (NULL),
4869 bp_location_at (NULL),
4870 breakpoint_at (NULL),
4871 commands (NULL),
4872 old_val (NULL),
4873 print (0),
4874 stop (0),
4875 print_it (print_it_normal)
4876 {
4877 }
4878 \f
4879 /* The target has stopped with waitstatus WS. Check if any hardware
4880 watchpoints have triggered, according to the target. */
4881
4882 int
4883 watchpoints_triggered (struct target_waitstatus *ws)
4884 {
4885 int stopped_by_watchpoint = target_stopped_by_watchpoint ();
4886 CORE_ADDR addr;
4887 struct breakpoint *b;
4888
4889 if (!stopped_by_watchpoint)
4890 {
4891 /* We were not stopped by a watchpoint. Mark all watchpoints
4892 as not triggered. */
4893 ALL_BREAKPOINTS (b)
4894 if (is_hardware_watchpoint (b))
4895 {
4896 struct watchpoint *w = (struct watchpoint *) b;
4897
4898 w->watchpoint_triggered = watch_triggered_no;
4899 }
4900
4901 return 0;
4902 }
4903
4904 if (!target_stopped_data_address (&current_target, &addr))
4905 {
4906 /* We were stopped by a watchpoint, but we don't know where.
4907 Mark all watchpoints as unknown. */
4908 ALL_BREAKPOINTS (b)
4909 if (is_hardware_watchpoint (b))
4910 {
4911 struct watchpoint *w = (struct watchpoint *) b;
4912
4913 w->watchpoint_triggered = watch_triggered_unknown;
4914 }
4915
4916 return 1;
4917 }
4918
4919 /* The target could report the data address. Mark watchpoints
4920 affected by this data address as triggered, and all others as not
4921 triggered. */
4922
4923 ALL_BREAKPOINTS (b)
4924 if (is_hardware_watchpoint (b))
4925 {
4926 struct watchpoint *w = (struct watchpoint *) b;
4927 struct bp_location *loc;
4928
4929 w->watchpoint_triggered = watch_triggered_no;
4930 for (loc = b->loc; loc; loc = loc->next)
4931 {
4932 if (is_masked_watchpoint (b))
4933 {
4934 CORE_ADDR newaddr = addr & w->hw_wp_mask;
4935 CORE_ADDR start = loc->address & w->hw_wp_mask;
4936
4937 if (newaddr == start)
4938 {
4939 w->watchpoint_triggered = watch_triggered_yes;
4940 break;
4941 }
4942 }
4943 /* Exact match not required. Within range is sufficient. */
4944 else if (target_watchpoint_addr_within_range (&current_target,
4945 addr, loc->address,
4946 loc->length))
4947 {
4948 w->watchpoint_triggered = watch_triggered_yes;
4949 break;
4950 }
4951 }
4952 }
4953
4954 return 1;
4955 }
4956
4957 /* Possible return values for watchpoint_check. */
4958 enum wp_check_result
4959 {
4960 /* The watchpoint has been deleted. */
4961 WP_DELETED = 1,
4962
4963 /* The value has changed. */
4964 WP_VALUE_CHANGED = 2,
4965
4966 /* The value has not changed. */
4967 WP_VALUE_NOT_CHANGED = 3,
4968
4969 /* Ignore this watchpoint, no matter if the value changed or not. */
4970 WP_IGNORE = 4,
4971 };
4972
4973 #define BP_TEMPFLAG 1
4974 #define BP_HARDWAREFLAG 2
4975
4976 /* Evaluate watchpoint condition expression and check if its value
4977 changed. */
4978
4979 static wp_check_result
4980 watchpoint_check (bpstat bs)
4981 {
4982 struct watchpoint *b;
4983 struct frame_info *fr;
4984 int within_current_scope;
4985
4986 /* BS is built from an existing struct breakpoint. */
4987 gdb_assert (bs->breakpoint_at != NULL);
4988 b = (struct watchpoint *) bs->breakpoint_at;
4989
4990 /* If this is a local watchpoint, we only want to check if the
4991 watchpoint frame is in scope if the current thread is the thread
4992 that was used to create the watchpoint. */
4993 if (!watchpoint_in_thread_scope (b))
4994 return WP_IGNORE;
4995
4996 if (b->exp_valid_block == NULL)
4997 within_current_scope = 1;
4998 else
4999 {
5000 struct frame_info *frame = get_current_frame ();
5001 struct gdbarch *frame_arch = get_frame_arch (frame);
5002 CORE_ADDR frame_pc = get_frame_pc (frame);
5003
5004 /* stack_frame_destroyed_p() returns a non-zero value if we're
5005 still in the function but the stack frame has already been
5006 invalidated. Since we can't rely on the values of local
5007 variables after the stack has been destroyed, we are treating
5008 the watchpoint in that state as `not changed' without further
5009 checking. Don't mark watchpoints as changed if the current
5010 frame is in an epilogue - even if they are in some other
5011 frame, our view of the stack is likely to be wrong and
5012 frame_find_by_id could error out. */
5013 if (gdbarch_stack_frame_destroyed_p (frame_arch, frame_pc))
5014 return WP_IGNORE;
5015
5016 fr = frame_find_by_id (b->watchpoint_frame);
5017 within_current_scope = (fr != NULL);
5018
5019 /* If we've gotten confused in the unwinder, we might have
5020 returned a frame that can't describe this variable. */
5021 if (within_current_scope)
5022 {
5023 struct symbol *function;
5024
5025 function = get_frame_function (fr);
5026 if (function == NULL
5027 || !contained_in (b->exp_valid_block,
5028 SYMBOL_BLOCK_VALUE (function)))
5029 within_current_scope = 0;
5030 }
5031
5032 if (within_current_scope)
5033 /* If we end up stopping, the current frame will get selected
5034 in normal_stop. So this call to select_frame won't affect
5035 the user. */
5036 select_frame (fr);
5037 }
5038
5039 if (within_current_scope)
5040 {
5041 /* We use value_{,free_to_}mark because it could be a *long*
5042 time before we return to the command level and call
5043 free_all_values. We can't call free_all_values because we
5044 might be in the middle of evaluating a function call. */
5045
5046 int pc = 0;
5047 struct value *mark;
5048 struct value *new_val;
5049
5050 if (is_masked_watchpoint (b))
5051 /* Since we don't know the exact trigger address (from
5052 stopped_data_address), just tell the user we've triggered
5053 a mask watchpoint. */
5054 return WP_VALUE_CHANGED;
5055
5056 mark = value_mark ();
5057 fetch_subexp_value (b->exp.get (), &pc, &new_val, NULL, NULL, 0);
5058
5059 if (b->val_bitsize != 0)
5060 new_val = extract_bitfield_from_watchpoint_value (b, new_val);
5061
5062 /* We use value_equal_contents instead of value_equal because
5063 the latter coerces an array to a pointer, thus comparing just
5064 the address of the array instead of its contents. This is
5065 not what we want. */
5066 if ((b->val != NULL) != (new_val != NULL)
5067 || (b->val != NULL && !value_equal_contents (b->val, new_val)))
5068 {
5069 if (new_val != NULL)
5070 {
5071 release_value (new_val);
5072 value_free_to_mark (mark);
5073 }
5074 bs->old_val = b->val;
5075 b->val = new_val;
5076 b->val_valid = 1;
5077 return WP_VALUE_CHANGED;
5078 }
5079 else
5080 {
5081 /* Nothing changed. */
5082 value_free_to_mark (mark);
5083 return WP_VALUE_NOT_CHANGED;
5084 }
5085 }
5086 else
5087 {
5088 /* This seems like the only logical thing to do because
5089 if we temporarily ignored the watchpoint, then when
5090 we reenter the block in which it is valid it contains
5091 garbage (in the case of a function, it may have two
5092 garbage values, one before and one after the prologue).
5093 So we can't even detect the first assignment to it and
5094 watch after that (since the garbage may or may not equal
5095 the first value assigned). */
5096 /* We print all the stop information in
5097 breakpoint_ops->print_it, but in this case, by the time we
5098 call breakpoint_ops->print_it this bp will be deleted
5099 already. So we have no choice but print the information
5100 here. */
5101
5102 SWITCH_THRU_ALL_UIS ()
5103 {
5104 struct ui_out *uiout = current_uiout;
5105
5106 if (uiout->is_mi_like_p ())
5107 uiout->field_string
5108 ("reason", async_reason_lookup (EXEC_ASYNC_WATCHPOINT_SCOPE));
5109 uiout->text ("\nWatchpoint ");
5110 uiout->field_int ("wpnum", b->number);
5111 uiout->text (" deleted because the program has left the block in\n"
5112 "which its expression is valid.\n");
5113 }
5114
5115 /* Make sure the watchpoint's commands aren't executed. */
5116 b->commands = NULL;
5117 watchpoint_del_at_next_stop (b);
5118
5119 return WP_DELETED;
5120 }
5121 }
5122
5123 /* Return true if it looks like target has stopped due to hitting
5124 breakpoint location BL. This function does not check if we should
5125 stop, only if BL explains the stop. */
5126
5127 static int
5128 bpstat_check_location (const struct bp_location *bl,
5129 struct address_space *aspace, CORE_ADDR bp_addr,
5130 const struct target_waitstatus *ws)
5131 {
5132 struct breakpoint *b = bl->owner;
5133
5134 /* BL is from an existing breakpoint. */
5135 gdb_assert (b != NULL);
5136
5137 return b->ops->breakpoint_hit (bl, aspace, bp_addr, ws);
5138 }
5139
5140 /* Determine if the watched values have actually changed, and we
5141 should stop. If not, set BS->stop to 0. */
5142
5143 static void
5144 bpstat_check_watchpoint (bpstat bs)
5145 {
5146 const struct bp_location *bl;
5147 struct watchpoint *b;
5148
5149 /* BS is built for existing struct breakpoint. */
5150 bl = bs->bp_location_at;
5151 gdb_assert (bl != NULL);
5152 b = (struct watchpoint *) bs->breakpoint_at;
5153 gdb_assert (b != NULL);
5154
5155 {
5156 int must_check_value = 0;
5157
5158 if (b->type == bp_watchpoint)
5159 /* For a software watchpoint, we must always check the
5160 watched value. */
5161 must_check_value = 1;
5162 else if (b->watchpoint_triggered == watch_triggered_yes)
5163 /* We have a hardware watchpoint (read, write, or access)
5164 and the target earlier reported an address watched by
5165 this watchpoint. */
5166 must_check_value = 1;
5167 else if (b->watchpoint_triggered == watch_triggered_unknown
5168 && b->type == bp_hardware_watchpoint)
5169 /* We were stopped by a hardware watchpoint, but the target could
5170 not report the data address. We must check the watchpoint's
5171 value. Access and read watchpoints are out of luck; without
5172 a data address, we can't figure it out. */
5173 must_check_value = 1;
5174
5175 if (must_check_value)
5176 {
5177 wp_check_result e;
5178
5179 TRY
5180 {
5181 e = watchpoint_check (bs);
5182 }
5183 CATCH (ex, RETURN_MASK_ALL)
5184 {
5185 exception_fprintf (gdb_stderr, ex,
5186 "Error evaluating expression "
5187 "for watchpoint %d\n",
5188 b->number);
5189
5190 SWITCH_THRU_ALL_UIS ()
5191 {
5192 printf_filtered (_("Watchpoint %d deleted.\n"),
5193 b->number);
5194 }
5195 watchpoint_del_at_next_stop (b);
5196 e = WP_DELETED;
5197 }
5198 END_CATCH
5199
5200 switch (e)
5201 {
5202 case WP_DELETED:
5203 /* We've already printed what needs to be printed. */
5204 bs->print_it = print_it_done;
5205 /* Stop. */
5206 break;
5207 case WP_IGNORE:
5208 bs->print_it = print_it_noop;
5209 bs->stop = 0;
5210 break;
5211 case WP_VALUE_CHANGED:
5212 if (b->type == bp_read_watchpoint)
5213 {
5214 /* There are two cases to consider here:
5215
5216 1. We're watching the triggered memory for reads.
5217 In that case, trust the target, and always report
5218 the watchpoint hit to the user. Even though
5219 reads don't cause value changes, the value may
5220 have changed since the last time it was read, and
5221 since we're not trapping writes, we will not see
5222 those, and as such we should ignore our notion of
5223 old value.
5224
5225 2. We're watching the triggered memory for both
5226 reads and writes. There are two ways this may
5227 happen:
5228
5229 2.1. This is a target that can't break on data
5230 reads only, but can break on accesses (reads or
5231 writes), such as e.g., x86. We detect this case
5232 at the time we try to insert read watchpoints.
5233
5234 2.2. Otherwise, the target supports read
5235 watchpoints, but, the user set an access or write
5236 watchpoint watching the same memory as this read
5237 watchpoint.
5238
5239 If we're watching memory writes as well as reads,
5240 ignore watchpoint hits when we find that the
5241 value hasn't changed, as reads don't cause
5242 changes. This still gives false positives when
5243 the program writes the same value to memory as
5244 what there was already in memory (we will confuse
5245 it for a read), but it's much better than
5246 nothing. */
5247
5248 int other_write_watchpoint = 0;
5249
5250 if (bl->watchpoint_type == hw_read)
5251 {
5252 struct breakpoint *other_b;
5253
5254 ALL_BREAKPOINTS (other_b)
5255 if (other_b->type == bp_hardware_watchpoint
5256 || other_b->type == bp_access_watchpoint)
5257 {
5258 struct watchpoint *other_w =
5259 (struct watchpoint *) other_b;
5260
5261 if (other_w->watchpoint_triggered
5262 == watch_triggered_yes)
5263 {
5264 other_write_watchpoint = 1;
5265 break;
5266 }
5267 }
5268 }
5269
5270 if (other_write_watchpoint
5271 || bl->watchpoint_type == hw_access)
5272 {
5273 /* We're watching the same memory for writes,
5274 and the value changed since the last time we
5275 updated it, so this trap must be for a write.
5276 Ignore it. */
5277 bs->print_it = print_it_noop;
5278 bs->stop = 0;
5279 }
5280 }
5281 break;
5282 case WP_VALUE_NOT_CHANGED:
5283 if (b->type == bp_hardware_watchpoint
5284 || b->type == bp_watchpoint)
5285 {
5286 /* Don't stop: write watchpoints shouldn't fire if
5287 the value hasn't changed. */
5288 bs->print_it = print_it_noop;
5289 bs->stop = 0;
5290 }
5291 /* Stop. */
5292 break;
5293 default:
5294 /* Can't happen. */
5295 break;
5296 }
5297 }
5298 else /* must_check_value == 0 */
5299 {
5300 /* This is a case where some watchpoint(s) triggered, but
5301 not at the address of this watchpoint, or else no
5302 watchpoint triggered after all. So don't print
5303 anything for this watchpoint. */
5304 bs->print_it = print_it_noop;
5305 bs->stop = 0;
5306 }
5307 }
5308 }
5309
5310 /* For breakpoints that are currently marked as telling gdb to stop,
5311 check conditions (condition proper, frame, thread and ignore count)
5312 of breakpoint referred to by BS. If we should not stop for this
5313 breakpoint, set BS->stop to 0. */
5314
5315 static void
5316 bpstat_check_breakpoint_conditions (bpstat bs, ptid_t ptid)
5317 {
5318 const struct bp_location *bl;
5319 struct breakpoint *b;
5320 /* Assume stop. */
5321 bool condition_result = true;
5322 struct expression *cond;
5323
5324 gdb_assert (bs->stop);
5325
5326 /* BS is built for existing struct breakpoint. */
5327 bl = bs->bp_location_at;
5328 gdb_assert (bl != NULL);
5329 b = bs->breakpoint_at;
5330 gdb_assert (b != NULL);
5331
5332 /* Even if the target evaluated the condition on its end and notified GDB, we
5333 need to do so again since GDB does not know if we stopped due to a
5334 breakpoint or a single step breakpoint. */
5335
5336 if (frame_id_p (b->frame_id)
5337 && !frame_id_eq (b->frame_id, get_stack_frame_id (get_current_frame ())))
5338 {
5339 bs->stop = 0;
5340 return;
5341 }
5342
5343 /* If this is a thread/task-specific breakpoint, don't waste cpu
5344 evaluating the condition if this isn't the specified
5345 thread/task. */
5346 if ((b->thread != -1 && b->thread != ptid_to_global_thread_id (ptid))
5347 || (b->task != 0 && b->task != ada_get_task_number (ptid)))
5348
5349 {
5350 bs->stop = 0;
5351 return;
5352 }
5353
5354 /* Evaluate extension language breakpoints that have a "stop" method
5355 implemented. */
5356 bs->stop = breakpoint_ext_lang_cond_says_stop (b);
5357
5358 if (is_watchpoint (b))
5359 {
5360 struct watchpoint *w = (struct watchpoint *) b;
5361
5362 cond = w->cond_exp.get ();
5363 }
5364 else
5365 cond = bl->cond.get ();
5366
5367 if (cond && b->disposition != disp_del_at_next_stop)
5368 {
5369 int within_current_scope = 1;
5370 struct watchpoint * w;
5371
5372 /* We use value_mark and value_free_to_mark because it could
5373 be a long time before we return to the command level and
5374 call free_all_values. We can't call free_all_values
5375 because we might be in the middle of evaluating a
5376 function call. */
5377 struct value *mark = value_mark ();
5378
5379 if (is_watchpoint (b))
5380 w = (struct watchpoint *) b;
5381 else
5382 w = NULL;
5383
5384 /* Need to select the frame, with all that implies so that
5385 the conditions will have the right context. Because we
5386 use the frame, we will not see an inlined function's
5387 variables when we arrive at a breakpoint at the start
5388 of the inlined function; the current frame will be the
5389 call site. */
5390 if (w == NULL || w->cond_exp_valid_block == NULL)
5391 select_frame (get_current_frame ());
5392 else
5393 {
5394 struct frame_info *frame;
5395
5396 /* For local watchpoint expressions, which particular
5397 instance of a local is being watched matters, so we
5398 keep track of the frame to evaluate the expression
5399 in. To evaluate the condition however, it doesn't
5400 really matter which instantiation of the function
5401 where the condition makes sense triggers the
5402 watchpoint. This allows an expression like "watch
5403 global if q > 10" set in `func', catch writes to
5404 global on all threads that call `func', or catch
5405 writes on all recursive calls of `func' by a single
5406 thread. We simply always evaluate the condition in
5407 the innermost frame that's executing where it makes
5408 sense to evaluate the condition. It seems
5409 intuitive. */
5410 frame = block_innermost_frame (w->cond_exp_valid_block);
5411 if (frame != NULL)
5412 select_frame (frame);
5413 else
5414 within_current_scope = 0;
5415 }
5416 if (within_current_scope)
5417 {
5418 TRY
5419 {
5420 condition_result = breakpoint_cond_eval (cond);
5421 }
5422 CATCH (ex, RETURN_MASK_ALL)
5423 {
5424 exception_fprintf (gdb_stderr, ex,
5425 "Error in testing breakpoint condition:\n");
5426 }
5427 END_CATCH
5428 }
5429 else
5430 {
5431 warning (_("Watchpoint condition cannot be tested "
5432 "in the current scope"));
5433 /* If we failed to set the right context for this
5434 watchpoint, unconditionally report it. */
5435 }
5436 /* FIXME-someday, should give breakpoint #. */
5437 value_free_to_mark (mark);
5438 }
5439
5440 if (cond && !condition_result)
5441 {
5442 bs->stop = 0;
5443 }
5444 else if (b->ignore_count > 0)
5445 {
5446 b->ignore_count--;
5447 bs->stop = 0;
5448 /* Increase the hit count even though we don't stop. */
5449 ++(b->hit_count);
5450 observer_notify_breakpoint_modified (b);
5451 }
5452 }
5453
5454 /* Returns true if we need to track moribund locations of LOC's type
5455 on the current target. */
5456
5457 static int
5458 need_moribund_for_location_type (struct bp_location *loc)
5459 {
5460 return ((loc->loc_type == bp_loc_software_breakpoint
5461 && !target_supports_stopped_by_sw_breakpoint ())
5462 || (loc->loc_type == bp_loc_hardware_breakpoint
5463 && !target_supports_stopped_by_hw_breakpoint ()));
5464 }
5465
5466
5467 /* Get a bpstat associated with having just stopped at address
5468 BP_ADDR in thread PTID.
5469
5470 Determine whether we stopped at a breakpoint, etc, or whether we
5471 don't understand this stop. Result is a chain of bpstat's such
5472 that:
5473
5474 if we don't understand the stop, the result is a null pointer.
5475
5476 if we understand why we stopped, the result is not null.
5477
5478 Each element of the chain refers to a particular breakpoint or
5479 watchpoint at which we have stopped. (We may have stopped for
5480 several reasons concurrently.)
5481
5482 Each element of the chain has valid next, breakpoint_at,
5483 commands, FIXME??? fields. */
5484
5485 bpstat
5486 bpstat_stop_status (struct address_space *aspace,
5487 CORE_ADDR bp_addr, ptid_t ptid,
5488 const struct target_waitstatus *ws)
5489 {
5490 struct breakpoint *b = NULL;
5491 struct bp_location *bl;
5492 struct bp_location *loc;
5493 /* First item of allocated bpstat's. */
5494 bpstat bs_head = NULL, *bs_link = &bs_head;
5495 /* Pointer to the last thing in the chain currently. */
5496 bpstat bs;
5497 int ix;
5498 int need_remove_insert;
5499 int removed_any;
5500
5501 /* First, build the bpstat chain with locations that explain a
5502 target stop, while being careful to not set the target running,
5503 as that may invalidate locations (in particular watchpoint
5504 locations are recreated). Resuming will happen here with
5505 breakpoint conditions or watchpoint expressions that include
5506 inferior function calls. */
5507
5508 ALL_BREAKPOINTS (b)
5509 {
5510 if (!breakpoint_enabled (b))
5511 continue;
5512
5513 for (bl = b->loc; bl != NULL; bl = bl->next)
5514 {
5515 /* For hardware watchpoints, we look only at the first
5516 location. The watchpoint_check function will work on the
5517 entire expression, not the individual locations. For
5518 read watchpoints, the watchpoints_triggered function has
5519 checked all locations already. */
5520 if (b->type == bp_hardware_watchpoint && bl != b->loc)
5521 break;
5522
5523 if (!bl->enabled || bl->shlib_disabled)
5524 continue;
5525
5526 if (!bpstat_check_location (bl, aspace, bp_addr, ws))
5527 continue;
5528
5529 /* Come here if it's a watchpoint, or if the break address
5530 matches. */
5531
5532 bs = new bpstats (bl, &bs_link); /* Alloc a bpstat to
5533 explain stop. */
5534
5535 /* Assume we stop. Should we find a watchpoint that is not
5536 actually triggered, or if the condition of the breakpoint
5537 evaluates as false, we'll reset 'stop' to 0. */
5538 bs->stop = 1;
5539 bs->print = 1;
5540
5541 /* If this is a scope breakpoint, mark the associated
5542 watchpoint as triggered so that we will handle the
5543 out-of-scope event. We'll get to the watchpoint next
5544 iteration. */
5545 if (b->type == bp_watchpoint_scope && b->related_breakpoint != b)
5546 {
5547 struct watchpoint *w = (struct watchpoint *) b->related_breakpoint;
5548
5549 w->watchpoint_triggered = watch_triggered_yes;
5550 }
5551 }
5552 }
5553
5554 /* Check if a moribund breakpoint explains the stop. */
5555 if (!target_supports_stopped_by_sw_breakpoint ()
5556 || !target_supports_stopped_by_hw_breakpoint ())
5557 {
5558 for (ix = 0; VEC_iterate (bp_location_p, moribund_locations, ix, loc); ++ix)
5559 {
5560 if (breakpoint_location_address_match (loc, aspace, bp_addr)
5561 && need_moribund_for_location_type (loc))
5562 {
5563 bs = new bpstats (loc, &bs_link);
5564 /* For hits of moribund locations, we should just proceed. */
5565 bs->stop = 0;
5566 bs->print = 0;
5567 bs->print_it = print_it_noop;
5568 }
5569 }
5570 }
5571
5572 /* A bit of special processing for shlib breakpoints. We need to
5573 process solib loading here, so that the lists of loaded and
5574 unloaded libraries are correct before we handle "catch load" and
5575 "catch unload". */
5576 for (bs = bs_head; bs != NULL; bs = bs->next)
5577 {
5578 if (bs->breakpoint_at && bs->breakpoint_at->type == bp_shlib_event)
5579 {
5580 handle_solib_event ();
5581 break;
5582 }
5583 }
5584
5585 /* Now go through the locations that caused the target to stop, and
5586 check whether we're interested in reporting this stop to higher
5587 layers, or whether we should resume the target transparently. */
5588
5589 removed_any = 0;
5590
5591 for (bs = bs_head; bs != NULL; bs = bs->next)
5592 {
5593 if (!bs->stop)
5594 continue;
5595
5596 b = bs->breakpoint_at;
5597 b->ops->check_status (bs);
5598 if (bs->stop)
5599 {
5600 bpstat_check_breakpoint_conditions (bs, ptid);
5601
5602 if (bs->stop)
5603 {
5604 ++(b->hit_count);
5605 observer_notify_breakpoint_modified (b);
5606
5607 /* We will stop here. */
5608 if (b->disposition == disp_disable)
5609 {
5610 --(b->enable_count);
5611 if (b->enable_count <= 0)
5612 b->enable_state = bp_disabled;
5613 removed_any = 1;
5614 }
5615 if (b->silent)
5616 bs->print = 0;
5617 bs->commands = b->commands;
5618 if (command_line_is_silent (bs->commands
5619 ? bs->commands.get () : NULL))
5620 bs->print = 0;
5621
5622 b->ops->after_condition_true (bs);
5623 }
5624
5625 }
5626
5627 /* Print nothing for this entry if we don't stop or don't
5628 print. */
5629 if (!bs->stop || !bs->print)
5630 bs->print_it = print_it_noop;
5631 }
5632
5633 /* If we aren't stopping, the value of some hardware watchpoint may
5634 not have changed, but the intermediate memory locations we are
5635 watching may have. Don't bother if we're stopping; this will get
5636 done later. */
5637 need_remove_insert = 0;
5638 if (! bpstat_causes_stop (bs_head))
5639 for (bs = bs_head; bs != NULL; bs = bs->next)
5640 if (!bs->stop
5641 && bs->breakpoint_at
5642 && is_hardware_watchpoint (bs->breakpoint_at))
5643 {
5644 struct watchpoint *w = (struct watchpoint *) bs->breakpoint_at;
5645
5646 update_watchpoint (w, 0 /* don't reparse. */);
5647 need_remove_insert = 1;
5648 }
5649
5650 if (need_remove_insert)
5651 update_global_location_list (UGLL_MAY_INSERT);
5652 else if (removed_any)
5653 update_global_location_list (UGLL_DONT_INSERT);
5654
5655 return bs_head;
5656 }
5657
5658 static void
5659 handle_jit_event (void)
5660 {
5661 struct frame_info *frame;
5662 struct gdbarch *gdbarch;
5663
5664 if (debug_infrun)
5665 fprintf_unfiltered (gdb_stdlog, "handling bp_jit_event\n");
5666
5667 /* Switch terminal for any messages produced by
5668 breakpoint_re_set. */
5669 target_terminal::ours_for_output ();
5670
5671 frame = get_current_frame ();
5672 gdbarch = get_frame_arch (frame);
5673
5674 jit_event_handler (gdbarch);
5675
5676 target_terminal::inferior ();
5677 }
5678
5679 /* Prepare WHAT final decision for infrun. */
5680
5681 /* Decide what infrun needs to do with this bpstat. */
5682
5683 struct bpstat_what
5684 bpstat_what (bpstat bs_head)
5685 {
5686 struct bpstat_what retval;
5687 bpstat bs;
5688
5689 retval.main_action = BPSTAT_WHAT_KEEP_CHECKING;
5690 retval.call_dummy = STOP_NONE;
5691 retval.is_longjmp = 0;
5692
5693 for (bs = bs_head; bs != NULL; bs = bs->next)
5694 {
5695 /* Extract this BS's action. After processing each BS, we check
5696 if its action overrides all we've seem so far. */
5697 enum bpstat_what_main_action this_action = BPSTAT_WHAT_KEEP_CHECKING;
5698 enum bptype bptype;
5699
5700 if (bs->breakpoint_at == NULL)
5701 {
5702 /* I suspect this can happen if it was a momentary
5703 breakpoint which has since been deleted. */
5704 bptype = bp_none;
5705 }
5706 else
5707 bptype = bs->breakpoint_at->type;
5708
5709 switch (bptype)
5710 {
5711 case bp_none:
5712 break;
5713 case bp_breakpoint:
5714 case bp_hardware_breakpoint:
5715 case bp_single_step:
5716 case bp_until:
5717 case bp_finish:
5718 case bp_shlib_event:
5719 if (bs->stop)
5720 {
5721 if (bs->print)
5722 this_action = BPSTAT_WHAT_STOP_NOISY;
5723 else
5724 this_action = BPSTAT_WHAT_STOP_SILENT;
5725 }
5726 else
5727 this_action = BPSTAT_WHAT_SINGLE;
5728 break;
5729 case bp_watchpoint:
5730 case bp_hardware_watchpoint:
5731 case bp_read_watchpoint:
5732 case bp_access_watchpoint:
5733 if (bs->stop)
5734 {
5735 if (bs->print)
5736 this_action = BPSTAT_WHAT_STOP_NOISY;
5737 else
5738 this_action = BPSTAT_WHAT_STOP_SILENT;
5739 }
5740 else
5741 {
5742 /* There was a watchpoint, but we're not stopping.
5743 This requires no further action. */
5744 }
5745 break;
5746 case bp_longjmp:
5747 case bp_longjmp_call_dummy:
5748 case bp_exception:
5749 if (bs->stop)
5750 {
5751 this_action = BPSTAT_WHAT_SET_LONGJMP_RESUME;
5752 retval.is_longjmp = bptype != bp_exception;
5753 }
5754 else
5755 this_action = BPSTAT_WHAT_SINGLE;
5756 break;
5757 case bp_longjmp_resume:
5758 case bp_exception_resume:
5759 if (bs->stop)
5760 {
5761 this_action = BPSTAT_WHAT_CLEAR_LONGJMP_RESUME;
5762 retval.is_longjmp = bptype == bp_longjmp_resume;
5763 }
5764 else
5765 this_action = BPSTAT_WHAT_SINGLE;
5766 break;
5767 case bp_step_resume:
5768 if (bs->stop)
5769 this_action = BPSTAT_WHAT_STEP_RESUME;
5770 else
5771 {
5772 /* It is for the wrong frame. */
5773 this_action = BPSTAT_WHAT_SINGLE;
5774 }
5775 break;
5776 case bp_hp_step_resume:
5777 if (bs->stop)
5778 this_action = BPSTAT_WHAT_HP_STEP_RESUME;
5779 else
5780 {
5781 /* It is for the wrong frame. */
5782 this_action = BPSTAT_WHAT_SINGLE;
5783 }
5784 break;
5785 case bp_watchpoint_scope:
5786 case bp_thread_event:
5787 case bp_overlay_event:
5788 case bp_longjmp_master:
5789 case bp_std_terminate_master:
5790 case bp_exception_master:
5791 this_action = BPSTAT_WHAT_SINGLE;
5792 break;
5793 case bp_catchpoint:
5794 if (bs->stop)
5795 {
5796 if (bs->print)
5797 this_action = BPSTAT_WHAT_STOP_NOISY;
5798 else
5799 this_action = BPSTAT_WHAT_STOP_SILENT;
5800 }
5801 else
5802 {
5803 /* There was a catchpoint, but we're not stopping.
5804 This requires no further action. */
5805 }
5806 break;
5807 case bp_jit_event:
5808 this_action = BPSTAT_WHAT_SINGLE;
5809 break;
5810 case bp_call_dummy:
5811 /* Make sure the action is stop (silent or noisy),
5812 so infrun.c pops the dummy frame. */
5813 retval.call_dummy = STOP_STACK_DUMMY;
5814 this_action = BPSTAT_WHAT_STOP_SILENT;
5815 break;
5816 case bp_std_terminate:
5817 /* Make sure the action is stop (silent or noisy),
5818 so infrun.c pops the dummy frame. */
5819 retval.call_dummy = STOP_STD_TERMINATE;
5820 this_action = BPSTAT_WHAT_STOP_SILENT;
5821 break;
5822 case bp_tracepoint:
5823 case bp_fast_tracepoint:
5824 case bp_static_tracepoint:
5825 /* Tracepoint hits should not be reported back to GDB, and
5826 if one got through somehow, it should have been filtered
5827 out already. */
5828 internal_error (__FILE__, __LINE__,
5829 _("bpstat_what: tracepoint encountered"));
5830 break;
5831 case bp_gnu_ifunc_resolver:
5832 /* Step over it (and insert bp_gnu_ifunc_resolver_return). */
5833 this_action = BPSTAT_WHAT_SINGLE;
5834 break;
5835 case bp_gnu_ifunc_resolver_return:
5836 /* The breakpoint will be removed, execution will restart from the
5837 PC of the former breakpoint. */
5838 this_action = BPSTAT_WHAT_KEEP_CHECKING;
5839 break;
5840
5841 case bp_dprintf:
5842 if (bs->stop)
5843 this_action = BPSTAT_WHAT_STOP_SILENT;
5844 else
5845 this_action = BPSTAT_WHAT_SINGLE;
5846 break;
5847
5848 default:
5849 internal_error (__FILE__, __LINE__,
5850 _("bpstat_what: unhandled bptype %d"), (int) bptype);
5851 }
5852
5853 retval.main_action = std::max (retval.main_action, this_action);
5854 }
5855
5856 return retval;
5857 }
5858
5859 void
5860 bpstat_run_callbacks (bpstat bs_head)
5861 {
5862 bpstat bs;
5863
5864 for (bs = bs_head; bs != NULL; bs = bs->next)
5865 {
5866 struct breakpoint *b = bs->breakpoint_at;
5867
5868 if (b == NULL)
5869 continue;
5870 switch (b->type)
5871 {
5872 case bp_jit_event:
5873 handle_jit_event ();
5874 break;
5875 case bp_gnu_ifunc_resolver:
5876 gnu_ifunc_resolver_stop (b);
5877 break;
5878 case bp_gnu_ifunc_resolver_return:
5879 gnu_ifunc_resolver_return_stop (b);
5880 break;
5881 }
5882 }
5883 }
5884
5885 /* Nonzero if we should step constantly (e.g. watchpoints on machines
5886 without hardware support). This isn't related to a specific bpstat,
5887 just to things like whether watchpoints are set. */
5888
5889 int
5890 bpstat_should_step (void)
5891 {
5892 struct breakpoint *b;
5893
5894 ALL_BREAKPOINTS (b)
5895 if (breakpoint_enabled (b) && b->type == bp_watchpoint && b->loc != NULL)
5896 return 1;
5897 return 0;
5898 }
5899
5900 int
5901 bpstat_causes_stop (bpstat bs)
5902 {
5903 for (; bs != NULL; bs = bs->next)
5904 if (bs->stop)
5905 return 1;
5906
5907 return 0;
5908 }
5909
5910 \f
5911
5912 /* Compute a string of spaces suitable to indent the next line
5913 so it starts at the position corresponding to the table column
5914 named COL_NAME in the currently active table of UIOUT. */
5915
5916 static char *
5917 wrap_indent_at_field (struct ui_out *uiout, const char *col_name)
5918 {
5919 static char wrap_indent[80];
5920 int i, total_width, width, align;
5921 const char *text;
5922
5923 total_width = 0;
5924 for (i = 1; uiout->query_table_field (i, &width, &align, &text); i++)
5925 {
5926 if (strcmp (text, col_name) == 0)
5927 {
5928 gdb_assert (total_width < sizeof wrap_indent);
5929 memset (wrap_indent, ' ', total_width);
5930 wrap_indent[total_width] = 0;
5931
5932 return wrap_indent;
5933 }
5934
5935 total_width += width + 1;
5936 }
5937
5938 return NULL;
5939 }
5940
5941 /* Determine if the locations of this breakpoint will have their conditions
5942 evaluated by the target, host or a mix of both. Returns the following:
5943
5944 "host": Host evals condition.
5945 "host or target": Host or Target evals condition.
5946 "target": Target evals condition.
5947 */
5948
5949 static const char *
5950 bp_condition_evaluator (struct breakpoint *b)
5951 {
5952 struct bp_location *bl;
5953 char host_evals = 0;
5954 char target_evals = 0;
5955
5956 if (!b)
5957 return NULL;
5958
5959 if (!is_breakpoint (b))
5960 return NULL;
5961
5962 if (gdb_evaluates_breakpoint_condition_p ()
5963 || !target_supports_evaluation_of_breakpoint_conditions ())
5964 return condition_evaluation_host;
5965
5966 for (bl = b->loc; bl; bl = bl->next)
5967 {
5968 if (bl->cond_bytecode)
5969 target_evals++;
5970 else
5971 host_evals++;
5972 }
5973
5974 if (host_evals && target_evals)
5975 return condition_evaluation_both;
5976 else if (target_evals)
5977 return condition_evaluation_target;
5978 else
5979 return condition_evaluation_host;
5980 }
5981
5982 /* Determine the breakpoint location's condition evaluator. This is
5983 similar to bp_condition_evaluator, but for locations. */
5984
5985 static const char *
5986 bp_location_condition_evaluator (struct bp_location *bl)
5987 {
5988 if (bl && !is_breakpoint (bl->owner))
5989 return NULL;
5990
5991 if (gdb_evaluates_breakpoint_condition_p ()
5992 || !target_supports_evaluation_of_breakpoint_conditions ())
5993 return condition_evaluation_host;
5994
5995 if (bl && bl->cond_bytecode)
5996 return condition_evaluation_target;
5997 else
5998 return condition_evaluation_host;
5999 }
6000
6001 /* Print the LOC location out of the list of B->LOC locations. */
6002
6003 static void
6004 print_breakpoint_location (struct breakpoint *b,
6005 struct bp_location *loc)
6006 {
6007 struct ui_out *uiout = current_uiout;
6008
6009 scoped_restore_current_program_space restore_pspace;
6010
6011 if (loc != NULL && loc->shlib_disabled)
6012 loc = NULL;
6013
6014 if (loc != NULL)
6015 set_current_program_space (loc->pspace);
6016
6017 if (b->display_canonical)
6018 uiout->field_string ("what", event_location_to_string (b->location.get ()));
6019 else if (loc && loc->symtab)
6020 {
6021 struct symbol *sym
6022 = find_pc_sect_function (loc->address, loc->section);
6023 if (sym)
6024 {
6025 uiout->text ("in ");
6026 uiout->field_string ("func", SYMBOL_PRINT_NAME (sym));
6027 uiout->text (" ");
6028 uiout->wrap_hint (wrap_indent_at_field (uiout, "what"));
6029 uiout->text ("at ");
6030 }
6031 uiout->field_string ("file",
6032 symtab_to_filename_for_display (loc->symtab));
6033 uiout->text (":");
6034
6035 if (uiout->is_mi_like_p ())
6036 uiout->field_string ("fullname", symtab_to_fullname (loc->symtab));
6037
6038 uiout->field_int ("line", loc->line_number);
6039 }
6040 else if (loc)
6041 {
6042 string_file stb;
6043
6044 print_address_symbolic (loc->gdbarch, loc->address, &stb,
6045 demangle, "");
6046 uiout->field_stream ("at", stb);
6047 }
6048 else
6049 {
6050 uiout->field_string ("pending",
6051 event_location_to_string (b->location.get ()));
6052 /* If extra_string is available, it could be holding a condition
6053 or dprintf arguments. In either case, make sure it is printed,
6054 too, but only for non-MI streams. */
6055 if (!uiout->is_mi_like_p () && b->extra_string != NULL)
6056 {
6057 if (b->type == bp_dprintf)
6058 uiout->text (",");
6059 else
6060 uiout->text (" ");
6061 uiout->text (b->extra_string);
6062 }
6063 }
6064
6065 if (loc && is_breakpoint (b)
6066 && breakpoint_condition_evaluation_mode () == condition_evaluation_target
6067 && bp_condition_evaluator (b) == condition_evaluation_both)
6068 {
6069 uiout->text (" (");
6070 uiout->field_string ("evaluated-by",
6071 bp_location_condition_evaluator (loc));
6072 uiout->text (")");
6073 }
6074 }
6075
6076 static const char *
6077 bptype_string (enum bptype type)
6078 {
6079 struct ep_type_description
6080 {
6081 enum bptype type;
6082 const char *description;
6083 };
6084 static struct ep_type_description bptypes[] =
6085 {
6086 {bp_none, "?deleted?"},
6087 {bp_breakpoint, "breakpoint"},
6088 {bp_hardware_breakpoint, "hw breakpoint"},
6089 {bp_single_step, "sw single-step"},
6090 {bp_until, "until"},
6091 {bp_finish, "finish"},
6092 {bp_watchpoint, "watchpoint"},
6093 {bp_hardware_watchpoint, "hw watchpoint"},
6094 {bp_read_watchpoint, "read watchpoint"},
6095 {bp_access_watchpoint, "acc watchpoint"},
6096 {bp_longjmp, "longjmp"},
6097 {bp_longjmp_resume, "longjmp resume"},
6098 {bp_longjmp_call_dummy, "longjmp for call dummy"},
6099 {bp_exception, "exception"},
6100 {bp_exception_resume, "exception resume"},
6101 {bp_step_resume, "step resume"},
6102 {bp_hp_step_resume, "high-priority step resume"},
6103 {bp_watchpoint_scope, "watchpoint scope"},
6104 {bp_call_dummy, "call dummy"},
6105 {bp_std_terminate, "std::terminate"},
6106 {bp_shlib_event, "shlib events"},
6107 {bp_thread_event, "thread events"},
6108 {bp_overlay_event, "overlay events"},
6109 {bp_longjmp_master, "longjmp master"},
6110 {bp_std_terminate_master, "std::terminate master"},
6111 {bp_exception_master, "exception master"},
6112 {bp_catchpoint, "catchpoint"},
6113 {bp_tracepoint, "tracepoint"},
6114 {bp_fast_tracepoint, "fast tracepoint"},
6115 {bp_static_tracepoint, "static tracepoint"},
6116 {bp_dprintf, "dprintf"},
6117 {bp_jit_event, "jit events"},
6118 {bp_gnu_ifunc_resolver, "STT_GNU_IFUNC resolver"},
6119 {bp_gnu_ifunc_resolver_return, "STT_GNU_IFUNC resolver return"},
6120 };
6121
6122 if (((int) type >= (sizeof (bptypes) / sizeof (bptypes[0])))
6123 || ((int) type != bptypes[(int) type].type))
6124 internal_error (__FILE__, __LINE__,
6125 _("bptypes table does not describe type #%d."),
6126 (int) type);
6127
6128 return bptypes[(int) type].description;
6129 }
6130
6131 /* For MI, output a field named 'thread-groups' with a list as the value.
6132 For CLI, prefix the list with the string 'inf'. */
6133
6134 static void
6135 output_thread_groups (struct ui_out *uiout,
6136 const char *field_name,
6137 VEC(int) *inf_num,
6138 int mi_only)
6139 {
6140 int is_mi = uiout->is_mi_like_p ();
6141 int inf;
6142 int i;
6143
6144 /* For backward compatibility, don't display inferiors in CLI unless
6145 there are several. Always display them for MI. */
6146 if (!is_mi && mi_only)
6147 return;
6148
6149 ui_out_emit_list list_emitter (uiout, field_name);
6150
6151 for (i = 0; VEC_iterate (int, inf_num, i, inf); ++i)
6152 {
6153 if (is_mi)
6154 {
6155 char mi_group[10];
6156
6157 xsnprintf (mi_group, sizeof (mi_group), "i%d", inf);
6158 uiout->field_string (NULL, mi_group);
6159 }
6160 else
6161 {
6162 if (i == 0)
6163 uiout->text (" inf ");
6164 else
6165 uiout->text (", ");
6166
6167 uiout->text (plongest (inf));
6168 }
6169 }
6170 }
6171
6172 /* Print B to gdb_stdout. */
6173
6174 static void
6175 print_one_breakpoint_location (struct breakpoint *b,
6176 struct bp_location *loc,
6177 int loc_number,
6178 struct bp_location **last_loc,
6179 int allflag)
6180 {
6181 struct command_line *l;
6182 static char bpenables[] = "nynny";
6183
6184 struct ui_out *uiout = current_uiout;
6185 int header_of_multiple = 0;
6186 int part_of_multiple = (loc != NULL);
6187 struct value_print_options opts;
6188
6189 get_user_print_options (&opts);
6190
6191 gdb_assert (!loc || loc_number != 0);
6192 /* See comment in print_one_breakpoint concerning treatment of
6193 breakpoints with single disabled location. */
6194 if (loc == NULL
6195 && (b->loc != NULL
6196 && (b->loc->next != NULL || !b->loc->enabled)))
6197 header_of_multiple = 1;
6198 if (loc == NULL)
6199 loc = b->loc;
6200
6201 annotate_record ();
6202
6203 /* 1 */
6204 annotate_field (0);
6205 if (part_of_multiple)
6206 {
6207 char *formatted;
6208 formatted = xstrprintf ("%d.%d", b->number, loc_number);
6209 uiout->field_string ("number", formatted);
6210 xfree (formatted);
6211 }
6212 else
6213 {
6214 uiout->field_int ("number", b->number);
6215 }
6216
6217 /* 2 */
6218 annotate_field (1);
6219 if (part_of_multiple)
6220 uiout->field_skip ("type");
6221 else
6222 uiout->field_string ("type", bptype_string (b->type));
6223
6224 /* 3 */
6225 annotate_field (2);
6226 if (part_of_multiple)
6227 uiout->field_skip ("disp");
6228 else
6229 uiout->field_string ("disp", bpdisp_text (b->disposition));
6230
6231
6232 /* 4 */
6233 annotate_field (3);
6234 if (part_of_multiple)
6235 uiout->field_string ("enabled", loc->enabled ? "y" : "n");
6236 else
6237 uiout->field_fmt ("enabled", "%c", bpenables[(int) b->enable_state]);
6238 uiout->spaces (2);
6239
6240
6241 /* 5 and 6 */
6242 if (b->ops != NULL && b->ops->print_one != NULL)
6243 {
6244 /* Although the print_one can possibly print all locations,
6245 calling it here is not likely to get any nice result. So,
6246 make sure there's just one location. */
6247 gdb_assert (b->loc == NULL || b->loc->next == NULL);
6248 b->ops->print_one (b, last_loc);
6249 }
6250 else
6251 switch (b->type)
6252 {
6253 case bp_none:
6254 internal_error (__FILE__, __LINE__,
6255 _("print_one_breakpoint: bp_none encountered\n"));
6256 break;
6257
6258 case bp_watchpoint:
6259 case bp_hardware_watchpoint:
6260 case bp_read_watchpoint:
6261 case bp_access_watchpoint:
6262 {
6263 struct watchpoint *w = (struct watchpoint *) b;
6264
6265 /* Field 4, the address, is omitted (which makes the columns
6266 not line up too nicely with the headers, but the effect
6267 is relatively readable). */
6268 if (opts.addressprint)
6269 uiout->field_skip ("addr");
6270 annotate_field (5);
6271 uiout->field_string ("what", w->exp_string);
6272 }
6273 break;
6274
6275 case bp_breakpoint:
6276 case bp_hardware_breakpoint:
6277 case bp_single_step:
6278 case bp_until:
6279 case bp_finish:
6280 case bp_longjmp:
6281 case bp_longjmp_resume:
6282 case bp_longjmp_call_dummy:
6283 case bp_exception:
6284 case bp_exception_resume:
6285 case bp_step_resume:
6286 case bp_hp_step_resume:
6287 case bp_watchpoint_scope:
6288 case bp_call_dummy:
6289 case bp_std_terminate:
6290 case bp_shlib_event:
6291 case bp_thread_event:
6292 case bp_overlay_event:
6293 case bp_longjmp_master:
6294 case bp_std_terminate_master:
6295 case bp_exception_master:
6296 case bp_tracepoint:
6297 case bp_fast_tracepoint:
6298 case bp_static_tracepoint:
6299 case bp_dprintf:
6300 case bp_jit_event:
6301 case bp_gnu_ifunc_resolver:
6302 case bp_gnu_ifunc_resolver_return:
6303 if (opts.addressprint)
6304 {
6305 annotate_field (4);
6306 if (header_of_multiple)
6307 uiout->field_string ("addr", "<MULTIPLE>");
6308 else if (b->loc == NULL || loc->shlib_disabled)
6309 uiout->field_string ("addr", "<PENDING>");
6310 else
6311 uiout->field_core_addr ("addr",
6312 loc->gdbarch, loc->address);
6313 }
6314 annotate_field (5);
6315 if (!header_of_multiple)
6316 print_breakpoint_location (b, loc);
6317 if (b->loc)
6318 *last_loc = b->loc;
6319 break;
6320 }
6321
6322
6323 if (loc != NULL && !header_of_multiple)
6324 {
6325 struct inferior *inf;
6326 VEC(int) *inf_num = NULL;
6327 int mi_only = 1;
6328
6329 ALL_INFERIORS (inf)
6330 {
6331 if (inf->pspace == loc->pspace)
6332 VEC_safe_push (int, inf_num, inf->num);
6333 }
6334
6335 /* For backward compatibility, don't display inferiors in CLI unless
6336 there are several. Always display for MI. */
6337 if (allflag
6338 || (!gdbarch_has_global_breakpoints (target_gdbarch ())
6339 && (number_of_program_spaces () > 1
6340 || number_of_inferiors () > 1)
6341 /* LOC is for existing B, it cannot be in
6342 moribund_locations and thus having NULL OWNER. */
6343 && loc->owner->type != bp_catchpoint))
6344 mi_only = 0;
6345 output_thread_groups (uiout, "thread-groups", inf_num, mi_only);
6346 VEC_free (int, inf_num);
6347 }
6348
6349 if (!part_of_multiple)
6350 {
6351 if (b->thread != -1)
6352 {
6353 /* FIXME: This seems to be redundant and lost here; see the
6354 "stop only in" line a little further down. */
6355 uiout->text (" thread ");
6356 uiout->field_int ("thread", b->thread);
6357 }
6358 else if (b->task != 0)
6359 {
6360 uiout->text (" task ");
6361 uiout->field_int ("task", b->task);
6362 }
6363 }
6364
6365 uiout->text ("\n");
6366
6367 if (!part_of_multiple)
6368 b->ops->print_one_detail (b, uiout);
6369
6370 if (part_of_multiple && frame_id_p (b->frame_id))
6371 {
6372 annotate_field (6);
6373 uiout->text ("\tstop only in stack frame at ");
6374 /* FIXME: cagney/2002-12-01: Shouldn't be poking around inside
6375 the frame ID. */
6376 uiout->field_core_addr ("frame",
6377 b->gdbarch, b->frame_id.stack_addr);
6378 uiout->text ("\n");
6379 }
6380
6381 if (!part_of_multiple && b->cond_string)
6382 {
6383 annotate_field (7);
6384 if (is_tracepoint (b))
6385 uiout->text ("\ttrace only if ");
6386 else
6387 uiout->text ("\tstop only if ");
6388 uiout->field_string ("cond", b->cond_string);
6389
6390 /* Print whether the target is doing the breakpoint's condition
6391 evaluation. If GDB is doing the evaluation, don't print anything. */
6392 if (is_breakpoint (b)
6393 && breakpoint_condition_evaluation_mode ()
6394 == condition_evaluation_target)
6395 {
6396 uiout->text (" (");
6397 uiout->field_string ("evaluated-by",
6398 bp_condition_evaluator (b));
6399 uiout->text (" evals)");
6400 }
6401 uiout->text ("\n");
6402 }
6403
6404 if (!part_of_multiple && b->thread != -1)
6405 {
6406 /* FIXME should make an annotation for this. */
6407 uiout->text ("\tstop only in thread ");
6408 if (uiout->is_mi_like_p ())
6409 uiout->field_int ("thread", b->thread);
6410 else
6411 {
6412 struct thread_info *thr = find_thread_global_id (b->thread);
6413
6414 uiout->field_string ("thread", print_thread_id (thr));
6415 }
6416 uiout->text ("\n");
6417 }
6418
6419 if (!part_of_multiple)
6420 {
6421 if (b->hit_count)
6422 {
6423 /* FIXME should make an annotation for this. */
6424 if (is_catchpoint (b))
6425 uiout->text ("\tcatchpoint");
6426 else if (is_tracepoint (b))
6427 uiout->text ("\ttracepoint");
6428 else
6429 uiout->text ("\tbreakpoint");
6430 uiout->text (" already hit ");
6431 uiout->field_int ("times", b->hit_count);
6432 if (b->hit_count == 1)
6433 uiout->text (" time\n");
6434 else
6435 uiout->text (" times\n");
6436 }
6437 else
6438 {
6439 /* Output the count also if it is zero, but only if this is mi. */
6440 if (uiout->is_mi_like_p ())
6441 uiout->field_int ("times", b->hit_count);
6442 }
6443 }
6444
6445 if (!part_of_multiple && b->ignore_count)
6446 {
6447 annotate_field (8);
6448 uiout->text ("\tignore next ");
6449 uiout->field_int ("ignore", b->ignore_count);
6450 uiout->text (" hits\n");
6451 }
6452
6453 /* Note that an enable count of 1 corresponds to "enable once"
6454 behavior, which is reported by the combination of enablement and
6455 disposition, so we don't need to mention it here. */
6456 if (!part_of_multiple && b->enable_count > 1)
6457 {
6458 annotate_field (8);
6459 uiout->text ("\tdisable after ");
6460 /* Tweak the wording to clarify that ignore and enable counts
6461 are distinct, and have additive effect. */
6462 if (b->ignore_count)
6463 uiout->text ("additional ");
6464 else
6465 uiout->text ("next ");
6466 uiout->field_int ("enable", b->enable_count);
6467 uiout->text (" hits\n");
6468 }
6469
6470 if (!part_of_multiple && is_tracepoint (b))
6471 {
6472 struct tracepoint *tp = (struct tracepoint *) b;
6473
6474 if (tp->traceframe_usage)
6475 {
6476 uiout->text ("\ttrace buffer usage ");
6477 uiout->field_int ("traceframe-usage", tp->traceframe_usage);
6478 uiout->text (" bytes\n");
6479 }
6480 }
6481
6482 l = b->commands ? b->commands.get () : NULL;
6483 if (!part_of_multiple && l)
6484 {
6485 annotate_field (9);
6486 ui_out_emit_tuple tuple_emitter (uiout, "script");
6487 print_command_lines (uiout, l, 4);
6488 }
6489
6490 if (is_tracepoint (b))
6491 {
6492 struct tracepoint *t = (struct tracepoint *) b;
6493
6494 if (!part_of_multiple && t->pass_count)
6495 {
6496 annotate_field (10);
6497 uiout->text ("\tpass count ");
6498 uiout->field_int ("pass", t->pass_count);
6499 uiout->text (" \n");
6500 }
6501
6502 /* Don't display it when tracepoint or tracepoint location is
6503 pending. */
6504 if (!header_of_multiple && loc != NULL && !loc->shlib_disabled)
6505 {
6506 annotate_field (11);
6507
6508 if (uiout->is_mi_like_p ())
6509 uiout->field_string ("installed",
6510 loc->inserted ? "y" : "n");
6511 else
6512 {
6513 if (loc->inserted)
6514 uiout->text ("\t");
6515 else
6516 uiout->text ("\tnot ");
6517 uiout->text ("installed on target\n");
6518 }
6519 }
6520 }
6521
6522 if (uiout->is_mi_like_p () && !part_of_multiple)
6523 {
6524 if (is_watchpoint (b))
6525 {
6526 struct watchpoint *w = (struct watchpoint *) b;
6527
6528 uiout->field_string ("original-location", w->exp_string);
6529 }
6530 else if (b->location != NULL
6531 && event_location_to_string (b->location.get ()) != NULL)
6532 uiout->field_string ("original-location",
6533 event_location_to_string (b->location.get ()));
6534 }
6535 }
6536
6537 static void
6538 print_one_breakpoint (struct breakpoint *b,
6539 struct bp_location **last_loc,
6540 int allflag)
6541 {
6542 struct ui_out *uiout = current_uiout;
6543
6544 {
6545 ui_out_emit_tuple tuple_emitter (uiout, "bkpt");
6546
6547 print_one_breakpoint_location (b, NULL, 0, last_loc, allflag);
6548 }
6549
6550 /* If this breakpoint has custom print function,
6551 it's already printed. Otherwise, print individual
6552 locations, if any. */
6553 if (b->ops == NULL || b->ops->print_one == NULL)
6554 {
6555 /* If breakpoint has a single location that is disabled, we
6556 print it as if it had several locations, since otherwise it's
6557 hard to represent "breakpoint enabled, location disabled"
6558 situation.
6559
6560 Note that while hardware watchpoints have several locations
6561 internally, that's not a property exposed to user. */
6562 if (b->loc
6563 && !is_hardware_watchpoint (b)
6564 && (b->loc->next || !b->loc->enabled))
6565 {
6566 struct bp_location *loc;
6567 int n = 1;
6568
6569 for (loc = b->loc; loc; loc = loc->next, ++n)
6570 {
6571 ui_out_emit_tuple tuple_emitter (uiout, NULL);
6572 print_one_breakpoint_location (b, loc, n, last_loc, allflag);
6573 }
6574 }
6575 }
6576 }
6577
6578 static int
6579 breakpoint_address_bits (struct breakpoint *b)
6580 {
6581 int print_address_bits = 0;
6582 struct bp_location *loc;
6583
6584 /* Software watchpoints that aren't watching memory don't have an
6585 address to print. */
6586 if (is_no_memory_software_watchpoint (b))
6587 return 0;
6588
6589 for (loc = b->loc; loc; loc = loc->next)
6590 {
6591 int addr_bit;
6592
6593 addr_bit = gdbarch_addr_bit (loc->gdbarch);
6594 if (addr_bit > print_address_bits)
6595 print_address_bits = addr_bit;
6596 }
6597
6598 return print_address_bits;
6599 }
6600
6601 /* See breakpoint.h. */
6602
6603 void
6604 print_breakpoint (breakpoint *b)
6605 {
6606 struct bp_location *dummy_loc = NULL;
6607 print_one_breakpoint (b, &dummy_loc, 0);
6608 }
6609
6610 /* Return true if this breakpoint was set by the user, false if it is
6611 internal or momentary. */
6612
6613 int
6614 user_breakpoint_p (struct breakpoint *b)
6615 {
6616 return b->number > 0;
6617 }
6618
6619 /* See breakpoint.h. */
6620
6621 int
6622 pending_breakpoint_p (struct breakpoint *b)
6623 {
6624 return b->loc == NULL;
6625 }
6626
6627 /* Print information on user settable breakpoint (watchpoint, etc)
6628 number BNUM. If BNUM is -1 print all user-settable breakpoints.
6629 If ALLFLAG is non-zero, include non-user-settable breakpoints. If
6630 FILTER is non-NULL, call it on each breakpoint and only include the
6631 ones for which it returns non-zero. Return the total number of
6632 breakpoints listed. */
6633
6634 static int
6635 breakpoint_1 (const char *args, int allflag,
6636 int (*filter) (const struct breakpoint *))
6637 {
6638 struct breakpoint *b;
6639 struct bp_location *last_loc = NULL;
6640 int nr_printable_breakpoints;
6641 struct value_print_options opts;
6642 int print_address_bits = 0;
6643 int print_type_col_width = 14;
6644 struct ui_out *uiout = current_uiout;
6645
6646 get_user_print_options (&opts);
6647
6648 /* Compute the number of rows in the table, as well as the size
6649 required for address fields. */
6650 nr_printable_breakpoints = 0;
6651 ALL_BREAKPOINTS (b)
6652 {
6653 /* If we have a filter, only list the breakpoints it accepts. */
6654 if (filter && !filter (b))
6655 continue;
6656
6657 /* If we have an "args" string, it is a list of breakpoints to
6658 accept. Skip the others. */
6659 if (args != NULL && *args != '\0')
6660 {
6661 if (allflag && parse_and_eval_long (args) != b->number)
6662 continue;
6663 if (!allflag && !number_is_in_list (args, b->number))
6664 continue;
6665 }
6666
6667 if (allflag || user_breakpoint_p (b))
6668 {
6669 int addr_bit, type_len;
6670
6671 addr_bit = breakpoint_address_bits (b);
6672 if (addr_bit > print_address_bits)
6673 print_address_bits = addr_bit;
6674
6675 type_len = strlen (bptype_string (b->type));
6676 if (type_len > print_type_col_width)
6677 print_type_col_width = type_len;
6678
6679 nr_printable_breakpoints++;
6680 }
6681 }
6682
6683 {
6684 ui_out_emit_table table_emitter (uiout,
6685 opts.addressprint ? 6 : 5,
6686 nr_printable_breakpoints,
6687 "BreakpointTable");
6688
6689 if (nr_printable_breakpoints > 0)
6690 annotate_breakpoints_headers ();
6691 if (nr_printable_breakpoints > 0)
6692 annotate_field (0);
6693 uiout->table_header (7, ui_left, "number", "Num"); /* 1 */
6694 if (nr_printable_breakpoints > 0)
6695 annotate_field (1);
6696 uiout->table_header (print_type_col_width, ui_left, "type", "Type"); /* 2 */
6697 if (nr_printable_breakpoints > 0)
6698 annotate_field (2);
6699 uiout->table_header (4, ui_left, "disp", "Disp"); /* 3 */
6700 if (nr_printable_breakpoints > 0)
6701 annotate_field (3);
6702 uiout->table_header (3, ui_left, "enabled", "Enb"); /* 4 */
6703 if (opts.addressprint)
6704 {
6705 if (nr_printable_breakpoints > 0)
6706 annotate_field (4);
6707 if (print_address_bits <= 32)
6708 uiout->table_header (10, ui_left, "addr", "Address"); /* 5 */
6709 else
6710 uiout->table_header (18, ui_left, "addr", "Address"); /* 5 */
6711 }
6712 if (nr_printable_breakpoints > 0)
6713 annotate_field (5);
6714 uiout->table_header (40, ui_noalign, "what", "What"); /* 6 */
6715 uiout->table_body ();
6716 if (nr_printable_breakpoints > 0)
6717 annotate_breakpoints_table ();
6718
6719 ALL_BREAKPOINTS (b)
6720 {
6721 QUIT;
6722 /* If we have a filter, only list the breakpoints it accepts. */
6723 if (filter && !filter (b))
6724 continue;
6725
6726 /* If we have an "args" string, it is a list of breakpoints to
6727 accept. Skip the others. */
6728
6729 if (args != NULL && *args != '\0')
6730 {
6731 if (allflag) /* maintenance info breakpoint */
6732 {
6733 if (parse_and_eval_long (args) != b->number)
6734 continue;
6735 }
6736 else /* all others */
6737 {
6738 if (!number_is_in_list (args, b->number))
6739 continue;
6740 }
6741 }
6742 /* We only print out user settable breakpoints unless the
6743 allflag is set. */
6744 if (allflag || user_breakpoint_p (b))
6745 print_one_breakpoint (b, &last_loc, allflag);
6746 }
6747 }
6748
6749 if (nr_printable_breakpoints == 0)
6750 {
6751 /* If there's a filter, let the caller decide how to report
6752 empty list. */
6753 if (!filter)
6754 {
6755 if (args == NULL || *args == '\0')
6756 uiout->message ("No breakpoints or watchpoints.\n");
6757 else
6758 uiout->message ("No breakpoint or watchpoint matching '%s'.\n",
6759 args);
6760 }
6761 }
6762 else
6763 {
6764 if (last_loc && !server_command)
6765 set_next_address (last_loc->gdbarch, last_loc->address);
6766 }
6767
6768 /* FIXME? Should this be moved up so that it is only called when
6769 there have been breakpoints? */
6770 annotate_breakpoints_table_end ();
6771
6772 return nr_printable_breakpoints;
6773 }
6774
6775 /* Display the value of default-collect in a way that is generally
6776 compatible with the breakpoint list. */
6777
6778 static void
6779 default_collect_info (void)
6780 {
6781 struct ui_out *uiout = current_uiout;
6782
6783 /* If it has no value (which is frequently the case), say nothing; a
6784 message like "No default-collect." gets in user's face when it's
6785 not wanted. */
6786 if (!*default_collect)
6787 return;
6788
6789 /* The following phrase lines up nicely with per-tracepoint collect
6790 actions. */
6791 uiout->text ("default collect ");
6792 uiout->field_string ("default-collect", default_collect);
6793 uiout->text (" \n");
6794 }
6795
6796 static void
6797 info_breakpoints_command (char *args, int from_tty)
6798 {
6799 breakpoint_1 (args, 0, NULL);
6800
6801 default_collect_info ();
6802 }
6803
6804 static void
6805 info_watchpoints_command (char *args, int from_tty)
6806 {
6807 int num_printed = breakpoint_1 (args, 0, is_watchpoint);
6808 struct ui_out *uiout = current_uiout;
6809
6810 if (num_printed == 0)
6811 {
6812 if (args == NULL || *args == '\0')
6813 uiout->message ("No watchpoints.\n");
6814 else
6815 uiout->message ("No watchpoint matching '%s'.\n", args);
6816 }
6817 }
6818
6819 static void
6820 maintenance_info_breakpoints (const char *args, int from_tty)
6821 {
6822 breakpoint_1 (args, 1, NULL);
6823
6824 default_collect_info ();
6825 }
6826
6827 static int
6828 breakpoint_has_pc (struct breakpoint *b,
6829 struct program_space *pspace,
6830 CORE_ADDR pc, struct obj_section *section)
6831 {
6832 struct bp_location *bl = b->loc;
6833
6834 for (; bl; bl = bl->next)
6835 {
6836 if (bl->pspace == pspace
6837 && bl->address == pc
6838 && (!overlay_debugging || bl->section == section))
6839 return 1;
6840 }
6841 return 0;
6842 }
6843
6844 /* Print a message describing any user-breakpoints set at PC. This
6845 concerns with logical breakpoints, so we match program spaces, not
6846 address spaces. */
6847
6848 static void
6849 describe_other_breakpoints (struct gdbarch *gdbarch,
6850 struct program_space *pspace, CORE_ADDR pc,
6851 struct obj_section *section, int thread)
6852 {
6853 int others = 0;
6854 struct breakpoint *b;
6855
6856 ALL_BREAKPOINTS (b)
6857 others += (user_breakpoint_p (b)
6858 && breakpoint_has_pc (b, pspace, pc, section));
6859 if (others > 0)
6860 {
6861 if (others == 1)
6862 printf_filtered (_("Note: breakpoint "));
6863 else /* if (others == ???) */
6864 printf_filtered (_("Note: breakpoints "));
6865 ALL_BREAKPOINTS (b)
6866 if (user_breakpoint_p (b) && breakpoint_has_pc (b, pspace, pc, section))
6867 {
6868 others--;
6869 printf_filtered ("%d", b->number);
6870 if (b->thread == -1 && thread != -1)
6871 printf_filtered (" (all threads)");
6872 else if (b->thread != -1)
6873 printf_filtered (" (thread %d)", b->thread);
6874 printf_filtered ("%s%s ",
6875 ((b->enable_state == bp_disabled
6876 || b->enable_state == bp_call_disabled)
6877 ? " (disabled)"
6878 : ""),
6879 (others > 1) ? ","
6880 : ((others == 1) ? " and" : ""));
6881 }
6882 printf_filtered (_("also set at pc "));
6883 fputs_filtered (paddress (gdbarch, pc), gdb_stdout);
6884 printf_filtered (".\n");
6885 }
6886 }
6887 \f
6888
6889 /* Return true iff it is meaningful to use the address member of
6890 BPT locations. For some breakpoint types, the locations' address members
6891 are irrelevant and it makes no sense to attempt to compare them to other
6892 addresses (or use them for any other purpose either).
6893
6894 More specifically, each of the following breakpoint types will
6895 always have a zero valued location address and we don't want to mark
6896 breakpoints of any of these types to be a duplicate of an actual
6897 breakpoint location at address zero:
6898
6899 bp_watchpoint
6900 bp_catchpoint
6901
6902 */
6903
6904 static int
6905 breakpoint_address_is_meaningful (struct breakpoint *bpt)
6906 {
6907 enum bptype type = bpt->type;
6908
6909 return (type != bp_watchpoint && type != bp_catchpoint);
6910 }
6911
6912 /* Assuming LOC1 and LOC2's owners are hardware watchpoints, returns
6913 true if LOC1 and LOC2 represent the same watchpoint location. */
6914
6915 static int
6916 watchpoint_locations_match (struct bp_location *loc1,
6917 struct bp_location *loc2)
6918 {
6919 struct watchpoint *w1 = (struct watchpoint *) loc1->owner;
6920 struct watchpoint *w2 = (struct watchpoint *) loc2->owner;
6921
6922 /* Both of them must exist. */
6923 gdb_assert (w1 != NULL);
6924 gdb_assert (w2 != NULL);
6925
6926 /* If the target can evaluate the condition expression in hardware,
6927 then we we need to insert both watchpoints even if they are at
6928 the same place. Otherwise the watchpoint will only trigger when
6929 the condition of whichever watchpoint was inserted evaluates to
6930 true, not giving a chance for GDB to check the condition of the
6931 other watchpoint. */
6932 if ((w1->cond_exp
6933 && target_can_accel_watchpoint_condition (loc1->address,
6934 loc1->length,
6935 loc1->watchpoint_type,
6936 w1->cond_exp.get ()))
6937 || (w2->cond_exp
6938 && target_can_accel_watchpoint_condition (loc2->address,
6939 loc2->length,
6940 loc2->watchpoint_type,
6941 w2->cond_exp.get ())))
6942 return 0;
6943
6944 /* Note that this checks the owner's type, not the location's. In
6945 case the target does not support read watchpoints, but does
6946 support access watchpoints, we'll have bp_read_watchpoint
6947 watchpoints with hw_access locations. Those should be considered
6948 duplicates of hw_read locations. The hw_read locations will
6949 become hw_access locations later. */
6950 return (loc1->owner->type == loc2->owner->type
6951 && loc1->pspace->aspace == loc2->pspace->aspace
6952 && loc1->address == loc2->address
6953 && loc1->length == loc2->length);
6954 }
6955
6956 /* See breakpoint.h. */
6957
6958 int
6959 breakpoint_address_match (struct address_space *aspace1, CORE_ADDR addr1,
6960 struct address_space *aspace2, CORE_ADDR addr2)
6961 {
6962 return ((gdbarch_has_global_breakpoints (target_gdbarch ())
6963 || aspace1 == aspace2)
6964 && addr1 == addr2);
6965 }
6966
6967 /* Returns true if {ASPACE2,ADDR2} falls within the range determined by
6968 {ASPACE1,ADDR1,LEN1}. In most targets, this can only be true if ASPACE1
6969 matches ASPACE2. On targets that have global breakpoints, the address
6970 space doesn't really matter. */
6971
6972 static int
6973 breakpoint_address_match_range (struct address_space *aspace1, CORE_ADDR addr1,
6974 int len1, struct address_space *aspace2,
6975 CORE_ADDR addr2)
6976 {
6977 return ((gdbarch_has_global_breakpoints (target_gdbarch ())
6978 || aspace1 == aspace2)
6979 && addr2 >= addr1 && addr2 < addr1 + len1);
6980 }
6981
6982 /* Returns true if {ASPACE,ADDR} matches the breakpoint BL. BL may be
6983 a ranged breakpoint. In most targets, a match happens only if ASPACE
6984 matches the breakpoint's address space. On targets that have global
6985 breakpoints, the address space doesn't really matter. */
6986
6987 static int
6988 breakpoint_location_address_match (struct bp_location *bl,
6989 struct address_space *aspace,
6990 CORE_ADDR addr)
6991 {
6992 return (breakpoint_address_match (bl->pspace->aspace, bl->address,
6993 aspace, addr)
6994 || (bl->length
6995 && breakpoint_address_match_range (bl->pspace->aspace,
6996 bl->address, bl->length,
6997 aspace, addr)));
6998 }
6999
7000 /* Returns true if the [ADDR,ADDR+LEN) range in ASPACE overlaps
7001 breakpoint BL. BL may be a ranged breakpoint. In most targets, a
7002 match happens only if ASPACE matches the breakpoint's address
7003 space. On targets that have global breakpoints, the address space
7004 doesn't really matter. */
7005
7006 static int
7007 breakpoint_location_address_range_overlap (struct bp_location *bl,
7008 struct address_space *aspace,
7009 CORE_ADDR addr, int len)
7010 {
7011 if (gdbarch_has_global_breakpoints (target_gdbarch ())
7012 || bl->pspace->aspace == aspace)
7013 {
7014 int bl_len = bl->length != 0 ? bl->length : 1;
7015
7016 if (mem_ranges_overlap (addr, len, bl->address, bl_len))
7017 return 1;
7018 }
7019 return 0;
7020 }
7021
7022 /* If LOC1 and LOC2's owners are not tracepoints, returns false directly.
7023 Then, if LOC1 and LOC2 represent the same tracepoint location, returns
7024 true, otherwise returns false. */
7025
7026 static int
7027 tracepoint_locations_match (struct bp_location *loc1,
7028 struct bp_location *loc2)
7029 {
7030 if (is_tracepoint (loc1->owner) && is_tracepoint (loc2->owner))
7031 /* Since tracepoint locations are never duplicated with others', tracepoint
7032 locations at the same address of different tracepoints are regarded as
7033 different locations. */
7034 return (loc1->address == loc2->address && loc1->owner == loc2->owner);
7035 else
7036 return 0;
7037 }
7038
7039 /* Assuming LOC1 and LOC2's types' have meaningful target addresses
7040 (breakpoint_address_is_meaningful), returns true if LOC1 and LOC2
7041 represent the same location. */
7042
7043 static int
7044 breakpoint_locations_match (struct bp_location *loc1,
7045 struct bp_location *loc2)
7046 {
7047 int hw_point1, hw_point2;
7048
7049 /* Both of them must not be in moribund_locations. */
7050 gdb_assert (loc1->owner != NULL);
7051 gdb_assert (loc2->owner != NULL);
7052
7053 hw_point1 = is_hardware_watchpoint (loc1->owner);
7054 hw_point2 = is_hardware_watchpoint (loc2->owner);
7055
7056 if (hw_point1 != hw_point2)
7057 return 0;
7058 else if (hw_point1)
7059 return watchpoint_locations_match (loc1, loc2);
7060 else if (is_tracepoint (loc1->owner) || is_tracepoint (loc2->owner))
7061 return tracepoint_locations_match (loc1, loc2);
7062 else
7063 /* We compare bp_location.length in order to cover ranged breakpoints. */
7064 return (breakpoint_address_match (loc1->pspace->aspace, loc1->address,
7065 loc2->pspace->aspace, loc2->address)
7066 && loc1->length == loc2->length);
7067 }
7068
7069 static void
7070 breakpoint_adjustment_warning (CORE_ADDR from_addr, CORE_ADDR to_addr,
7071 int bnum, int have_bnum)
7072 {
7073 /* The longest string possibly returned by hex_string_custom
7074 is 50 chars. These must be at least that big for safety. */
7075 char astr1[64];
7076 char astr2[64];
7077
7078 strcpy (astr1, hex_string_custom ((unsigned long) from_addr, 8));
7079 strcpy (astr2, hex_string_custom ((unsigned long) to_addr, 8));
7080 if (have_bnum)
7081 warning (_("Breakpoint %d address previously adjusted from %s to %s."),
7082 bnum, astr1, astr2);
7083 else
7084 warning (_("Breakpoint address adjusted from %s to %s."), astr1, astr2);
7085 }
7086
7087 /* Adjust a breakpoint's address to account for architectural
7088 constraints on breakpoint placement. Return the adjusted address.
7089 Note: Very few targets require this kind of adjustment. For most
7090 targets, this function is simply the identity function. */
7091
7092 static CORE_ADDR
7093 adjust_breakpoint_address (struct gdbarch *gdbarch,
7094 CORE_ADDR bpaddr, enum bptype bptype)
7095 {
7096 if (!gdbarch_adjust_breakpoint_address_p (gdbarch))
7097 {
7098 /* Very few targets need any kind of breakpoint adjustment. */
7099 return bpaddr;
7100 }
7101 else if (bptype == bp_watchpoint
7102 || bptype == bp_hardware_watchpoint
7103 || bptype == bp_read_watchpoint
7104 || bptype == bp_access_watchpoint
7105 || bptype == bp_catchpoint)
7106 {
7107 /* Watchpoints and the various bp_catch_* eventpoints should not
7108 have their addresses modified. */
7109 return bpaddr;
7110 }
7111 else if (bptype == bp_single_step)
7112 {
7113 /* Single-step breakpoints should not have their addresses
7114 modified. If there's any architectural constrain that
7115 applies to this address, then it should have already been
7116 taken into account when the breakpoint was created in the
7117 first place. If we didn't do this, stepping through e.g.,
7118 Thumb-2 IT blocks would break. */
7119 return bpaddr;
7120 }
7121 else
7122 {
7123 CORE_ADDR adjusted_bpaddr;
7124
7125 /* Some targets have architectural constraints on the placement
7126 of breakpoint instructions. Obtain the adjusted address. */
7127 adjusted_bpaddr = gdbarch_adjust_breakpoint_address (gdbarch, bpaddr);
7128
7129 /* An adjusted breakpoint address can significantly alter
7130 a user's expectations. Print a warning if an adjustment
7131 is required. */
7132 if (adjusted_bpaddr != bpaddr)
7133 breakpoint_adjustment_warning (bpaddr, adjusted_bpaddr, 0, 0);
7134
7135 return adjusted_bpaddr;
7136 }
7137 }
7138
7139 bp_location::bp_location (const bp_location_ops *ops, breakpoint *owner)
7140 {
7141 bp_location *loc = this;
7142
7143 gdb_assert (ops != NULL);
7144
7145 loc->ops = ops;
7146 loc->owner = owner;
7147 loc->cond_bytecode = NULL;
7148 loc->shlib_disabled = 0;
7149 loc->enabled = 1;
7150
7151 switch (owner->type)
7152 {
7153 case bp_breakpoint:
7154 case bp_single_step:
7155 case bp_until:
7156 case bp_finish:
7157 case bp_longjmp:
7158 case bp_longjmp_resume:
7159 case bp_longjmp_call_dummy:
7160 case bp_exception:
7161 case bp_exception_resume:
7162 case bp_step_resume:
7163 case bp_hp_step_resume:
7164 case bp_watchpoint_scope:
7165 case bp_call_dummy:
7166 case bp_std_terminate:
7167 case bp_shlib_event:
7168 case bp_thread_event:
7169 case bp_overlay_event:
7170 case bp_jit_event:
7171 case bp_longjmp_master:
7172 case bp_std_terminate_master:
7173 case bp_exception_master:
7174 case bp_gnu_ifunc_resolver:
7175 case bp_gnu_ifunc_resolver_return:
7176 case bp_dprintf:
7177 loc->loc_type = bp_loc_software_breakpoint;
7178 mark_breakpoint_location_modified (loc);
7179 break;
7180 case bp_hardware_breakpoint:
7181 loc->loc_type = bp_loc_hardware_breakpoint;
7182 mark_breakpoint_location_modified (loc);
7183 break;
7184 case bp_hardware_watchpoint:
7185 case bp_read_watchpoint:
7186 case bp_access_watchpoint:
7187 loc->loc_type = bp_loc_hardware_watchpoint;
7188 break;
7189 case bp_watchpoint:
7190 case bp_catchpoint:
7191 case bp_tracepoint:
7192 case bp_fast_tracepoint:
7193 case bp_static_tracepoint:
7194 loc->loc_type = bp_loc_other;
7195 break;
7196 default:
7197 internal_error (__FILE__, __LINE__, _("unknown breakpoint type"));
7198 }
7199
7200 loc->refc = 1;
7201 }
7202
7203 /* Allocate a struct bp_location. */
7204
7205 static struct bp_location *
7206 allocate_bp_location (struct breakpoint *bpt)
7207 {
7208 return bpt->ops->allocate_location (bpt);
7209 }
7210
7211 static void
7212 free_bp_location (struct bp_location *loc)
7213 {
7214 loc->ops->dtor (loc);
7215 delete loc;
7216 }
7217
7218 /* Increment reference count. */
7219
7220 static void
7221 incref_bp_location (struct bp_location *bl)
7222 {
7223 ++bl->refc;
7224 }
7225
7226 /* Decrement reference count. If the reference count reaches 0,
7227 destroy the bp_location. Sets *BLP to NULL. */
7228
7229 static void
7230 decref_bp_location (struct bp_location **blp)
7231 {
7232 gdb_assert ((*blp)->refc > 0);
7233
7234 if (--(*blp)->refc == 0)
7235 free_bp_location (*blp);
7236 *blp = NULL;
7237 }
7238
7239 /* Add breakpoint B at the end of the global breakpoint chain. */
7240
7241 static breakpoint *
7242 add_to_breakpoint_chain (std::unique_ptr<breakpoint> &&b)
7243 {
7244 struct breakpoint *b1;
7245 struct breakpoint *result = b.get ();
7246
7247 /* Add this breakpoint to the end of the chain so that a list of
7248 breakpoints will come out in order of increasing numbers. */
7249
7250 b1 = breakpoint_chain;
7251 if (b1 == 0)
7252 breakpoint_chain = b.release ();
7253 else
7254 {
7255 while (b1->next)
7256 b1 = b1->next;
7257 b1->next = b.release ();
7258 }
7259
7260 return result;
7261 }
7262
7263 /* Initializes breakpoint B with type BPTYPE and no locations yet. */
7264
7265 static void
7266 init_raw_breakpoint_without_location (struct breakpoint *b,
7267 struct gdbarch *gdbarch,
7268 enum bptype bptype,
7269 const struct breakpoint_ops *ops)
7270 {
7271 gdb_assert (ops != NULL);
7272
7273 b->ops = ops;
7274 b->type = bptype;
7275 b->gdbarch = gdbarch;
7276 b->language = current_language->la_language;
7277 b->input_radix = input_radix;
7278 b->related_breakpoint = b;
7279 }
7280
7281 /* Helper to set_raw_breakpoint below. Creates a breakpoint
7282 that has type BPTYPE and has no locations as yet. */
7283
7284 static struct breakpoint *
7285 set_raw_breakpoint_without_location (struct gdbarch *gdbarch,
7286 enum bptype bptype,
7287 const struct breakpoint_ops *ops)
7288 {
7289 std::unique_ptr<breakpoint> b = new_breakpoint_from_type (bptype);
7290
7291 init_raw_breakpoint_without_location (b.get (), gdbarch, bptype, ops);
7292 return add_to_breakpoint_chain (std::move (b));
7293 }
7294
7295 /* Initialize loc->function_name. EXPLICIT_LOC says no indirect function
7296 resolutions should be made as the user specified the location explicitly
7297 enough. */
7298
7299 static void
7300 set_breakpoint_location_function (struct bp_location *loc, int explicit_loc)
7301 {
7302 gdb_assert (loc->owner != NULL);
7303
7304 if (loc->owner->type == bp_breakpoint
7305 || loc->owner->type == bp_hardware_breakpoint
7306 || is_tracepoint (loc->owner))
7307 {
7308 int is_gnu_ifunc;
7309 const char *function_name;
7310 CORE_ADDR func_addr;
7311
7312 find_pc_partial_function_gnu_ifunc (loc->address, &function_name,
7313 &func_addr, NULL, &is_gnu_ifunc);
7314
7315 if (is_gnu_ifunc && !explicit_loc)
7316 {
7317 struct breakpoint *b = loc->owner;
7318
7319 gdb_assert (loc->pspace == current_program_space);
7320 if (gnu_ifunc_resolve_name (function_name,
7321 &loc->requested_address))
7322 {
7323 /* Recalculate ADDRESS based on new REQUESTED_ADDRESS. */
7324 loc->address = adjust_breakpoint_address (loc->gdbarch,
7325 loc->requested_address,
7326 b->type);
7327 }
7328 else if (b->type == bp_breakpoint && b->loc == loc
7329 && loc->next == NULL && b->related_breakpoint == b)
7330 {
7331 /* Create only the whole new breakpoint of this type but do not
7332 mess more complicated breakpoints with multiple locations. */
7333 b->type = bp_gnu_ifunc_resolver;
7334 /* Remember the resolver's address for use by the return
7335 breakpoint. */
7336 loc->related_address = func_addr;
7337 }
7338 }
7339
7340 if (function_name)
7341 loc->function_name = xstrdup (function_name);
7342 }
7343 }
7344
7345 /* Attempt to determine architecture of location identified by SAL. */
7346 struct gdbarch *
7347 get_sal_arch (struct symtab_and_line sal)
7348 {
7349 if (sal.section)
7350 return get_objfile_arch (sal.section->objfile);
7351 if (sal.symtab)
7352 return get_objfile_arch (SYMTAB_OBJFILE (sal.symtab));
7353
7354 return NULL;
7355 }
7356
7357 /* Low level routine for partially initializing a breakpoint of type
7358 BPTYPE. The newly created breakpoint's address, section, source
7359 file name, and line number are provided by SAL.
7360
7361 It is expected that the caller will complete the initialization of
7362 the newly created breakpoint struct as well as output any status
7363 information regarding the creation of a new breakpoint. */
7364
7365 static void
7366 init_raw_breakpoint (struct breakpoint *b, struct gdbarch *gdbarch,
7367 struct symtab_and_line sal, enum bptype bptype,
7368 const struct breakpoint_ops *ops)
7369 {
7370 init_raw_breakpoint_without_location (b, gdbarch, bptype, ops);
7371
7372 add_location_to_breakpoint (b, &sal);
7373
7374 if (bptype != bp_catchpoint)
7375 gdb_assert (sal.pspace != NULL);
7376
7377 /* Store the program space that was used to set the breakpoint,
7378 except for ordinary breakpoints, which are independent of the
7379 program space. */
7380 if (bptype != bp_breakpoint && bptype != bp_hardware_breakpoint)
7381 b->pspace = sal.pspace;
7382 }
7383
7384 /* set_raw_breakpoint is a low level routine for allocating and
7385 partially initializing a breakpoint of type BPTYPE. The newly
7386 created breakpoint's address, section, source file name, and line
7387 number are provided by SAL. The newly created and partially
7388 initialized breakpoint is added to the breakpoint chain and
7389 is also returned as the value of this function.
7390
7391 It is expected that the caller will complete the initialization of
7392 the newly created breakpoint struct as well as output any status
7393 information regarding the creation of a new breakpoint. In
7394 particular, set_raw_breakpoint does NOT set the breakpoint
7395 number! Care should be taken to not allow an error to occur
7396 prior to completing the initialization of the breakpoint. If this
7397 should happen, a bogus breakpoint will be left on the chain. */
7398
7399 struct breakpoint *
7400 set_raw_breakpoint (struct gdbarch *gdbarch,
7401 struct symtab_and_line sal, enum bptype bptype,
7402 const struct breakpoint_ops *ops)
7403 {
7404 std::unique_ptr<breakpoint> b = new_breakpoint_from_type (bptype);
7405
7406 init_raw_breakpoint (b.get (), gdbarch, sal, bptype, ops);
7407 return add_to_breakpoint_chain (std::move (b));
7408 }
7409
7410 /* Call this routine when stepping and nexting to enable a breakpoint
7411 if we do a longjmp() or 'throw' in TP. FRAME is the frame which
7412 initiated the operation. */
7413
7414 void
7415 set_longjmp_breakpoint (struct thread_info *tp, struct frame_id frame)
7416 {
7417 struct breakpoint *b, *b_tmp;
7418 int thread = tp->global_num;
7419
7420 /* To avoid having to rescan all objfile symbols at every step,
7421 we maintain a list of continually-inserted but always disabled
7422 longjmp "master" breakpoints. Here, we simply create momentary
7423 clones of those and enable them for the requested thread. */
7424 ALL_BREAKPOINTS_SAFE (b, b_tmp)
7425 if (b->pspace == current_program_space
7426 && (b->type == bp_longjmp_master
7427 || b->type == bp_exception_master))
7428 {
7429 enum bptype type = b->type == bp_longjmp_master ? bp_longjmp : bp_exception;
7430 struct breakpoint *clone;
7431
7432 /* longjmp_breakpoint_ops ensures INITIATING_FRAME is cleared again
7433 after their removal. */
7434 clone = momentary_breakpoint_from_master (b, type,
7435 &momentary_breakpoint_ops, 1);
7436 clone->thread = thread;
7437 }
7438
7439 tp->initiating_frame = frame;
7440 }
7441
7442 /* Delete all longjmp breakpoints from THREAD. */
7443 void
7444 delete_longjmp_breakpoint (int thread)
7445 {
7446 struct breakpoint *b, *b_tmp;
7447
7448 ALL_BREAKPOINTS_SAFE (b, b_tmp)
7449 if (b->type == bp_longjmp || b->type == bp_exception)
7450 {
7451 if (b->thread == thread)
7452 delete_breakpoint (b);
7453 }
7454 }
7455
7456 void
7457 delete_longjmp_breakpoint_at_next_stop (int thread)
7458 {
7459 struct breakpoint *b, *b_tmp;
7460
7461 ALL_BREAKPOINTS_SAFE (b, b_tmp)
7462 if (b->type == bp_longjmp || b->type == bp_exception)
7463 {
7464 if (b->thread == thread)
7465 b->disposition = disp_del_at_next_stop;
7466 }
7467 }
7468
7469 /* Place breakpoints of type bp_longjmp_call_dummy to catch longjmp for
7470 INFERIOR_PTID thread. Chain them all by RELATED_BREAKPOINT and return
7471 pointer to any of them. Return NULL if this system cannot place longjmp
7472 breakpoints. */
7473
7474 struct breakpoint *
7475 set_longjmp_breakpoint_for_call_dummy (void)
7476 {
7477 struct breakpoint *b, *retval = NULL;
7478
7479 ALL_BREAKPOINTS (b)
7480 if (b->pspace == current_program_space && b->type == bp_longjmp_master)
7481 {
7482 struct breakpoint *new_b;
7483
7484 new_b = momentary_breakpoint_from_master (b, bp_longjmp_call_dummy,
7485 &momentary_breakpoint_ops,
7486 1);
7487 new_b->thread = ptid_to_global_thread_id (inferior_ptid);
7488
7489 /* Link NEW_B into the chain of RETVAL breakpoints. */
7490
7491 gdb_assert (new_b->related_breakpoint == new_b);
7492 if (retval == NULL)
7493 retval = new_b;
7494 new_b->related_breakpoint = retval;
7495 while (retval->related_breakpoint != new_b->related_breakpoint)
7496 retval = retval->related_breakpoint;
7497 retval->related_breakpoint = new_b;
7498 }
7499
7500 return retval;
7501 }
7502
7503 /* Verify all existing dummy frames and their associated breakpoints for
7504 TP. Remove those which can no longer be found in the current frame
7505 stack.
7506
7507 You should call this function only at places where it is safe to currently
7508 unwind the whole stack. Failed stack unwind would discard live dummy
7509 frames. */
7510
7511 void
7512 check_longjmp_breakpoint_for_call_dummy (struct thread_info *tp)
7513 {
7514 struct breakpoint *b, *b_tmp;
7515
7516 ALL_BREAKPOINTS_SAFE (b, b_tmp)
7517 if (b->type == bp_longjmp_call_dummy && b->thread == tp->global_num)
7518 {
7519 struct breakpoint *dummy_b = b->related_breakpoint;
7520
7521 while (dummy_b != b && dummy_b->type != bp_call_dummy)
7522 dummy_b = dummy_b->related_breakpoint;
7523 if (dummy_b->type != bp_call_dummy
7524 || frame_find_by_id (dummy_b->frame_id) != NULL)
7525 continue;
7526
7527 dummy_frame_discard (dummy_b->frame_id, tp->ptid);
7528
7529 while (b->related_breakpoint != b)
7530 {
7531 if (b_tmp == b->related_breakpoint)
7532 b_tmp = b->related_breakpoint->next;
7533 delete_breakpoint (b->related_breakpoint);
7534 }
7535 delete_breakpoint (b);
7536 }
7537 }
7538
7539 void
7540 enable_overlay_breakpoints (void)
7541 {
7542 struct breakpoint *b;
7543
7544 ALL_BREAKPOINTS (b)
7545 if (b->type == bp_overlay_event)
7546 {
7547 b->enable_state = bp_enabled;
7548 update_global_location_list (UGLL_MAY_INSERT);
7549 overlay_events_enabled = 1;
7550 }
7551 }
7552
7553 void
7554 disable_overlay_breakpoints (void)
7555 {
7556 struct breakpoint *b;
7557
7558 ALL_BREAKPOINTS (b)
7559 if (b->type == bp_overlay_event)
7560 {
7561 b->enable_state = bp_disabled;
7562 update_global_location_list (UGLL_DONT_INSERT);
7563 overlay_events_enabled = 0;
7564 }
7565 }
7566
7567 /* Set an active std::terminate breakpoint for each std::terminate
7568 master breakpoint. */
7569 void
7570 set_std_terminate_breakpoint (void)
7571 {
7572 struct breakpoint *b, *b_tmp;
7573
7574 ALL_BREAKPOINTS_SAFE (b, b_tmp)
7575 if (b->pspace == current_program_space
7576 && b->type == bp_std_terminate_master)
7577 {
7578 momentary_breakpoint_from_master (b, bp_std_terminate,
7579 &momentary_breakpoint_ops, 1);
7580 }
7581 }
7582
7583 /* Delete all the std::terminate breakpoints. */
7584 void
7585 delete_std_terminate_breakpoint (void)
7586 {
7587 struct breakpoint *b, *b_tmp;
7588
7589 ALL_BREAKPOINTS_SAFE (b, b_tmp)
7590 if (b->type == bp_std_terminate)
7591 delete_breakpoint (b);
7592 }
7593
7594 struct breakpoint *
7595 create_thread_event_breakpoint (struct gdbarch *gdbarch, CORE_ADDR address)
7596 {
7597 struct breakpoint *b;
7598
7599 b = create_internal_breakpoint (gdbarch, address, bp_thread_event,
7600 &internal_breakpoint_ops);
7601
7602 b->enable_state = bp_enabled;
7603 /* location has to be used or breakpoint_re_set will delete me. */
7604 b->location = new_address_location (b->loc->address, NULL, 0);
7605
7606 update_global_location_list_nothrow (UGLL_MAY_INSERT);
7607
7608 return b;
7609 }
7610
7611 struct lang_and_radix
7612 {
7613 enum language lang;
7614 int radix;
7615 };
7616
7617 /* Create a breakpoint for JIT code registration and unregistration. */
7618
7619 struct breakpoint *
7620 create_jit_event_breakpoint (struct gdbarch *gdbarch, CORE_ADDR address)
7621 {
7622 return create_internal_breakpoint (gdbarch, address, bp_jit_event,
7623 &internal_breakpoint_ops);
7624 }
7625
7626 /* Remove JIT code registration and unregistration breakpoint(s). */
7627
7628 void
7629 remove_jit_event_breakpoints (void)
7630 {
7631 struct breakpoint *b, *b_tmp;
7632
7633 ALL_BREAKPOINTS_SAFE (b, b_tmp)
7634 if (b->type == bp_jit_event
7635 && b->loc->pspace == current_program_space)
7636 delete_breakpoint (b);
7637 }
7638
7639 void
7640 remove_solib_event_breakpoints (void)
7641 {
7642 struct breakpoint *b, *b_tmp;
7643
7644 ALL_BREAKPOINTS_SAFE (b, b_tmp)
7645 if (b->type == bp_shlib_event
7646 && b->loc->pspace == current_program_space)
7647 delete_breakpoint (b);
7648 }
7649
7650 /* See breakpoint.h. */
7651
7652 void
7653 remove_solib_event_breakpoints_at_next_stop (void)
7654 {
7655 struct breakpoint *b, *b_tmp;
7656
7657 ALL_BREAKPOINTS_SAFE (b, b_tmp)
7658 if (b->type == bp_shlib_event
7659 && b->loc->pspace == current_program_space)
7660 b->disposition = disp_del_at_next_stop;
7661 }
7662
7663 /* Helper for create_solib_event_breakpoint /
7664 create_and_insert_solib_event_breakpoint. Allows specifying which
7665 INSERT_MODE to pass through to update_global_location_list. */
7666
7667 static struct breakpoint *
7668 create_solib_event_breakpoint_1 (struct gdbarch *gdbarch, CORE_ADDR address,
7669 enum ugll_insert_mode insert_mode)
7670 {
7671 struct breakpoint *b;
7672
7673 b = create_internal_breakpoint (gdbarch, address, bp_shlib_event,
7674 &internal_breakpoint_ops);
7675 update_global_location_list_nothrow (insert_mode);
7676 return b;
7677 }
7678
7679 struct breakpoint *
7680 create_solib_event_breakpoint (struct gdbarch *gdbarch, CORE_ADDR address)
7681 {
7682 return create_solib_event_breakpoint_1 (gdbarch, address, UGLL_MAY_INSERT);
7683 }
7684
7685 /* See breakpoint.h. */
7686
7687 struct breakpoint *
7688 create_and_insert_solib_event_breakpoint (struct gdbarch *gdbarch, CORE_ADDR address)
7689 {
7690 struct breakpoint *b;
7691
7692 /* Explicitly tell update_global_location_list to insert
7693 locations. */
7694 b = create_solib_event_breakpoint_1 (gdbarch, address, UGLL_INSERT);
7695 if (!b->loc->inserted)
7696 {
7697 delete_breakpoint (b);
7698 return NULL;
7699 }
7700 return b;
7701 }
7702
7703 /* Disable any breakpoints that are on code in shared libraries. Only
7704 apply to enabled breakpoints, disabled ones can just stay disabled. */
7705
7706 void
7707 disable_breakpoints_in_shlibs (void)
7708 {
7709 struct bp_location *loc, **locp_tmp;
7710
7711 ALL_BP_LOCATIONS (loc, locp_tmp)
7712 {
7713 /* ALL_BP_LOCATIONS bp_location has LOC->OWNER always non-NULL. */
7714 struct breakpoint *b = loc->owner;
7715
7716 /* We apply the check to all breakpoints, including disabled for
7717 those with loc->duplicate set. This is so that when breakpoint
7718 becomes enabled, or the duplicate is removed, gdb will try to
7719 insert all breakpoints. If we don't set shlib_disabled here,
7720 we'll try to insert those breakpoints and fail. */
7721 if (((b->type == bp_breakpoint)
7722 || (b->type == bp_jit_event)
7723 || (b->type == bp_hardware_breakpoint)
7724 || (is_tracepoint (b)))
7725 && loc->pspace == current_program_space
7726 && !loc->shlib_disabled
7727 && solib_name_from_address (loc->pspace, loc->address)
7728 )
7729 {
7730 loc->shlib_disabled = 1;
7731 }
7732 }
7733 }
7734
7735 /* Disable any breakpoints and tracepoints that are in SOLIB upon
7736 notification of unloaded_shlib. Only apply to enabled breakpoints,
7737 disabled ones can just stay disabled. */
7738
7739 static void
7740 disable_breakpoints_in_unloaded_shlib (struct so_list *solib)
7741 {
7742 struct bp_location *loc, **locp_tmp;
7743 int disabled_shlib_breaks = 0;
7744
7745 ALL_BP_LOCATIONS (loc, locp_tmp)
7746 {
7747 /* ALL_BP_LOCATIONS bp_location has LOC->OWNER always non-NULL. */
7748 struct breakpoint *b = loc->owner;
7749
7750 if (solib->pspace == loc->pspace
7751 && !loc->shlib_disabled
7752 && (((b->type == bp_breakpoint
7753 || b->type == bp_jit_event
7754 || b->type == bp_hardware_breakpoint)
7755 && (loc->loc_type == bp_loc_hardware_breakpoint
7756 || loc->loc_type == bp_loc_software_breakpoint))
7757 || is_tracepoint (b))
7758 && solib_contains_address_p (solib, loc->address))
7759 {
7760 loc->shlib_disabled = 1;
7761 /* At this point, we cannot rely on remove_breakpoint
7762 succeeding so we must mark the breakpoint as not inserted
7763 to prevent future errors occurring in remove_breakpoints. */
7764 loc->inserted = 0;
7765
7766 /* This may cause duplicate notifications for the same breakpoint. */
7767 observer_notify_breakpoint_modified (b);
7768
7769 if (!disabled_shlib_breaks)
7770 {
7771 target_terminal::ours_for_output ();
7772 warning (_("Temporarily disabling breakpoints "
7773 "for unloaded shared library \"%s\""),
7774 solib->so_name);
7775 }
7776 disabled_shlib_breaks = 1;
7777 }
7778 }
7779 }
7780
7781 /* Disable any breakpoints and tracepoints in OBJFILE upon
7782 notification of free_objfile. Only apply to enabled breakpoints,
7783 disabled ones can just stay disabled. */
7784
7785 static void
7786 disable_breakpoints_in_freed_objfile (struct objfile *objfile)
7787 {
7788 struct breakpoint *b;
7789
7790 if (objfile == NULL)
7791 return;
7792
7793 /* OBJF_SHARED|OBJF_USERLOADED objfiles are dynamic modules manually
7794 managed by the user with add-symbol-file/remove-symbol-file.
7795 Similarly to how breakpoints in shared libraries are handled in
7796 response to "nosharedlibrary", mark breakpoints in such modules
7797 shlib_disabled so they end up uninserted on the next global
7798 location list update. Shared libraries not loaded by the user
7799 aren't handled here -- they're already handled in
7800 disable_breakpoints_in_unloaded_shlib, called by solib.c's
7801 solib_unloaded observer. We skip objfiles that are not
7802 OBJF_SHARED as those aren't considered dynamic objects (e.g. the
7803 main objfile). */
7804 if ((objfile->flags & OBJF_SHARED) == 0
7805 || (objfile->flags & OBJF_USERLOADED) == 0)
7806 return;
7807
7808 ALL_BREAKPOINTS (b)
7809 {
7810 struct bp_location *loc;
7811 int bp_modified = 0;
7812
7813 if (!is_breakpoint (b) && !is_tracepoint (b))
7814 continue;
7815
7816 for (loc = b->loc; loc != NULL; loc = loc->next)
7817 {
7818 CORE_ADDR loc_addr = loc->address;
7819
7820 if (loc->loc_type != bp_loc_hardware_breakpoint
7821 && loc->loc_type != bp_loc_software_breakpoint)
7822 continue;
7823
7824 if (loc->shlib_disabled != 0)
7825 continue;
7826
7827 if (objfile->pspace != loc->pspace)
7828 continue;
7829
7830 if (loc->loc_type != bp_loc_hardware_breakpoint
7831 && loc->loc_type != bp_loc_software_breakpoint)
7832 continue;
7833
7834 if (is_addr_in_objfile (loc_addr, objfile))
7835 {
7836 loc->shlib_disabled = 1;
7837 /* At this point, we don't know whether the object was
7838 unmapped from the inferior or not, so leave the
7839 inserted flag alone. We'll handle failure to
7840 uninsert quietly, in case the object was indeed
7841 unmapped. */
7842
7843 mark_breakpoint_location_modified (loc);
7844
7845 bp_modified = 1;
7846 }
7847 }
7848
7849 if (bp_modified)
7850 observer_notify_breakpoint_modified (b);
7851 }
7852 }
7853
7854 /* FORK & VFORK catchpoints. */
7855
7856 /* An instance of this type is used to represent a fork or vfork
7857 catchpoint. A breakpoint is really of this type iff its ops pointer points
7858 to CATCH_FORK_BREAKPOINT_OPS. */
7859
7860 struct fork_catchpoint : public breakpoint
7861 {
7862 /* Process id of a child process whose forking triggered this
7863 catchpoint. This field is only valid immediately after this
7864 catchpoint has triggered. */
7865 ptid_t forked_inferior_pid;
7866 };
7867
7868 /* Implement the "insert" breakpoint_ops method for fork
7869 catchpoints. */
7870
7871 static int
7872 insert_catch_fork (struct bp_location *bl)
7873 {
7874 return target_insert_fork_catchpoint (ptid_get_pid (inferior_ptid));
7875 }
7876
7877 /* Implement the "remove" breakpoint_ops method for fork
7878 catchpoints. */
7879
7880 static int
7881 remove_catch_fork (struct bp_location *bl, enum remove_bp_reason reason)
7882 {
7883 return target_remove_fork_catchpoint (ptid_get_pid (inferior_ptid));
7884 }
7885
7886 /* Implement the "breakpoint_hit" breakpoint_ops method for fork
7887 catchpoints. */
7888
7889 static int
7890 breakpoint_hit_catch_fork (const struct bp_location *bl,
7891 struct address_space *aspace, CORE_ADDR bp_addr,
7892 const struct target_waitstatus *ws)
7893 {
7894 struct fork_catchpoint *c = (struct fork_catchpoint *) bl->owner;
7895
7896 if (ws->kind != TARGET_WAITKIND_FORKED)
7897 return 0;
7898
7899 c->forked_inferior_pid = ws->value.related_pid;
7900 return 1;
7901 }
7902
7903 /* Implement the "print_it" breakpoint_ops method for fork
7904 catchpoints. */
7905
7906 static enum print_stop_action
7907 print_it_catch_fork (bpstat bs)
7908 {
7909 struct ui_out *uiout = current_uiout;
7910 struct breakpoint *b = bs->breakpoint_at;
7911 struct fork_catchpoint *c = (struct fork_catchpoint *) bs->breakpoint_at;
7912
7913 annotate_catchpoint (b->number);
7914 maybe_print_thread_hit_breakpoint (uiout);
7915 if (b->disposition == disp_del)
7916 uiout->text ("Temporary catchpoint ");
7917 else
7918 uiout->text ("Catchpoint ");
7919 if (uiout->is_mi_like_p ())
7920 {
7921 uiout->field_string ("reason", async_reason_lookup (EXEC_ASYNC_FORK));
7922 uiout->field_string ("disp", bpdisp_text (b->disposition));
7923 }
7924 uiout->field_int ("bkptno", b->number);
7925 uiout->text (" (forked process ");
7926 uiout->field_int ("newpid", ptid_get_pid (c->forked_inferior_pid));
7927 uiout->text ("), ");
7928 return PRINT_SRC_AND_LOC;
7929 }
7930
7931 /* Implement the "print_one" breakpoint_ops method for fork
7932 catchpoints. */
7933
7934 static void
7935 print_one_catch_fork (struct breakpoint *b, struct bp_location **last_loc)
7936 {
7937 struct fork_catchpoint *c = (struct fork_catchpoint *) b;
7938 struct value_print_options opts;
7939 struct ui_out *uiout = current_uiout;
7940
7941 get_user_print_options (&opts);
7942
7943 /* Field 4, the address, is omitted (which makes the columns not
7944 line up too nicely with the headers, but the effect is relatively
7945 readable). */
7946 if (opts.addressprint)
7947 uiout->field_skip ("addr");
7948 annotate_field (5);
7949 uiout->text ("fork");
7950 if (!ptid_equal (c->forked_inferior_pid, null_ptid))
7951 {
7952 uiout->text (", process ");
7953 uiout->field_int ("what", ptid_get_pid (c->forked_inferior_pid));
7954 uiout->spaces (1);
7955 }
7956
7957 if (uiout->is_mi_like_p ())
7958 uiout->field_string ("catch-type", "fork");
7959 }
7960
7961 /* Implement the "print_mention" breakpoint_ops method for fork
7962 catchpoints. */
7963
7964 static void
7965 print_mention_catch_fork (struct breakpoint *b)
7966 {
7967 printf_filtered (_("Catchpoint %d (fork)"), b->number);
7968 }
7969
7970 /* Implement the "print_recreate" breakpoint_ops method for fork
7971 catchpoints. */
7972
7973 static void
7974 print_recreate_catch_fork (struct breakpoint *b, struct ui_file *fp)
7975 {
7976 fprintf_unfiltered (fp, "catch fork");
7977 print_recreate_thread (b, fp);
7978 }
7979
7980 /* The breakpoint_ops structure to be used in fork catchpoints. */
7981
7982 static struct breakpoint_ops catch_fork_breakpoint_ops;
7983
7984 /* Implement the "insert" breakpoint_ops method for vfork
7985 catchpoints. */
7986
7987 static int
7988 insert_catch_vfork (struct bp_location *bl)
7989 {
7990 return target_insert_vfork_catchpoint (ptid_get_pid (inferior_ptid));
7991 }
7992
7993 /* Implement the "remove" breakpoint_ops method for vfork
7994 catchpoints. */
7995
7996 static int
7997 remove_catch_vfork (struct bp_location *bl, enum remove_bp_reason reason)
7998 {
7999 return target_remove_vfork_catchpoint (ptid_get_pid (inferior_ptid));
8000 }
8001
8002 /* Implement the "breakpoint_hit" breakpoint_ops method for vfork
8003 catchpoints. */
8004
8005 static int
8006 breakpoint_hit_catch_vfork (const struct bp_location *bl,
8007 struct address_space *aspace, CORE_ADDR bp_addr,
8008 const struct target_waitstatus *ws)
8009 {
8010 struct fork_catchpoint *c = (struct fork_catchpoint *) bl->owner;
8011
8012 if (ws->kind != TARGET_WAITKIND_VFORKED)
8013 return 0;
8014
8015 c->forked_inferior_pid = ws->value.related_pid;
8016 return 1;
8017 }
8018
8019 /* Implement the "print_it" breakpoint_ops method for vfork
8020 catchpoints. */
8021
8022 static enum print_stop_action
8023 print_it_catch_vfork (bpstat bs)
8024 {
8025 struct ui_out *uiout = current_uiout;
8026 struct breakpoint *b = bs->breakpoint_at;
8027 struct fork_catchpoint *c = (struct fork_catchpoint *) b;
8028
8029 annotate_catchpoint (b->number);
8030 maybe_print_thread_hit_breakpoint (uiout);
8031 if (b->disposition == disp_del)
8032 uiout->text ("Temporary catchpoint ");
8033 else
8034 uiout->text ("Catchpoint ");
8035 if (uiout->is_mi_like_p ())
8036 {
8037 uiout->field_string ("reason", async_reason_lookup (EXEC_ASYNC_VFORK));
8038 uiout->field_string ("disp", bpdisp_text (b->disposition));
8039 }
8040 uiout->field_int ("bkptno", b->number);
8041 uiout->text (" (vforked process ");
8042 uiout->field_int ("newpid", ptid_get_pid (c->forked_inferior_pid));
8043 uiout->text ("), ");
8044 return PRINT_SRC_AND_LOC;
8045 }
8046
8047 /* Implement the "print_one" breakpoint_ops method for vfork
8048 catchpoints. */
8049
8050 static void
8051 print_one_catch_vfork (struct breakpoint *b, struct bp_location **last_loc)
8052 {
8053 struct fork_catchpoint *c = (struct fork_catchpoint *) b;
8054 struct value_print_options opts;
8055 struct ui_out *uiout = current_uiout;
8056
8057 get_user_print_options (&opts);
8058 /* Field 4, the address, is omitted (which makes the columns not
8059 line up too nicely with the headers, but the effect is relatively
8060 readable). */
8061 if (opts.addressprint)
8062 uiout->field_skip ("addr");
8063 annotate_field (5);
8064 uiout->text ("vfork");
8065 if (!ptid_equal (c->forked_inferior_pid, null_ptid))
8066 {
8067 uiout->text (", process ");
8068 uiout->field_int ("what", ptid_get_pid (c->forked_inferior_pid));
8069 uiout->spaces (1);
8070 }
8071
8072 if (uiout->is_mi_like_p ())
8073 uiout->field_string ("catch-type", "vfork");
8074 }
8075
8076 /* Implement the "print_mention" breakpoint_ops method for vfork
8077 catchpoints. */
8078
8079 static void
8080 print_mention_catch_vfork (struct breakpoint *b)
8081 {
8082 printf_filtered (_("Catchpoint %d (vfork)"), b->number);
8083 }
8084
8085 /* Implement the "print_recreate" breakpoint_ops method for vfork
8086 catchpoints. */
8087
8088 static void
8089 print_recreate_catch_vfork (struct breakpoint *b, struct ui_file *fp)
8090 {
8091 fprintf_unfiltered (fp, "catch vfork");
8092 print_recreate_thread (b, fp);
8093 }
8094
8095 /* The breakpoint_ops structure to be used in vfork catchpoints. */
8096
8097 static struct breakpoint_ops catch_vfork_breakpoint_ops;
8098
8099 /* An instance of this type is used to represent an solib catchpoint.
8100 A breakpoint is really of this type iff its ops pointer points to
8101 CATCH_SOLIB_BREAKPOINT_OPS. */
8102
8103 struct solib_catchpoint : public breakpoint
8104 {
8105 ~solib_catchpoint () override;
8106
8107 /* True for "catch load", false for "catch unload". */
8108 unsigned char is_load;
8109
8110 /* Regular expression to match, if any. COMPILED is only valid when
8111 REGEX is non-NULL. */
8112 char *regex;
8113 std::unique_ptr<compiled_regex> compiled;
8114 };
8115
8116 solib_catchpoint::~solib_catchpoint ()
8117 {
8118 xfree (this->regex);
8119 }
8120
8121 static int
8122 insert_catch_solib (struct bp_location *ignore)
8123 {
8124 return 0;
8125 }
8126
8127 static int
8128 remove_catch_solib (struct bp_location *ignore, enum remove_bp_reason reason)
8129 {
8130 return 0;
8131 }
8132
8133 static int
8134 breakpoint_hit_catch_solib (const struct bp_location *bl,
8135 struct address_space *aspace,
8136 CORE_ADDR bp_addr,
8137 const struct target_waitstatus *ws)
8138 {
8139 struct solib_catchpoint *self = (struct solib_catchpoint *) bl->owner;
8140 struct breakpoint *other;
8141
8142 if (ws->kind == TARGET_WAITKIND_LOADED)
8143 return 1;
8144
8145 ALL_BREAKPOINTS (other)
8146 {
8147 struct bp_location *other_bl;
8148
8149 if (other == bl->owner)
8150 continue;
8151
8152 if (other->type != bp_shlib_event)
8153 continue;
8154
8155 if (self->pspace != NULL && other->pspace != self->pspace)
8156 continue;
8157
8158 for (other_bl = other->loc; other_bl != NULL; other_bl = other_bl->next)
8159 {
8160 if (other->ops->breakpoint_hit (other_bl, aspace, bp_addr, ws))
8161 return 1;
8162 }
8163 }
8164
8165 return 0;
8166 }
8167
8168 static void
8169 check_status_catch_solib (struct bpstats *bs)
8170 {
8171 struct solib_catchpoint *self
8172 = (struct solib_catchpoint *) bs->breakpoint_at;
8173 int ix;
8174
8175 if (self->is_load)
8176 {
8177 struct so_list *iter;
8178
8179 for (ix = 0;
8180 VEC_iterate (so_list_ptr, current_program_space->added_solibs,
8181 ix, iter);
8182 ++ix)
8183 {
8184 if (!self->regex
8185 || self->compiled->exec (iter->so_name, 0, NULL, 0) == 0)
8186 return;
8187 }
8188 }
8189 else
8190 {
8191 char *iter;
8192
8193 for (ix = 0;
8194 VEC_iterate (char_ptr, current_program_space->deleted_solibs,
8195 ix, iter);
8196 ++ix)
8197 {
8198 if (!self->regex
8199 || self->compiled->exec (iter, 0, NULL, 0) == 0)
8200 return;
8201 }
8202 }
8203
8204 bs->stop = 0;
8205 bs->print_it = print_it_noop;
8206 }
8207
8208 static enum print_stop_action
8209 print_it_catch_solib (bpstat bs)
8210 {
8211 struct breakpoint *b = bs->breakpoint_at;
8212 struct ui_out *uiout = current_uiout;
8213
8214 annotate_catchpoint (b->number);
8215 maybe_print_thread_hit_breakpoint (uiout);
8216 if (b->disposition == disp_del)
8217 uiout->text ("Temporary catchpoint ");
8218 else
8219 uiout->text ("Catchpoint ");
8220 uiout->field_int ("bkptno", b->number);
8221 uiout->text ("\n");
8222 if (uiout->is_mi_like_p ())
8223 uiout->field_string ("disp", bpdisp_text (b->disposition));
8224 print_solib_event (1);
8225 return PRINT_SRC_AND_LOC;
8226 }
8227
8228 static void
8229 print_one_catch_solib (struct breakpoint *b, struct bp_location **locs)
8230 {
8231 struct solib_catchpoint *self = (struct solib_catchpoint *) b;
8232 struct value_print_options opts;
8233 struct ui_out *uiout = current_uiout;
8234 char *msg;
8235
8236 get_user_print_options (&opts);
8237 /* Field 4, the address, is omitted (which makes the columns not
8238 line up too nicely with the headers, but the effect is relatively
8239 readable). */
8240 if (opts.addressprint)
8241 {
8242 annotate_field (4);
8243 uiout->field_skip ("addr");
8244 }
8245
8246 annotate_field (5);
8247 if (self->is_load)
8248 {
8249 if (self->regex)
8250 msg = xstrprintf (_("load of library matching %s"), self->regex);
8251 else
8252 msg = xstrdup (_("load of library"));
8253 }
8254 else
8255 {
8256 if (self->regex)
8257 msg = xstrprintf (_("unload of library matching %s"), self->regex);
8258 else
8259 msg = xstrdup (_("unload of library"));
8260 }
8261 uiout->field_string ("what", msg);
8262 xfree (msg);
8263
8264 if (uiout->is_mi_like_p ())
8265 uiout->field_string ("catch-type", self->is_load ? "load" : "unload");
8266 }
8267
8268 static void
8269 print_mention_catch_solib (struct breakpoint *b)
8270 {
8271 struct solib_catchpoint *self = (struct solib_catchpoint *) b;
8272
8273 printf_filtered (_("Catchpoint %d (%s)"), b->number,
8274 self->is_load ? "load" : "unload");
8275 }
8276
8277 static void
8278 print_recreate_catch_solib (struct breakpoint *b, struct ui_file *fp)
8279 {
8280 struct solib_catchpoint *self = (struct solib_catchpoint *) b;
8281
8282 fprintf_unfiltered (fp, "%s %s",
8283 b->disposition == disp_del ? "tcatch" : "catch",
8284 self->is_load ? "load" : "unload");
8285 if (self->regex)
8286 fprintf_unfiltered (fp, " %s", self->regex);
8287 fprintf_unfiltered (fp, "\n");
8288 }
8289
8290 static struct breakpoint_ops catch_solib_breakpoint_ops;
8291
8292 /* Shared helper function (MI and CLI) for creating and installing
8293 a shared object event catchpoint. If IS_LOAD is non-zero then
8294 the events to be caught are load events, otherwise they are
8295 unload events. If IS_TEMP is non-zero the catchpoint is a
8296 temporary one. If ENABLED is non-zero the catchpoint is
8297 created in an enabled state. */
8298
8299 void
8300 add_solib_catchpoint (const char *arg, int is_load, int is_temp, int enabled)
8301 {
8302 struct gdbarch *gdbarch = get_current_arch ();
8303
8304 if (!arg)
8305 arg = "";
8306 arg = skip_spaces (arg);
8307
8308 std::unique_ptr<solib_catchpoint> c (new solib_catchpoint ());
8309
8310 if (*arg != '\0')
8311 {
8312 c->compiled.reset (new compiled_regex (arg, REG_NOSUB,
8313 _("Invalid regexp")));
8314 c->regex = xstrdup (arg);
8315 }
8316
8317 c->is_load = is_load;
8318 init_catchpoint (c.get (), gdbarch, is_temp, NULL,
8319 &catch_solib_breakpoint_ops);
8320
8321 c->enable_state = enabled ? bp_enabled : bp_disabled;
8322
8323 install_breakpoint (0, std::move (c), 1);
8324 }
8325
8326 /* A helper function that does all the work for "catch load" and
8327 "catch unload". */
8328
8329 static void
8330 catch_load_or_unload (char *arg, int from_tty, int is_load,
8331 struct cmd_list_element *command)
8332 {
8333 int tempflag;
8334 const int enabled = 1;
8335
8336 tempflag = get_cmd_context (command) == CATCH_TEMPORARY;
8337
8338 add_solib_catchpoint (arg, is_load, tempflag, enabled);
8339 }
8340
8341 static void
8342 catch_load_command_1 (char *arg, int from_tty,
8343 struct cmd_list_element *command)
8344 {
8345 catch_load_or_unload (arg, from_tty, 1, command);
8346 }
8347
8348 static void
8349 catch_unload_command_1 (char *arg, int from_tty,
8350 struct cmd_list_element *command)
8351 {
8352 catch_load_or_unload (arg, from_tty, 0, command);
8353 }
8354
8355 /* Initialize a new breakpoint of the bp_catchpoint kind. If TEMPFLAG
8356 is non-zero, then make the breakpoint temporary. If COND_STRING is
8357 not NULL, then store it in the breakpoint. OPS, if not NULL, is
8358 the breakpoint_ops structure associated to the catchpoint. */
8359
8360 void
8361 init_catchpoint (struct breakpoint *b,
8362 struct gdbarch *gdbarch, int tempflag,
8363 const char *cond_string,
8364 const struct breakpoint_ops *ops)
8365 {
8366 symtab_and_line sal;
8367 sal.pspace = current_program_space;
8368
8369 init_raw_breakpoint (b, gdbarch, sal, bp_catchpoint, ops);
8370
8371 b->cond_string = (cond_string == NULL) ? NULL : xstrdup (cond_string);
8372 b->disposition = tempflag ? disp_del : disp_donttouch;
8373 }
8374
8375 void
8376 install_breakpoint (int internal, std::unique_ptr<breakpoint> &&arg, int update_gll)
8377 {
8378 breakpoint *b = add_to_breakpoint_chain (std::move (arg));
8379 set_breakpoint_number (internal, b);
8380 if (is_tracepoint (b))
8381 set_tracepoint_count (breakpoint_count);
8382 if (!internal)
8383 mention (b);
8384 observer_notify_breakpoint_created (b);
8385
8386 if (update_gll)
8387 update_global_location_list (UGLL_MAY_INSERT);
8388 }
8389
8390 static void
8391 create_fork_vfork_event_catchpoint (struct gdbarch *gdbarch,
8392 int tempflag, const char *cond_string,
8393 const struct breakpoint_ops *ops)
8394 {
8395 std::unique_ptr<fork_catchpoint> c (new fork_catchpoint ());
8396
8397 init_catchpoint (c.get (), gdbarch, tempflag, cond_string, ops);
8398
8399 c->forked_inferior_pid = null_ptid;
8400
8401 install_breakpoint (0, std::move (c), 1);
8402 }
8403
8404 /* Exec catchpoints. */
8405
8406 /* An instance of this type is used to represent an exec catchpoint.
8407 A breakpoint is really of this type iff its ops pointer points to
8408 CATCH_EXEC_BREAKPOINT_OPS. */
8409
8410 struct exec_catchpoint : public breakpoint
8411 {
8412 ~exec_catchpoint () override;
8413
8414 /* Filename of a program whose exec triggered this catchpoint.
8415 This field is only valid immediately after this catchpoint has
8416 triggered. */
8417 char *exec_pathname;
8418 };
8419
8420 /* Exec catchpoint destructor. */
8421
8422 exec_catchpoint::~exec_catchpoint ()
8423 {
8424 xfree (this->exec_pathname);
8425 }
8426
8427 static int
8428 insert_catch_exec (struct bp_location *bl)
8429 {
8430 return target_insert_exec_catchpoint (ptid_get_pid (inferior_ptid));
8431 }
8432
8433 static int
8434 remove_catch_exec (struct bp_location *bl, enum remove_bp_reason reason)
8435 {
8436 return target_remove_exec_catchpoint (ptid_get_pid (inferior_ptid));
8437 }
8438
8439 static int
8440 breakpoint_hit_catch_exec (const struct bp_location *bl,
8441 struct address_space *aspace, CORE_ADDR bp_addr,
8442 const struct target_waitstatus *ws)
8443 {
8444 struct exec_catchpoint *c = (struct exec_catchpoint *) bl->owner;
8445
8446 if (ws->kind != TARGET_WAITKIND_EXECD)
8447 return 0;
8448
8449 c->exec_pathname = xstrdup (ws->value.execd_pathname);
8450 return 1;
8451 }
8452
8453 static enum print_stop_action
8454 print_it_catch_exec (bpstat bs)
8455 {
8456 struct ui_out *uiout = current_uiout;
8457 struct breakpoint *b = bs->breakpoint_at;
8458 struct exec_catchpoint *c = (struct exec_catchpoint *) b;
8459
8460 annotate_catchpoint (b->number);
8461 maybe_print_thread_hit_breakpoint (uiout);
8462 if (b->disposition == disp_del)
8463 uiout->text ("Temporary catchpoint ");
8464 else
8465 uiout->text ("Catchpoint ");
8466 if (uiout->is_mi_like_p ())
8467 {
8468 uiout->field_string ("reason", async_reason_lookup (EXEC_ASYNC_EXEC));
8469 uiout->field_string ("disp", bpdisp_text (b->disposition));
8470 }
8471 uiout->field_int ("bkptno", b->number);
8472 uiout->text (" (exec'd ");
8473 uiout->field_string ("new-exec", c->exec_pathname);
8474 uiout->text ("), ");
8475
8476 return PRINT_SRC_AND_LOC;
8477 }
8478
8479 static void
8480 print_one_catch_exec (struct breakpoint *b, struct bp_location **last_loc)
8481 {
8482 struct exec_catchpoint *c = (struct exec_catchpoint *) b;
8483 struct value_print_options opts;
8484 struct ui_out *uiout = current_uiout;
8485
8486 get_user_print_options (&opts);
8487
8488 /* Field 4, the address, is omitted (which makes the columns
8489 not line up too nicely with the headers, but the effect
8490 is relatively readable). */
8491 if (opts.addressprint)
8492 uiout->field_skip ("addr");
8493 annotate_field (5);
8494 uiout->text ("exec");
8495 if (c->exec_pathname != NULL)
8496 {
8497 uiout->text (", program \"");
8498 uiout->field_string ("what", c->exec_pathname);
8499 uiout->text ("\" ");
8500 }
8501
8502 if (uiout->is_mi_like_p ())
8503 uiout->field_string ("catch-type", "exec");
8504 }
8505
8506 static void
8507 print_mention_catch_exec (struct breakpoint *b)
8508 {
8509 printf_filtered (_("Catchpoint %d (exec)"), b->number);
8510 }
8511
8512 /* Implement the "print_recreate" breakpoint_ops method for exec
8513 catchpoints. */
8514
8515 static void
8516 print_recreate_catch_exec (struct breakpoint *b, struct ui_file *fp)
8517 {
8518 fprintf_unfiltered (fp, "catch exec");
8519 print_recreate_thread (b, fp);
8520 }
8521
8522 static struct breakpoint_ops catch_exec_breakpoint_ops;
8523
8524 static int
8525 hw_breakpoint_used_count (void)
8526 {
8527 int i = 0;
8528 struct breakpoint *b;
8529 struct bp_location *bl;
8530
8531 ALL_BREAKPOINTS (b)
8532 {
8533 if (b->type == bp_hardware_breakpoint && breakpoint_enabled (b))
8534 for (bl = b->loc; bl; bl = bl->next)
8535 {
8536 /* Special types of hardware breakpoints may use more than
8537 one register. */
8538 i += b->ops->resources_needed (bl);
8539 }
8540 }
8541
8542 return i;
8543 }
8544
8545 /* Returns the resources B would use if it were a hardware
8546 watchpoint. */
8547
8548 static int
8549 hw_watchpoint_use_count (struct breakpoint *b)
8550 {
8551 int i = 0;
8552 struct bp_location *bl;
8553
8554 if (!breakpoint_enabled (b))
8555 return 0;
8556
8557 for (bl = b->loc; bl; bl = bl->next)
8558 {
8559 /* Special types of hardware watchpoints may use more than
8560 one register. */
8561 i += b->ops->resources_needed (bl);
8562 }
8563
8564 return i;
8565 }
8566
8567 /* Returns the sum the used resources of all hardware watchpoints of
8568 type TYPE in the breakpoints list. Also returns in OTHER_TYPE_USED
8569 the sum of the used resources of all hardware watchpoints of other
8570 types _not_ TYPE. */
8571
8572 static int
8573 hw_watchpoint_used_count_others (struct breakpoint *except,
8574 enum bptype type, int *other_type_used)
8575 {
8576 int i = 0;
8577 struct breakpoint *b;
8578
8579 *other_type_used = 0;
8580 ALL_BREAKPOINTS (b)
8581 {
8582 if (b == except)
8583 continue;
8584 if (!breakpoint_enabled (b))
8585 continue;
8586
8587 if (b->type == type)
8588 i += hw_watchpoint_use_count (b);
8589 else if (is_hardware_watchpoint (b))
8590 *other_type_used = 1;
8591 }
8592
8593 return i;
8594 }
8595
8596 void
8597 disable_watchpoints_before_interactive_call_start (void)
8598 {
8599 struct breakpoint *b;
8600
8601 ALL_BREAKPOINTS (b)
8602 {
8603 if (is_watchpoint (b) && breakpoint_enabled (b))
8604 {
8605 b->enable_state = bp_call_disabled;
8606 update_global_location_list (UGLL_DONT_INSERT);
8607 }
8608 }
8609 }
8610
8611 void
8612 enable_watchpoints_after_interactive_call_stop (void)
8613 {
8614 struct breakpoint *b;
8615
8616 ALL_BREAKPOINTS (b)
8617 {
8618 if (is_watchpoint (b) && b->enable_state == bp_call_disabled)
8619 {
8620 b->enable_state = bp_enabled;
8621 update_global_location_list (UGLL_MAY_INSERT);
8622 }
8623 }
8624 }
8625
8626 void
8627 disable_breakpoints_before_startup (void)
8628 {
8629 current_program_space->executing_startup = 1;
8630 update_global_location_list (UGLL_DONT_INSERT);
8631 }
8632
8633 void
8634 enable_breakpoints_after_startup (void)
8635 {
8636 current_program_space->executing_startup = 0;
8637 breakpoint_re_set ();
8638 }
8639
8640 /* Create a new single-step breakpoint for thread THREAD, with no
8641 locations. */
8642
8643 static struct breakpoint *
8644 new_single_step_breakpoint (int thread, struct gdbarch *gdbarch)
8645 {
8646 std::unique_ptr<breakpoint> b (new breakpoint ());
8647
8648 init_raw_breakpoint_without_location (b.get (), gdbarch, bp_single_step,
8649 &momentary_breakpoint_ops);
8650
8651 b->disposition = disp_donttouch;
8652 b->frame_id = null_frame_id;
8653
8654 b->thread = thread;
8655 gdb_assert (b->thread != 0);
8656
8657 return add_to_breakpoint_chain (std::move (b));
8658 }
8659
8660 /* Set a momentary breakpoint of type TYPE at address specified by
8661 SAL. If FRAME_ID is valid, the breakpoint is restricted to that
8662 frame. */
8663
8664 struct breakpoint *
8665 set_momentary_breakpoint (struct gdbarch *gdbarch, struct symtab_and_line sal,
8666 struct frame_id frame_id, enum bptype type)
8667 {
8668 struct breakpoint *b;
8669
8670 /* If FRAME_ID is valid, it should be a real frame, not an inlined or
8671 tail-called one. */
8672 gdb_assert (!frame_id_artificial_p (frame_id));
8673
8674 b = set_raw_breakpoint (gdbarch, sal, type, &momentary_breakpoint_ops);
8675 b->enable_state = bp_enabled;
8676 b->disposition = disp_donttouch;
8677 b->frame_id = frame_id;
8678
8679 /* If we're debugging a multi-threaded program, then we want
8680 momentary breakpoints to be active in only a single thread of
8681 control. */
8682 if (in_thread_list (inferior_ptid))
8683 b->thread = ptid_to_global_thread_id (inferior_ptid);
8684
8685 update_global_location_list_nothrow (UGLL_MAY_INSERT);
8686
8687 return b;
8688 }
8689
8690 /* Make a momentary breakpoint based on the master breakpoint ORIG.
8691 The new breakpoint will have type TYPE, use OPS as its
8692 breakpoint_ops, and will set enabled to LOC_ENABLED. */
8693
8694 static struct breakpoint *
8695 momentary_breakpoint_from_master (struct breakpoint *orig,
8696 enum bptype type,
8697 const struct breakpoint_ops *ops,
8698 int loc_enabled)
8699 {
8700 struct breakpoint *copy;
8701
8702 copy = set_raw_breakpoint_without_location (orig->gdbarch, type, ops);
8703 copy->loc = allocate_bp_location (copy);
8704 set_breakpoint_location_function (copy->loc, 1);
8705
8706 copy->loc->gdbarch = orig->loc->gdbarch;
8707 copy->loc->requested_address = orig->loc->requested_address;
8708 copy->loc->address = orig->loc->address;
8709 copy->loc->section = orig->loc->section;
8710 copy->loc->pspace = orig->loc->pspace;
8711 copy->loc->probe = orig->loc->probe;
8712 copy->loc->line_number = orig->loc->line_number;
8713 copy->loc->symtab = orig->loc->symtab;
8714 copy->loc->enabled = loc_enabled;
8715 copy->frame_id = orig->frame_id;
8716 copy->thread = orig->thread;
8717 copy->pspace = orig->pspace;
8718
8719 copy->enable_state = bp_enabled;
8720 copy->disposition = disp_donttouch;
8721 copy->number = internal_breakpoint_number--;
8722
8723 update_global_location_list_nothrow (UGLL_DONT_INSERT);
8724 return copy;
8725 }
8726
8727 /* Make a deep copy of momentary breakpoint ORIG. Returns NULL if
8728 ORIG is NULL. */
8729
8730 struct breakpoint *
8731 clone_momentary_breakpoint (struct breakpoint *orig)
8732 {
8733 /* If there's nothing to clone, then return nothing. */
8734 if (orig == NULL)
8735 return NULL;
8736
8737 return momentary_breakpoint_from_master (orig, orig->type, orig->ops, 0);
8738 }
8739
8740 struct breakpoint *
8741 set_momentary_breakpoint_at_pc (struct gdbarch *gdbarch, CORE_ADDR pc,
8742 enum bptype type)
8743 {
8744 struct symtab_and_line sal;
8745
8746 sal = find_pc_line (pc, 0);
8747 sal.pc = pc;
8748 sal.section = find_pc_overlay (pc);
8749 sal.explicit_pc = 1;
8750
8751 return set_momentary_breakpoint (gdbarch, sal, null_frame_id, type);
8752 }
8753 \f
8754
8755 /* Tell the user we have just set a breakpoint B. */
8756
8757 static void
8758 mention (struct breakpoint *b)
8759 {
8760 b->ops->print_mention (b);
8761 if (current_uiout->is_mi_like_p ())
8762 return;
8763 printf_filtered ("\n");
8764 }
8765 \f
8766
8767 static int bp_loc_is_permanent (struct bp_location *loc);
8768
8769 static struct bp_location *
8770 add_location_to_breakpoint (struct breakpoint *b,
8771 const struct symtab_and_line *sal)
8772 {
8773 struct bp_location *loc, **tmp;
8774 CORE_ADDR adjusted_address;
8775 struct gdbarch *loc_gdbarch = get_sal_arch (*sal);
8776
8777 if (loc_gdbarch == NULL)
8778 loc_gdbarch = b->gdbarch;
8779
8780 /* Adjust the breakpoint's address prior to allocating a location.
8781 Once we call allocate_bp_location(), that mostly uninitialized
8782 location will be placed on the location chain. Adjustment of the
8783 breakpoint may cause target_read_memory() to be called and we do
8784 not want its scan of the location chain to find a breakpoint and
8785 location that's only been partially initialized. */
8786 adjusted_address = adjust_breakpoint_address (loc_gdbarch,
8787 sal->pc, b->type);
8788
8789 /* Sort the locations by their ADDRESS. */
8790 loc = allocate_bp_location (b);
8791 for (tmp = &(b->loc); *tmp != NULL && (*tmp)->address <= adjusted_address;
8792 tmp = &((*tmp)->next))
8793 ;
8794 loc->next = *tmp;
8795 *tmp = loc;
8796
8797 loc->requested_address = sal->pc;
8798 loc->address = adjusted_address;
8799 loc->pspace = sal->pspace;
8800 loc->probe.probe = sal->probe;
8801 loc->probe.objfile = sal->objfile;
8802 gdb_assert (loc->pspace != NULL);
8803 loc->section = sal->section;
8804 loc->gdbarch = loc_gdbarch;
8805 loc->line_number = sal->line;
8806 loc->symtab = sal->symtab;
8807
8808 set_breakpoint_location_function (loc,
8809 sal->explicit_pc || sal->explicit_line);
8810
8811 /* While by definition, permanent breakpoints are already present in the
8812 code, we don't mark the location as inserted. Normally one would expect
8813 that GDB could rely on that breakpoint instruction to stop the program,
8814 thus removing the need to insert its own breakpoint, except that executing
8815 the breakpoint instruction can kill the target instead of reporting a
8816 SIGTRAP. E.g., on SPARC, when interrupts are disabled, executing the
8817 instruction resets the CPU, so QEMU 2.0.0 for SPARC correspondingly dies
8818 with "Trap 0x02 while interrupts disabled, Error state". Letting the
8819 breakpoint be inserted normally results in QEMU knowing about the GDB
8820 breakpoint, and thus trap before the breakpoint instruction is executed.
8821 (If GDB later needs to continue execution past the permanent breakpoint,
8822 it manually increments the PC, thus avoiding executing the breakpoint
8823 instruction.) */
8824 if (bp_loc_is_permanent (loc))
8825 loc->permanent = 1;
8826
8827 return loc;
8828 }
8829 \f
8830
8831 /* See breakpoint.h. */
8832
8833 int
8834 program_breakpoint_here_p (struct gdbarch *gdbarch, CORE_ADDR address)
8835 {
8836 int len;
8837 CORE_ADDR addr;
8838 const gdb_byte *bpoint;
8839 gdb_byte *target_mem;
8840
8841 addr = address;
8842 bpoint = gdbarch_breakpoint_from_pc (gdbarch, &addr, &len);
8843
8844 /* Software breakpoints unsupported? */
8845 if (bpoint == NULL)
8846 return 0;
8847
8848 target_mem = (gdb_byte *) alloca (len);
8849
8850 /* Enable the automatic memory restoration from breakpoints while
8851 we read the memory. Otherwise we could say about our temporary
8852 breakpoints they are permanent. */
8853 scoped_restore restore_memory
8854 = make_scoped_restore_show_memory_breakpoints (0);
8855
8856 if (target_read_memory (address, target_mem, len) == 0
8857 && memcmp (target_mem, bpoint, len) == 0)
8858 return 1;
8859
8860 return 0;
8861 }
8862
8863 /* Return 1 if LOC is pointing to a permanent breakpoint,
8864 return 0 otherwise. */
8865
8866 static int
8867 bp_loc_is_permanent (struct bp_location *loc)
8868 {
8869 gdb_assert (loc != NULL);
8870
8871 /* If we have a catchpoint or a watchpoint, just return 0. We should not
8872 attempt to read from the addresses the locations of these breakpoint types
8873 point to. program_breakpoint_here_p, below, will attempt to read
8874 memory. */
8875 if (!breakpoint_address_is_meaningful (loc->owner))
8876 return 0;
8877
8878 scoped_restore_current_pspace_and_thread restore_pspace_thread;
8879 switch_to_program_space_and_thread (loc->pspace);
8880 return program_breakpoint_here_p (loc->gdbarch, loc->address);
8881 }
8882
8883 /* Build a command list for the dprintf corresponding to the current
8884 settings of the dprintf style options. */
8885
8886 static void
8887 update_dprintf_command_list (struct breakpoint *b)
8888 {
8889 char *dprintf_args = b->extra_string;
8890 char *printf_line = NULL;
8891
8892 if (!dprintf_args)
8893 return;
8894
8895 dprintf_args = skip_spaces (dprintf_args);
8896
8897 /* Allow a comma, as it may have terminated a location, but don't
8898 insist on it. */
8899 if (*dprintf_args == ',')
8900 ++dprintf_args;
8901 dprintf_args = skip_spaces (dprintf_args);
8902
8903 if (*dprintf_args != '"')
8904 error (_("Bad format string, missing '\"'."));
8905
8906 if (strcmp (dprintf_style, dprintf_style_gdb) == 0)
8907 printf_line = xstrprintf ("printf %s", dprintf_args);
8908 else if (strcmp (dprintf_style, dprintf_style_call) == 0)
8909 {
8910 if (!dprintf_function)
8911 error (_("No function supplied for dprintf call"));
8912
8913 if (dprintf_channel && strlen (dprintf_channel) > 0)
8914 printf_line = xstrprintf ("call (void) %s (%s,%s)",
8915 dprintf_function,
8916 dprintf_channel,
8917 dprintf_args);
8918 else
8919 printf_line = xstrprintf ("call (void) %s (%s)",
8920 dprintf_function,
8921 dprintf_args);
8922 }
8923 else if (strcmp (dprintf_style, dprintf_style_agent) == 0)
8924 {
8925 if (target_can_run_breakpoint_commands ())
8926 printf_line = xstrprintf ("agent-printf %s", dprintf_args);
8927 else
8928 {
8929 warning (_("Target cannot run dprintf commands, falling back to GDB printf"));
8930 printf_line = xstrprintf ("printf %s", dprintf_args);
8931 }
8932 }
8933 else
8934 internal_error (__FILE__, __LINE__,
8935 _("Invalid dprintf style."));
8936
8937 gdb_assert (printf_line != NULL);
8938 /* Manufacture a printf sequence. */
8939 {
8940 struct command_line *printf_cmd_line = XNEW (struct command_line);
8941
8942 printf_cmd_line->control_type = simple_control;
8943 printf_cmd_line->body_count = 0;
8944 printf_cmd_line->body_list = NULL;
8945 printf_cmd_line->next = NULL;
8946 printf_cmd_line->line = printf_line;
8947
8948 breakpoint_set_commands (b, command_line_up (printf_cmd_line));
8949 }
8950 }
8951
8952 /* Update all dprintf commands, making their command lists reflect
8953 current style settings. */
8954
8955 static void
8956 update_dprintf_commands (char *args, int from_tty,
8957 struct cmd_list_element *c)
8958 {
8959 struct breakpoint *b;
8960
8961 ALL_BREAKPOINTS (b)
8962 {
8963 if (b->type == bp_dprintf)
8964 update_dprintf_command_list (b);
8965 }
8966 }
8967
8968 /* Create a breakpoint with SAL as location. Use LOCATION
8969 as a description of the location, and COND_STRING
8970 as condition expression. If LOCATION is NULL then create an
8971 "address location" from the address in the SAL. */
8972
8973 static void
8974 init_breakpoint_sal (struct breakpoint *b, struct gdbarch *gdbarch,
8975 gdb::array_view<const symtab_and_line> sals,
8976 event_location_up &&location,
8977 gdb::unique_xmalloc_ptr<char> filter,
8978 gdb::unique_xmalloc_ptr<char> cond_string,
8979 gdb::unique_xmalloc_ptr<char> extra_string,
8980 enum bptype type, enum bpdisp disposition,
8981 int thread, int task, int ignore_count,
8982 const struct breakpoint_ops *ops, int from_tty,
8983 int enabled, int internal, unsigned flags,
8984 int display_canonical)
8985 {
8986 int i;
8987
8988 if (type == bp_hardware_breakpoint)
8989 {
8990 int target_resources_ok;
8991
8992 i = hw_breakpoint_used_count ();
8993 target_resources_ok =
8994 target_can_use_hardware_watchpoint (bp_hardware_breakpoint,
8995 i + 1, 0);
8996 if (target_resources_ok == 0)
8997 error (_("No hardware breakpoint support in the target."));
8998 else if (target_resources_ok < 0)
8999 error (_("Hardware breakpoints used exceeds limit."));
9000 }
9001
9002 gdb_assert (!sals.empty ());
9003
9004 for (const auto &sal : sals)
9005 {
9006 struct bp_location *loc;
9007
9008 if (from_tty)
9009 {
9010 struct gdbarch *loc_gdbarch = get_sal_arch (sal);
9011 if (!loc_gdbarch)
9012 loc_gdbarch = gdbarch;
9013
9014 describe_other_breakpoints (loc_gdbarch,
9015 sal.pspace, sal.pc, sal.section, thread);
9016 }
9017
9018 if (&sal == &sals[0])
9019 {
9020 init_raw_breakpoint (b, gdbarch, sal, type, ops);
9021 b->thread = thread;
9022 b->task = task;
9023
9024 b->cond_string = cond_string.release ();
9025 b->extra_string = extra_string.release ();
9026 b->ignore_count = ignore_count;
9027 b->enable_state = enabled ? bp_enabled : bp_disabled;
9028 b->disposition = disposition;
9029
9030 if ((flags & CREATE_BREAKPOINT_FLAGS_INSERTED) != 0)
9031 b->loc->inserted = 1;
9032
9033 if (type == bp_static_tracepoint)
9034 {
9035 struct tracepoint *t = (struct tracepoint *) b;
9036 struct static_tracepoint_marker marker;
9037
9038 if (strace_marker_p (b))
9039 {
9040 /* We already know the marker exists, otherwise, we
9041 wouldn't see a sal for it. */
9042 const char *p
9043 = &event_location_to_string (b->location.get ())[3];
9044 const char *endp;
9045 char *marker_str;
9046
9047 p = skip_spaces (p);
9048
9049 endp = skip_to_space (p);
9050
9051 marker_str = savestring (p, endp - p);
9052 t->static_trace_marker_id = marker_str;
9053
9054 printf_filtered (_("Probed static tracepoint "
9055 "marker \"%s\"\n"),
9056 t->static_trace_marker_id);
9057 }
9058 else if (target_static_tracepoint_marker_at (sal.pc, &marker))
9059 {
9060 t->static_trace_marker_id = xstrdup (marker.str_id);
9061 release_static_tracepoint_marker (&marker);
9062
9063 printf_filtered (_("Probed static tracepoint "
9064 "marker \"%s\"\n"),
9065 t->static_trace_marker_id);
9066 }
9067 else
9068 warning (_("Couldn't determine the static "
9069 "tracepoint marker to probe"));
9070 }
9071
9072 loc = b->loc;
9073 }
9074 else
9075 {
9076 loc = add_location_to_breakpoint (b, &sal);
9077 if ((flags & CREATE_BREAKPOINT_FLAGS_INSERTED) != 0)
9078 loc->inserted = 1;
9079 }
9080
9081 if (b->cond_string)
9082 {
9083 const char *arg = b->cond_string;
9084
9085 loc->cond = parse_exp_1 (&arg, loc->address,
9086 block_for_pc (loc->address), 0);
9087 if (*arg)
9088 error (_("Garbage '%s' follows condition"), arg);
9089 }
9090
9091 /* Dynamic printf requires and uses additional arguments on the
9092 command line, otherwise it's an error. */
9093 if (type == bp_dprintf)
9094 {
9095 if (b->extra_string)
9096 update_dprintf_command_list (b);
9097 else
9098 error (_("Format string required"));
9099 }
9100 else if (b->extra_string)
9101 error (_("Garbage '%s' at end of command"), b->extra_string);
9102 }
9103
9104 b->display_canonical = display_canonical;
9105 if (location != NULL)
9106 b->location = std::move (location);
9107 else
9108 b->location = new_address_location (b->loc->address, NULL, 0);
9109 b->filter = filter.release ();
9110 }
9111
9112 static void
9113 create_breakpoint_sal (struct gdbarch *gdbarch,
9114 gdb::array_view<const symtab_and_line> sals,
9115 event_location_up &&location,
9116 gdb::unique_xmalloc_ptr<char> filter,
9117 gdb::unique_xmalloc_ptr<char> cond_string,
9118 gdb::unique_xmalloc_ptr<char> extra_string,
9119 enum bptype type, enum bpdisp disposition,
9120 int thread, int task, int ignore_count,
9121 const struct breakpoint_ops *ops, int from_tty,
9122 int enabled, int internal, unsigned flags,
9123 int display_canonical)
9124 {
9125 std::unique_ptr<breakpoint> b = new_breakpoint_from_type (type);
9126
9127 init_breakpoint_sal (b.get (), gdbarch,
9128 sals, std::move (location),
9129 std::move (filter),
9130 std::move (cond_string),
9131 std::move (extra_string),
9132 type, disposition,
9133 thread, task, ignore_count,
9134 ops, from_tty,
9135 enabled, internal, flags,
9136 display_canonical);
9137
9138 install_breakpoint (internal, std::move (b), 0);
9139 }
9140
9141 /* Add SALS.nelts breakpoints to the breakpoint table. For each
9142 SALS.sal[i] breakpoint, include the corresponding ADDR_STRING[i]
9143 value. COND_STRING, if not NULL, specified the condition to be
9144 used for all breakpoints. Essentially the only case where
9145 SALS.nelts is not 1 is when we set a breakpoint on an overloaded
9146 function. In that case, it's still not possible to specify
9147 separate conditions for different overloaded functions, so
9148 we take just a single condition string.
9149
9150 NOTE: If the function succeeds, the caller is expected to cleanup
9151 the arrays ADDR_STRING, COND_STRING, and SALS (but not the
9152 array contents). If the function fails (error() is called), the
9153 caller is expected to cleanups both the ADDR_STRING, COND_STRING,
9154 COND and SALS arrays and each of those arrays contents. */
9155
9156 static void
9157 create_breakpoints_sal (struct gdbarch *gdbarch,
9158 struct linespec_result *canonical,
9159 gdb::unique_xmalloc_ptr<char> cond_string,
9160 gdb::unique_xmalloc_ptr<char> extra_string,
9161 enum bptype type, enum bpdisp disposition,
9162 int thread, int task, int ignore_count,
9163 const struct breakpoint_ops *ops, int from_tty,
9164 int enabled, int internal, unsigned flags)
9165 {
9166 if (canonical->pre_expanded)
9167 gdb_assert (canonical->lsals.size () == 1);
9168
9169 for (const auto &lsal : canonical->lsals)
9170 {
9171 /* Note that 'location' can be NULL in the case of a plain
9172 'break', without arguments. */
9173 event_location_up location
9174 = (canonical->location != NULL
9175 ? copy_event_location (canonical->location.get ()) : NULL);
9176 gdb::unique_xmalloc_ptr<char> filter_string
9177 (lsal.canonical != NULL ? xstrdup (lsal.canonical) : NULL);
9178
9179 create_breakpoint_sal (gdbarch, lsal.sals,
9180 std::move (location),
9181 std::move (filter_string),
9182 std::move (cond_string),
9183 std::move (extra_string),
9184 type, disposition,
9185 thread, task, ignore_count, ops,
9186 from_tty, enabled, internal, flags,
9187 canonical->special_display);
9188 }
9189 }
9190
9191 /* Parse LOCATION which is assumed to be a SAL specification possibly
9192 followed by conditionals. On return, SALS contains an array of SAL
9193 addresses found. LOCATION points to the end of the SAL (for
9194 linespec locations).
9195
9196 The array and the line spec strings are allocated on the heap, it is
9197 the caller's responsibility to free them. */
9198
9199 static void
9200 parse_breakpoint_sals (const struct event_location *location,
9201 struct linespec_result *canonical)
9202 {
9203 struct symtab_and_line cursal;
9204
9205 if (event_location_type (location) == LINESPEC_LOCATION)
9206 {
9207 const char *address = get_linespec_location (location);
9208
9209 if (address == NULL)
9210 {
9211 /* The last displayed codepoint, if it's valid, is our default
9212 breakpoint address. */
9213 if (last_displayed_sal_is_valid ())
9214 {
9215 /* Set sal's pspace, pc, symtab, and line to the values
9216 corresponding to the last call to print_frame_info.
9217 Be sure to reinitialize LINE with NOTCURRENT == 0
9218 as the breakpoint line number is inappropriate otherwise.
9219 find_pc_line would adjust PC, re-set it back. */
9220 symtab_and_line sal = get_last_displayed_sal ();
9221 CORE_ADDR pc = sal.pc;
9222
9223 sal = find_pc_line (pc, 0);
9224
9225 /* "break" without arguments is equivalent to "break *PC"
9226 where PC is the last displayed codepoint's address. So
9227 make sure to set sal.explicit_pc to prevent GDB from
9228 trying to expand the list of sals to include all other
9229 instances with the same symtab and line. */
9230 sal.pc = pc;
9231 sal.explicit_pc = 1;
9232
9233 struct linespec_sals lsal;
9234 lsal.sals = {sal};
9235 lsal.canonical = NULL;
9236
9237 canonical->lsals.push_back (std::move (lsal));
9238 return;
9239 }
9240 else
9241 error (_("No default breakpoint address now."));
9242 }
9243 }
9244
9245 /* Force almost all breakpoints to be in terms of the
9246 current_source_symtab (which is decode_line_1's default).
9247 This should produce the results we want almost all of the
9248 time while leaving default_breakpoint_* alone.
9249
9250 ObjC: However, don't match an Objective-C method name which
9251 may have a '+' or '-' succeeded by a '['. */
9252 cursal = get_current_source_symtab_and_line ();
9253 if (last_displayed_sal_is_valid ())
9254 {
9255 const char *address = NULL;
9256
9257 if (event_location_type (location) == LINESPEC_LOCATION)
9258 address = get_linespec_location (location);
9259
9260 if (!cursal.symtab
9261 || (address != NULL
9262 && strchr ("+-", address[0]) != NULL
9263 && address[1] != '['))
9264 {
9265 decode_line_full (location, DECODE_LINE_FUNFIRSTLINE, NULL,
9266 get_last_displayed_symtab (),
9267 get_last_displayed_line (),
9268 canonical, NULL, NULL);
9269 return;
9270 }
9271 }
9272
9273 decode_line_full (location, DECODE_LINE_FUNFIRSTLINE, NULL,
9274 cursal.symtab, cursal.line, canonical, NULL, NULL);
9275 }
9276
9277
9278 /* Convert each SAL into a real PC. Verify that the PC can be
9279 inserted as a breakpoint. If it can't throw an error. */
9280
9281 static void
9282 breakpoint_sals_to_pc (std::vector<symtab_and_line> &sals)
9283 {
9284 for (auto &sal : sals)
9285 resolve_sal_pc (&sal);
9286 }
9287
9288 /* Fast tracepoints may have restrictions on valid locations. For
9289 instance, a fast tracepoint using a jump instead of a trap will
9290 likely have to overwrite more bytes than a trap would, and so can
9291 only be placed where the instruction is longer than the jump, or a
9292 multi-instruction sequence does not have a jump into the middle of
9293 it, etc. */
9294
9295 static void
9296 check_fast_tracepoint_sals (struct gdbarch *gdbarch,
9297 gdb::array_view<const symtab_and_line> sals)
9298 {
9299 int rslt;
9300 char *msg;
9301 struct cleanup *old_chain;
9302
9303 for (const auto &sal : sals)
9304 {
9305 struct gdbarch *sarch;
9306
9307 sarch = get_sal_arch (sal);
9308 /* We fall back to GDBARCH if there is no architecture
9309 associated with SAL. */
9310 if (sarch == NULL)
9311 sarch = gdbarch;
9312 rslt = gdbarch_fast_tracepoint_valid_at (sarch, sal.pc, &msg);
9313 old_chain = make_cleanup (xfree, msg);
9314
9315 if (!rslt)
9316 error (_("May not have a fast tracepoint at %s%s"),
9317 paddress (sarch, sal.pc), (msg ? msg : ""));
9318
9319 do_cleanups (old_chain);
9320 }
9321 }
9322
9323 /* Given TOK, a string specification of condition and thread, as
9324 accepted by the 'break' command, extract the condition
9325 string and thread number and set *COND_STRING and *THREAD.
9326 PC identifies the context at which the condition should be parsed.
9327 If no condition is found, *COND_STRING is set to NULL.
9328 If no thread is found, *THREAD is set to -1. */
9329
9330 static void
9331 find_condition_and_thread (const char *tok, CORE_ADDR pc,
9332 char **cond_string, int *thread, int *task,
9333 char **rest)
9334 {
9335 *cond_string = NULL;
9336 *thread = -1;
9337 *task = 0;
9338 *rest = NULL;
9339
9340 while (tok && *tok)
9341 {
9342 const char *end_tok;
9343 int toklen;
9344 const char *cond_start = NULL;
9345 const char *cond_end = NULL;
9346
9347 tok = skip_spaces (tok);
9348
9349 if ((*tok == '"' || *tok == ',') && rest)
9350 {
9351 *rest = savestring (tok, strlen (tok));
9352 return;
9353 }
9354
9355 end_tok = skip_to_space (tok);
9356
9357 toklen = end_tok - tok;
9358
9359 if (toklen >= 1 && strncmp (tok, "if", toklen) == 0)
9360 {
9361 tok = cond_start = end_tok + 1;
9362 parse_exp_1 (&tok, pc, block_for_pc (pc), 0);
9363 cond_end = tok;
9364 *cond_string = savestring (cond_start, cond_end - cond_start);
9365 }
9366 else if (toklen >= 1 && strncmp (tok, "thread", toklen) == 0)
9367 {
9368 const char *tmptok;
9369 struct thread_info *thr;
9370
9371 tok = end_tok + 1;
9372 thr = parse_thread_id (tok, &tmptok);
9373 if (tok == tmptok)
9374 error (_("Junk after thread keyword."));
9375 *thread = thr->global_num;
9376 tok = tmptok;
9377 }
9378 else if (toklen >= 1 && strncmp (tok, "task", toklen) == 0)
9379 {
9380 char *tmptok;
9381
9382 tok = end_tok + 1;
9383 *task = strtol (tok, &tmptok, 0);
9384 if (tok == tmptok)
9385 error (_("Junk after task keyword."));
9386 if (!valid_task_id (*task))
9387 error (_("Unknown task %d."), *task);
9388 tok = tmptok;
9389 }
9390 else if (rest)
9391 {
9392 *rest = savestring (tok, strlen (tok));
9393 return;
9394 }
9395 else
9396 error (_("Junk at end of arguments."));
9397 }
9398 }
9399
9400 /* Decode a static tracepoint marker spec. */
9401
9402 static std::vector<symtab_and_line>
9403 decode_static_tracepoint_spec (const char **arg_p)
9404 {
9405 VEC(static_tracepoint_marker_p) *markers = NULL;
9406 struct cleanup *old_chain;
9407 const char *p = &(*arg_p)[3];
9408 const char *endp;
9409 char *marker_str;
9410 int i;
9411
9412 p = skip_spaces (p);
9413
9414 endp = skip_to_space (p);
9415
9416 marker_str = savestring (p, endp - p);
9417 old_chain = make_cleanup (xfree, marker_str);
9418
9419 markers = target_static_tracepoint_markers_by_strid (marker_str);
9420 if (VEC_empty(static_tracepoint_marker_p, markers))
9421 error (_("No known static tracepoint marker named %s"), marker_str);
9422
9423 std::vector<symtab_and_line> sals;
9424 sals.reserve (VEC_length(static_tracepoint_marker_p, markers));
9425
9426 for (i = 0; i < VEC_length(static_tracepoint_marker_p, markers); i++)
9427 {
9428 struct static_tracepoint_marker *marker;
9429
9430 marker = VEC_index (static_tracepoint_marker_p, markers, i);
9431
9432 symtab_and_line sal = find_pc_line (marker->address, 0);
9433 sal.pc = marker->address;
9434 sals.push_back (sal);
9435
9436 release_static_tracepoint_marker (marker);
9437 }
9438
9439 do_cleanups (old_chain);
9440
9441 *arg_p = endp;
9442 return sals;
9443 }
9444
9445 /* See breakpoint.h. */
9446
9447 int
9448 create_breakpoint (struct gdbarch *gdbarch,
9449 const struct event_location *location,
9450 const char *cond_string,
9451 int thread, const char *extra_string,
9452 int parse_extra,
9453 int tempflag, enum bptype type_wanted,
9454 int ignore_count,
9455 enum auto_boolean pending_break_support,
9456 const struct breakpoint_ops *ops,
9457 int from_tty, int enabled, int internal,
9458 unsigned flags)
9459 {
9460 struct linespec_result canonical;
9461 struct cleanup *bkpt_chain = NULL;
9462 int pending = 0;
9463 int task = 0;
9464 int prev_bkpt_count = breakpoint_count;
9465
9466 gdb_assert (ops != NULL);
9467
9468 /* If extra_string isn't useful, set it to NULL. */
9469 if (extra_string != NULL && *extra_string == '\0')
9470 extra_string = NULL;
9471
9472 TRY
9473 {
9474 ops->create_sals_from_location (location, &canonical, type_wanted);
9475 }
9476 CATCH (e, RETURN_MASK_ERROR)
9477 {
9478 /* If caller is interested in rc value from parse, set
9479 value. */
9480 if (e.error == NOT_FOUND_ERROR)
9481 {
9482 /* If pending breakpoint support is turned off, throw
9483 error. */
9484
9485 if (pending_break_support == AUTO_BOOLEAN_FALSE)
9486 throw_exception (e);
9487
9488 exception_print (gdb_stderr, e);
9489
9490 /* If pending breakpoint support is auto query and the user
9491 selects no, then simply return the error code. */
9492 if (pending_break_support == AUTO_BOOLEAN_AUTO
9493 && !nquery (_("Make %s pending on future shared library load? "),
9494 bptype_string (type_wanted)))
9495 return 0;
9496
9497 /* At this point, either the user was queried about setting
9498 a pending breakpoint and selected yes, or pending
9499 breakpoint behavior is on and thus a pending breakpoint
9500 is defaulted on behalf of the user. */
9501 pending = 1;
9502 }
9503 else
9504 throw_exception (e);
9505 }
9506 END_CATCH
9507
9508 if (!pending && canonical.lsals.empty ())
9509 return 0;
9510
9511 /* ----------------------------- SNIP -----------------------------
9512 Anything added to the cleanup chain beyond this point is assumed
9513 to be part of a breakpoint. If the breakpoint create succeeds
9514 then the memory is not reclaimed. */
9515 bkpt_chain = make_cleanup (null_cleanup, 0);
9516
9517 /* Resolve all line numbers to PC's and verify that the addresses
9518 are ok for the target. */
9519 if (!pending)
9520 {
9521 for (auto &lsal : canonical.lsals)
9522 breakpoint_sals_to_pc (lsal.sals);
9523 }
9524
9525 /* Fast tracepoints may have additional restrictions on location. */
9526 if (!pending && type_wanted == bp_fast_tracepoint)
9527 {
9528 for (const auto &lsal : canonical.lsals)
9529 check_fast_tracepoint_sals (gdbarch, lsal.sals);
9530 }
9531
9532 /* Verify that condition can be parsed, before setting any
9533 breakpoints. Allocate a separate condition expression for each
9534 breakpoint. */
9535 if (!pending)
9536 {
9537 gdb::unique_xmalloc_ptr<char> cond_string_copy;
9538 gdb::unique_xmalloc_ptr<char> extra_string_copy;
9539
9540 if (parse_extra)
9541 {
9542 char *rest;
9543 char *cond;
9544
9545 const linespec_sals &lsal = canonical.lsals[0];
9546
9547 /* Here we only parse 'arg' to separate condition
9548 from thread number, so parsing in context of first
9549 sal is OK. When setting the breakpoint we'll
9550 re-parse it in context of each sal. */
9551
9552 find_condition_and_thread (extra_string, lsal.sals[0].pc,
9553 &cond, &thread, &task, &rest);
9554 cond_string_copy.reset (cond);
9555 extra_string_copy.reset (rest);
9556 }
9557 else
9558 {
9559 if (type_wanted != bp_dprintf
9560 && extra_string != NULL && *extra_string != '\0')
9561 error (_("Garbage '%s' at end of location"), extra_string);
9562
9563 /* Create a private copy of condition string. */
9564 if (cond_string)
9565 cond_string_copy.reset (xstrdup (cond_string));
9566 /* Create a private copy of any extra string. */
9567 if (extra_string)
9568 extra_string_copy.reset (xstrdup (extra_string));
9569 }
9570
9571 ops->create_breakpoints_sal (gdbarch, &canonical,
9572 std::move (cond_string_copy),
9573 std::move (extra_string_copy),
9574 type_wanted,
9575 tempflag ? disp_del : disp_donttouch,
9576 thread, task, ignore_count, ops,
9577 from_tty, enabled, internal, flags);
9578 }
9579 else
9580 {
9581 std::unique_ptr <breakpoint> b = new_breakpoint_from_type (type_wanted);
9582
9583 init_raw_breakpoint_without_location (b.get (), gdbarch, type_wanted, ops);
9584 b->location = copy_event_location (location);
9585
9586 if (parse_extra)
9587 b->cond_string = NULL;
9588 else
9589 {
9590 /* Create a private copy of condition string. */
9591 b->cond_string = cond_string != NULL ? xstrdup (cond_string) : NULL;
9592 b->thread = thread;
9593 }
9594
9595 /* Create a private copy of any extra string. */
9596 b->extra_string = extra_string != NULL ? xstrdup (extra_string) : NULL;
9597 b->ignore_count = ignore_count;
9598 b->disposition = tempflag ? disp_del : disp_donttouch;
9599 b->condition_not_parsed = 1;
9600 b->enable_state = enabled ? bp_enabled : bp_disabled;
9601 if ((type_wanted != bp_breakpoint
9602 && type_wanted != bp_hardware_breakpoint) || thread != -1)
9603 b->pspace = current_program_space;
9604
9605 install_breakpoint (internal, std::move (b), 0);
9606 }
9607
9608 if (canonical.lsals.size () > 1)
9609 {
9610 warning (_("Multiple breakpoints were set.\nUse the "
9611 "\"delete\" command to delete unwanted breakpoints."));
9612 prev_breakpoint_count = prev_bkpt_count;
9613 }
9614
9615 /* That's it. Discard the cleanups for data inserted into the
9616 breakpoint. */
9617 discard_cleanups (bkpt_chain);
9618
9619 /* error call may happen here - have BKPT_CHAIN already discarded. */
9620 update_global_location_list (UGLL_MAY_INSERT);
9621
9622 return 1;
9623 }
9624
9625 /* Set a breakpoint.
9626 ARG is a string describing breakpoint address,
9627 condition, and thread.
9628 FLAG specifies if a breakpoint is hardware on,
9629 and if breakpoint is temporary, using BP_HARDWARE_FLAG
9630 and BP_TEMPFLAG. */
9631
9632 static void
9633 break_command_1 (const char *arg, int flag, int from_tty)
9634 {
9635 int tempflag = flag & BP_TEMPFLAG;
9636 enum bptype type_wanted = (flag & BP_HARDWAREFLAG
9637 ? bp_hardware_breakpoint
9638 : bp_breakpoint);
9639 struct breakpoint_ops *ops;
9640
9641 event_location_up location = string_to_event_location (&arg, current_language);
9642
9643 /* Matching breakpoints on probes. */
9644 if (location != NULL
9645 && event_location_type (location.get ()) == PROBE_LOCATION)
9646 ops = &bkpt_probe_breakpoint_ops;
9647 else
9648 ops = &bkpt_breakpoint_ops;
9649
9650 create_breakpoint (get_current_arch (),
9651 location.get (),
9652 NULL, 0, arg, 1 /* parse arg */,
9653 tempflag, type_wanted,
9654 0 /* Ignore count */,
9655 pending_break_support,
9656 ops,
9657 from_tty,
9658 1 /* enabled */,
9659 0 /* internal */,
9660 0);
9661 }
9662
9663 /* Helper function for break_command_1 and disassemble_command. */
9664
9665 void
9666 resolve_sal_pc (struct symtab_and_line *sal)
9667 {
9668 CORE_ADDR pc;
9669
9670 if (sal->pc == 0 && sal->symtab != NULL)
9671 {
9672 if (!find_line_pc (sal->symtab, sal->line, &pc))
9673 error (_("No line %d in file \"%s\"."),
9674 sal->line, symtab_to_filename_for_display (sal->symtab));
9675 sal->pc = pc;
9676
9677 /* If this SAL corresponds to a breakpoint inserted using a line
9678 number, then skip the function prologue if necessary. */
9679 if (sal->explicit_line)
9680 skip_prologue_sal (sal);
9681 }
9682
9683 if (sal->section == 0 && sal->symtab != NULL)
9684 {
9685 const struct blockvector *bv;
9686 const struct block *b;
9687 struct symbol *sym;
9688
9689 bv = blockvector_for_pc_sect (sal->pc, 0, &b,
9690 SYMTAB_COMPUNIT (sal->symtab));
9691 if (bv != NULL)
9692 {
9693 sym = block_linkage_function (b);
9694 if (sym != NULL)
9695 {
9696 fixup_symbol_section (sym, SYMTAB_OBJFILE (sal->symtab));
9697 sal->section = SYMBOL_OBJ_SECTION (SYMTAB_OBJFILE (sal->symtab),
9698 sym);
9699 }
9700 else
9701 {
9702 /* It really is worthwhile to have the section, so we'll
9703 just have to look harder. This case can be executed
9704 if we have line numbers but no functions (as can
9705 happen in assembly source). */
9706
9707 scoped_restore_current_pspace_and_thread restore_pspace_thread;
9708 switch_to_program_space_and_thread (sal->pspace);
9709
9710 bound_minimal_symbol msym = lookup_minimal_symbol_by_pc (sal->pc);
9711 if (msym.minsym)
9712 sal->section = MSYMBOL_OBJ_SECTION (msym.objfile, msym.minsym);
9713 }
9714 }
9715 }
9716 }
9717
9718 void
9719 break_command (char *arg, int from_tty)
9720 {
9721 break_command_1 (arg, 0, from_tty);
9722 }
9723
9724 void
9725 tbreak_command (char *arg, int from_tty)
9726 {
9727 break_command_1 (arg, BP_TEMPFLAG, from_tty);
9728 }
9729
9730 static void
9731 hbreak_command (char *arg, int from_tty)
9732 {
9733 break_command_1 (arg, BP_HARDWAREFLAG, from_tty);
9734 }
9735
9736 static void
9737 thbreak_command (char *arg, int from_tty)
9738 {
9739 break_command_1 (arg, (BP_TEMPFLAG | BP_HARDWAREFLAG), from_tty);
9740 }
9741
9742 static void
9743 stop_command (char *arg, int from_tty)
9744 {
9745 printf_filtered (_("Specify the type of breakpoint to set.\n\
9746 Usage: stop in <function | address>\n\
9747 stop at <line>\n"));
9748 }
9749
9750 static void
9751 stopin_command (const char *arg, int from_tty)
9752 {
9753 int badInput = 0;
9754
9755 if (arg == (char *) NULL)
9756 badInput = 1;
9757 else if (*arg != '*')
9758 {
9759 const char *argptr = arg;
9760 int hasColon = 0;
9761
9762 /* Look for a ':'. If this is a line number specification, then
9763 say it is bad, otherwise, it should be an address or
9764 function/method name. */
9765 while (*argptr && !hasColon)
9766 {
9767 hasColon = (*argptr == ':');
9768 argptr++;
9769 }
9770
9771 if (hasColon)
9772 badInput = (*argptr != ':'); /* Not a class::method */
9773 else
9774 badInput = isdigit (*arg); /* a simple line number */
9775 }
9776
9777 if (badInput)
9778 printf_filtered (_("Usage: stop in <function | address>\n"));
9779 else
9780 break_command_1 (arg, 0, from_tty);
9781 }
9782
9783 static void
9784 stopat_command (const char *arg, int from_tty)
9785 {
9786 int badInput = 0;
9787
9788 if (arg == (char *) NULL || *arg == '*') /* no line number */
9789 badInput = 1;
9790 else
9791 {
9792 const char *argptr = arg;
9793 int hasColon = 0;
9794
9795 /* Look for a ':'. If there is a '::' then get out, otherwise
9796 it is probably a line number. */
9797 while (*argptr && !hasColon)
9798 {
9799 hasColon = (*argptr == ':');
9800 argptr++;
9801 }
9802
9803 if (hasColon)
9804 badInput = (*argptr == ':'); /* we have class::method */
9805 else
9806 badInput = !isdigit (*arg); /* not a line number */
9807 }
9808
9809 if (badInput)
9810 printf_filtered (_("Usage: stop at <line>\n"));
9811 else
9812 break_command_1 (arg, 0, from_tty);
9813 }
9814
9815 /* The dynamic printf command is mostly like a regular breakpoint, but
9816 with a prewired command list consisting of a single output command,
9817 built from extra arguments supplied on the dprintf command
9818 line. */
9819
9820 static void
9821 dprintf_command (char *arg_in, int from_tty)
9822 {
9823 const char *arg = arg_in;
9824 event_location_up location = string_to_event_location (&arg, current_language);
9825
9826 /* If non-NULL, ARG should have been advanced past the location;
9827 the next character must be ','. */
9828 if (arg != NULL)
9829 {
9830 if (arg[0] != ',' || arg[1] == '\0')
9831 error (_("Format string required"));
9832 else
9833 {
9834 /* Skip the comma. */
9835 ++arg;
9836 }
9837 }
9838
9839 create_breakpoint (get_current_arch (),
9840 location.get (),
9841 NULL, 0, arg, 1 /* parse arg */,
9842 0, bp_dprintf,
9843 0 /* Ignore count */,
9844 pending_break_support,
9845 &dprintf_breakpoint_ops,
9846 from_tty,
9847 1 /* enabled */,
9848 0 /* internal */,
9849 0);
9850 }
9851
9852 static void
9853 agent_printf_command (char *arg, int from_tty)
9854 {
9855 error (_("May only run agent-printf on the target"));
9856 }
9857
9858 /* Implement the "breakpoint_hit" breakpoint_ops method for
9859 ranged breakpoints. */
9860
9861 static int
9862 breakpoint_hit_ranged_breakpoint (const struct bp_location *bl,
9863 struct address_space *aspace,
9864 CORE_ADDR bp_addr,
9865 const struct target_waitstatus *ws)
9866 {
9867 if (ws->kind != TARGET_WAITKIND_STOPPED
9868 || ws->value.sig != GDB_SIGNAL_TRAP)
9869 return 0;
9870
9871 return breakpoint_address_match_range (bl->pspace->aspace, bl->address,
9872 bl->length, aspace, bp_addr);
9873 }
9874
9875 /* Implement the "resources_needed" breakpoint_ops method for
9876 ranged breakpoints. */
9877
9878 static int
9879 resources_needed_ranged_breakpoint (const struct bp_location *bl)
9880 {
9881 return target_ranged_break_num_registers ();
9882 }
9883
9884 /* Implement the "print_it" breakpoint_ops method for
9885 ranged breakpoints. */
9886
9887 static enum print_stop_action
9888 print_it_ranged_breakpoint (bpstat bs)
9889 {
9890 struct breakpoint *b = bs->breakpoint_at;
9891 struct bp_location *bl = b->loc;
9892 struct ui_out *uiout = current_uiout;
9893
9894 gdb_assert (b->type == bp_hardware_breakpoint);
9895
9896 /* Ranged breakpoints have only one location. */
9897 gdb_assert (bl && bl->next == NULL);
9898
9899 annotate_breakpoint (b->number);
9900
9901 maybe_print_thread_hit_breakpoint (uiout);
9902
9903 if (b->disposition == disp_del)
9904 uiout->text ("Temporary ranged breakpoint ");
9905 else
9906 uiout->text ("Ranged breakpoint ");
9907 if (uiout->is_mi_like_p ())
9908 {
9909 uiout->field_string ("reason",
9910 async_reason_lookup (EXEC_ASYNC_BREAKPOINT_HIT));
9911 uiout->field_string ("disp", bpdisp_text (b->disposition));
9912 }
9913 uiout->field_int ("bkptno", b->number);
9914 uiout->text (", ");
9915
9916 return PRINT_SRC_AND_LOC;
9917 }
9918
9919 /* Implement the "print_one" breakpoint_ops method for
9920 ranged breakpoints. */
9921
9922 static void
9923 print_one_ranged_breakpoint (struct breakpoint *b,
9924 struct bp_location **last_loc)
9925 {
9926 struct bp_location *bl = b->loc;
9927 struct value_print_options opts;
9928 struct ui_out *uiout = current_uiout;
9929
9930 /* Ranged breakpoints have only one location. */
9931 gdb_assert (bl && bl->next == NULL);
9932
9933 get_user_print_options (&opts);
9934
9935 if (opts.addressprint)
9936 /* We don't print the address range here, it will be printed later
9937 by print_one_detail_ranged_breakpoint. */
9938 uiout->field_skip ("addr");
9939 annotate_field (5);
9940 print_breakpoint_location (b, bl);
9941 *last_loc = bl;
9942 }
9943
9944 /* Implement the "print_one_detail" breakpoint_ops method for
9945 ranged breakpoints. */
9946
9947 static void
9948 print_one_detail_ranged_breakpoint (const struct breakpoint *b,
9949 struct ui_out *uiout)
9950 {
9951 CORE_ADDR address_start, address_end;
9952 struct bp_location *bl = b->loc;
9953 string_file stb;
9954
9955 gdb_assert (bl);
9956
9957 address_start = bl->address;
9958 address_end = address_start + bl->length - 1;
9959
9960 uiout->text ("\taddress range: ");
9961 stb.printf ("[%s, %s]",
9962 print_core_address (bl->gdbarch, address_start),
9963 print_core_address (bl->gdbarch, address_end));
9964 uiout->field_stream ("addr", stb);
9965 uiout->text ("\n");
9966 }
9967
9968 /* Implement the "print_mention" breakpoint_ops method for
9969 ranged breakpoints. */
9970
9971 static void
9972 print_mention_ranged_breakpoint (struct breakpoint *b)
9973 {
9974 struct bp_location *bl = b->loc;
9975 struct ui_out *uiout = current_uiout;
9976
9977 gdb_assert (bl);
9978 gdb_assert (b->type == bp_hardware_breakpoint);
9979
9980 if (uiout->is_mi_like_p ())
9981 return;
9982
9983 printf_filtered (_("Hardware assisted ranged breakpoint %d from %s to %s."),
9984 b->number, paddress (bl->gdbarch, bl->address),
9985 paddress (bl->gdbarch, bl->address + bl->length - 1));
9986 }
9987
9988 /* Implement the "print_recreate" breakpoint_ops method for
9989 ranged breakpoints. */
9990
9991 static void
9992 print_recreate_ranged_breakpoint (struct breakpoint *b, struct ui_file *fp)
9993 {
9994 fprintf_unfiltered (fp, "break-range %s, %s",
9995 event_location_to_string (b->location.get ()),
9996 event_location_to_string (b->location_range_end.get ()));
9997 print_recreate_thread (b, fp);
9998 }
9999
10000 /* The breakpoint_ops structure to be used in ranged breakpoints. */
10001
10002 static struct breakpoint_ops ranged_breakpoint_ops;
10003
10004 /* Find the address where the end of the breakpoint range should be
10005 placed, given the SAL of the end of the range. This is so that if
10006 the user provides a line number, the end of the range is set to the
10007 last instruction of the given line. */
10008
10009 static CORE_ADDR
10010 find_breakpoint_range_end (struct symtab_and_line sal)
10011 {
10012 CORE_ADDR end;
10013
10014 /* If the user provided a PC value, use it. Otherwise,
10015 find the address of the end of the given location. */
10016 if (sal.explicit_pc)
10017 end = sal.pc;
10018 else
10019 {
10020 int ret;
10021 CORE_ADDR start;
10022
10023 ret = find_line_pc_range (sal, &start, &end);
10024 if (!ret)
10025 error (_("Could not find location of the end of the range."));
10026
10027 /* find_line_pc_range returns the start of the next line. */
10028 end--;
10029 }
10030
10031 return end;
10032 }
10033
10034 /* Implement the "break-range" CLI command. */
10035
10036 static void
10037 break_range_command (char *arg_in, int from_tty)
10038 {
10039 const char *arg = arg_in;
10040 const char *arg_start;
10041 char *addr_string_start;
10042 struct linespec_result canonical_start, canonical_end;
10043 int bp_count, can_use_bp, length;
10044 CORE_ADDR end;
10045 struct breakpoint *b;
10046 struct cleanup *cleanup_bkpt;
10047
10048 /* We don't support software ranged breakpoints. */
10049 if (target_ranged_break_num_registers () < 0)
10050 error (_("This target does not support hardware ranged breakpoints."));
10051
10052 bp_count = hw_breakpoint_used_count ();
10053 bp_count += target_ranged_break_num_registers ();
10054 can_use_bp = target_can_use_hardware_watchpoint (bp_hardware_breakpoint,
10055 bp_count, 0);
10056 if (can_use_bp < 0)
10057 error (_("Hardware breakpoints used exceeds limit."));
10058
10059 arg = skip_spaces (arg);
10060 if (arg == NULL || arg[0] == '\0')
10061 error(_("No address range specified."));
10062
10063 arg_start = arg;
10064 event_location_up start_location = string_to_event_location (&arg,
10065 current_language);
10066 parse_breakpoint_sals (start_location.get (), &canonical_start);
10067
10068 if (arg[0] != ',')
10069 error (_("Too few arguments."));
10070 else if (canonical_start.lsals.empty ())
10071 error (_("Could not find location of the beginning of the range."));
10072
10073 const linespec_sals &lsal_start = canonical_start.lsals[0];
10074
10075 if (canonical_start.lsals.size () > 1
10076 || lsal_start.sals.size () != 1)
10077 error (_("Cannot create a ranged breakpoint with multiple locations."));
10078
10079 const symtab_and_line &sal_start = lsal_start.sals[0];
10080 addr_string_start = savestring (arg_start, arg - arg_start);
10081 cleanup_bkpt = make_cleanup (xfree, addr_string_start);
10082
10083 arg++; /* Skip the comma. */
10084 arg = skip_spaces (arg);
10085
10086 /* Parse the end location. */
10087
10088 arg_start = arg;
10089
10090 /* We call decode_line_full directly here instead of using
10091 parse_breakpoint_sals because we need to specify the start location's
10092 symtab and line as the default symtab and line for the end of the
10093 range. This makes it possible to have ranges like "foo.c:27, +14",
10094 where +14 means 14 lines from the start location. */
10095 event_location_up end_location = string_to_event_location (&arg,
10096 current_language);
10097 decode_line_full (end_location.get (), DECODE_LINE_FUNFIRSTLINE, NULL,
10098 sal_start.symtab, sal_start.line,
10099 &canonical_end, NULL, NULL);
10100
10101 if (canonical_end.lsals.empty ())
10102 error (_("Could not find location of the end of the range."));
10103
10104 const linespec_sals &lsal_end = canonical_end.lsals[0];
10105 if (canonical_end.lsals.size () > 1
10106 || lsal_end.sals.size () != 1)
10107 error (_("Cannot create a ranged breakpoint with multiple locations."));
10108
10109 const symtab_and_line &sal_end = lsal_end.sals[0];
10110
10111 end = find_breakpoint_range_end (sal_end);
10112 if (sal_start.pc > end)
10113 error (_("Invalid address range, end precedes start."));
10114
10115 length = end - sal_start.pc + 1;
10116 if (length < 0)
10117 /* Length overflowed. */
10118 error (_("Address range too large."));
10119 else if (length == 1)
10120 {
10121 /* This range is simple enough to be handled by
10122 the `hbreak' command. */
10123 hbreak_command (addr_string_start, 1);
10124
10125 do_cleanups (cleanup_bkpt);
10126
10127 return;
10128 }
10129
10130 /* Now set up the breakpoint. */
10131 b = set_raw_breakpoint (get_current_arch (), sal_start,
10132 bp_hardware_breakpoint, &ranged_breakpoint_ops);
10133 set_breakpoint_count (breakpoint_count + 1);
10134 b->number = breakpoint_count;
10135 b->disposition = disp_donttouch;
10136 b->location = std::move (start_location);
10137 b->location_range_end = std::move (end_location);
10138 b->loc->length = length;
10139
10140 do_cleanups (cleanup_bkpt);
10141
10142 mention (b);
10143 observer_notify_breakpoint_created (b);
10144 update_global_location_list (UGLL_MAY_INSERT);
10145 }
10146
10147 /* Return non-zero if EXP is verified as constant. Returned zero
10148 means EXP is variable. Also the constant detection may fail for
10149 some constant expressions and in such case still falsely return
10150 zero. */
10151
10152 static int
10153 watchpoint_exp_is_const (const struct expression *exp)
10154 {
10155 int i = exp->nelts;
10156
10157 while (i > 0)
10158 {
10159 int oplenp, argsp;
10160
10161 /* We are only interested in the descriptor of each element. */
10162 operator_length (exp, i, &oplenp, &argsp);
10163 i -= oplenp;
10164
10165 switch (exp->elts[i].opcode)
10166 {
10167 case BINOP_ADD:
10168 case BINOP_SUB:
10169 case BINOP_MUL:
10170 case BINOP_DIV:
10171 case BINOP_REM:
10172 case BINOP_MOD:
10173 case BINOP_LSH:
10174 case BINOP_RSH:
10175 case BINOP_LOGICAL_AND:
10176 case BINOP_LOGICAL_OR:
10177 case BINOP_BITWISE_AND:
10178 case BINOP_BITWISE_IOR:
10179 case BINOP_BITWISE_XOR:
10180 case BINOP_EQUAL:
10181 case BINOP_NOTEQUAL:
10182 case BINOP_LESS:
10183 case BINOP_GTR:
10184 case BINOP_LEQ:
10185 case BINOP_GEQ:
10186 case BINOP_REPEAT:
10187 case BINOP_COMMA:
10188 case BINOP_EXP:
10189 case BINOP_MIN:
10190 case BINOP_MAX:
10191 case BINOP_INTDIV:
10192 case BINOP_CONCAT:
10193 case TERNOP_COND:
10194 case TERNOP_SLICE:
10195
10196 case OP_LONG:
10197 case OP_DOUBLE:
10198 case OP_DECFLOAT:
10199 case OP_LAST:
10200 case OP_COMPLEX:
10201 case OP_STRING:
10202 case OP_ARRAY:
10203 case OP_TYPE:
10204 case OP_TYPEOF:
10205 case OP_DECLTYPE:
10206 case OP_TYPEID:
10207 case OP_NAME:
10208 case OP_OBJC_NSSTRING:
10209
10210 case UNOP_NEG:
10211 case UNOP_LOGICAL_NOT:
10212 case UNOP_COMPLEMENT:
10213 case UNOP_ADDR:
10214 case UNOP_HIGH:
10215 case UNOP_CAST:
10216
10217 case UNOP_CAST_TYPE:
10218 case UNOP_REINTERPRET_CAST:
10219 case UNOP_DYNAMIC_CAST:
10220 /* Unary, binary and ternary operators: We have to check
10221 their operands. If they are constant, then so is the
10222 result of that operation. For instance, if A and B are
10223 determined to be constants, then so is "A + B".
10224
10225 UNOP_IND is one exception to the rule above, because the
10226 value of *ADDR is not necessarily a constant, even when
10227 ADDR is. */
10228 break;
10229
10230 case OP_VAR_VALUE:
10231 /* Check whether the associated symbol is a constant.
10232
10233 We use SYMBOL_CLASS rather than TYPE_CONST because it's
10234 possible that a buggy compiler could mark a variable as
10235 constant even when it is not, and TYPE_CONST would return
10236 true in this case, while SYMBOL_CLASS wouldn't.
10237
10238 We also have to check for function symbols because they
10239 are always constant. */
10240 {
10241 struct symbol *s = exp->elts[i + 2].symbol;
10242
10243 if (SYMBOL_CLASS (s) != LOC_BLOCK
10244 && SYMBOL_CLASS (s) != LOC_CONST
10245 && SYMBOL_CLASS (s) != LOC_CONST_BYTES)
10246 return 0;
10247 break;
10248 }
10249
10250 /* The default action is to return 0 because we are using
10251 the optimistic approach here: If we don't know something,
10252 then it is not a constant. */
10253 default:
10254 return 0;
10255 }
10256 }
10257
10258 return 1;
10259 }
10260
10261 /* Watchpoint destructor. */
10262
10263 watchpoint::~watchpoint ()
10264 {
10265 xfree (this->exp_string);
10266 xfree (this->exp_string_reparse);
10267 value_free (this->val);
10268 }
10269
10270 /* Implement the "re_set" breakpoint_ops method for watchpoints. */
10271
10272 static void
10273 re_set_watchpoint (struct breakpoint *b)
10274 {
10275 struct watchpoint *w = (struct watchpoint *) b;
10276
10277 /* Watchpoint can be either on expression using entirely global
10278 variables, or it can be on local variables.
10279
10280 Watchpoints of the first kind are never auto-deleted, and even
10281 persist across program restarts. Since they can use variables
10282 from shared libraries, we need to reparse expression as libraries
10283 are loaded and unloaded.
10284
10285 Watchpoints on local variables can also change meaning as result
10286 of solib event. For example, if a watchpoint uses both a local
10287 and a global variables in expression, it's a local watchpoint,
10288 but unloading of a shared library will make the expression
10289 invalid. This is not a very common use case, but we still
10290 re-evaluate expression, to avoid surprises to the user.
10291
10292 Note that for local watchpoints, we re-evaluate it only if
10293 watchpoints frame id is still valid. If it's not, it means the
10294 watchpoint is out of scope and will be deleted soon. In fact,
10295 I'm not sure we'll ever be called in this case.
10296
10297 If a local watchpoint's frame id is still valid, then
10298 w->exp_valid_block is likewise valid, and we can safely use it.
10299
10300 Don't do anything about disabled watchpoints, since they will be
10301 reevaluated again when enabled. */
10302 update_watchpoint (w, 1 /* reparse */);
10303 }
10304
10305 /* Implement the "insert" breakpoint_ops method for hardware watchpoints. */
10306
10307 static int
10308 insert_watchpoint (struct bp_location *bl)
10309 {
10310 struct watchpoint *w = (struct watchpoint *) bl->owner;
10311 int length = w->exact ? 1 : bl->length;
10312
10313 return target_insert_watchpoint (bl->address, length, bl->watchpoint_type,
10314 w->cond_exp.get ());
10315 }
10316
10317 /* Implement the "remove" breakpoint_ops method for hardware watchpoints. */
10318
10319 static int
10320 remove_watchpoint (struct bp_location *bl, enum remove_bp_reason reason)
10321 {
10322 struct watchpoint *w = (struct watchpoint *) bl->owner;
10323 int length = w->exact ? 1 : bl->length;
10324
10325 return target_remove_watchpoint (bl->address, length, bl->watchpoint_type,
10326 w->cond_exp.get ());
10327 }
10328
10329 static int
10330 breakpoint_hit_watchpoint (const struct bp_location *bl,
10331 struct address_space *aspace, CORE_ADDR bp_addr,
10332 const struct target_waitstatus *ws)
10333 {
10334 struct breakpoint *b = bl->owner;
10335 struct watchpoint *w = (struct watchpoint *) b;
10336
10337 /* Continuable hardware watchpoints are treated as non-existent if the
10338 reason we stopped wasn't a hardware watchpoint (we didn't stop on
10339 some data address). Otherwise gdb won't stop on a break instruction
10340 in the code (not from a breakpoint) when a hardware watchpoint has
10341 been defined. Also skip watchpoints which we know did not trigger
10342 (did not match the data address). */
10343 if (is_hardware_watchpoint (b)
10344 && w->watchpoint_triggered == watch_triggered_no)
10345 return 0;
10346
10347 return 1;
10348 }
10349
10350 static void
10351 check_status_watchpoint (bpstat bs)
10352 {
10353 gdb_assert (is_watchpoint (bs->breakpoint_at));
10354
10355 bpstat_check_watchpoint (bs);
10356 }
10357
10358 /* Implement the "resources_needed" breakpoint_ops method for
10359 hardware watchpoints. */
10360
10361 static int
10362 resources_needed_watchpoint (const struct bp_location *bl)
10363 {
10364 struct watchpoint *w = (struct watchpoint *) bl->owner;
10365 int length = w->exact? 1 : bl->length;
10366
10367 return target_region_ok_for_hw_watchpoint (bl->address, length);
10368 }
10369
10370 /* Implement the "works_in_software_mode" breakpoint_ops method for
10371 hardware watchpoints. */
10372
10373 static int
10374 works_in_software_mode_watchpoint (const struct breakpoint *b)
10375 {
10376 /* Read and access watchpoints only work with hardware support. */
10377 return b->type == bp_watchpoint || b->type == bp_hardware_watchpoint;
10378 }
10379
10380 static enum print_stop_action
10381 print_it_watchpoint (bpstat bs)
10382 {
10383 struct breakpoint *b;
10384 enum print_stop_action result;
10385 struct watchpoint *w;
10386 struct ui_out *uiout = current_uiout;
10387
10388 gdb_assert (bs->bp_location_at != NULL);
10389
10390 b = bs->breakpoint_at;
10391 w = (struct watchpoint *) b;
10392
10393 annotate_watchpoint (b->number);
10394 maybe_print_thread_hit_breakpoint (uiout);
10395
10396 string_file stb;
10397
10398 gdb::optional<ui_out_emit_tuple> tuple_emitter;
10399 switch (b->type)
10400 {
10401 case bp_watchpoint:
10402 case bp_hardware_watchpoint:
10403 if (uiout->is_mi_like_p ())
10404 uiout->field_string
10405 ("reason", async_reason_lookup (EXEC_ASYNC_WATCHPOINT_TRIGGER));
10406 mention (b);
10407 tuple_emitter.emplace (uiout, "value");
10408 uiout->text ("\nOld value = ");
10409 watchpoint_value_print (bs->old_val, &stb);
10410 uiout->field_stream ("old", stb);
10411 uiout->text ("\nNew value = ");
10412 watchpoint_value_print (w->val, &stb);
10413 uiout->field_stream ("new", stb);
10414 uiout->text ("\n");
10415 /* More than one watchpoint may have been triggered. */
10416 result = PRINT_UNKNOWN;
10417 break;
10418
10419 case bp_read_watchpoint:
10420 if (uiout->is_mi_like_p ())
10421 uiout->field_string
10422 ("reason", async_reason_lookup (EXEC_ASYNC_READ_WATCHPOINT_TRIGGER));
10423 mention (b);
10424 tuple_emitter.emplace (uiout, "value");
10425 uiout->text ("\nValue = ");
10426 watchpoint_value_print (w->val, &stb);
10427 uiout->field_stream ("value", stb);
10428 uiout->text ("\n");
10429 result = PRINT_UNKNOWN;
10430 break;
10431
10432 case bp_access_watchpoint:
10433 if (bs->old_val != NULL)
10434 {
10435 if (uiout->is_mi_like_p ())
10436 uiout->field_string
10437 ("reason",
10438 async_reason_lookup (EXEC_ASYNC_ACCESS_WATCHPOINT_TRIGGER));
10439 mention (b);
10440 tuple_emitter.emplace (uiout, "value");
10441 uiout->text ("\nOld value = ");
10442 watchpoint_value_print (bs->old_val, &stb);
10443 uiout->field_stream ("old", stb);
10444 uiout->text ("\nNew value = ");
10445 }
10446 else
10447 {
10448 mention (b);
10449 if (uiout->is_mi_like_p ())
10450 uiout->field_string
10451 ("reason",
10452 async_reason_lookup (EXEC_ASYNC_ACCESS_WATCHPOINT_TRIGGER));
10453 tuple_emitter.emplace (uiout, "value");
10454 uiout->text ("\nValue = ");
10455 }
10456 watchpoint_value_print (w->val, &stb);
10457 uiout->field_stream ("new", stb);
10458 uiout->text ("\n");
10459 result = PRINT_UNKNOWN;
10460 break;
10461 default:
10462 result = PRINT_UNKNOWN;
10463 }
10464
10465 return result;
10466 }
10467
10468 /* Implement the "print_mention" breakpoint_ops method for hardware
10469 watchpoints. */
10470
10471 static void
10472 print_mention_watchpoint (struct breakpoint *b)
10473 {
10474 struct watchpoint *w = (struct watchpoint *) b;
10475 struct ui_out *uiout = current_uiout;
10476 const char *tuple_name;
10477
10478 switch (b->type)
10479 {
10480 case bp_watchpoint:
10481 uiout->text ("Watchpoint ");
10482 tuple_name = "wpt";
10483 break;
10484 case bp_hardware_watchpoint:
10485 uiout->text ("Hardware watchpoint ");
10486 tuple_name = "wpt";
10487 break;
10488 case bp_read_watchpoint:
10489 uiout->text ("Hardware read watchpoint ");
10490 tuple_name = "hw-rwpt";
10491 break;
10492 case bp_access_watchpoint:
10493 uiout->text ("Hardware access (read/write) watchpoint ");
10494 tuple_name = "hw-awpt";
10495 break;
10496 default:
10497 internal_error (__FILE__, __LINE__,
10498 _("Invalid hardware watchpoint type."));
10499 }
10500
10501 ui_out_emit_tuple tuple_emitter (uiout, tuple_name);
10502 uiout->field_int ("number", b->number);
10503 uiout->text (": ");
10504 uiout->field_string ("exp", w->exp_string);
10505 }
10506
10507 /* Implement the "print_recreate" breakpoint_ops method for
10508 watchpoints. */
10509
10510 static void
10511 print_recreate_watchpoint (struct breakpoint *b, struct ui_file *fp)
10512 {
10513 struct watchpoint *w = (struct watchpoint *) b;
10514
10515 switch (b->type)
10516 {
10517 case bp_watchpoint:
10518 case bp_hardware_watchpoint:
10519 fprintf_unfiltered (fp, "watch");
10520 break;
10521 case bp_read_watchpoint:
10522 fprintf_unfiltered (fp, "rwatch");
10523 break;
10524 case bp_access_watchpoint:
10525 fprintf_unfiltered (fp, "awatch");
10526 break;
10527 default:
10528 internal_error (__FILE__, __LINE__,
10529 _("Invalid watchpoint type."));
10530 }
10531
10532 fprintf_unfiltered (fp, " %s", w->exp_string);
10533 print_recreate_thread (b, fp);
10534 }
10535
10536 /* Implement the "explains_signal" breakpoint_ops method for
10537 watchpoints. */
10538
10539 static int
10540 explains_signal_watchpoint (struct breakpoint *b, enum gdb_signal sig)
10541 {
10542 /* A software watchpoint cannot cause a signal other than
10543 GDB_SIGNAL_TRAP. */
10544 if (b->type == bp_watchpoint && sig != GDB_SIGNAL_TRAP)
10545 return 0;
10546
10547 return 1;
10548 }
10549
10550 /* The breakpoint_ops structure to be used in hardware watchpoints. */
10551
10552 static struct breakpoint_ops watchpoint_breakpoint_ops;
10553
10554 /* Implement the "insert" breakpoint_ops method for
10555 masked hardware watchpoints. */
10556
10557 static int
10558 insert_masked_watchpoint (struct bp_location *bl)
10559 {
10560 struct watchpoint *w = (struct watchpoint *) bl->owner;
10561
10562 return target_insert_mask_watchpoint (bl->address, w->hw_wp_mask,
10563 bl->watchpoint_type);
10564 }
10565
10566 /* Implement the "remove" breakpoint_ops method for
10567 masked hardware watchpoints. */
10568
10569 static int
10570 remove_masked_watchpoint (struct bp_location *bl, enum remove_bp_reason reason)
10571 {
10572 struct watchpoint *w = (struct watchpoint *) bl->owner;
10573
10574 return target_remove_mask_watchpoint (bl->address, w->hw_wp_mask,
10575 bl->watchpoint_type);
10576 }
10577
10578 /* Implement the "resources_needed" breakpoint_ops method for
10579 masked hardware watchpoints. */
10580
10581 static int
10582 resources_needed_masked_watchpoint (const struct bp_location *bl)
10583 {
10584 struct watchpoint *w = (struct watchpoint *) bl->owner;
10585
10586 return target_masked_watch_num_registers (bl->address, w->hw_wp_mask);
10587 }
10588
10589 /* Implement the "works_in_software_mode" breakpoint_ops method for
10590 masked hardware watchpoints. */
10591
10592 static int
10593 works_in_software_mode_masked_watchpoint (const struct breakpoint *b)
10594 {
10595 return 0;
10596 }
10597
10598 /* Implement the "print_it" breakpoint_ops method for
10599 masked hardware watchpoints. */
10600
10601 static enum print_stop_action
10602 print_it_masked_watchpoint (bpstat bs)
10603 {
10604 struct breakpoint *b = bs->breakpoint_at;
10605 struct ui_out *uiout = current_uiout;
10606
10607 /* Masked watchpoints have only one location. */
10608 gdb_assert (b->loc && b->loc->next == NULL);
10609
10610 annotate_watchpoint (b->number);
10611 maybe_print_thread_hit_breakpoint (uiout);
10612
10613 switch (b->type)
10614 {
10615 case bp_hardware_watchpoint:
10616 if (uiout->is_mi_like_p ())
10617 uiout->field_string
10618 ("reason", async_reason_lookup (EXEC_ASYNC_WATCHPOINT_TRIGGER));
10619 break;
10620
10621 case bp_read_watchpoint:
10622 if (uiout->is_mi_like_p ())
10623 uiout->field_string
10624 ("reason", async_reason_lookup (EXEC_ASYNC_READ_WATCHPOINT_TRIGGER));
10625 break;
10626
10627 case bp_access_watchpoint:
10628 if (uiout->is_mi_like_p ())
10629 uiout->field_string
10630 ("reason",
10631 async_reason_lookup (EXEC_ASYNC_ACCESS_WATCHPOINT_TRIGGER));
10632 break;
10633 default:
10634 internal_error (__FILE__, __LINE__,
10635 _("Invalid hardware watchpoint type."));
10636 }
10637
10638 mention (b);
10639 uiout->text (_("\n\
10640 Check the underlying instruction at PC for the memory\n\
10641 address and value which triggered this watchpoint.\n"));
10642 uiout->text ("\n");
10643
10644 /* More than one watchpoint may have been triggered. */
10645 return PRINT_UNKNOWN;
10646 }
10647
10648 /* Implement the "print_one_detail" breakpoint_ops method for
10649 masked hardware watchpoints. */
10650
10651 static void
10652 print_one_detail_masked_watchpoint (const struct breakpoint *b,
10653 struct ui_out *uiout)
10654 {
10655 struct watchpoint *w = (struct watchpoint *) b;
10656
10657 /* Masked watchpoints have only one location. */
10658 gdb_assert (b->loc && b->loc->next == NULL);
10659
10660 uiout->text ("\tmask ");
10661 uiout->field_core_addr ("mask", b->loc->gdbarch, w->hw_wp_mask);
10662 uiout->text ("\n");
10663 }
10664
10665 /* Implement the "print_mention" breakpoint_ops method for
10666 masked hardware watchpoints. */
10667
10668 static void
10669 print_mention_masked_watchpoint (struct breakpoint *b)
10670 {
10671 struct watchpoint *w = (struct watchpoint *) b;
10672 struct ui_out *uiout = current_uiout;
10673 const char *tuple_name;
10674
10675 switch (b->type)
10676 {
10677 case bp_hardware_watchpoint:
10678 uiout->text ("Masked hardware watchpoint ");
10679 tuple_name = "wpt";
10680 break;
10681 case bp_read_watchpoint:
10682 uiout->text ("Masked hardware read watchpoint ");
10683 tuple_name = "hw-rwpt";
10684 break;
10685 case bp_access_watchpoint:
10686 uiout->text ("Masked hardware access (read/write) watchpoint ");
10687 tuple_name = "hw-awpt";
10688 break;
10689 default:
10690 internal_error (__FILE__, __LINE__,
10691 _("Invalid hardware watchpoint type."));
10692 }
10693
10694 ui_out_emit_tuple tuple_emitter (uiout, tuple_name);
10695 uiout->field_int ("number", b->number);
10696 uiout->text (": ");
10697 uiout->field_string ("exp", w->exp_string);
10698 }
10699
10700 /* Implement the "print_recreate" breakpoint_ops method for
10701 masked hardware watchpoints. */
10702
10703 static void
10704 print_recreate_masked_watchpoint (struct breakpoint *b, struct ui_file *fp)
10705 {
10706 struct watchpoint *w = (struct watchpoint *) b;
10707 char tmp[40];
10708
10709 switch (b->type)
10710 {
10711 case bp_hardware_watchpoint:
10712 fprintf_unfiltered (fp, "watch");
10713 break;
10714 case bp_read_watchpoint:
10715 fprintf_unfiltered (fp, "rwatch");
10716 break;
10717 case bp_access_watchpoint:
10718 fprintf_unfiltered (fp, "awatch");
10719 break;
10720 default:
10721 internal_error (__FILE__, __LINE__,
10722 _("Invalid hardware watchpoint type."));
10723 }
10724
10725 sprintf_vma (tmp, w->hw_wp_mask);
10726 fprintf_unfiltered (fp, " %s mask 0x%s", w->exp_string, tmp);
10727 print_recreate_thread (b, fp);
10728 }
10729
10730 /* The breakpoint_ops structure to be used in masked hardware watchpoints. */
10731
10732 static struct breakpoint_ops masked_watchpoint_breakpoint_ops;
10733
10734 /* Tell whether the given watchpoint is a masked hardware watchpoint. */
10735
10736 static int
10737 is_masked_watchpoint (const struct breakpoint *b)
10738 {
10739 return b->ops == &masked_watchpoint_breakpoint_ops;
10740 }
10741
10742 /* accessflag: hw_write: watch write,
10743 hw_read: watch read,
10744 hw_access: watch access (read or write) */
10745 static void
10746 watch_command_1 (const char *arg, int accessflag, int from_tty,
10747 int just_location, int internal)
10748 {
10749 struct breakpoint *scope_breakpoint = NULL;
10750 const struct block *exp_valid_block = NULL, *cond_exp_valid_block = NULL;
10751 struct value *val, *mark, *result;
10752 int saved_bitpos = 0, saved_bitsize = 0;
10753 const char *exp_start = NULL;
10754 const char *exp_end = NULL;
10755 const char *tok, *end_tok;
10756 int toklen = -1;
10757 const char *cond_start = NULL;
10758 const char *cond_end = NULL;
10759 enum bptype bp_type;
10760 int thread = -1;
10761 int pc = 0;
10762 /* Flag to indicate whether we are going to use masks for
10763 the hardware watchpoint. */
10764 int use_mask = 0;
10765 CORE_ADDR mask = 0;
10766 char *expression;
10767 struct cleanup *back_to;
10768
10769 /* Make sure that we actually have parameters to parse. */
10770 if (arg != NULL && arg[0] != '\0')
10771 {
10772 const char *value_start;
10773
10774 exp_end = arg + strlen (arg);
10775
10776 /* Look for "parameter value" pairs at the end
10777 of the arguments string. */
10778 for (tok = exp_end - 1; tok > arg; tok--)
10779 {
10780 /* Skip whitespace at the end of the argument list. */
10781 while (tok > arg && (*tok == ' ' || *tok == '\t'))
10782 tok--;
10783
10784 /* Find the beginning of the last token.
10785 This is the value of the parameter. */
10786 while (tok > arg && (*tok != ' ' && *tok != '\t'))
10787 tok--;
10788 value_start = tok + 1;
10789
10790 /* Skip whitespace. */
10791 while (tok > arg && (*tok == ' ' || *tok == '\t'))
10792 tok--;
10793
10794 end_tok = tok;
10795
10796 /* Find the beginning of the second to last token.
10797 This is the parameter itself. */
10798 while (tok > arg && (*tok != ' ' && *tok != '\t'))
10799 tok--;
10800 tok++;
10801 toklen = end_tok - tok + 1;
10802
10803 if (toklen == 6 && startswith (tok, "thread"))
10804 {
10805 struct thread_info *thr;
10806 /* At this point we've found a "thread" token, which means
10807 the user is trying to set a watchpoint that triggers
10808 only in a specific thread. */
10809 const char *endp;
10810
10811 if (thread != -1)
10812 error(_("You can specify only one thread."));
10813
10814 /* Extract the thread ID from the next token. */
10815 thr = parse_thread_id (value_start, &endp);
10816
10817 /* Check if the user provided a valid thread ID. */
10818 if (*endp != ' ' && *endp != '\t' && *endp != '\0')
10819 invalid_thread_id_error (value_start);
10820
10821 thread = thr->global_num;
10822 }
10823 else if (toklen == 4 && startswith (tok, "mask"))
10824 {
10825 /* We've found a "mask" token, which means the user wants to
10826 create a hardware watchpoint that is going to have the mask
10827 facility. */
10828 struct value *mask_value, *mark;
10829
10830 if (use_mask)
10831 error(_("You can specify only one mask."));
10832
10833 use_mask = just_location = 1;
10834
10835 mark = value_mark ();
10836 mask_value = parse_to_comma_and_eval (&value_start);
10837 mask = value_as_address (mask_value);
10838 value_free_to_mark (mark);
10839 }
10840 else
10841 /* We didn't recognize what we found. We should stop here. */
10842 break;
10843
10844 /* Truncate the string and get rid of the "parameter value" pair before
10845 the arguments string is parsed by the parse_exp_1 function. */
10846 exp_end = tok;
10847 }
10848 }
10849 else
10850 exp_end = arg;
10851
10852 /* Parse the rest of the arguments. From here on out, everything
10853 is in terms of a newly allocated string instead of the original
10854 ARG. */
10855 innermost_block = NULL;
10856 expression = savestring (arg, exp_end - arg);
10857 back_to = make_cleanup (xfree, expression);
10858 exp_start = arg = expression;
10859 expression_up exp = parse_exp_1 (&arg, 0, 0, 0);
10860 exp_end = arg;
10861 /* Remove trailing whitespace from the expression before saving it.
10862 This makes the eventual display of the expression string a bit
10863 prettier. */
10864 while (exp_end > exp_start && (exp_end[-1] == ' ' || exp_end[-1] == '\t'))
10865 --exp_end;
10866
10867 /* Checking if the expression is not constant. */
10868 if (watchpoint_exp_is_const (exp.get ()))
10869 {
10870 int len;
10871
10872 len = exp_end - exp_start;
10873 while (len > 0 && isspace (exp_start[len - 1]))
10874 len--;
10875 error (_("Cannot watch constant value `%.*s'."), len, exp_start);
10876 }
10877
10878 exp_valid_block = innermost_block;
10879 mark = value_mark ();
10880 fetch_subexp_value (exp.get (), &pc, &val, &result, NULL, just_location);
10881
10882 if (val != NULL && just_location)
10883 {
10884 saved_bitpos = value_bitpos (val);
10885 saved_bitsize = value_bitsize (val);
10886 }
10887
10888 if (just_location)
10889 {
10890 int ret;
10891
10892 exp_valid_block = NULL;
10893 val = value_addr (result);
10894 release_value (val);
10895 value_free_to_mark (mark);
10896
10897 if (use_mask)
10898 {
10899 ret = target_masked_watch_num_registers (value_as_address (val),
10900 mask);
10901 if (ret == -1)
10902 error (_("This target does not support masked watchpoints."));
10903 else if (ret == -2)
10904 error (_("Invalid mask or memory region."));
10905 }
10906 }
10907 else if (val != NULL)
10908 release_value (val);
10909
10910 tok = skip_spaces (arg);
10911 end_tok = skip_to_space (tok);
10912
10913 toklen = end_tok - tok;
10914 if (toklen >= 1 && strncmp (tok, "if", toklen) == 0)
10915 {
10916 innermost_block = NULL;
10917 tok = cond_start = end_tok + 1;
10918 parse_exp_1 (&tok, 0, 0, 0);
10919
10920 /* The watchpoint expression may not be local, but the condition
10921 may still be. E.g.: `watch global if local > 0'. */
10922 cond_exp_valid_block = innermost_block;
10923
10924 cond_end = tok;
10925 }
10926 if (*tok)
10927 error (_("Junk at end of command."));
10928
10929 frame_info *wp_frame = block_innermost_frame (exp_valid_block);
10930
10931 /* Save this because create_internal_breakpoint below invalidates
10932 'wp_frame'. */
10933 frame_id watchpoint_frame = get_frame_id (wp_frame);
10934
10935 /* If the expression is "local", then set up a "watchpoint scope"
10936 breakpoint at the point where we've left the scope of the watchpoint
10937 expression. Create the scope breakpoint before the watchpoint, so
10938 that we will encounter it first in bpstat_stop_status. */
10939 if (exp_valid_block != NULL && wp_frame != NULL)
10940 {
10941 frame_id caller_frame_id = frame_unwind_caller_id (wp_frame);
10942
10943 if (frame_id_p (caller_frame_id))
10944 {
10945 gdbarch *caller_arch = frame_unwind_caller_arch (wp_frame);
10946 CORE_ADDR caller_pc = frame_unwind_caller_pc (wp_frame);
10947
10948 scope_breakpoint
10949 = create_internal_breakpoint (caller_arch, caller_pc,
10950 bp_watchpoint_scope,
10951 &momentary_breakpoint_ops);
10952
10953 /* create_internal_breakpoint could invalidate WP_FRAME. */
10954 wp_frame = NULL;
10955
10956 scope_breakpoint->enable_state = bp_enabled;
10957
10958 /* Automatically delete the breakpoint when it hits. */
10959 scope_breakpoint->disposition = disp_del;
10960
10961 /* Only break in the proper frame (help with recursion). */
10962 scope_breakpoint->frame_id = caller_frame_id;
10963
10964 /* Set the address at which we will stop. */
10965 scope_breakpoint->loc->gdbarch = caller_arch;
10966 scope_breakpoint->loc->requested_address = caller_pc;
10967 scope_breakpoint->loc->address
10968 = adjust_breakpoint_address (scope_breakpoint->loc->gdbarch,
10969 scope_breakpoint->loc->requested_address,
10970 scope_breakpoint->type);
10971 }
10972 }
10973
10974 /* Now set up the breakpoint. We create all watchpoints as hardware
10975 watchpoints here even if hardware watchpoints are turned off, a call
10976 to update_watchpoint later in this function will cause the type to
10977 drop back to bp_watchpoint (software watchpoint) if required. */
10978
10979 if (accessflag == hw_read)
10980 bp_type = bp_read_watchpoint;
10981 else if (accessflag == hw_access)
10982 bp_type = bp_access_watchpoint;
10983 else
10984 bp_type = bp_hardware_watchpoint;
10985
10986 std::unique_ptr<watchpoint> w (new watchpoint ());
10987
10988 if (use_mask)
10989 init_raw_breakpoint_without_location (w.get (), NULL, bp_type,
10990 &masked_watchpoint_breakpoint_ops);
10991 else
10992 init_raw_breakpoint_without_location (w.get (), NULL, bp_type,
10993 &watchpoint_breakpoint_ops);
10994 w->thread = thread;
10995 w->disposition = disp_donttouch;
10996 w->pspace = current_program_space;
10997 w->exp = std::move (exp);
10998 w->exp_valid_block = exp_valid_block;
10999 w->cond_exp_valid_block = cond_exp_valid_block;
11000 if (just_location)
11001 {
11002 struct type *t = value_type (val);
11003 CORE_ADDR addr = value_as_address (val);
11004
11005 w->exp_string_reparse
11006 = current_language->la_watch_location_expression (t, addr).release ();
11007
11008 w->exp_string = xstrprintf ("-location %.*s",
11009 (int) (exp_end - exp_start), exp_start);
11010 }
11011 else
11012 w->exp_string = savestring (exp_start, exp_end - exp_start);
11013
11014 if (use_mask)
11015 {
11016 w->hw_wp_mask = mask;
11017 }
11018 else
11019 {
11020 w->val = val;
11021 w->val_bitpos = saved_bitpos;
11022 w->val_bitsize = saved_bitsize;
11023 w->val_valid = 1;
11024 }
11025
11026 if (cond_start)
11027 w->cond_string = savestring (cond_start, cond_end - cond_start);
11028 else
11029 w->cond_string = 0;
11030
11031 if (frame_id_p (watchpoint_frame))
11032 {
11033 w->watchpoint_frame = watchpoint_frame;
11034 w->watchpoint_thread = inferior_ptid;
11035 }
11036 else
11037 {
11038 w->watchpoint_frame = null_frame_id;
11039 w->watchpoint_thread = null_ptid;
11040 }
11041
11042 if (scope_breakpoint != NULL)
11043 {
11044 /* The scope breakpoint is related to the watchpoint. We will
11045 need to act on them together. */
11046 w->related_breakpoint = scope_breakpoint;
11047 scope_breakpoint->related_breakpoint = w.get ();
11048 }
11049
11050 if (!just_location)
11051 value_free_to_mark (mark);
11052
11053 /* Finally update the new watchpoint. This creates the locations
11054 that should be inserted. */
11055 update_watchpoint (w.get (), 1);
11056
11057 install_breakpoint (internal, std::move (w), 1);
11058 do_cleanups (back_to);
11059 }
11060
11061 /* Return count of debug registers needed to watch the given expression.
11062 If the watchpoint cannot be handled in hardware return zero. */
11063
11064 static int
11065 can_use_hardware_watchpoint (struct value *v)
11066 {
11067 int found_memory_cnt = 0;
11068 struct value *head = v;
11069
11070 /* Did the user specifically forbid us to use hardware watchpoints? */
11071 if (!can_use_hw_watchpoints)
11072 return 0;
11073
11074 /* Make sure that the value of the expression depends only upon
11075 memory contents, and values computed from them within GDB. If we
11076 find any register references or function calls, we can't use a
11077 hardware watchpoint.
11078
11079 The idea here is that evaluating an expression generates a series
11080 of values, one holding the value of every subexpression. (The
11081 expression a*b+c has five subexpressions: a, b, a*b, c, and
11082 a*b+c.) GDB's values hold almost enough information to establish
11083 the criteria given above --- they identify memory lvalues,
11084 register lvalues, computed values, etcetera. So we can evaluate
11085 the expression, and then scan the chain of values that leaves
11086 behind to decide whether we can detect any possible change to the
11087 expression's final value using only hardware watchpoints.
11088
11089 However, I don't think that the values returned by inferior
11090 function calls are special in any way. So this function may not
11091 notice that an expression involving an inferior function call
11092 can't be watched with hardware watchpoints. FIXME. */
11093 for (; v; v = value_next (v))
11094 {
11095 if (VALUE_LVAL (v) == lval_memory)
11096 {
11097 if (v != head && value_lazy (v))
11098 /* A lazy memory lvalue in the chain is one that GDB never
11099 needed to fetch; we either just used its address (e.g.,
11100 `a' in `a.b') or we never needed it at all (e.g., `a'
11101 in `a,b'). This doesn't apply to HEAD; if that is
11102 lazy then it was not readable, but watch it anyway. */
11103 ;
11104 else
11105 {
11106 /* Ahh, memory we actually used! Check if we can cover
11107 it with hardware watchpoints. */
11108 struct type *vtype = check_typedef (value_type (v));
11109
11110 /* We only watch structs and arrays if user asked for it
11111 explicitly, never if they just happen to appear in a
11112 middle of some value chain. */
11113 if (v == head
11114 || (TYPE_CODE (vtype) != TYPE_CODE_STRUCT
11115 && TYPE_CODE (vtype) != TYPE_CODE_ARRAY))
11116 {
11117 CORE_ADDR vaddr = value_address (v);
11118 int len;
11119 int num_regs;
11120
11121 len = (target_exact_watchpoints
11122 && is_scalar_type_recursive (vtype))?
11123 1 : TYPE_LENGTH (value_type (v));
11124
11125 num_regs = target_region_ok_for_hw_watchpoint (vaddr, len);
11126 if (!num_regs)
11127 return 0;
11128 else
11129 found_memory_cnt += num_regs;
11130 }
11131 }
11132 }
11133 else if (VALUE_LVAL (v) != not_lval
11134 && deprecated_value_modifiable (v) == 0)
11135 return 0; /* These are values from the history (e.g., $1). */
11136 else if (VALUE_LVAL (v) == lval_register)
11137 return 0; /* Cannot watch a register with a HW watchpoint. */
11138 }
11139
11140 /* The expression itself looks suitable for using a hardware
11141 watchpoint, but give the target machine a chance to reject it. */
11142 return found_memory_cnt;
11143 }
11144
11145 void
11146 watch_command_wrapper (const char *arg, int from_tty, int internal)
11147 {
11148 watch_command_1 (arg, hw_write, from_tty, 0, internal);
11149 }
11150
11151 /* A helper function that looks for the "-location" argument and then
11152 calls watch_command_1. */
11153
11154 static void
11155 watch_maybe_just_location (char *arg, int accessflag, int from_tty)
11156 {
11157 int just_location = 0;
11158
11159 if (arg
11160 && (check_for_argument (&arg, "-location", sizeof ("-location") - 1)
11161 || check_for_argument (&arg, "-l", sizeof ("-l") - 1)))
11162 {
11163 arg = skip_spaces (arg);
11164 just_location = 1;
11165 }
11166
11167 watch_command_1 (arg, accessflag, from_tty, just_location, 0);
11168 }
11169
11170 static void
11171 watch_command (char *arg, int from_tty)
11172 {
11173 watch_maybe_just_location (arg, hw_write, from_tty);
11174 }
11175
11176 void
11177 rwatch_command_wrapper (const char *arg, int from_tty, int internal)
11178 {
11179 watch_command_1 (arg, hw_read, from_tty, 0, internal);
11180 }
11181
11182 static void
11183 rwatch_command (char *arg, int from_tty)
11184 {
11185 watch_maybe_just_location (arg, hw_read, from_tty);
11186 }
11187
11188 void
11189 awatch_command_wrapper (const char *arg, int from_tty, int internal)
11190 {
11191 watch_command_1 (arg, hw_access, from_tty, 0, internal);
11192 }
11193
11194 static void
11195 awatch_command (char *arg, int from_tty)
11196 {
11197 watch_maybe_just_location (arg, hw_access, from_tty);
11198 }
11199 \f
11200
11201 /* Data for the FSM that manages the until(location)/advance commands
11202 in infcmd.c. Here because it uses the mechanisms of
11203 breakpoints. */
11204
11205 struct until_break_fsm
11206 {
11207 /* The base class. */
11208 struct thread_fsm thread_fsm;
11209
11210 /* The thread that as current when the command was executed. */
11211 int thread;
11212
11213 /* The breakpoint set at the destination location. */
11214 struct breakpoint *location_breakpoint;
11215
11216 /* Breakpoint set at the return address in the caller frame. May be
11217 NULL. */
11218 struct breakpoint *caller_breakpoint;
11219 };
11220
11221 static void until_break_fsm_clean_up (struct thread_fsm *self,
11222 struct thread_info *thread);
11223 static int until_break_fsm_should_stop (struct thread_fsm *self,
11224 struct thread_info *thread);
11225 static enum async_reply_reason
11226 until_break_fsm_async_reply_reason (struct thread_fsm *self);
11227
11228 /* until_break_fsm's vtable. */
11229
11230 static struct thread_fsm_ops until_break_fsm_ops =
11231 {
11232 NULL, /* dtor */
11233 until_break_fsm_clean_up,
11234 until_break_fsm_should_stop,
11235 NULL, /* return_value */
11236 until_break_fsm_async_reply_reason,
11237 };
11238
11239 /* Allocate a new until_break_command_fsm. */
11240
11241 static struct until_break_fsm *
11242 new_until_break_fsm (struct interp *cmd_interp, int thread,
11243 struct breakpoint *location_breakpoint,
11244 struct breakpoint *caller_breakpoint)
11245 {
11246 struct until_break_fsm *sm;
11247
11248 sm = XCNEW (struct until_break_fsm);
11249 thread_fsm_ctor (&sm->thread_fsm, &until_break_fsm_ops, cmd_interp);
11250
11251 sm->thread = thread;
11252 sm->location_breakpoint = location_breakpoint;
11253 sm->caller_breakpoint = caller_breakpoint;
11254
11255 return sm;
11256 }
11257
11258 /* Implementation of the 'should_stop' FSM method for the
11259 until(location)/advance commands. */
11260
11261 static int
11262 until_break_fsm_should_stop (struct thread_fsm *self,
11263 struct thread_info *tp)
11264 {
11265 struct until_break_fsm *sm = (struct until_break_fsm *) self;
11266
11267 if (bpstat_find_breakpoint (tp->control.stop_bpstat,
11268 sm->location_breakpoint) != NULL
11269 || (sm->caller_breakpoint != NULL
11270 && bpstat_find_breakpoint (tp->control.stop_bpstat,
11271 sm->caller_breakpoint) != NULL))
11272 thread_fsm_set_finished (self);
11273
11274 return 1;
11275 }
11276
11277 /* Implementation of the 'clean_up' FSM method for the
11278 until(location)/advance commands. */
11279
11280 static void
11281 until_break_fsm_clean_up (struct thread_fsm *self,
11282 struct thread_info *thread)
11283 {
11284 struct until_break_fsm *sm = (struct until_break_fsm *) self;
11285
11286 /* Clean up our temporary breakpoints. */
11287 if (sm->location_breakpoint != NULL)
11288 {
11289 delete_breakpoint (sm->location_breakpoint);
11290 sm->location_breakpoint = NULL;
11291 }
11292 if (sm->caller_breakpoint != NULL)
11293 {
11294 delete_breakpoint (sm->caller_breakpoint);
11295 sm->caller_breakpoint = NULL;
11296 }
11297 delete_longjmp_breakpoint (sm->thread);
11298 }
11299
11300 /* Implementation of the 'async_reply_reason' FSM method for the
11301 until(location)/advance commands. */
11302
11303 static enum async_reply_reason
11304 until_break_fsm_async_reply_reason (struct thread_fsm *self)
11305 {
11306 return EXEC_ASYNC_LOCATION_REACHED;
11307 }
11308
11309 void
11310 until_break_command (const char *arg, int from_tty, int anywhere)
11311 {
11312 struct frame_info *frame;
11313 struct gdbarch *frame_gdbarch;
11314 struct frame_id stack_frame_id;
11315 struct frame_id caller_frame_id;
11316 struct breakpoint *location_breakpoint;
11317 struct breakpoint *caller_breakpoint = NULL;
11318 struct cleanup *old_chain;
11319 int thread;
11320 struct thread_info *tp;
11321 struct until_break_fsm *sm;
11322
11323 clear_proceed_status (0);
11324
11325 /* Set a breakpoint where the user wants it and at return from
11326 this function. */
11327
11328 event_location_up location = string_to_event_location (&arg, current_language);
11329
11330 std::vector<symtab_and_line> sals
11331 = (last_displayed_sal_is_valid ()
11332 ? decode_line_1 (location.get (), DECODE_LINE_FUNFIRSTLINE, NULL,
11333 get_last_displayed_symtab (),
11334 get_last_displayed_line ())
11335 : decode_line_1 (location.get (), DECODE_LINE_FUNFIRSTLINE,
11336 NULL, (struct symtab *) NULL, 0));
11337
11338 if (sals.size () != 1)
11339 error (_("Couldn't get information on specified line."));
11340
11341 symtab_and_line &sal = sals[0];
11342
11343 if (*arg)
11344 error (_("Junk at end of arguments."));
11345
11346 resolve_sal_pc (&sal);
11347
11348 tp = inferior_thread ();
11349 thread = tp->global_num;
11350
11351 old_chain = make_cleanup (null_cleanup, NULL);
11352
11353 /* Note linespec handling above invalidates the frame chain.
11354 Installing a breakpoint also invalidates the frame chain (as it
11355 may need to switch threads), so do any frame handling before
11356 that. */
11357
11358 frame = get_selected_frame (NULL);
11359 frame_gdbarch = get_frame_arch (frame);
11360 stack_frame_id = get_stack_frame_id (frame);
11361 caller_frame_id = frame_unwind_caller_id (frame);
11362
11363 /* Keep within the current frame, or in frames called by the current
11364 one. */
11365
11366 if (frame_id_p (caller_frame_id))
11367 {
11368 struct symtab_and_line sal2;
11369 struct gdbarch *caller_gdbarch;
11370
11371 sal2 = find_pc_line (frame_unwind_caller_pc (frame), 0);
11372 sal2.pc = frame_unwind_caller_pc (frame);
11373 caller_gdbarch = frame_unwind_caller_arch (frame);
11374 caller_breakpoint = set_momentary_breakpoint (caller_gdbarch,
11375 sal2,
11376 caller_frame_id,
11377 bp_until);
11378 make_cleanup_delete_breakpoint (caller_breakpoint);
11379
11380 set_longjmp_breakpoint (tp, caller_frame_id);
11381 make_cleanup (delete_longjmp_breakpoint_cleanup, &thread);
11382 }
11383
11384 /* set_momentary_breakpoint could invalidate FRAME. */
11385 frame = NULL;
11386
11387 if (anywhere)
11388 /* If the user told us to continue until a specified location,
11389 we don't specify a frame at which we need to stop. */
11390 location_breakpoint = set_momentary_breakpoint (frame_gdbarch, sal,
11391 null_frame_id, bp_until);
11392 else
11393 /* Otherwise, specify the selected frame, because we want to stop
11394 only at the very same frame. */
11395 location_breakpoint = set_momentary_breakpoint (frame_gdbarch, sal,
11396 stack_frame_id, bp_until);
11397 make_cleanup_delete_breakpoint (location_breakpoint);
11398
11399 sm = new_until_break_fsm (command_interp (), tp->global_num,
11400 location_breakpoint, caller_breakpoint);
11401 tp->thread_fsm = &sm->thread_fsm;
11402
11403 discard_cleanups (old_chain);
11404
11405 proceed (-1, GDB_SIGNAL_DEFAULT);
11406 }
11407
11408 /* This function attempts to parse an optional "if <cond>" clause
11409 from the arg string. If one is not found, it returns NULL.
11410
11411 Else, it returns a pointer to the condition string. (It does not
11412 attempt to evaluate the string against a particular block.) And,
11413 it updates arg to point to the first character following the parsed
11414 if clause in the arg string. */
11415
11416 const char *
11417 ep_parse_optional_if_clause (const char **arg)
11418 {
11419 const char *cond_string;
11420
11421 if (((*arg)[0] != 'i') || ((*arg)[1] != 'f') || !isspace ((*arg)[2]))
11422 return NULL;
11423
11424 /* Skip the "if" keyword. */
11425 (*arg) += 2;
11426
11427 /* Skip any extra leading whitespace, and record the start of the
11428 condition string. */
11429 *arg = skip_spaces (*arg);
11430 cond_string = *arg;
11431
11432 /* Assume that the condition occupies the remainder of the arg
11433 string. */
11434 (*arg) += strlen (cond_string);
11435
11436 return cond_string;
11437 }
11438
11439 /* Commands to deal with catching events, such as signals, exceptions,
11440 process start/exit, etc. */
11441
11442 typedef enum
11443 {
11444 catch_fork_temporary, catch_vfork_temporary,
11445 catch_fork_permanent, catch_vfork_permanent
11446 }
11447 catch_fork_kind;
11448
11449 static void
11450 catch_fork_command_1 (char *arg_entry, int from_tty,
11451 struct cmd_list_element *command)
11452 {
11453 const char *arg = arg_entry;
11454 struct gdbarch *gdbarch = get_current_arch ();
11455 const char *cond_string = NULL;
11456 catch_fork_kind fork_kind;
11457 int tempflag;
11458
11459 fork_kind = (catch_fork_kind) (uintptr_t) get_cmd_context (command);
11460 tempflag = (fork_kind == catch_fork_temporary
11461 || fork_kind == catch_vfork_temporary);
11462
11463 if (!arg)
11464 arg = "";
11465 arg = skip_spaces (arg);
11466
11467 /* The allowed syntax is:
11468 catch [v]fork
11469 catch [v]fork if <cond>
11470
11471 First, check if there's an if clause. */
11472 cond_string = ep_parse_optional_if_clause (&arg);
11473
11474 if ((*arg != '\0') && !isspace (*arg))
11475 error (_("Junk at end of arguments."));
11476
11477 /* If this target supports it, create a fork or vfork catchpoint
11478 and enable reporting of such events. */
11479 switch (fork_kind)
11480 {
11481 case catch_fork_temporary:
11482 case catch_fork_permanent:
11483 create_fork_vfork_event_catchpoint (gdbarch, tempflag, cond_string,
11484 &catch_fork_breakpoint_ops);
11485 break;
11486 case catch_vfork_temporary:
11487 case catch_vfork_permanent:
11488 create_fork_vfork_event_catchpoint (gdbarch, tempflag, cond_string,
11489 &catch_vfork_breakpoint_ops);
11490 break;
11491 default:
11492 error (_("unsupported or unknown fork kind; cannot catch it"));
11493 break;
11494 }
11495 }
11496
11497 static void
11498 catch_exec_command_1 (char *arg_entry, int from_tty,
11499 struct cmd_list_element *command)
11500 {
11501 const char *arg = arg_entry;
11502 struct gdbarch *gdbarch = get_current_arch ();
11503 int tempflag;
11504 const char *cond_string = NULL;
11505
11506 tempflag = get_cmd_context (command) == CATCH_TEMPORARY;
11507
11508 if (!arg)
11509 arg = "";
11510 arg = skip_spaces (arg);
11511
11512 /* The allowed syntax is:
11513 catch exec
11514 catch exec if <cond>
11515
11516 First, check if there's an if clause. */
11517 cond_string = ep_parse_optional_if_clause (&arg);
11518
11519 if ((*arg != '\0') && !isspace (*arg))
11520 error (_("Junk at end of arguments."));
11521
11522 std::unique_ptr<exec_catchpoint> c (new exec_catchpoint ());
11523 init_catchpoint (c.get (), gdbarch, tempflag, cond_string,
11524 &catch_exec_breakpoint_ops);
11525 c->exec_pathname = NULL;
11526
11527 install_breakpoint (0, std::move (c), 1);
11528 }
11529
11530 void
11531 init_ada_exception_breakpoint (struct breakpoint *b,
11532 struct gdbarch *gdbarch,
11533 struct symtab_and_line sal,
11534 const char *addr_string,
11535 const struct breakpoint_ops *ops,
11536 int tempflag,
11537 int enabled,
11538 int from_tty)
11539 {
11540 if (from_tty)
11541 {
11542 struct gdbarch *loc_gdbarch = get_sal_arch (sal);
11543 if (!loc_gdbarch)
11544 loc_gdbarch = gdbarch;
11545
11546 describe_other_breakpoints (loc_gdbarch,
11547 sal.pspace, sal.pc, sal.section, -1);
11548 /* FIXME: brobecker/2006-12-28: Actually, re-implement a special
11549 version for exception catchpoints, because two catchpoints
11550 used for different exception names will use the same address.
11551 In this case, a "breakpoint ... also set at..." warning is
11552 unproductive. Besides, the warning phrasing is also a bit
11553 inappropriate, we should use the word catchpoint, and tell
11554 the user what type of catchpoint it is. The above is good
11555 enough for now, though. */
11556 }
11557
11558 init_raw_breakpoint (b, gdbarch, sal, bp_breakpoint, ops);
11559
11560 b->enable_state = enabled ? bp_enabled : bp_disabled;
11561 b->disposition = tempflag ? disp_del : disp_donttouch;
11562 b->location = string_to_event_location (&addr_string,
11563 language_def (language_ada));
11564 b->language = language_ada;
11565 }
11566
11567 static void
11568 catch_command (char *arg, int from_tty)
11569 {
11570 error (_("Catch requires an event name."));
11571 }
11572 \f
11573
11574 static void
11575 tcatch_command (char *arg, int from_tty)
11576 {
11577 error (_("Catch requires an event name."));
11578 }
11579
11580 /* A qsort comparison function that sorts breakpoints in order. */
11581
11582 static int
11583 compare_breakpoints (const void *a, const void *b)
11584 {
11585 const breakpoint_p *ba = (const breakpoint_p *) a;
11586 uintptr_t ua = (uintptr_t) *ba;
11587 const breakpoint_p *bb = (const breakpoint_p *) b;
11588 uintptr_t ub = (uintptr_t) *bb;
11589
11590 if ((*ba)->number < (*bb)->number)
11591 return -1;
11592 else if ((*ba)->number > (*bb)->number)
11593 return 1;
11594
11595 /* Now sort by address, in case we see, e..g, two breakpoints with
11596 the number 0. */
11597 if (ua < ub)
11598 return -1;
11599 return ua > ub ? 1 : 0;
11600 }
11601
11602 /* Delete breakpoints by address or line. */
11603
11604 static void
11605 clear_command (char *arg, int from_tty)
11606 {
11607 struct breakpoint *b, *prev;
11608 VEC(breakpoint_p) *found = 0;
11609 int ix;
11610 int default_match;
11611 int i;
11612 struct cleanup *cleanups = make_cleanup (null_cleanup, NULL);
11613
11614 std::vector<symtab_and_line> decoded_sals;
11615 symtab_and_line last_sal;
11616 gdb::array_view<symtab_and_line> sals;
11617 if (arg)
11618 {
11619 decoded_sals
11620 = decode_line_with_current_source (arg,
11621 (DECODE_LINE_FUNFIRSTLINE
11622 | DECODE_LINE_LIST_MODE));
11623 default_match = 0;
11624 sals = decoded_sals;
11625 }
11626 else
11627 {
11628 /* Set sal's line, symtab, pc, and pspace to the values
11629 corresponding to the last call to print_frame_info. If the
11630 codepoint is not valid, this will set all the fields to 0. */
11631 last_sal = get_last_displayed_sal ();
11632 if (last_sal.symtab == 0)
11633 error (_("No source file specified."));
11634
11635 default_match = 1;
11636 sals = last_sal;
11637 }
11638
11639 /* We don't call resolve_sal_pc here. That's not as bad as it
11640 seems, because all existing breakpoints typically have both
11641 file/line and pc set. So, if clear is given file/line, we can
11642 match this to existing breakpoint without obtaining pc at all.
11643
11644 We only support clearing given the address explicitly
11645 present in breakpoint table. Say, we've set breakpoint
11646 at file:line. There were several PC values for that file:line,
11647 due to optimization, all in one block.
11648
11649 We've picked one PC value. If "clear" is issued with another
11650 PC corresponding to the same file:line, the breakpoint won't
11651 be cleared. We probably can still clear the breakpoint, but
11652 since the other PC value is never presented to user, user
11653 can only find it by guessing, and it does not seem important
11654 to support that. */
11655
11656 /* For each line spec given, delete bps which correspond to it. Do
11657 it in two passes, solely to preserve the current behavior that
11658 from_tty is forced true if we delete more than one
11659 breakpoint. */
11660
11661 found = NULL;
11662 make_cleanup (VEC_cleanup (breakpoint_p), &found);
11663 for (const auto &sal : sals)
11664 {
11665 const char *sal_fullname;
11666
11667 /* If exact pc given, clear bpts at that pc.
11668 If line given (pc == 0), clear all bpts on specified line.
11669 If defaulting, clear all bpts on default line
11670 or at default pc.
11671
11672 defaulting sal.pc != 0 tests to do
11673
11674 0 1 pc
11675 1 1 pc _and_ line
11676 0 0 line
11677 1 0 <can't happen> */
11678
11679 sal_fullname = (sal.symtab == NULL
11680 ? NULL : symtab_to_fullname (sal.symtab));
11681
11682 /* Find all matching breakpoints and add them to 'found'. */
11683 ALL_BREAKPOINTS (b)
11684 {
11685 int match = 0;
11686 /* Are we going to delete b? */
11687 if (b->type != bp_none && !is_watchpoint (b))
11688 {
11689 struct bp_location *loc = b->loc;
11690 for (; loc; loc = loc->next)
11691 {
11692 /* If the user specified file:line, don't allow a PC
11693 match. This matches historical gdb behavior. */
11694 int pc_match = (!sal.explicit_line
11695 && sal.pc
11696 && (loc->pspace == sal.pspace)
11697 && (loc->address == sal.pc)
11698 && (!section_is_overlay (loc->section)
11699 || loc->section == sal.section));
11700 int line_match = 0;
11701
11702 if ((default_match || sal.explicit_line)
11703 && loc->symtab != NULL
11704 && sal_fullname != NULL
11705 && sal.pspace == loc->pspace
11706 && loc->line_number == sal.line
11707 && filename_cmp (symtab_to_fullname (loc->symtab),
11708 sal_fullname) == 0)
11709 line_match = 1;
11710
11711 if (pc_match || line_match)
11712 {
11713 match = 1;
11714 break;
11715 }
11716 }
11717 }
11718
11719 if (match)
11720 VEC_safe_push(breakpoint_p, found, b);
11721 }
11722 }
11723
11724 /* Now go thru the 'found' chain and delete them. */
11725 if (VEC_empty(breakpoint_p, found))
11726 {
11727 if (arg)
11728 error (_("No breakpoint at %s."), arg);
11729 else
11730 error (_("No breakpoint at this line."));
11731 }
11732
11733 /* Remove duplicates from the vec. */
11734 qsort (VEC_address (breakpoint_p, found),
11735 VEC_length (breakpoint_p, found),
11736 sizeof (breakpoint_p),
11737 compare_breakpoints);
11738 prev = VEC_index (breakpoint_p, found, 0);
11739 for (ix = 1; VEC_iterate (breakpoint_p, found, ix, b); ++ix)
11740 {
11741 if (b == prev)
11742 {
11743 VEC_ordered_remove (breakpoint_p, found, ix);
11744 --ix;
11745 }
11746 }
11747
11748 if (VEC_length(breakpoint_p, found) > 1)
11749 from_tty = 1; /* Always report if deleted more than one. */
11750 if (from_tty)
11751 {
11752 if (VEC_length(breakpoint_p, found) == 1)
11753 printf_unfiltered (_("Deleted breakpoint "));
11754 else
11755 printf_unfiltered (_("Deleted breakpoints "));
11756 }
11757
11758 for (ix = 0; VEC_iterate(breakpoint_p, found, ix, b); ix++)
11759 {
11760 if (from_tty)
11761 printf_unfiltered ("%d ", b->number);
11762 delete_breakpoint (b);
11763 }
11764 if (from_tty)
11765 putchar_unfiltered ('\n');
11766
11767 do_cleanups (cleanups);
11768 }
11769 \f
11770 /* Delete breakpoint in BS if they are `delete' breakpoints and
11771 all breakpoints that are marked for deletion, whether hit or not.
11772 This is called after any breakpoint is hit, or after errors. */
11773
11774 void
11775 breakpoint_auto_delete (bpstat bs)
11776 {
11777 struct breakpoint *b, *b_tmp;
11778
11779 for (; bs; bs = bs->next)
11780 if (bs->breakpoint_at
11781 && bs->breakpoint_at->disposition == disp_del
11782 && bs->stop)
11783 delete_breakpoint (bs->breakpoint_at);
11784
11785 ALL_BREAKPOINTS_SAFE (b, b_tmp)
11786 {
11787 if (b->disposition == disp_del_at_next_stop)
11788 delete_breakpoint (b);
11789 }
11790 }
11791
11792 /* A comparison function for bp_location AP and BP being interfaced to
11793 qsort. Sort elements primarily by their ADDRESS (no matter what
11794 does breakpoint_address_is_meaningful say for its OWNER),
11795 secondarily by ordering first permanent elements and
11796 terciarily just ensuring the array is sorted stable way despite
11797 qsort being an unstable algorithm. */
11798
11799 static int
11800 bp_locations_compare (const void *ap, const void *bp)
11801 {
11802 const struct bp_location *a = *(const struct bp_location **) ap;
11803 const struct bp_location *b = *(const struct bp_location **) bp;
11804
11805 if (a->address != b->address)
11806 return (a->address > b->address) - (a->address < b->address);
11807
11808 /* Sort locations at the same address by their pspace number, keeping
11809 locations of the same inferior (in a multi-inferior environment)
11810 grouped. */
11811
11812 if (a->pspace->num != b->pspace->num)
11813 return ((a->pspace->num > b->pspace->num)
11814 - (a->pspace->num < b->pspace->num));
11815
11816 /* Sort permanent breakpoints first. */
11817 if (a->permanent != b->permanent)
11818 return (a->permanent < b->permanent) - (a->permanent > b->permanent);
11819
11820 /* Make the internal GDB representation stable across GDB runs
11821 where A and B memory inside GDB can differ. Breakpoint locations of
11822 the same type at the same address can be sorted in arbitrary order. */
11823
11824 if (a->owner->number != b->owner->number)
11825 return ((a->owner->number > b->owner->number)
11826 - (a->owner->number < b->owner->number));
11827
11828 return (a > b) - (a < b);
11829 }
11830
11831 /* Set bp_locations_placed_address_before_address_max and
11832 bp_locations_shadow_len_after_address_max according to the current
11833 content of the bp_locations array. */
11834
11835 static void
11836 bp_locations_target_extensions_update (void)
11837 {
11838 struct bp_location *bl, **blp_tmp;
11839
11840 bp_locations_placed_address_before_address_max = 0;
11841 bp_locations_shadow_len_after_address_max = 0;
11842
11843 ALL_BP_LOCATIONS (bl, blp_tmp)
11844 {
11845 CORE_ADDR start, end, addr;
11846
11847 if (!bp_location_has_shadow (bl))
11848 continue;
11849
11850 start = bl->target_info.placed_address;
11851 end = start + bl->target_info.shadow_len;
11852
11853 gdb_assert (bl->address >= start);
11854 addr = bl->address - start;
11855 if (addr > bp_locations_placed_address_before_address_max)
11856 bp_locations_placed_address_before_address_max = addr;
11857
11858 /* Zero SHADOW_LEN would not pass bp_location_has_shadow. */
11859
11860 gdb_assert (bl->address < end);
11861 addr = end - bl->address;
11862 if (addr > bp_locations_shadow_len_after_address_max)
11863 bp_locations_shadow_len_after_address_max = addr;
11864 }
11865 }
11866
11867 /* Download tracepoint locations if they haven't been. */
11868
11869 static void
11870 download_tracepoint_locations (void)
11871 {
11872 struct breakpoint *b;
11873 enum tribool can_download_tracepoint = TRIBOOL_UNKNOWN;
11874
11875 scoped_restore_current_pspace_and_thread restore_pspace_thread;
11876
11877 ALL_TRACEPOINTS (b)
11878 {
11879 struct bp_location *bl;
11880 struct tracepoint *t;
11881 int bp_location_downloaded = 0;
11882
11883 if ((b->type == bp_fast_tracepoint
11884 ? !may_insert_fast_tracepoints
11885 : !may_insert_tracepoints))
11886 continue;
11887
11888 if (can_download_tracepoint == TRIBOOL_UNKNOWN)
11889 {
11890 if (target_can_download_tracepoint ())
11891 can_download_tracepoint = TRIBOOL_TRUE;
11892 else
11893 can_download_tracepoint = TRIBOOL_FALSE;
11894 }
11895
11896 if (can_download_tracepoint == TRIBOOL_FALSE)
11897 break;
11898
11899 for (bl = b->loc; bl; bl = bl->next)
11900 {
11901 /* In tracepoint, locations are _never_ duplicated, so
11902 should_be_inserted is equivalent to
11903 unduplicated_should_be_inserted. */
11904 if (!should_be_inserted (bl) || bl->inserted)
11905 continue;
11906
11907 switch_to_program_space_and_thread (bl->pspace);
11908
11909 target_download_tracepoint (bl);
11910
11911 bl->inserted = 1;
11912 bp_location_downloaded = 1;
11913 }
11914 t = (struct tracepoint *) b;
11915 t->number_on_target = b->number;
11916 if (bp_location_downloaded)
11917 observer_notify_breakpoint_modified (b);
11918 }
11919 }
11920
11921 /* Swap the insertion/duplication state between two locations. */
11922
11923 static void
11924 swap_insertion (struct bp_location *left, struct bp_location *right)
11925 {
11926 const int left_inserted = left->inserted;
11927 const int left_duplicate = left->duplicate;
11928 const int left_needs_update = left->needs_update;
11929 const struct bp_target_info left_target_info = left->target_info;
11930
11931 /* Locations of tracepoints can never be duplicated. */
11932 if (is_tracepoint (left->owner))
11933 gdb_assert (!left->duplicate);
11934 if (is_tracepoint (right->owner))
11935 gdb_assert (!right->duplicate);
11936
11937 left->inserted = right->inserted;
11938 left->duplicate = right->duplicate;
11939 left->needs_update = right->needs_update;
11940 left->target_info = right->target_info;
11941 right->inserted = left_inserted;
11942 right->duplicate = left_duplicate;
11943 right->needs_update = left_needs_update;
11944 right->target_info = left_target_info;
11945 }
11946
11947 /* Force the re-insertion of the locations at ADDRESS. This is called
11948 once a new/deleted/modified duplicate location is found and we are evaluating
11949 conditions on the target's side. Such conditions need to be updated on
11950 the target. */
11951
11952 static void
11953 force_breakpoint_reinsertion (struct bp_location *bl)
11954 {
11955 struct bp_location **locp = NULL, **loc2p;
11956 struct bp_location *loc;
11957 CORE_ADDR address = 0;
11958 int pspace_num;
11959
11960 address = bl->address;
11961 pspace_num = bl->pspace->num;
11962
11963 /* This is only meaningful if the target is
11964 evaluating conditions and if the user has
11965 opted for condition evaluation on the target's
11966 side. */
11967 if (gdb_evaluates_breakpoint_condition_p ()
11968 || !target_supports_evaluation_of_breakpoint_conditions ())
11969 return;
11970
11971 /* Flag all breakpoint locations with this address and
11972 the same program space as the location
11973 as "its condition has changed". We need to
11974 update the conditions on the target's side. */
11975 ALL_BP_LOCATIONS_AT_ADDR (loc2p, locp, address)
11976 {
11977 loc = *loc2p;
11978
11979 if (!is_breakpoint (loc->owner)
11980 || pspace_num != loc->pspace->num)
11981 continue;
11982
11983 /* Flag the location appropriately. We use a different state to
11984 let everyone know that we already updated the set of locations
11985 with addr bl->address and program space bl->pspace. This is so
11986 we don't have to keep calling these functions just to mark locations
11987 that have already been marked. */
11988 loc->condition_changed = condition_updated;
11989
11990 /* Free the agent expression bytecode as well. We will compute
11991 it later on. */
11992 loc->cond_bytecode.reset ();
11993 }
11994 }
11995 /* Called whether new breakpoints are created, or existing breakpoints
11996 deleted, to update the global location list and recompute which
11997 locations are duplicate of which.
11998
11999 The INSERT_MODE flag determines whether locations may not, may, or
12000 shall be inserted now. See 'enum ugll_insert_mode' for more
12001 info. */
12002
12003 static void
12004 update_global_location_list (enum ugll_insert_mode insert_mode)
12005 {
12006 struct breakpoint *b;
12007 struct bp_location **locp, *loc;
12008 struct cleanup *cleanups;
12009 /* Last breakpoint location address that was marked for update. */
12010 CORE_ADDR last_addr = 0;
12011 /* Last breakpoint location program space that was marked for update. */
12012 int last_pspace_num = -1;
12013
12014 /* Used in the duplicates detection below. When iterating over all
12015 bp_locations, points to the first bp_location of a given address.
12016 Breakpoints and watchpoints of different types are never
12017 duplicates of each other. Keep one pointer for each type of
12018 breakpoint/watchpoint, so we only need to loop over all locations
12019 once. */
12020 struct bp_location *bp_loc_first; /* breakpoint */
12021 struct bp_location *wp_loc_first; /* hardware watchpoint */
12022 struct bp_location *awp_loc_first; /* access watchpoint */
12023 struct bp_location *rwp_loc_first; /* read watchpoint */
12024
12025 /* Saved former bp_locations array which we compare against the newly
12026 built bp_locations from the current state of ALL_BREAKPOINTS. */
12027 struct bp_location **old_locations, **old_locp;
12028 unsigned old_locations_count;
12029
12030 old_locations = bp_locations;
12031 old_locations_count = bp_locations_count;
12032 bp_locations = NULL;
12033 bp_locations_count = 0;
12034 cleanups = make_cleanup (xfree, old_locations);
12035
12036 ALL_BREAKPOINTS (b)
12037 for (loc = b->loc; loc; loc = loc->next)
12038 bp_locations_count++;
12039
12040 bp_locations = XNEWVEC (struct bp_location *, bp_locations_count);
12041 locp = bp_locations;
12042 ALL_BREAKPOINTS (b)
12043 for (loc = b->loc; loc; loc = loc->next)
12044 *locp++ = loc;
12045 qsort (bp_locations, bp_locations_count, sizeof (*bp_locations),
12046 bp_locations_compare);
12047
12048 bp_locations_target_extensions_update ();
12049
12050 /* Identify bp_location instances that are no longer present in the
12051 new list, and therefore should be freed. Note that it's not
12052 necessary that those locations should be removed from inferior --
12053 if there's another location at the same address (previously
12054 marked as duplicate), we don't need to remove/insert the
12055 location.
12056
12057 LOCP is kept in sync with OLD_LOCP, each pointing to the current
12058 and former bp_location array state respectively. */
12059
12060 locp = bp_locations;
12061 for (old_locp = old_locations;
12062 old_locp < old_locations + old_locations_count;
12063 old_locp++)
12064 {
12065 struct bp_location *old_loc = *old_locp;
12066 struct bp_location **loc2p;
12067
12068 /* Tells if 'old_loc' is found among the new locations. If
12069 not, we have to free it. */
12070 int found_object = 0;
12071 /* Tells if the location should remain inserted in the target. */
12072 int keep_in_target = 0;
12073 int removed = 0;
12074
12075 /* Skip LOCP entries which will definitely never be needed.
12076 Stop either at or being the one matching OLD_LOC. */
12077 while (locp < bp_locations + bp_locations_count
12078 && (*locp)->address < old_loc->address)
12079 locp++;
12080
12081 for (loc2p = locp;
12082 (loc2p < bp_locations + bp_locations_count
12083 && (*loc2p)->address == old_loc->address);
12084 loc2p++)
12085 {
12086 /* Check if this is a new/duplicated location or a duplicated
12087 location that had its condition modified. If so, we want to send
12088 its condition to the target if evaluation of conditions is taking
12089 place there. */
12090 if ((*loc2p)->condition_changed == condition_modified
12091 && (last_addr != old_loc->address
12092 || last_pspace_num != old_loc->pspace->num))
12093 {
12094 force_breakpoint_reinsertion (*loc2p);
12095 last_pspace_num = old_loc->pspace->num;
12096 }
12097
12098 if (*loc2p == old_loc)
12099 found_object = 1;
12100 }
12101
12102 /* We have already handled this address, update it so that we don't
12103 have to go through updates again. */
12104 last_addr = old_loc->address;
12105
12106 /* Target-side condition evaluation: Handle deleted locations. */
12107 if (!found_object)
12108 force_breakpoint_reinsertion (old_loc);
12109
12110 /* If this location is no longer present, and inserted, look if
12111 there's maybe a new location at the same address. If so,
12112 mark that one inserted, and don't remove this one. This is
12113 needed so that we don't have a time window where a breakpoint
12114 at certain location is not inserted. */
12115
12116 if (old_loc->inserted)
12117 {
12118 /* If the location is inserted now, we might have to remove
12119 it. */
12120
12121 if (found_object && should_be_inserted (old_loc))
12122 {
12123 /* The location is still present in the location list,
12124 and still should be inserted. Don't do anything. */
12125 keep_in_target = 1;
12126 }
12127 else
12128 {
12129 /* This location still exists, but it won't be kept in the
12130 target since it may have been disabled. We proceed to
12131 remove its target-side condition. */
12132
12133 /* The location is either no longer present, or got
12134 disabled. See if there's another location at the
12135 same address, in which case we don't need to remove
12136 this one from the target. */
12137
12138 /* OLD_LOC comes from existing struct breakpoint. */
12139 if (breakpoint_address_is_meaningful (old_loc->owner))
12140 {
12141 for (loc2p = locp;
12142 (loc2p < bp_locations + bp_locations_count
12143 && (*loc2p)->address == old_loc->address);
12144 loc2p++)
12145 {
12146 struct bp_location *loc2 = *loc2p;
12147
12148 if (breakpoint_locations_match (loc2, old_loc))
12149 {
12150 /* Read watchpoint locations are switched to
12151 access watchpoints, if the former are not
12152 supported, but the latter are. */
12153 if (is_hardware_watchpoint (old_loc->owner))
12154 {
12155 gdb_assert (is_hardware_watchpoint (loc2->owner));
12156 loc2->watchpoint_type = old_loc->watchpoint_type;
12157 }
12158
12159 /* loc2 is a duplicated location. We need to check
12160 if it should be inserted in case it will be
12161 unduplicated. */
12162 if (loc2 != old_loc
12163 && unduplicated_should_be_inserted (loc2))
12164 {
12165 swap_insertion (old_loc, loc2);
12166 keep_in_target = 1;
12167 break;
12168 }
12169 }
12170 }
12171 }
12172 }
12173
12174 if (!keep_in_target)
12175 {
12176 if (remove_breakpoint (old_loc))
12177 {
12178 /* This is just about all we can do. We could keep
12179 this location on the global list, and try to
12180 remove it next time, but there's no particular
12181 reason why we will succeed next time.
12182
12183 Note that at this point, old_loc->owner is still
12184 valid, as delete_breakpoint frees the breakpoint
12185 only after calling us. */
12186 printf_filtered (_("warning: Error removing "
12187 "breakpoint %d\n"),
12188 old_loc->owner->number);
12189 }
12190 removed = 1;
12191 }
12192 }
12193
12194 if (!found_object)
12195 {
12196 if (removed && target_is_non_stop_p ()
12197 && need_moribund_for_location_type (old_loc))
12198 {
12199 /* This location was removed from the target. In
12200 non-stop mode, a race condition is possible where
12201 we've removed a breakpoint, but stop events for that
12202 breakpoint are already queued and will arrive later.
12203 We apply an heuristic to be able to distinguish such
12204 SIGTRAPs from other random SIGTRAPs: we keep this
12205 breakpoint location for a bit, and will retire it
12206 after we see some number of events. The theory here
12207 is that reporting of events should, "on the average",
12208 be fair, so after a while we'll see events from all
12209 threads that have anything of interest, and no longer
12210 need to keep this breakpoint location around. We
12211 don't hold locations forever so to reduce chances of
12212 mistaking a non-breakpoint SIGTRAP for a breakpoint
12213 SIGTRAP.
12214
12215 The heuristic failing can be disastrous on
12216 decr_pc_after_break targets.
12217
12218 On decr_pc_after_break targets, like e.g., x86-linux,
12219 if we fail to recognize a late breakpoint SIGTRAP,
12220 because events_till_retirement has reached 0 too
12221 soon, we'll fail to do the PC adjustment, and report
12222 a random SIGTRAP to the user. When the user resumes
12223 the inferior, it will most likely immediately crash
12224 with SIGILL/SIGBUS/SIGSEGV, or worse, get silently
12225 corrupted, because of being resumed e.g., in the
12226 middle of a multi-byte instruction, or skipped a
12227 one-byte instruction. This was actually seen happen
12228 on native x86-linux, and should be less rare on
12229 targets that do not support new thread events, like
12230 remote, due to the heuristic depending on
12231 thread_count.
12232
12233 Mistaking a random SIGTRAP for a breakpoint trap
12234 causes similar symptoms (PC adjustment applied when
12235 it shouldn't), but then again, playing with SIGTRAPs
12236 behind the debugger's back is asking for trouble.
12237
12238 Since hardware watchpoint traps are always
12239 distinguishable from other traps, so we don't need to
12240 apply keep hardware watchpoint moribund locations
12241 around. We simply always ignore hardware watchpoint
12242 traps we can no longer explain. */
12243
12244 old_loc->events_till_retirement = 3 * (thread_count () + 1);
12245 old_loc->owner = NULL;
12246
12247 VEC_safe_push (bp_location_p, moribund_locations, old_loc);
12248 }
12249 else
12250 {
12251 old_loc->owner = NULL;
12252 decref_bp_location (&old_loc);
12253 }
12254 }
12255 }
12256
12257 /* Rescan breakpoints at the same address and section, marking the
12258 first one as "first" and any others as "duplicates". This is so
12259 that the bpt instruction is only inserted once. If we have a
12260 permanent breakpoint at the same place as BPT, make that one the
12261 official one, and the rest as duplicates. Permanent breakpoints
12262 are sorted first for the same address.
12263
12264 Do the same for hardware watchpoints, but also considering the
12265 watchpoint's type (regular/access/read) and length. */
12266
12267 bp_loc_first = NULL;
12268 wp_loc_first = NULL;
12269 awp_loc_first = NULL;
12270 rwp_loc_first = NULL;
12271 ALL_BP_LOCATIONS (loc, locp)
12272 {
12273 /* ALL_BP_LOCATIONS bp_location has LOC->OWNER always
12274 non-NULL. */
12275 struct bp_location **loc_first_p;
12276 b = loc->owner;
12277
12278 if (!unduplicated_should_be_inserted (loc)
12279 || !breakpoint_address_is_meaningful (b)
12280 /* Don't detect duplicate for tracepoint locations because they are
12281 never duplicated. See the comments in field `duplicate' of
12282 `struct bp_location'. */
12283 || is_tracepoint (b))
12284 {
12285 /* Clear the condition modification flag. */
12286 loc->condition_changed = condition_unchanged;
12287 continue;
12288 }
12289
12290 if (b->type == bp_hardware_watchpoint)
12291 loc_first_p = &wp_loc_first;
12292 else if (b->type == bp_read_watchpoint)
12293 loc_first_p = &rwp_loc_first;
12294 else if (b->type == bp_access_watchpoint)
12295 loc_first_p = &awp_loc_first;
12296 else
12297 loc_first_p = &bp_loc_first;
12298
12299 if (*loc_first_p == NULL
12300 || (overlay_debugging && loc->section != (*loc_first_p)->section)
12301 || !breakpoint_locations_match (loc, *loc_first_p))
12302 {
12303 *loc_first_p = loc;
12304 loc->duplicate = 0;
12305
12306 if (is_breakpoint (loc->owner) && loc->condition_changed)
12307 {
12308 loc->needs_update = 1;
12309 /* Clear the condition modification flag. */
12310 loc->condition_changed = condition_unchanged;
12311 }
12312 continue;
12313 }
12314
12315
12316 /* This and the above ensure the invariant that the first location
12317 is not duplicated, and is the inserted one.
12318 All following are marked as duplicated, and are not inserted. */
12319 if (loc->inserted)
12320 swap_insertion (loc, *loc_first_p);
12321 loc->duplicate = 1;
12322
12323 /* Clear the condition modification flag. */
12324 loc->condition_changed = condition_unchanged;
12325 }
12326
12327 if (insert_mode == UGLL_INSERT || breakpoints_should_be_inserted_now ())
12328 {
12329 if (insert_mode != UGLL_DONT_INSERT)
12330 insert_breakpoint_locations ();
12331 else
12332 {
12333 /* Even though the caller told us to not insert new
12334 locations, we may still need to update conditions on the
12335 target's side of breakpoints that were already inserted
12336 if the target is evaluating breakpoint conditions. We
12337 only update conditions for locations that are marked
12338 "needs_update". */
12339 update_inserted_breakpoint_locations ();
12340 }
12341 }
12342
12343 if (insert_mode != UGLL_DONT_INSERT)
12344 download_tracepoint_locations ();
12345
12346 do_cleanups (cleanups);
12347 }
12348
12349 void
12350 breakpoint_retire_moribund (void)
12351 {
12352 struct bp_location *loc;
12353 int ix;
12354
12355 for (ix = 0; VEC_iterate (bp_location_p, moribund_locations, ix, loc); ++ix)
12356 if (--(loc->events_till_retirement) == 0)
12357 {
12358 decref_bp_location (&loc);
12359 VEC_unordered_remove (bp_location_p, moribund_locations, ix);
12360 --ix;
12361 }
12362 }
12363
12364 static void
12365 update_global_location_list_nothrow (enum ugll_insert_mode insert_mode)
12366 {
12367
12368 TRY
12369 {
12370 update_global_location_list (insert_mode);
12371 }
12372 CATCH (e, RETURN_MASK_ERROR)
12373 {
12374 }
12375 END_CATCH
12376 }
12377
12378 /* Clear BKP from a BPS. */
12379
12380 static void
12381 bpstat_remove_bp_location (bpstat bps, struct breakpoint *bpt)
12382 {
12383 bpstat bs;
12384
12385 for (bs = bps; bs; bs = bs->next)
12386 if (bs->breakpoint_at == bpt)
12387 {
12388 bs->breakpoint_at = NULL;
12389 bs->old_val = NULL;
12390 /* bs->commands will be freed later. */
12391 }
12392 }
12393
12394 /* Callback for iterate_over_threads. */
12395 static int
12396 bpstat_remove_breakpoint_callback (struct thread_info *th, void *data)
12397 {
12398 struct breakpoint *bpt = (struct breakpoint *) data;
12399
12400 bpstat_remove_bp_location (th->control.stop_bpstat, bpt);
12401 return 0;
12402 }
12403
12404 /* Helper for breakpoint and tracepoint breakpoint_ops->mention
12405 callbacks. */
12406
12407 static void
12408 say_where (struct breakpoint *b)
12409 {
12410 struct value_print_options opts;
12411
12412 get_user_print_options (&opts);
12413
12414 /* i18n: cagney/2005-02-11: Below needs to be merged into a
12415 single string. */
12416 if (b->loc == NULL)
12417 {
12418 /* For pending locations, the output differs slightly based
12419 on b->extra_string. If this is non-NULL, it contains either
12420 a condition or dprintf arguments. */
12421 if (b->extra_string == NULL)
12422 {
12423 printf_filtered (_(" (%s) pending."),
12424 event_location_to_string (b->location.get ()));
12425 }
12426 else if (b->type == bp_dprintf)
12427 {
12428 printf_filtered (_(" (%s,%s) pending."),
12429 event_location_to_string (b->location.get ()),
12430 b->extra_string);
12431 }
12432 else
12433 {
12434 printf_filtered (_(" (%s %s) pending."),
12435 event_location_to_string (b->location.get ()),
12436 b->extra_string);
12437 }
12438 }
12439 else
12440 {
12441 if (opts.addressprint || b->loc->symtab == NULL)
12442 {
12443 printf_filtered (" at ");
12444 fputs_filtered (paddress (b->loc->gdbarch, b->loc->address),
12445 gdb_stdout);
12446 }
12447 if (b->loc->symtab != NULL)
12448 {
12449 /* If there is a single location, we can print the location
12450 more nicely. */
12451 if (b->loc->next == NULL)
12452 printf_filtered (": file %s, line %d.",
12453 symtab_to_filename_for_display (b->loc->symtab),
12454 b->loc->line_number);
12455 else
12456 /* This is not ideal, but each location may have a
12457 different file name, and this at least reflects the
12458 real situation somewhat. */
12459 printf_filtered (": %s.",
12460 event_location_to_string (b->location.get ()));
12461 }
12462
12463 if (b->loc->next)
12464 {
12465 struct bp_location *loc = b->loc;
12466 int n = 0;
12467 for (; loc; loc = loc->next)
12468 ++n;
12469 printf_filtered (" (%d locations)", n);
12470 }
12471 }
12472 }
12473
12474 /* Default bp_location_ops methods. */
12475
12476 static void
12477 bp_location_dtor (struct bp_location *self)
12478 {
12479 xfree (self->function_name);
12480 }
12481
12482 static const struct bp_location_ops bp_location_ops =
12483 {
12484 bp_location_dtor
12485 };
12486
12487 /* Destructor for the breakpoint base class. */
12488
12489 breakpoint::~breakpoint ()
12490 {
12491 xfree (this->cond_string);
12492 xfree (this->extra_string);
12493 xfree (this->filter);
12494 }
12495
12496 static struct bp_location *
12497 base_breakpoint_allocate_location (struct breakpoint *self)
12498 {
12499 return new bp_location (&bp_location_ops, self);
12500 }
12501
12502 static void
12503 base_breakpoint_re_set (struct breakpoint *b)
12504 {
12505 /* Nothing to re-set. */
12506 }
12507
12508 #define internal_error_pure_virtual_called() \
12509 gdb_assert_not_reached ("pure virtual function called")
12510
12511 static int
12512 base_breakpoint_insert_location (struct bp_location *bl)
12513 {
12514 internal_error_pure_virtual_called ();
12515 }
12516
12517 static int
12518 base_breakpoint_remove_location (struct bp_location *bl,
12519 enum remove_bp_reason reason)
12520 {
12521 internal_error_pure_virtual_called ();
12522 }
12523
12524 static int
12525 base_breakpoint_breakpoint_hit (const struct bp_location *bl,
12526 struct address_space *aspace,
12527 CORE_ADDR bp_addr,
12528 const struct target_waitstatus *ws)
12529 {
12530 internal_error_pure_virtual_called ();
12531 }
12532
12533 static void
12534 base_breakpoint_check_status (bpstat bs)
12535 {
12536 /* Always stop. */
12537 }
12538
12539 /* A "works_in_software_mode" breakpoint_ops method that just internal
12540 errors. */
12541
12542 static int
12543 base_breakpoint_works_in_software_mode (const struct breakpoint *b)
12544 {
12545 internal_error_pure_virtual_called ();
12546 }
12547
12548 /* A "resources_needed" breakpoint_ops method that just internal
12549 errors. */
12550
12551 static int
12552 base_breakpoint_resources_needed (const struct bp_location *bl)
12553 {
12554 internal_error_pure_virtual_called ();
12555 }
12556
12557 static enum print_stop_action
12558 base_breakpoint_print_it (bpstat bs)
12559 {
12560 internal_error_pure_virtual_called ();
12561 }
12562
12563 static void
12564 base_breakpoint_print_one_detail (const struct breakpoint *self,
12565 struct ui_out *uiout)
12566 {
12567 /* nothing */
12568 }
12569
12570 static void
12571 base_breakpoint_print_mention (struct breakpoint *b)
12572 {
12573 internal_error_pure_virtual_called ();
12574 }
12575
12576 static void
12577 base_breakpoint_print_recreate (struct breakpoint *b, struct ui_file *fp)
12578 {
12579 internal_error_pure_virtual_called ();
12580 }
12581
12582 static void
12583 base_breakpoint_create_sals_from_location
12584 (const struct event_location *location,
12585 struct linespec_result *canonical,
12586 enum bptype type_wanted)
12587 {
12588 internal_error_pure_virtual_called ();
12589 }
12590
12591 static void
12592 base_breakpoint_create_breakpoints_sal (struct gdbarch *gdbarch,
12593 struct linespec_result *c,
12594 gdb::unique_xmalloc_ptr<char> cond_string,
12595 gdb::unique_xmalloc_ptr<char> extra_string,
12596 enum bptype type_wanted,
12597 enum bpdisp disposition,
12598 int thread,
12599 int task, int ignore_count,
12600 const struct breakpoint_ops *o,
12601 int from_tty, int enabled,
12602 int internal, unsigned flags)
12603 {
12604 internal_error_pure_virtual_called ();
12605 }
12606
12607 static std::vector<symtab_and_line>
12608 base_breakpoint_decode_location (struct breakpoint *b,
12609 const struct event_location *location,
12610 struct program_space *search_pspace)
12611 {
12612 internal_error_pure_virtual_called ();
12613 }
12614
12615 /* The default 'explains_signal' method. */
12616
12617 static int
12618 base_breakpoint_explains_signal (struct breakpoint *b, enum gdb_signal sig)
12619 {
12620 return 1;
12621 }
12622
12623 /* The default "after_condition_true" method. */
12624
12625 static void
12626 base_breakpoint_after_condition_true (struct bpstats *bs)
12627 {
12628 /* Nothing to do. */
12629 }
12630
12631 struct breakpoint_ops base_breakpoint_ops =
12632 {
12633 base_breakpoint_allocate_location,
12634 base_breakpoint_re_set,
12635 base_breakpoint_insert_location,
12636 base_breakpoint_remove_location,
12637 base_breakpoint_breakpoint_hit,
12638 base_breakpoint_check_status,
12639 base_breakpoint_resources_needed,
12640 base_breakpoint_works_in_software_mode,
12641 base_breakpoint_print_it,
12642 NULL,
12643 base_breakpoint_print_one_detail,
12644 base_breakpoint_print_mention,
12645 base_breakpoint_print_recreate,
12646 base_breakpoint_create_sals_from_location,
12647 base_breakpoint_create_breakpoints_sal,
12648 base_breakpoint_decode_location,
12649 base_breakpoint_explains_signal,
12650 base_breakpoint_after_condition_true,
12651 };
12652
12653 /* Default breakpoint_ops methods. */
12654
12655 static void
12656 bkpt_re_set (struct breakpoint *b)
12657 {
12658 /* FIXME: is this still reachable? */
12659 if (breakpoint_event_location_empty_p (b))
12660 {
12661 /* Anything without a location can't be re-set. */
12662 delete_breakpoint (b);
12663 return;
12664 }
12665
12666 breakpoint_re_set_default (b);
12667 }
12668
12669 static int
12670 bkpt_insert_location (struct bp_location *bl)
12671 {
12672 CORE_ADDR addr = bl->target_info.reqstd_address;
12673
12674 bl->target_info.kind = breakpoint_kind (bl, &addr);
12675 bl->target_info.placed_address = addr;
12676
12677 if (bl->loc_type == bp_loc_hardware_breakpoint)
12678 return target_insert_hw_breakpoint (bl->gdbarch, &bl->target_info);
12679 else
12680 return target_insert_breakpoint (bl->gdbarch, &bl->target_info);
12681 }
12682
12683 static int
12684 bkpt_remove_location (struct bp_location *bl, enum remove_bp_reason reason)
12685 {
12686 if (bl->loc_type == bp_loc_hardware_breakpoint)
12687 return target_remove_hw_breakpoint (bl->gdbarch, &bl->target_info);
12688 else
12689 return target_remove_breakpoint (bl->gdbarch, &bl->target_info, reason);
12690 }
12691
12692 static int
12693 bkpt_breakpoint_hit (const struct bp_location *bl,
12694 struct address_space *aspace, CORE_ADDR bp_addr,
12695 const struct target_waitstatus *ws)
12696 {
12697 if (ws->kind != TARGET_WAITKIND_STOPPED
12698 || ws->value.sig != GDB_SIGNAL_TRAP)
12699 return 0;
12700
12701 if (!breakpoint_address_match (bl->pspace->aspace, bl->address,
12702 aspace, bp_addr))
12703 return 0;
12704
12705 if (overlay_debugging /* unmapped overlay section */
12706 && section_is_overlay (bl->section)
12707 && !section_is_mapped (bl->section))
12708 return 0;
12709
12710 return 1;
12711 }
12712
12713 static int
12714 dprintf_breakpoint_hit (const struct bp_location *bl,
12715 struct address_space *aspace, CORE_ADDR bp_addr,
12716 const struct target_waitstatus *ws)
12717 {
12718 if (dprintf_style == dprintf_style_agent
12719 && target_can_run_breakpoint_commands ())
12720 {
12721 /* An agent-style dprintf never causes a stop. If we see a trap
12722 for this address it must be for a breakpoint that happens to
12723 be set at the same address. */
12724 return 0;
12725 }
12726
12727 return bkpt_breakpoint_hit (bl, aspace, bp_addr, ws);
12728 }
12729
12730 static int
12731 bkpt_resources_needed (const struct bp_location *bl)
12732 {
12733 gdb_assert (bl->owner->type == bp_hardware_breakpoint);
12734
12735 return 1;
12736 }
12737
12738 static enum print_stop_action
12739 bkpt_print_it (bpstat bs)
12740 {
12741 struct breakpoint *b;
12742 const struct bp_location *bl;
12743 int bp_temp;
12744 struct ui_out *uiout = current_uiout;
12745
12746 gdb_assert (bs->bp_location_at != NULL);
12747
12748 bl = bs->bp_location_at;
12749 b = bs->breakpoint_at;
12750
12751 bp_temp = b->disposition == disp_del;
12752 if (bl->address != bl->requested_address)
12753 breakpoint_adjustment_warning (bl->requested_address,
12754 bl->address,
12755 b->number, 1);
12756 annotate_breakpoint (b->number);
12757 maybe_print_thread_hit_breakpoint (uiout);
12758
12759 if (bp_temp)
12760 uiout->text ("Temporary breakpoint ");
12761 else
12762 uiout->text ("Breakpoint ");
12763 if (uiout->is_mi_like_p ())
12764 {
12765 uiout->field_string ("reason",
12766 async_reason_lookup (EXEC_ASYNC_BREAKPOINT_HIT));
12767 uiout->field_string ("disp", bpdisp_text (b->disposition));
12768 }
12769 uiout->field_int ("bkptno", b->number);
12770 uiout->text (", ");
12771
12772 return PRINT_SRC_AND_LOC;
12773 }
12774
12775 static void
12776 bkpt_print_mention (struct breakpoint *b)
12777 {
12778 if (current_uiout->is_mi_like_p ())
12779 return;
12780
12781 switch (b->type)
12782 {
12783 case bp_breakpoint:
12784 case bp_gnu_ifunc_resolver:
12785 if (b->disposition == disp_del)
12786 printf_filtered (_("Temporary breakpoint"));
12787 else
12788 printf_filtered (_("Breakpoint"));
12789 printf_filtered (_(" %d"), b->number);
12790 if (b->type == bp_gnu_ifunc_resolver)
12791 printf_filtered (_(" at gnu-indirect-function resolver"));
12792 break;
12793 case bp_hardware_breakpoint:
12794 printf_filtered (_("Hardware assisted breakpoint %d"), b->number);
12795 break;
12796 case bp_dprintf:
12797 printf_filtered (_("Dprintf %d"), b->number);
12798 break;
12799 }
12800
12801 say_where (b);
12802 }
12803
12804 static void
12805 bkpt_print_recreate (struct breakpoint *tp, struct ui_file *fp)
12806 {
12807 if (tp->type == bp_breakpoint && tp->disposition == disp_del)
12808 fprintf_unfiltered (fp, "tbreak");
12809 else if (tp->type == bp_breakpoint)
12810 fprintf_unfiltered (fp, "break");
12811 else if (tp->type == bp_hardware_breakpoint
12812 && tp->disposition == disp_del)
12813 fprintf_unfiltered (fp, "thbreak");
12814 else if (tp->type == bp_hardware_breakpoint)
12815 fprintf_unfiltered (fp, "hbreak");
12816 else
12817 internal_error (__FILE__, __LINE__,
12818 _("unhandled breakpoint type %d"), (int) tp->type);
12819
12820 fprintf_unfiltered (fp, " %s",
12821 event_location_to_string (tp->location.get ()));
12822
12823 /* Print out extra_string if this breakpoint is pending. It might
12824 contain, for example, conditions that were set by the user. */
12825 if (tp->loc == NULL && tp->extra_string != NULL)
12826 fprintf_unfiltered (fp, " %s", tp->extra_string);
12827
12828 print_recreate_thread (tp, fp);
12829 }
12830
12831 static void
12832 bkpt_create_sals_from_location (const struct event_location *location,
12833 struct linespec_result *canonical,
12834 enum bptype type_wanted)
12835 {
12836 create_sals_from_location_default (location, canonical, type_wanted);
12837 }
12838
12839 static void
12840 bkpt_create_breakpoints_sal (struct gdbarch *gdbarch,
12841 struct linespec_result *canonical,
12842 gdb::unique_xmalloc_ptr<char> cond_string,
12843 gdb::unique_xmalloc_ptr<char> extra_string,
12844 enum bptype type_wanted,
12845 enum bpdisp disposition,
12846 int thread,
12847 int task, int ignore_count,
12848 const struct breakpoint_ops *ops,
12849 int from_tty, int enabled,
12850 int internal, unsigned flags)
12851 {
12852 create_breakpoints_sal_default (gdbarch, canonical,
12853 std::move (cond_string),
12854 std::move (extra_string),
12855 type_wanted,
12856 disposition, thread, task,
12857 ignore_count, ops, from_tty,
12858 enabled, internal, flags);
12859 }
12860
12861 static std::vector<symtab_and_line>
12862 bkpt_decode_location (struct breakpoint *b,
12863 const struct event_location *location,
12864 struct program_space *search_pspace)
12865 {
12866 return decode_location_default (b, location, search_pspace);
12867 }
12868
12869 /* Virtual table for internal breakpoints. */
12870
12871 static void
12872 internal_bkpt_re_set (struct breakpoint *b)
12873 {
12874 switch (b->type)
12875 {
12876 /* Delete overlay event and longjmp master breakpoints; they
12877 will be reset later by breakpoint_re_set. */
12878 case bp_overlay_event:
12879 case bp_longjmp_master:
12880 case bp_std_terminate_master:
12881 case bp_exception_master:
12882 delete_breakpoint (b);
12883 break;
12884
12885 /* This breakpoint is special, it's set up when the inferior
12886 starts and we really don't want to touch it. */
12887 case bp_shlib_event:
12888
12889 /* Like bp_shlib_event, this breakpoint type is special. Once
12890 it is set up, we do not want to touch it. */
12891 case bp_thread_event:
12892 break;
12893 }
12894 }
12895
12896 static void
12897 internal_bkpt_check_status (bpstat bs)
12898 {
12899 if (bs->breakpoint_at->type == bp_shlib_event)
12900 {
12901 /* If requested, stop when the dynamic linker notifies GDB of
12902 events. This allows the user to get control and place
12903 breakpoints in initializer routines for dynamically loaded
12904 objects (among other things). */
12905 bs->stop = stop_on_solib_events;
12906 bs->print = stop_on_solib_events;
12907 }
12908 else
12909 bs->stop = 0;
12910 }
12911
12912 static enum print_stop_action
12913 internal_bkpt_print_it (bpstat bs)
12914 {
12915 struct breakpoint *b;
12916
12917 b = bs->breakpoint_at;
12918
12919 switch (b->type)
12920 {
12921 case bp_shlib_event:
12922 /* Did we stop because the user set the stop_on_solib_events
12923 variable? (If so, we report this as a generic, "Stopped due
12924 to shlib event" message.) */
12925 print_solib_event (0);
12926 break;
12927
12928 case bp_thread_event:
12929 /* Not sure how we will get here.
12930 GDB should not stop for these breakpoints. */
12931 printf_filtered (_("Thread Event Breakpoint: gdb should not stop!\n"));
12932 break;
12933
12934 case bp_overlay_event:
12935 /* By analogy with the thread event, GDB should not stop for these. */
12936 printf_filtered (_("Overlay Event Breakpoint: gdb should not stop!\n"));
12937 break;
12938
12939 case bp_longjmp_master:
12940 /* These should never be enabled. */
12941 printf_filtered (_("Longjmp Master Breakpoint: gdb should not stop!\n"));
12942 break;
12943
12944 case bp_std_terminate_master:
12945 /* These should never be enabled. */
12946 printf_filtered (_("std::terminate Master Breakpoint: "
12947 "gdb should not stop!\n"));
12948 break;
12949
12950 case bp_exception_master:
12951 /* These should never be enabled. */
12952 printf_filtered (_("Exception Master Breakpoint: "
12953 "gdb should not stop!\n"));
12954 break;
12955 }
12956
12957 return PRINT_NOTHING;
12958 }
12959
12960 static void
12961 internal_bkpt_print_mention (struct breakpoint *b)
12962 {
12963 /* Nothing to mention. These breakpoints are internal. */
12964 }
12965
12966 /* Virtual table for momentary breakpoints */
12967
12968 static void
12969 momentary_bkpt_re_set (struct breakpoint *b)
12970 {
12971 /* Keep temporary breakpoints, which can be encountered when we step
12972 over a dlopen call and solib_add is resetting the breakpoints.
12973 Otherwise these should have been blown away via the cleanup chain
12974 or by breakpoint_init_inferior when we rerun the executable. */
12975 }
12976
12977 static void
12978 momentary_bkpt_check_status (bpstat bs)
12979 {
12980 /* Nothing. The point of these breakpoints is causing a stop. */
12981 }
12982
12983 static enum print_stop_action
12984 momentary_bkpt_print_it (bpstat bs)
12985 {
12986 return PRINT_UNKNOWN;
12987 }
12988
12989 static void
12990 momentary_bkpt_print_mention (struct breakpoint *b)
12991 {
12992 /* Nothing to mention. These breakpoints are internal. */
12993 }
12994
12995 /* Ensure INITIATING_FRAME is cleared when no such breakpoint exists.
12996
12997 It gets cleared already on the removal of the first one of such placed
12998 breakpoints. This is OK as they get all removed altogether. */
12999
13000 longjmp_breakpoint::~longjmp_breakpoint ()
13001 {
13002 thread_info *tp = find_thread_global_id (this->thread);
13003
13004 if (tp != NULL)
13005 tp->initiating_frame = null_frame_id;
13006 }
13007
13008 /* Specific methods for probe breakpoints. */
13009
13010 static int
13011 bkpt_probe_insert_location (struct bp_location *bl)
13012 {
13013 int v = bkpt_insert_location (bl);
13014
13015 if (v == 0)
13016 {
13017 /* The insertion was successful, now let's set the probe's semaphore
13018 if needed. */
13019 if (bl->probe.probe->pops->set_semaphore != NULL)
13020 bl->probe.probe->pops->set_semaphore (bl->probe.probe,
13021 bl->probe.objfile,
13022 bl->gdbarch);
13023 }
13024
13025 return v;
13026 }
13027
13028 static int
13029 bkpt_probe_remove_location (struct bp_location *bl,
13030 enum remove_bp_reason reason)
13031 {
13032 /* Let's clear the semaphore before removing the location. */
13033 if (bl->probe.probe->pops->clear_semaphore != NULL)
13034 bl->probe.probe->pops->clear_semaphore (bl->probe.probe,
13035 bl->probe.objfile,
13036 bl->gdbarch);
13037
13038 return bkpt_remove_location (bl, reason);
13039 }
13040
13041 static void
13042 bkpt_probe_create_sals_from_location (const struct event_location *location,
13043 struct linespec_result *canonical,
13044 enum bptype type_wanted)
13045 {
13046 struct linespec_sals lsal;
13047
13048 lsal.sals = parse_probes (location, NULL, canonical);
13049 lsal.canonical
13050 = xstrdup (event_location_to_string (canonical->location.get ()));
13051 canonical->lsals.push_back (std::move (lsal));
13052 }
13053
13054 static std::vector<symtab_and_line>
13055 bkpt_probe_decode_location (struct breakpoint *b,
13056 const struct event_location *location,
13057 struct program_space *search_pspace)
13058 {
13059 std::vector<symtab_and_line> sals = parse_probes (location, search_pspace, NULL);
13060 if (sals.empty ())
13061 error (_("probe not found"));
13062 return sals;
13063 }
13064
13065 /* The breakpoint_ops structure to be used in tracepoints. */
13066
13067 static void
13068 tracepoint_re_set (struct breakpoint *b)
13069 {
13070 breakpoint_re_set_default (b);
13071 }
13072
13073 static int
13074 tracepoint_breakpoint_hit (const struct bp_location *bl,
13075 struct address_space *aspace, CORE_ADDR bp_addr,
13076 const struct target_waitstatus *ws)
13077 {
13078 /* By definition, the inferior does not report stops at
13079 tracepoints. */
13080 return 0;
13081 }
13082
13083 static void
13084 tracepoint_print_one_detail (const struct breakpoint *self,
13085 struct ui_out *uiout)
13086 {
13087 struct tracepoint *tp = (struct tracepoint *) self;
13088 if (tp->static_trace_marker_id)
13089 {
13090 gdb_assert (self->type == bp_static_tracepoint);
13091
13092 uiout->text ("\tmarker id is ");
13093 uiout->field_string ("static-tracepoint-marker-string-id",
13094 tp->static_trace_marker_id);
13095 uiout->text ("\n");
13096 }
13097 }
13098
13099 static void
13100 tracepoint_print_mention (struct breakpoint *b)
13101 {
13102 if (current_uiout->is_mi_like_p ())
13103 return;
13104
13105 switch (b->type)
13106 {
13107 case bp_tracepoint:
13108 printf_filtered (_("Tracepoint"));
13109 printf_filtered (_(" %d"), b->number);
13110 break;
13111 case bp_fast_tracepoint:
13112 printf_filtered (_("Fast tracepoint"));
13113 printf_filtered (_(" %d"), b->number);
13114 break;
13115 case bp_static_tracepoint:
13116 printf_filtered (_("Static tracepoint"));
13117 printf_filtered (_(" %d"), b->number);
13118 break;
13119 default:
13120 internal_error (__FILE__, __LINE__,
13121 _("unhandled tracepoint type %d"), (int) b->type);
13122 }
13123
13124 say_where (b);
13125 }
13126
13127 static void
13128 tracepoint_print_recreate (struct breakpoint *self, struct ui_file *fp)
13129 {
13130 struct tracepoint *tp = (struct tracepoint *) self;
13131
13132 if (self->type == bp_fast_tracepoint)
13133 fprintf_unfiltered (fp, "ftrace");
13134 else if (self->type == bp_static_tracepoint)
13135 fprintf_unfiltered (fp, "strace");
13136 else if (self->type == bp_tracepoint)
13137 fprintf_unfiltered (fp, "trace");
13138 else
13139 internal_error (__FILE__, __LINE__,
13140 _("unhandled tracepoint type %d"), (int) self->type);
13141
13142 fprintf_unfiltered (fp, " %s",
13143 event_location_to_string (self->location.get ()));
13144 print_recreate_thread (self, fp);
13145
13146 if (tp->pass_count)
13147 fprintf_unfiltered (fp, " passcount %d\n", tp->pass_count);
13148 }
13149
13150 static void
13151 tracepoint_create_sals_from_location (const struct event_location *location,
13152 struct linespec_result *canonical,
13153 enum bptype type_wanted)
13154 {
13155 create_sals_from_location_default (location, canonical, type_wanted);
13156 }
13157
13158 static void
13159 tracepoint_create_breakpoints_sal (struct gdbarch *gdbarch,
13160 struct linespec_result *canonical,
13161 gdb::unique_xmalloc_ptr<char> cond_string,
13162 gdb::unique_xmalloc_ptr<char> extra_string,
13163 enum bptype type_wanted,
13164 enum bpdisp disposition,
13165 int thread,
13166 int task, int ignore_count,
13167 const struct breakpoint_ops *ops,
13168 int from_tty, int enabled,
13169 int internal, unsigned flags)
13170 {
13171 create_breakpoints_sal_default (gdbarch, canonical,
13172 std::move (cond_string),
13173 std::move (extra_string),
13174 type_wanted,
13175 disposition, thread, task,
13176 ignore_count, ops, from_tty,
13177 enabled, internal, flags);
13178 }
13179
13180 static std::vector<symtab_and_line>
13181 tracepoint_decode_location (struct breakpoint *b,
13182 const struct event_location *location,
13183 struct program_space *search_pspace)
13184 {
13185 return decode_location_default (b, location, search_pspace);
13186 }
13187
13188 struct breakpoint_ops tracepoint_breakpoint_ops;
13189
13190 /* The breakpoint_ops structure to be use on tracepoints placed in a
13191 static probe. */
13192
13193 static void
13194 tracepoint_probe_create_sals_from_location
13195 (const struct event_location *location,
13196 struct linespec_result *canonical,
13197 enum bptype type_wanted)
13198 {
13199 /* We use the same method for breakpoint on probes. */
13200 bkpt_probe_create_sals_from_location (location, canonical, type_wanted);
13201 }
13202
13203 static std::vector<symtab_and_line>
13204 tracepoint_probe_decode_location (struct breakpoint *b,
13205 const struct event_location *location,
13206 struct program_space *search_pspace)
13207 {
13208 /* We use the same method for breakpoint on probes. */
13209 return bkpt_probe_decode_location (b, location, search_pspace);
13210 }
13211
13212 static struct breakpoint_ops tracepoint_probe_breakpoint_ops;
13213
13214 /* Dprintf breakpoint_ops methods. */
13215
13216 static void
13217 dprintf_re_set (struct breakpoint *b)
13218 {
13219 breakpoint_re_set_default (b);
13220
13221 /* extra_string should never be non-NULL for dprintf. */
13222 gdb_assert (b->extra_string != NULL);
13223
13224 /* 1 - connect to target 1, that can run breakpoint commands.
13225 2 - create a dprintf, which resolves fine.
13226 3 - disconnect from target 1
13227 4 - connect to target 2, that can NOT run breakpoint commands.
13228
13229 After steps #3/#4, you'll want the dprintf command list to
13230 be updated, because target 1 and 2 may well return different
13231 answers for target_can_run_breakpoint_commands().
13232 Given absence of finer grained resetting, we get to do
13233 it all the time. */
13234 if (b->extra_string != NULL)
13235 update_dprintf_command_list (b);
13236 }
13237
13238 /* Implement the "print_recreate" breakpoint_ops method for dprintf. */
13239
13240 static void
13241 dprintf_print_recreate (struct breakpoint *tp, struct ui_file *fp)
13242 {
13243 fprintf_unfiltered (fp, "dprintf %s,%s",
13244 event_location_to_string (tp->location.get ()),
13245 tp->extra_string);
13246 print_recreate_thread (tp, fp);
13247 }
13248
13249 /* Implement the "after_condition_true" breakpoint_ops method for
13250 dprintf.
13251
13252 dprintf's are implemented with regular commands in their command
13253 list, but we run the commands here instead of before presenting the
13254 stop to the user, as dprintf's don't actually cause a stop. This
13255 also makes it so that the commands of multiple dprintfs at the same
13256 address are all handled. */
13257
13258 static void
13259 dprintf_after_condition_true (struct bpstats *bs)
13260 {
13261 struct bpstats tmp_bs;
13262 struct bpstats *tmp_bs_p = &tmp_bs;
13263
13264 /* dprintf's never cause a stop. This wasn't set in the
13265 check_status hook instead because that would make the dprintf's
13266 condition not be evaluated. */
13267 bs->stop = 0;
13268
13269 /* Run the command list here. Take ownership of it instead of
13270 copying. We never want these commands to run later in
13271 bpstat_do_actions, if a breakpoint that causes a stop happens to
13272 be set at same address as this dprintf, or even if running the
13273 commands here throws. */
13274 tmp_bs.commands = bs->commands;
13275 bs->commands = NULL;
13276
13277 bpstat_do_actions_1 (&tmp_bs_p);
13278
13279 /* 'tmp_bs.commands' will usually be NULL by now, but
13280 bpstat_do_actions_1 may return early without processing the whole
13281 list. */
13282 }
13283
13284 /* The breakpoint_ops structure to be used on static tracepoints with
13285 markers (`-m'). */
13286
13287 static void
13288 strace_marker_create_sals_from_location (const struct event_location *location,
13289 struct linespec_result *canonical,
13290 enum bptype type_wanted)
13291 {
13292 struct linespec_sals lsal;
13293 const char *arg_start, *arg;
13294
13295 arg = arg_start = get_linespec_location (location);
13296 lsal.sals = decode_static_tracepoint_spec (&arg);
13297
13298 std::string str (arg_start, arg - arg_start);
13299 const char *ptr = str.c_str ();
13300 canonical->location = new_linespec_location (&ptr);
13301
13302 lsal.canonical
13303 = xstrdup (event_location_to_string (canonical->location.get ()));
13304 canonical->lsals.push_back (std::move (lsal));
13305 }
13306
13307 static void
13308 strace_marker_create_breakpoints_sal (struct gdbarch *gdbarch,
13309 struct linespec_result *canonical,
13310 gdb::unique_xmalloc_ptr<char> cond_string,
13311 gdb::unique_xmalloc_ptr<char> extra_string,
13312 enum bptype type_wanted,
13313 enum bpdisp disposition,
13314 int thread,
13315 int task, int ignore_count,
13316 const struct breakpoint_ops *ops,
13317 int from_tty, int enabled,
13318 int internal, unsigned flags)
13319 {
13320 const linespec_sals &lsal = canonical->lsals[0];
13321
13322 /* If the user is creating a static tracepoint by marker id
13323 (strace -m MARKER_ID), then store the sals index, so that
13324 breakpoint_re_set can try to match up which of the newly
13325 found markers corresponds to this one, and, don't try to
13326 expand multiple locations for each sal, given than SALS
13327 already should contain all sals for MARKER_ID. */
13328
13329 for (size_t i = 0; i < lsal.sals.size (); i++)
13330 {
13331 event_location_up location
13332 = copy_event_location (canonical->location.get ());
13333
13334 std::unique_ptr<tracepoint> tp (new tracepoint ());
13335 init_breakpoint_sal (tp.get (), gdbarch, lsal.sals[i],
13336 std::move (location), NULL,
13337 std::move (cond_string),
13338 std::move (extra_string),
13339 type_wanted, disposition,
13340 thread, task, ignore_count, ops,
13341 from_tty, enabled, internal, flags,
13342 canonical->special_display);
13343 /* Given that its possible to have multiple markers with
13344 the same string id, if the user is creating a static
13345 tracepoint by marker id ("strace -m MARKER_ID"), then
13346 store the sals index, so that breakpoint_re_set can
13347 try to match up which of the newly found markers
13348 corresponds to this one */
13349 tp->static_trace_marker_id_idx = i;
13350
13351 install_breakpoint (internal, std::move (tp), 0);
13352 }
13353 }
13354
13355 static std::vector<symtab_and_line>
13356 strace_marker_decode_location (struct breakpoint *b,
13357 const struct event_location *location,
13358 struct program_space *search_pspace)
13359 {
13360 struct tracepoint *tp = (struct tracepoint *) b;
13361 const char *s = get_linespec_location (location);
13362
13363 std::vector<symtab_and_line> sals = decode_static_tracepoint_spec (&s);
13364 if (sals.size () > tp->static_trace_marker_id_idx)
13365 {
13366 sals[0] = sals[tp->static_trace_marker_id_idx];
13367 sals.resize (1);
13368 return sals;
13369 }
13370 else
13371 error (_("marker %s not found"), tp->static_trace_marker_id);
13372 }
13373
13374 static struct breakpoint_ops strace_marker_breakpoint_ops;
13375
13376 static int
13377 strace_marker_p (struct breakpoint *b)
13378 {
13379 return b->ops == &strace_marker_breakpoint_ops;
13380 }
13381
13382 /* Delete a breakpoint and clean up all traces of it in the data
13383 structures. */
13384
13385 void
13386 delete_breakpoint (struct breakpoint *bpt)
13387 {
13388 struct breakpoint *b;
13389
13390 gdb_assert (bpt != NULL);
13391
13392 /* Has this bp already been deleted? This can happen because
13393 multiple lists can hold pointers to bp's. bpstat lists are
13394 especial culprits.
13395
13396 One example of this happening is a watchpoint's scope bp. When
13397 the scope bp triggers, we notice that the watchpoint is out of
13398 scope, and delete it. We also delete its scope bp. But the
13399 scope bp is marked "auto-deleting", and is already on a bpstat.
13400 That bpstat is then checked for auto-deleting bp's, which are
13401 deleted.
13402
13403 A real solution to this problem might involve reference counts in
13404 bp's, and/or giving them pointers back to their referencing
13405 bpstat's, and teaching delete_breakpoint to only free a bp's
13406 storage when no more references were extent. A cheaper bandaid
13407 was chosen. */
13408 if (bpt->type == bp_none)
13409 return;
13410
13411 /* At least avoid this stale reference until the reference counting
13412 of breakpoints gets resolved. */
13413 if (bpt->related_breakpoint != bpt)
13414 {
13415 struct breakpoint *related;
13416 struct watchpoint *w;
13417
13418 if (bpt->type == bp_watchpoint_scope)
13419 w = (struct watchpoint *) bpt->related_breakpoint;
13420 else if (bpt->related_breakpoint->type == bp_watchpoint_scope)
13421 w = (struct watchpoint *) bpt;
13422 else
13423 w = NULL;
13424 if (w != NULL)
13425 watchpoint_del_at_next_stop (w);
13426
13427 /* Unlink bpt from the bpt->related_breakpoint ring. */
13428 for (related = bpt; related->related_breakpoint != bpt;
13429 related = related->related_breakpoint);
13430 related->related_breakpoint = bpt->related_breakpoint;
13431 bpt->related_breakpoint = bpt;
13432 }
13433
13434 /* watch_command_1 creates a watchpoint but only sets its number if
13435 update_watchpoint succeeds in creating its bp_locations. If there's
13436 a problem in that process, we'll be asked to delete the half-created
13437 watchpoint. In that case, don't announce the deletion. */
13438 if (bpt->number)
13439 observer_notify_breakpoint_deleted (bpt);
13440
13441 if (breakpoint_chain == bpt)
13442 breakpoint_chain = bpt->next;
13443
13444 ALL_BREAKPOINTS (b)
13445 if (b->next == bpt)
13446 {
13447 b->next = bpt->next;
13448 break;
13449 }
13450
13451 /* Be sure no bpstat's are pointing at the breakpoint after it's
13452 been freed. */
13453 /* FIXME, how can we find all bpstat's? We just check stop_bpstat
13454 in all threads for now. Note that we cannot just remove bpstats
13455 pointing at bpt from the stop_bpstat list entirely, as breakpoint
13456 commands are associated with the bpstat; if we remove it here,
13457 then the later call to bpstat_do_actions (&stop_bpstat); in
13458 event-top.c won't do anything, and temporary breakpoints with
13459 commands won't work. */
13460
13461 iterate_over_threads (bpstat_remove_breakpoint_callback, bpt);
13462
13463 /* Now that breakpoint is removed from breakpoint list, update the
13464 global location list. This will remove locations that used to
13465 belong to this breakpoint. Do this before freeing the breakpoint
13466 itself, since remove_breakpoint looks at location's owner. It
13467 might be better design to have location completely
13468 self-contained, but it's not the case now. */
13469 update_global_location_list (UGLL_DONT_INSERT);
13470
13471 /* On the chance that someone will soon try again to delete this
13472 same bp, we mark it as deleted before freeing its storage. */
13473 bpt->type = bp_none;
13474 delete bpt;
13475 }
13476
13477 static void
13478 do_delete_breakpoint_cleanup (void *b)
13479 {
13480 delete_breakpoint ((struct breakpoint *) b);
13481 }
13482
13483 struct cleanup *
13484 make_cleanup_delete_breakpoint (struct breakpoint *b)
13485 {
13486 return make_cleanup (do_delete_breakpoint_cleanup, b);
13487 }
13488
13489 /* Iterator function to call a user-provided callback function once
13490 for each of B and its related breakpoints. */
13491
13492 static void
13493 iterate_over_related_breakpoints (struct breakpoint *b,
13494 gdb::function_view<void (breakpoint *)> function)
13495 {
13496 struct breakpoint *related;
13497
13498 related = b;
13499 do
13500 {
13501 struct breakpoint *next;
13502
13503 /* FUNCTION may delete RELATED. */
13504 next = related->related_breakpoint;
13505
13506 if (next == related)
13507 {
13508 /* RELATED is the last ring entry. */
13509 function (related);
13510
13511 /* FUNCTION may have deleted it, so we'd never reach back to
13512 B. There's nothing left to do anyway, so just break
13513 out. */
13514 break;
13515 }
13516 else
13517 function (related);
13518
13519 related = next;
13520 }
13521 while (related != b);
13522 }
13523
13524 static void
13525 delete_command (char *arg, int from_tty)
13526 {
13527 struct breakpoint *b, *b_tmp;
13528
13529 dont_repeat ();
13530
13531 if (arg == 0)
13532 {
13533 int breaks_to_delete = 0;
13534
13535 /* Delete all breakpoints if no argument. Do not delete
13536 internal breakpoints, these have to be deleted with an
13537 explicit breakpoint number argument. */
13538 ALL_BREAKPOINTS (b)
13539 if (user_breakpoint_p (b))
13540 {
13541 breaks_to_delete = 1;
13542 break;
13543 }
13544
13545 /* Ask user only if there are some breakpoints to delete. */
13546 if (!from_tty
13547 || (breaks_to_delete && query (_("Delete all breakpoints? "))))
13548 {
13549 ALL_BREAKPOINTS_SAFE (b, b_tmp)
13550 if (user_breakpoint_p (b))
13551 delete_breakpoint (b);
13552 }
13553 }
13554 else
13555 map_breakpoint_numbers
13556 (arg, [&] (breakpoint *b)
13557 {
13558 iterate_over_related_breakpoints (b, delete_breakpoint);
13559 });
13560 }
13561
13562 /* Return true if all locations of B bound to PSPACE are pending. If
13563 PSPACE is NULL, all locations of all program spaces are
13564 considered. */
13565
13566 static int
13567 all_locations_are_pending (struct breakpoint *b, struct program_space *pspace)
13568 {
13569 struct bp_location *loc;
13570
13571 for (loc = b->loc; loc != NULL; loc = loc->next)
13572 if ((pspace == NULL
13573 || loc->pspace == pspace)
13574 && !loc->shlib_disabled
13575 && !loc->pspace->executing_startup)
13576 return 0;
13577 return 1;
13578 }
13579
13580 /* Subroutine of update_breakpoint_locations to simplify it.
13581 Return non-zero if multiple fns in list LOC have the same name.
13582 Null names are ignored. */
13583
13584 static int
13585 ambiguous_names_p (struct bp_location *loc)
13586 {
13587 struct bp_location *l;
13588 htab_t htab = htab_create_alloc (13, htab_hash_string,
13589 (int (*) (const void *,
13590 const void *)) streq,
13591 NULL, xcalloc, xfree);
13592
13593 for (l = loc; l != NULL; l = l->next)
13594 {
13595 const char **slot;
13596 const char *name = l->function_name;
13597
13598 /* Allow for some names to be NULL, ignore them. */
13599 if (name == NULL)
13600 continue;
13601
13602 slot = (const char **) htab_find_slot (htab, (const void *) name,
13603 INSERT);
13604 /* NOTE: We can assume slot != NULL here because xcalloc never
13605 returns NULL. */
13606 if (*slot != NULL)
13607 {
13608 htab_delete (htab);
13609 return 1;
13610 }
13611 *slot = name;
13612 }
13613
13614 htab_delete (htab);
13615 return 0;
13616 }
13617
13618 /* When symbols change, it probably means the sources changed as well,
13619 and it might mean the static tracepoint markers are no longer at
13620 the same address or line numbers they used to be at last we
13621 checked. Losing your static tracepoints whenever you rebuild is
13622 undesirable. This function tries to resync/rematch gdb static
13623 tracepoints with the markers on the target, for static tracepoints
13624 that have not been set by marker id. Static tracepoint that have
13625 been set by marker id are reset by marker id in breakpoint_re_set.
13626 The heuristic is:
13627
13628 1) For a tracepoint set at a specific address, look for a marker at
13629 the old PC. If one is found there, assume to be the same marker.
13630 If the name / string id of the marker found is different from the
13631 previous known name, assume that means the user renamed the marker
13632 in the sources, and output a warning.
13633
13634 2) For a tracepoint set at a given line number, look for a marker
13635 at the new address of the old line number. If one is found there,
13636 assume to be the same marker. If the name / string id of the
13637 marker found is different from the previous known name, assume that
13638 means the user renamed the marker in the sources, and output a
13639 warning.
13640
13641 3) If a marker is no longer found at the same address or line, it
13642 may mean the marker no longer exists. But it may also just mean
13643 the code changed a bit. Maybe the user added a few lines of code
13644 that made the marker move up or down (in line number terms). Ask
13645 the target for info about the marker with the string id as we knew
13646 it. If found, update line number and address in the matching
13647 static tracepoint. This will get confused if there's more than one
13648 marker with the same ID (possible in UST, although unadvised
13649 precisely because it confuses tools). */
13650
13651 static struct symtab_and_line
13652 update_static_tracepoint (struct breakpoint *b, struct symtab_and_line sal)
13653 {
13654 struct tracepoint *tp = (struct tracepoint *) b;
13655 struct static_tracepoint_marker marker;
13656 CORE_ADDR pc;
13657
13658 pc = sal.pc;
13659 if (sal.line)
13660 find_line_pc (sal.symtab, sal.line, &pc);
13661
13662 if (target_static_tracepoint_marker_at (pc, &marker))
13663 {
13664 if (strcmp (tp->static_trace_marker_id, marker.str_id) != 0)
13665 warning (_("static tracepoint %d changed probed marker from %s to %s"),
13666 b->number,
13667 tp->static_trace_marker_id, marker.str_id);
13668
13669 xfree (tp->static_trace_marker_id);
13670 tp->static_trace_marker_id = xstrdup (marker.str_id);
13671 release_static_tracepoint_marker (&marker);
13672
13673 return sal;
13674 }
13675
13676 /* Old marker wasn't found on target at lineno. Try looking it up
13677 by string ID. */
13678 if (!sal.explicit_pc
13679 && sal.line != 0
13680 && sal.symtab != NULL
13681 && tp->static_trace_marker_id != NULL)
13682 {
13683 VEC(static_tracepoint_marker_p) *markers;
13684
13685 markers
13686 = target_static_tracepoint_markers_by_strid (tp->static_trace_marker_id);
13687
13688 if (!VEC_empty(static_tracepoint_marker_p, markers))
13689 {
13690 struct symbol *sym;
13691 struct static_tracepoint_marker *tpmarker;
13692 struct ui_out *uiout = current_uiout;
13693 struct explicit_location explicit_loc;
13694
13695 tpmarker = VEC_index (static_tracepoint_marker_p, markers, 0);
13696
13697 xfree (tp->static_trace_marker_id);
13698 tp->static_trace_marker_id = xstrdup (tpmarker->str_id);
13699
13700 warning (_("marker for static tracepoint %d (%s) not "
13701 "found at previous line number"),
13702 b->number, tp->static_trace_marker_id);
13703
13704 symtab_and_line sal2 = find_pc_line (tpmarker->address, 0);
13705 sym = find_pc_sect_function (tpmarker->address, NULL);
13706 uiout->text ("Now in ");
13707 if (sym)
13708 {
13709 uiout->field_string ("func", SYMBOL_PRINT_NAME (sym));
13710 uiout->text (" at ");
13711 }
13712 uiout->field_string ("file",
13713 symtab_to_filename_for_display (sal2.symtab));
13714 uiout->text (":");
13715
13716 if (uiout->is_mi_like_p ())
13717 {
13718 const char *fullname = symtab_to_fullname (sal2.symtab);
13719
13720 uiout->field_string ("fullname", fullname);
13721 }
13722
13723 uiout->field_int ("line", sal2.line);
13724 uiout->text ("\n");
13725
13726 b->loc->line_number = sal2.line;
13727 b->loc->symtab = sym != NULL ? sal2.symtab : NULL;
13728
13729 b->location.reset (NULL);
13730 initialize_explicit_location (&explicit_loc);
13731 explicit_loc.source_filename
13732 = ASTRDUP (symtab_to_filename_for_display (sal2.symtab));
13733 explicit_loc.line_offset.offset = b->loc->line_number;
13734 explicit_loc.line_offset.sign = LINE_OFFSET_NONE;
13735 b->location = new_explicit_location (&explicit_loc);
13736
13737 /* Might be nice to check if function changed, and warn if
13738 so. */
13739
13740 release_static_tracepoint_marker (tpmarker);
13741 }
13742 }
13743 return sal;
13744 }
13745
13746 /* Returns 1 iff locations A and B are sufficiently same that
13747 we don't need to report breakpoint as changed. */
13748
13749 static int
13750 locations_are_equal (struct bp_location *a, struct bp_location *b)
13751 {
13752 while (a && b)
13753 {
13754 if (a->address != b->address)
13755 return 0;
13756
13757 if (a->shlib_disabled != b->shlib_disabled)
13758 return 0;
13759
13760 if (a->enabled != b->enabled)
13761 return 0;
13762
13763 a = a->next;
13764 b = b->next;
13765 }
13766
13767 if ((a == NULL) != (b == NULL))
13768 return 0;
13769
13770 return 1;
13771 }
13772
13773 /* Split all locations of B that are bound to PSPACE out of B's
13774 location list to a separate list and return that list's head. If
13775 PSPACE is NULL, hoist out all locations of B. */
13776
13777 static struct bp_location *
13778 hoist_existing_locations (struct breakpoint *b, struct program_space *pspace)
13779 {
13780 struct bp_location head;
13781 struct bp_location *i = b->loc;
13782 struct bp_location **i_link = &b->loc;
13783 struct bp_location *hoisted = &head;
13784
13785 if (pspace == NULL)
13786 {
13787 i = b->loc;
13788 b->loc = NULL;
13789 return i;
13790 }
13791
13792 head.next = NULL;
13793
13794 while (i != NULL)
13795 {
13796 if (i->pspace == pspace)
13797 {
13798 *i_link = i->next;
13799 i->next = NULL;
13800 hoisted->next = i;
13801 hoisted = i;
13802 }
13803 else
13804 i_link = &i->next;
13805 i = *i_link;
13806 }
13807
13808 return head.next;
13809 }
13810
13811 /* Create new breakpoint locations for B (a hardware or software
13812 breakpoint) based on SALS and SALS_END. If SALS_END.NELTS is not
13813 zero, then B is a ranged breakpoint. Only recreates locations for
13814 FILTER_PSPACE. Locations of other program spaces are left
13815 untouched. */
13816
13817 void
13818 update_breakpoint_locations (struct breakpoint *b,
13819 struct program_space *filter_pspace,
13820 gdb::array_view<const symtab_and_line> sals,
13821 gdb::array_view<const symtab_and_line> sals_end)
13822 {
13823 int i;
13824 struct bp_location *existing_locations;
13825
13826 if (!sals_end.empty () && (sals.size () != 1 || sals_end.size () != 1))
13827 {
13828 /* Ranged breakpoints have only one start location and one end
13829 location. */
13830 b->enable_state = bp_disabled;
13831 printf_unfiltered (_("Could not reset ranged breakpoint %d: "
13832 "multiple locations found\n"),
13833 b->number);
13834 return;
13835 }
13836
13837 /* If there's no new locations, and all existing locations are
13838 pending, don't do anything. This optimizes the common case where
13839 all locations are in the same shared library, that was unloaded.
13840 We'd like to retain the location, so that when the library is
13841 loaded again, we don't loose the enabled/disabled status of the
13842 individual locations. */
13843 if (all_locations_are_pending (b, filter_pspace) && sals.empty ())
13844 return;
13845
13846 existing_locations = hoist_existing_locations (b, filter_pspace);
13847
13848 for (const auto &sal : sals)
13849 {
13850 struct bp_location *new_loc;
13851
13852 switch_to_program_space_and_thread (sal.pspace);
13853
13854 new_loc = add_location_to_breakpoint (b, &sal);
13855
13856 /* Reparse conditions, they might contain references to the
13857 old symtab. */
13858 if (b->cond_string != NULL)
13859 {
13860 const char *s;
13861
13862 s = b->cond_string;
13863 TRY
13864 {
13865 new_loc->cond = parse_exp_1 (&s, sal.pc,
13866 block_for_pc (sal.pc),
13867 0);
13868 }
13869 CATCH (e, RETURN_MASK_ERROR)
13870 {
13871 warning (_("failed to reevaluate condition "
13872 "for breakpoint %d: %s"),
13873 b->number, e.message);
13874 new_loc->enabled = 0;
13875 }
13876 END_CATCH
13877 }
13878
13879 if (!sals_end.empty ())
13880 {
13881 CORE_ADDR end = find_breakpoint_range_end (sals_end[0]);
13882
13883 new_loc->length = end - sals[0].pc + 1;
13884 }
13885 }
13886
13887 /* If possible, carry over 'disable' status from existing
13888 breakpoints. */
13889 {
13890 struct bp_location *e = existing_locations;
13891 /* If there are multiple breakpoints with the same function name,
13892 e.g. for inline functions, comparing function names won't work.
13893 Instead compare pc addresses; this is just a heuristic as things
13894 may have moved, but in practice it gives the correct answer
13895 often enough until a better solution is found. */
13896 int have_ambiguous_names = ambiguous_names_p (b->loc);
13897
13898 for (; e; e = e->next)
13899 {
13900 if (!e->enabled && e->function_name)
13901 {
13902 struct bp_location *l = b->loc;
13903 if (have_ambiguous_names)
13904 {
13905 for (; l; l = l->next)
13906 if (breakpoint_locations_match (e, l))
13907 {
13908 l->enabled = 0;
13909 break;
13910 }
13911 }
13912 else
13913 {
13914 for (; l; l = l->next)
13915 if (l->function_name
13916 && strcmp (e->function_name, l->function_name) == 0)
13917 {
13918 l->enabled = 0;
13919 break;
13920 }
13921 }
13922 }
13923 }
13924 }
13925
13926 if (!locations_are_equal (existing_locations, b->loc))
13927 observer_notify_breakpoint_modified (b);
13928 }
13929
13930 /* Find the SaL locations corresponding to the given LOCATION.
13931 On return, FOUND will be 1 if any SaL was found, zero otherwise. */
13932
13933 static std::vector<symtab_and_line>
13934 location_to_sals (struct breakpoint *b, struct event_location *location,
13935 struct program_space *search_pspace, int *found)
13936 {
13937 struct gdb_exception exception = exception_none;
13938
13939 gdb_assert (b->ops != NULL);
13940
13941 std::vector<symtab_and_line> sals;
13942
13943 TRY
13944 {
13945 sals = b->ops->decode_location (b, location, search_pspace);
13946 }
13947 CATCH (e, RETURN_MASK_ERROR)
13948 {
13949 int not_found_and_ok = 0;
13950
13951 exception = e;
13952
13953 /* For pending breakpoints, it's expected that parsing will
13954 fail until the right shared library is loaded. User has
13955 already told to create pending breakpoints and don't need
13956 extra messages. If breakpoint is in bp_shlib_disabled
13957 state, then user already saw the message about that
13958 breakpoint being disabled, and don't want to see more
13959 errors. */
13960 if (e.error == NOT_FOUND_ERROR
13961 && (b->condition_not_parsed
13962 || (b->loc != NULL
13963 && search_pspace != NULL
13964 && b->loc->pspace != search_pspace)
13965 || (b->loc && b->loc->shlib_disabled)
13966 || (b->loc && b->loc->pspace->executing_startup)
13967 || b->enable_state == bp_disabled))
13968 not_found_and_ok = 1;
13969
13970 if (!not_found_and_ok)
13971 {
13972 /* We surely don't want to warn about the same breakpoint
13973 10 times. One solution, implemented here, is disable
13974 the breakpoint on error. Another solution would be to
13975 have separate 'warning emitted' flag. Since this
13976 happens only when a binary has changed, I don't know
13977 which approach is better. */
13978 b->enable_state = bp_disabled;
13979 throw_exception (e);
13980 }
13981 }
13982 END_CATCH
13983
13984 if (exception.reason == 0 || exception.error != NOT_FOUND_ERROR)
13985 {
13986 for (auto &sal : sals)
13987 resolve_sal_pc (&sal);
13988 if (b->condition_not_parsed && b->extra_string != NULL)
13989 {
13990 char *cond_string, *extra_string;
13991 int thread, task;
13992
13993 find_condition_and_thread (b->extra_string, sals[0].pc,
13994 &cond_string, &thread, &task,
13995 &extra_string);
13996 gdb_assert (b->cond_string == NULL);
13997 if (cond_string)
13998 b->cond_string = cond_string;
13999 b->thread = thread;
14000 b->task = task;
14001 if (extra_string)
14002 {
14003 xfree (b->extra_string);
14004 b->extra_string = extra_string;
14005 }
14006 b->condition_not_parsed = 0;
14007 }
14008
14009 if (b->type == bp_static_tracepoint && !strace_marker_p (b))
14010 sals[0] = update_static_tracepoint (b, sals[0]);
14011
14012 *found = 1;
14013 }
14014 else
14015 *found = 0;
14016
14017 return sals;
14018 }
14019
14020 /* The default re_set method, for typical hardware or software
14021 breakpoints. Reevaluate the breakpoint and recreate its
14022 locations. */
14023
14024 static void
14025 breakpoint_re_set_default (struct breakpoint *b)
14026 {
14027 struct program_space *filter_pspace = current_program_space;
14028 std::vector<symtab_and_line> expanded, expanded_end;
14029
14030 int found;
14031 std::vector<symtab_and_line> sals = location_to_sals (b, b->location.get (),
14032 filter_pspace, &found);
14033 if (found)
14034 expanded = std::move (sals);
14035
14036 if (b->location_range_end != NULL)
14037 {
14038 std::vector<symtab_and_line> sals_end
14039 = location_to_sals (b, b->location_range_end.get (),
14040 filter_pspace, &found);
14041 if (found)
14042 expanded_end = std::move (sals_end);
14043 }
14044
14045 update_breakpoint_locations (b, filter_pspace, expanded, expanded_end);
14046 }
14047
14048 /* Default method for creating SALs from an address string. It basically
14049 calls parse_breakpoint_sals. Return 1 for success, zero for failure. */
14050
14051 static void
14052 create_sals_from_location_default (const struct event_location *location,
14053 struct linespec_result *canonical,
14054 enum bptype type_wanted)
14055 {
14056 parse_breakpoint_sals (location, canonical);
14057 }
14058
14059 /* Call create_breakpoints_sal for the given arguments. This is the default
14060 function for the `create_breakpoints_sal' method of
14061 breakpoint_ops. */
14062
14063 static void
14064 create_breakpoints_sal_default (struct gdbarch *gdbarch,
14065 struct linespec_result *canonical,
14066 gdb::unique_xmalloc_ptr<char> cond_string,
14067 gdb::unique_xmalloc_ptr<char> extra_string,
14068 enum bptype type_wanted,
14069 enum bpdisp disposition,
14070 int thread,
14071 int task, int ignore_count,
14072 const struct breakpoint_ops *ops,
14073 int from_tty, int enabled,
14074 int internal, unsigned flags)
14075 {
14076 create_breakpoints_sal (gdbarch, canonical,
14077 std::move (cond_string),
14078 std::move (extra_string),
14079 type_wanted, disposition,
14080 thread, task, ignore_count, ops, from_tty,
14081 enabled, internal, flags);
14082 }
14083
14084 /* Decode the line represented by S by calling decode_line_full. This is the
14085 default function for the `decode_location' method of breakpoint_ops. */
14086
14087 static std::vector<symtab_and_line>
14088 decode_location_default (struct breakpoint *b,
14089 const struct event_location *location,
14090 struct program_space *search_pspace)
14091 {
14092 struct linespec_result canonical;
14093
14094 decode_line_full (location, DECODE_LINE_FUNFIRSTLINE, search_pspace,
14095 (struct symtab *) NULL, 0,
14096 &canonical, multiple_symbols_all,
14097 b->filter);
14098
14099 /* We should get 0 or 1 resulting SALs. */
14100 gdb_assert (canonical.lsals.size () < 2);
14101
14102 if (!canonical.lsals.empty ())
14103 {
14104 const linespec_sals &lsal = canonical.lsals[0];
14105 return std::move (lsal.sals);
14106 }
14107 return {};
14108 }
14109
14110 /* Prepare the global context for a re-set of breakpoint B. */
14111
14112 static struct cleanup *
14113 prepare_re_set_context (struct breakpoint *b)
14114 {
14115 input_radix = b->input_radix;
14116 set_language (b->language);
14117
14118 return make_cleanup (null_cleanup, NULL);
14119 }
14120
14121 /* Reset a breakpoint. */
14122
14123 static void
14124 breakpoint_re_set_one (breakpoint *b)
14125 {
14126 struct cleanup *cleanups;
14127
14128 cleanups = prepare_re_set_context (b);
14129 b->ops->re_set (b);
14130 do_cleanups (cleanups);
14131 }
14132
14133 /* Re-set breakpoint locations for the current program space.
14134 Locations bound to other program spaces are left untouched. */
14135
14136 void
14137 breakpoint_re_set (void)
14138 {
14139 struct breakpoint *b, *b_tmp;
14140 enum language save_language;
14141 int save_input_radix;
14142
14143 save_language = current_language->la_language;
14144 save_input_radix = input_radix;
14145
14146 {
14147 scoped_restore_current_pspace_and_thread restore_pspace_thread;
14148
14149 /* Note: we must not try to insert locations until after all
14150 breakpoints have been re-set. Otherwise, e.g., when re-setting
14151 breakpoint 1, we'd insert the locations of breakpoint 2, which
14152 hadn't been re-set yet, and thus may have stale locations. */
14153
14154 ALL_BREAKPOINTS_SAFE (b, b_tmp)
14155 {
14156 TRY
14157 {
14158 breakpoint_re_set_one (b);
14159 }
14160 CATCH (ex, RETURN_MASK_ALL)
14161 {
14162 exception_fprintf (gdb_stderr, ex,
14163 "Error in re-setting breakpoint %d: ",
14164 b->number);
14165 }
14166 END_CATCH
14167 }
14168 set_language (save_language);
14169 input_radix = save_input_radix;
14170
14171 jit_breakpoint_re_set ();
14172 }
14173
14174 create_overlay_event_breakpoint ();
14175 create_longjmp_master_breakpoint ();
14176 create_std_terminate_master_breakpoint ();
14177 create_exception_master_breakpoint ();
14178
14179 /* Now we can insert. */
14180 update_global_location_list (UGLL_MAY_INSERT);
14181 }
14182 \f
14183 /* Reset the thread number of this breakpoint:
14184
14185 - If the breakpoint is for all threads, leave it as-is.
14186 - Else, reset it to the current thread for inferior_ptid. */
14187 void
14188 breakpoint_re_set_thread (struct breakpoint *b)
14189 {
14190 if (b->thread != -1)
14191 {
14192 if (in_thread_list (inferior_ptid))
14193 b->thread = ptid_to_global_thread_id (inferior_ptid);
14194
14195 /* We're being called after following a fork. The new fork is
14196 selected as current, and unless this was a vfork will have a
14197 different program space from the original thread. Reset that
14198 as well. */
14199 b->loc->pspace = current_program_space;
14200 }
14201 }
14202
14203 /* Set ignore-count of breakpoint number BPTNUM to COUNT.
14204 If from_tty is nonzero, it prints a message to that effect,
14205 which ends with a period (no newline). */
14206
14207 void
14208 set_ignore_count (int bptnum, int count, int from_tty)
14209 {
14210 struct breakpoint *b;
14211
14212 if (count < 0)
14213 count = 0;
14214
14215 ALL_BREAKPOINTS (b)
14216 if (b->number == bptnum)
14217 {
14218 if (is_tracepoint (b))
14219 {
14220 if (from_tty && count != 0)
14221 printf_filtered (_("Ignore count ignored for tracepoint %d."),
14222 bptnum);
14223 return;
14224 }
14225
14226 b->ignore_count = count;
14227 if (from_tty)
14228 {
14229 if (count == 0)
14230 printf_filtered (_("Will stop next time "
14231 "breakpoint %d is reached."),
14232 bptnum);
14233 else if (count == 1)
14234 printf_filtered (_("Will ignore next crossing of breakpoint %d."),
14235 bptnum);
14236 else
14237 printf_filtered (_("Will ignore next %d "
14238 "crossings of breakpoint %d."),
14239 count, bptnum);
14240 }
14241 observer_notify_breakpoint_modified (b);
14242 return;
14243 }
14244
14245 error (_("No breakpoint number %d."), bptnum);
14246 }
14247
14248 /* Command to set ignore-count of breakpoint N to COUNT. */
14249
14250 static void
14251 ignore_command (char *args, int from_tty)
14252 {
14253 char *p = args;
14254 int num;
14255
14256 if (p == 0)
14257 error_no_arg (_("a breakpoint number"));
14258
14259 num = get_number (&p);
14260 if (num == 0)
14261 error (_("bad breakpoint number: '%s'"), args);
14262 if (*p == 0)
14263 error (_("Second argument (specified ignore-count) is missing."));
14264
14265 set_ignore_count (num,
14266 longest_to_int (value_as_long (parse_and_eval (p))),
14267 from_tty);
14268 if (from_tty)
14269 printf_filtered ("\n");
14270 }
14271 \f
14272 /* Call FUNCTION on each of the breakpoints
14273 whose numbers are given in ARGS. */
14274
14275 static void
14276 map_breakpoint_numbers (const char *args,
14277 gdb::function_view<void (breakpoint *)> function)
14278 {
14279 int num;
14280 struct breakpoint *b, *tmp;
14281
14282 if (args == 0 || *args == '\0')
14283 error_no_arg (_("one or more breakpoint numbers"));
14284
14285 number_or_range_parser parser (args);
14286
14287 while (!parser.finished ())
14288 {
14289 const char *p = parser.cur_tok ();
14290 bool match = false;
14291
14292 num = parser.get_number ();
14293 if (num == 0)
14294 {
14295 warning (_("bad breakpoint number at or near '%s'"), p);
14296 }
14297 else
14298 {
14299 ALL_BREAKPOINTS_SAFE (b, tmp)
14300 if (b->number == num)
14301 {
14302 match = true;
14303 function (b);
14304 break;
14305 }
14306 if (!match)
14307 printf_unfiltered (_("No breakpoint number %d.\n"), num);
14308 }
14309 }
14310 }
14311
14312 static struct bp_location *
14313 find_location_by_number (const char *number)
14314 {
14315 const char *p1;
14316 int bp_num;
14317 int loc_num;
14318 struct breakpoint *b;
14319 struct bp_location *loc;
14320
14321 p1 = number;
14322 bp_num = get_number_trailer (&p1, '.');
14323 if (bp_num == 0 || p1[0] != '.')
14324 error (_("Bad breakpoint number '%s'"), number);
14325
14326 ALL_BREAKPOINTS (b)
14327 if (b->number == bp_num)
14328 {
14329 break;
14330 }
14331
14332 if (!b || b->number != bp_num)
14333 error (_("Bad breakpoint number '%s'"), number);
14334
14335 /* Skip the dot. */
14336 ++p1;
14337 const char *save = p1;
14338 loc_num = get_number (&p1);
14339 if (loc_num == 0)
14340 error (_("Bad breakpoint location number '%s'"), number);
14341
14342 --loc_num;
14343 loc = b->loc;
14344 for (;loc_num && loc; --loc_num, loc = loc->next)
14345 ;
14346 if (!loc)
14347 error (_("Bad breakpoint location number '%s'"), save);
14348
14349 return loc;
14350 }
14351
14352
14353 /* Set ignore-count of breakpoint number BPTNUM to COUNT.
14354 If from_tty is nonzero, it prints a message to that effect,
14355 which ends with a period (no newline). */
14356
14357 void
14358 disable_breakpoint (struct breakpoint *bpt)
14359 {
14360 /* Never disable a watchpoint scope breakpoint; we want to
14361 hit them when we leave scope so we can delete both the
14362 watchpoint and its scope breakpoint at that time. */
14363 if (bpt->type == bp_watchpoint_scope)
14364 return;
14365
14366 bpt->enable_state = bp_disabled;
14367
14368 /* Mark breakpoint locations modified. */
14369 mark_breakpoint_modified (bpt);
14370
14371 if (target_supports_enable_disable_tracepoint ()
14372 && current_trace_status ()->running && is_tracepoint (bpt))
14373 {
14374 struct bp_location *location;
14375
14376 for (location = bpt->loc; location; location = location->next)
14377 target_disable_tracepoint (location);
14378 }
14379
14380 update_global_location_list (UGLL_DONT_INSERT);
14381
14382 observer_notify_breakpoint_modified (bpt);
14383 }
14384
14385 static void
14386 disable_command (char *args, int from_tty)
14387 {
14388 if (args == 0)
14389 {
14390 struct breakpoint *bpt;
14391
14392 ALL_BREAKPOINTS (bpt)
14393 if (user_breakpoint_p (bpt))
14394 disable_breakpoint (bpt);
14395 }
14396 else
14397 {
14398 std::string num = extract_arg (&args);
14399
14400 while (!num.empty ())
14401 {
14402 if (num.find ('.') != std::string::npos)
14403 {
14404 struct bp_location *loc = find_location_by_number (num.c_str ());
14405
14406 if (loc)
14407 {
14408 if (loc->enabled)
14409 {
14410 loc->enabled = 0;
14411 mark_breakpoint_location_modified (loc);
14412 }
14413 if (target_supports_enable_disable_tracepoint ()
14414 && current_trace_status ()->running && loc->owner
14415 && is_tracepoint (loc->owner))
14416 target_disable_tracepoint (loc);
14417 }
14418 update_global_location_list (UGLL_DONT_INSERT);
14419 }
14420 else
14421 map_breakpoint_numbers
14422 (num.c_str (), [&] (breakpoint *b)
14423 {
14424 iterate_over_related_breakpoints (b, disable_breakpoint);
14425 });
14426 num = extract_arg (&args);
14427 }
14428 }
14429 }
14430
14431 static void
14432 enable_breakpoint_disp (struct breakpoint *bpt, enum bpdisp disposition,
14433 int count)
14434 {
14435 int target_resources_ok;
14436
14437 if (bpt->type == bp_hardware_breakpoint)
14438 {
14439 int i;
14440 i = hw_breakpoint_used_count ();
14441 target_resources_ok =
14442 target_can_use_hardware_watchpoint (bp_hardware_breakpoint,
14443 i + 1, 0);
14444 if (target_resources_ok == 0)
14445 error (_("No hardware breakpoint support in the target."));
14446 else if (target_resources_ok < 0)
14447 error (_("Hardware breakpoints used exceeds limit."));
14448 }
14449
14450 if (is_watchpoint (bpt))
14451 {
14452 /* Initialize it just to avoid a GCC false warning. */
14453 enum enable_state orig_enable_state = bp_disabled;
14454
14455 TRY
14456 {
14457 struct watchpoint *w = (struct watchpoint *) bpt;
14458
14459 orig_enable_state = bpt->enable_state;
14460 bpt->enable_state = bp_enabled;
14461 update_watchpoint (w, 1 /* reparse */);
14462 }
14463 CATCH (e, RETURN_MASK_ALL)
14464 {
14465 bpt->enable_state = orig_enable_state;
14466 exception_fprintf (gdb_stderr, e, _("Cannot enable watchpoint %d: "),
14467 bpt->number);
14468 return;
14469 }
14470 END_CATCH
14471 }
14472
14473 bpt->enable_state = bp_enabled;
14474
14475 /* Mark breakpoint locations modified. */
14476 mark_breakpoint_modified (bpt);
14477
14478 if (target_supports_enable_disable_tracepoint ()
14479 && current_trace_status ()->running && is_tracepoint (bpt))
14480 {
14481 struct bp_location *location;
14482
14483 for (location = bpt->loc; location; location = location->next)
14484 target_enable_tracepoint (location);
14485 }
14486
14487 bpt->disposition = disposition;
14488 bpt->enable_count = count;
14489 update_global_location_list (UGLL_MAY_INSERT);
14490
14491 observer_notify_breakpoint_modified (bpt);
14492 }
14493
14494
14495 void
14496 enable_breakpoint (struct breakpoint *bpt)
14497 {
14498 enable_breakpoint_disp (bpt, bpt->disposition, 0);
14499 }
14500
14501 /* The enable command enables the specified breakpoints (or all defined
14502 breakpoints) so they once again become (or continue to be) effective
14503 in stopping the inferior. */
14504
14505 static void
14506 enable_command (char *args, int from_tty)
14507 {
14508 if (args == 0)
14509 {
14510 struct breakpoint *bpt;
14511
14512 ALL_BREAKPOINTS (bpt)
14513 if (user_breakpoint_p (bpt))
14514 enable_breakpoint (bpt);
14515 }
14516 else
14517 {
14518 std::string num = extract_arg (&args);
14519
14520 while (!num.empty ())
14521 {
14522 if (num.find ('.') != std::string::npos)
14523 {
14524 struct bp_location *loc = find_location_by_number (num.c_str ());
14525
14526 if (loc)
14527 {
14528 if (!loc->enabled)
14529 {
14530 loc->enabled = 1;
14531 mark_breakpoint_location_modified (loc);
14532 }
14533 if (target_supports_enable_disable_tracepoint ()
14534 && current_trace_status ()->running && loc->owner
14535 && is_tracepoint (loc->owner))
14536 target_enable_tracepoint (loc);
14537 }
14538 update_global_location_list (UGLL_MAY_INSERT);
14539 }
14540 else
14541 map_breakpoint_numbers
14542 (num.c_str (), [&] (breakpoint *b)
14543 {
14544 iterate_over_related_breakpoints (b, enable_breakpoint);
14545 });
14546 num = extract_arg (&args);
14547 }
14548 }
14549 }
14550
14551 static void
14552 enable_once_command (const char *args, int from_tty)
14553 {
14554 map_breakpoint_numbers
14555 (args, [&] (breakpoint *b)
14556 {
14557 iterate_over_related_breakpoints
14558 (b, [&] (breakpoint *bpt)
14559 {
14560 enable_breakpoint_disp (bpt, disp_disable, 1);
14561 });
14562 });
14563 }
14564
14565 static void
14566 enable_count_command (const char *args, int from_tty)
14567 {
14568 int count;
14569
14570 if (args == NULL)
14571 error_no_arg (_("hit count"));
14572
14573 count = get_number (&args);
14574
14575 map_breakpoint_numbers
14576 (args, [&] (breakpoint *b)
14577 {
14578 iterate_over_related_breakpoints
14579 (b, [&] (breakpoint *bpt)
14580 {
14581 enable_breakpoint_disp (bpt, disp_disable, count);
14582 });
14583 });
14584 }
14585
14586 static void
14587 enable_delete_command (const char *args, int from_tty)
14588 {
14589 map_breakpoint_numbers
14590 (args, [&] (breakpoint *b)
14591 {
14592 iterate_over_related_breakpoints
14593 (b, [&] (breakpoint *bpt)
14594 {
14595 enable_breakpoint_disp (bpt, disp_del, 1);
14596 });
14597 });
14598 }
14599 \f
14600 static void
14601 set_breakpoint_cmd (char *args, int from_tty)
14602 {
14603 }
14604
14605 static void
14606 show_breakpoint_cmd (char *args, int from_tty)
14607 {
14608 }
14609
14610 /* Invalidate last known value of any hardware watchpoint if
14611 the memory which that value represents has been written to by
14612 GDB itself. */
14613
14614 static void
14615 invalidate_bp_value_on_memory_change (struct inferior *inferior,
14616 CORE_ADDR addr, ssize_t len,
14617 const bfd_byte *data)
14618 {
14619 struct breakpoint *bp;
14620
14621 ALL_BREAKPOINTS (bp)
14622 if (bp->enable_state == bp_enabled
14623 && bp->type == bp_hardware_watchpoint)
14624 {
14625 struct watchpoint *wp = (struct watchpoint *) bp;
14626
14627 if (wp->val_valid && wp->val)
14628 {
14629 struct bp_location *loc;
14630
14631 for (loc = bp->loc; loc != NULL; loc = loc->next)
14632 if (loc->loc_type == bp_loc_hardware_watchpoint
14633 && loc->address + loc->length > addr
14634 && addr + len > loc->address)
14635 {
14636 value_free (wp->val);
14637 wp->val = NULL;
14638 wp->val_valid = 0;
14639 }
14640 }
14641 }
14642 }
14643
14644 /* Create and insert a breakpoint for software single step. */
14645
14646 void
14647 insert_single_step_breakpoint (struct gdbarch *gdbarch,
14648 struct address_space *aspace,
14649 CORE_ADDR next_pc)
14650 {
14651 struct thread_info *tp = inferior_thread ();
14652 struct symtab_and_line sal;
14653 CORE_ADDR pc = next_pc;
14654
14655 if (tp->control.single_step_breakpoints == NULL)
14656 {
14657 tp->control.single_step_breakpoints
14658 = new_single_step_breakpoint (tp->global_num, gdbarch);
14659 }
14660
14661 sal = find_pc_line (pc, 0);
14662 sal.pc = pc;
14663 sal.section = find_pc_overlay (pc);
14664 sal.explicit_pc = 1;
14665 add_location_to_breakpoint (tp->control.single_step_breakpoints, &sal);
14666
14667 update_global_location_list (UGLL_INSERT);
14668 }
14669
14670 /* Insert single step breakpoints according to the current state. */
14671
14672 int
14673 insert_single_step_breakpoints (struct gdbarch *gdbarch)
14674 {
14675 struct regcache *regcache = get_current_regcache ();
14676 std::vector<CORE_ADDR> next_pcs;
14677
14678 next_pcs = gdbarch_software_single_step (gdbarch, regcache);
14679
14680 if (!next_pcs.empty ())
14681 {
14682 struct frame_info *frame = get_current_frame ();
14683 struct address_space *aspace = get_frame_address_space (frame);
14684
14685 for (CORE_ADDR pc : next_pcs)
14686 insert_single_step_breakpoint (gdbarch, aspace, pc);
14687
14688 return 1;
14689 }
14690 else
14691 return 0;
14692 }
14693
14694 /* See breakpoint.h. */
14695
14696 int
14697 breakpoint_has_location_inserted_here (struct breakpoint *bp,
14698 struct address_space *aspace,
14699 CORE_ADDR pc)
14700 {
14701 struct bp_location *loc;
14702
14703 for (loc = bp->loc; loc != NULL; loc = loc->next)
14704 if (loc->inserted
14705 && breakpoint_location_address_match (loc, aspace, pc))
14706 return 1;
14707
14708 return 0;
14709 }
14710
14711 /* Check whether a software single-step breakpoint is inserted at
14712 PC. */
14713
14714 int
14715 single_step_breakpoint_inserted_here_p (struct address_space *aspace,
14716 CORE_ADDR pc)
14717 {
14718 struct breakpoint *bpt;
14719
14720 ALL_BREAKPOINTS (bpt)
14721 {
14722 if (bpt->type == bp_single_step
14723 && breakpoint_has_location_inserted_here (bpt, aspace, pc))
14724 return 1;
14725 }
14726 return 0;
14727 }
14728
14729 /* Tracepoint-specific operations. */
14730
14731 /* Set tracepoint count to NUM. */
14732 static void
14733 set_tracepoint_count (int num)
14734 {
14735 tracepoint_count = num;
14736 set_internalvar_integer (lookup_internalvar ("tpnum"), num);
14737 }
14738
14739 static void
14740 trace_command (char *arg_in, int from_tty)
14741 {
14742 const char *arg = arg_in;
14743 struct breakpoint_ops *ops;
14744
14745 event_location_up location = string_to_event_location (&arg,
14746 current_language);
14747 if (location != NULL
14748 && event_location_type (location.get ()) == PROBE_LOCATION)
14749 ops = &tracepoint_probe_breakpoint_ops;
14750 else
14751 ops = &tracepoint_breakpoint_ops;
14752
14753 create_breakpoint (get_current_arch (),
14754 location.get (),
14755 NULL, 0, arg, 1 /* parse arg */,
14756 0 /* tempflag */,
14757 bp_tracepoint /* type_wanted */,
14758 0 /* Ignore count */,
14759 pending_break_support,
14760 ops,
14761 from_tty,
14762 1 /* enabled */,
14763 0 /* internal */, 0);
14764 }
14765
14766 static void
14767 ftrace_command (char *arg_in, int from_tty)
14768 {
14769 const char *arg = arg_in;
14770 event_location_up location = string_to_event_location (&arg,
14771 current_language);
14772 create_breakpoint (get_current_arch (),
14773 location.get (),
14774 NULL, 0, arg, 1 /* parse arg */,
14775 0 /* tempflag */,
14776 bp_fast_tracepoint /* type_wanted */,
14777 0 /* Ignore count */,
14778 pending_break_support,
14779 &tracepoint_breakpoint_ops,
14780 from_tty,
14781 1 /* enabled */,
14782 0 /* internal */, 0);
14783 }
14784
14785 /* strace command implementation. Creates a static tracepoint. */
14786
14787 static void
14788 strace_command (char *arg_in, int from_tty)
14789 {
14790 const char *arg = arg_in;
14791 struct breakpoint_ops *ops;
14792 event_location_up location;
14793 struct cleanup *back_to;
14794
14795 /* Decide if we are dealing with a static tracepoint marker (`-m'),
14796 or with a normal static tracepoint. */
14797 if (arg && startswith (arg, "-m") && isspace (arg[2]))
14798 {
14799 ops = &strace_marker_breakpoint_ops;
14800 location = new_linespec_location (&arg);
14801 }
14802 else
14803 {
14804 ops = &tracepoint_breakpoint_ops;
14805 location = string_to_event_location (&arg, current_language);
14806 }
14807
14808 create_breakpoint (get_current_arch (),
14809 location.get (),
14810 NULL, 0, arg, 1 /* parse arg */,
14811 0 /* tempflag */,
14812 bp_static_tracepoint /* type_wanted */,
14813 0 /* Ignore count */,
14814 pending_break_support,
14815 ops,
14816 from_tty,
14817 1 /* enabled */,
14818 0 /* internal */, 0);
14819 }
14820
14821 /* Set up a fake reader function that gets command lines from a linked
14822 list that was acquired during tracepoint uploading. */
14823
14824 static struct uploaded_tp *this_utp;
14825 static int next_cmd;
14826
14827 static char *
14828 read_uploaded_action (void)
14829 {
14830 char *rslt;
14831
14832 VEC_iterate (char_ptr, this_utp->cmd_strings, next_cmd, rslt);
14833
14834 next_cmd++;
14835
14836 return rslt;
14837 }
14838
14839 /* Given information about a tracepoint as recorded on a target (which
14840 can be either a live system or a trace file), attempt to create an
14841 equivalent GDB tracepoint. This is not a reliable process, since
14842 the target does not necessarily have all the information used when
14843 the tracepoint was originally defined. */
14844
14845 struct tracepoint *
14846 create_tracepoint_from_upload (struct uploaded_tp *utp)
14847 {
14848 const char *addr_str;
14849 char small_buf[100];
14850 struct tracepoint *tp;
14851
14852 if (utp->at_string)
14853 addr_str = utp->at_string;
14854 else
14855 {
14856 /* In the absence of a source location, fall back to raw
14857 address. Since there is no way to confirm that the address
14858 means the same thing as when the trace was started, warn the
14859 user. */
14860 warning (_("Uploaded tracepoint %d has no "
14861 "source location, using raw address"),
14862 utp->number);
14863 xsnprintf (small_buf, sizeof (small_buf), "*%s", hex_string (utp->addr));
14864 addr_str = small_buf;
14865 }
14866
14867 /* There's not much we can do with a sequence of bytecodes. */
14868 if (utp->cond && !utp->cond_string)
14869 warning (_("Uploaded tracepoint %d condition "
14870 "has no source form, ignoring it"),
14871 utp->number);
14872
14873 event_location_up location = string_to_event_location (&addr_str,
14874 current_language);
14875 if (!create_breakpoint (get_current_arch (),
14876 location.get (),
14877 utp->cond_string, -1, addr_str,
14878 0 /* parse cond/thread */,
14879 0 /* tempflag */,
14880 utp->type /* type_wanted */,
14881 0 /* Ignore count */,
14882 pending_break_support,
14883 &tracepoint_breakpoint_ops,
14884 0 /* from_tty */,
14885 utp->enabled /* enabled */,
14886 0 /* internal */,
14887 CREATE_BREAKPOINT_FLAGS_INSERTED))
14888 return NULL;
14889
14890 /* Get the tracepoint we just created. */
14891 tp = get_tracepoint (tracepoint_count);
14892 gdb_assert (tp != NULL);
14893
14894 if (utp->pass > 0)
14895 {
14896 xsnprintf (small_buf, sizeof (small_buf), "%d %d", utp->pass,
14897 tp->number);
14898
14899 trace_pass_command (small_buf, 0);
14900 }
14901
14902 /* If we have uploaded versions of the original commands, set up a
14903 special-purpose "reader" function and call the usual command line
14904 reader, then pass the result to the breakpoint command-setting
14905 function. */
14906 if (!VEC_empty (char_ptr, utp->cmd_strings))
14907 {
14908 command_line_up cmd_list;
14909
14910 this_utp = utp;
14911 next_cmd = 0;
14912
14913 cmd_list = read_command_lines_1 (read_uploaded_action, 1, NULL, NULL);
14914
14915 breakpoint_set_commands (tp, std::move (cmd_list));
14916 }
14917 else if (!VEC_empty (char_ptr, utp->actions)
14918 || !VEC_empty (char_ptr, utp->step_actions))
14919 warning (_("Uploaded tracepoint %d actions "
14920 "have no source form, ignoring them"),
14921 utp->number);
14922
14923 /* Copy any status information that might be available. */
14924 tp->hit_count = utp->hit_count;
14925 tp->traceframe_usage = utp->traceframe_usage;
14926
14927 return tp;
14928 }
14929
14930 /* Print information on tracepoint number TPNUM_EXP, or all if
14931 omitted. */
14932
14933 static void
14934 info_tracepoints_command (char *args, int from_tty)
14935 {
14936 struct ui_out *uiout = current_uiout;
14937 int num_printed;
14938
14939 num_printed = breakpoint_1 (args, 0, is_tracepoint);
14940
14941 if (num_printed == 0)
14942 {
14943 if (args == NULL || *args == '\0')
14944 uiout->message ("No tracepoints.\n");
14945 else
14946 uiout->message ("No tracepoint matching '%s'.\n", args);
14947 }
14948
14949 default_collect_info ();
14950 }
14951
14952 /* The 'enable trace' command enables tracepoints.
14953 Not supported by all targets. */
14954 static void
14955 enable_trace_command (char *args, int from_tty)
14956 {
14957 enable_command (args, from_tty);
14958 }
14959
14960 /* The 'disable trace' command disables tracepoints.
14961 Not supported by all targets. */
14962 static void
14963 disable_trace_command (char *args, int from_tty)
14964 {
14965 disable_command (args, from_tty);
14966 }
14967
14968 /* Remove a tracepoint (or all if no argument). */
14969 static void
14970 delete_trace_command (const char *arg, int from_tty)
14971 {
14972 struct breakpoint *b, *b_tmp;
14973
14974 dont_repeat ();
14975
14976 if (arg == 0)
14977 {
14978 int breaks_to_delete = 0;
14979
14980 /* Delete all breakpoints if no argument.
14981 Do not delete internal or call-dummy breakpoints, these
14982 have to be deleted with an explicit breakpoint number
14983 argument. */
14984 ALL_TRACEPOINTS (b)
14985 if (is_tracepoint (b) && user_breakpoint_p (b))
14986 {
14987 breaks_to_delete = 1;
14988 break;
14989 }
14990
14991 /* Ask user only if there are some breakpoints to delete. */
14992 if (!from_tty
14993 || (breaks_to_delete && query (_("Delete all tracepoints? "))))
14994 {
14995 ALL_BREAKPOINTS_SAFE (b, b_tmp)
14996 if (is_tracepoint (b) && user_breakpoint_p (b))
14997 delete_breakpoint (b);
14998 }
14999 }
15000 else
15001 map_breakpoint_numbers
15002 (arg, [&] (breakpoint *b)
15003 {
15004 iterate_over_related_breakpoints (b, delete_breakpoint);
15005 });
15006 }
15007
15008 /* Helper function for trace_pass_command. */
15009
15010 static void
15011 trace_pass_set_count (struct tracepoint *tp, int count, int from_tty)
15012 {
15013 tp->pass_count = count;
15014 observer_notify_breakpoint_modified (tp);
15015 if (from_tty)
15016 printf_filtered (_("Setting tracepoint %d's passcount to %d\n"),
15017 tp->number, count);
15018 }
15019
15020 /* Set passcount for tracepoint.
15021
15022 First command argument is passcount, second is tracepoint number.
15023 If tracepoint number omitted, apply to most recently defined.
15024 Also accepts special argument "all". */
15025
15026 static void
15027 trace_pass_command (char *args, int from_tty)
15028 {
15029 struct tracepoint *t1;
15030 unsigned int count;
15031
15032 if (args == 0 || *args == 0)
15033 error (_("passcount command requires an "
15034 "argument (count + optional TP num)"));
15035
15036 count = strtoul (args, &args, 10); /* Count comes first, then TP num. */
15037
15038 args = skip_spaces (args);
15039 if (*args && strncasecmp (args, "all", 3) == 0)
15040 {
15041 struct breakpoint *b;
15042
15043 args += 3; /* Skip special argument "all". */
15044 if (*args)
15045 error (_("Junk at end of arguments."));
15046
15047 ALL_TRACEPOINTS (b)
15048 {
15049 t1 = (struct tracepoint *) b;
15050 trace_pass_set_count (t1, count, from_tty);
15051 }
15052 }
15053 else if (*args == '\0')
15054 {
15055 t1 = get_tracepoint_by_number (&args, NULL);
15056 if (t1)
15057 trace_pass_set_count (t1, count, from_tty);
15058 }
15059 else
15060 {
15061 number_or_range_parser parser (args);
15062 while (!parser.finished ())
15063 {
15064 t1 = get_tracepoint_by_number (&args, &parser);
15065 if (t1)
15066 trace_pass_set_count (t1, count, from_tty);
15067 }
15068 }
15069 }
15070
15071 struct tracepoint *
15072 get_tracepoint (int num)
15073 {
15074 struct breakpoint *t;
15075
15076 ALL_TRACEPOINTS (t)
15077 if (t->number == num)
15078 return (struct tracepoint *) t;
15079
15080 return NULL;
15081 }
15082
15083 /* Find the tracepoint with the given target-side number (which may be
15084 different from the tracepoint number after disconnecting and
15085 reconnecting). */
15086
15087 struct tracepoint *
15088 get_tracepoint_by_number_on_target (int num)
15089 {
15090 struct breakpoint *b;
15091
15092 ALL_TRACEPOINTS (b)
15093 {
15094 struct tracepoint *t = (struct tracepoint *) b;
15095
15096 if (t->number_on_target == num)
15097 return t;
15098 }
15099
15100 return NULL;
15101 }
15102
15103 /* Utility: parse a tracepoint number and look it up in the list.
15104 If STATE is not NULL, use, get_number_or_range_state and ignore ARG.
15105 If the argument is missing, the most recent tracepoint
15106 (tracepoint_count) is returned. */
15107
15108 struct tracepoint *
15109 get_tracepoint_by_number (char **arg,
15110 number_or_range_parser *parser)
15111 {
15112 struct breakpoint *t;
15113 int tpnum;
15114 char *instring = arg == NULL ? NULL : *arg;
15115
15116 if (parser != NULL)
15117 {
15118 gdb_assert (!parser->finished ());
15119 tpnum = parser->get_number ();
15120 }
15121 else if (arg == NULL || *arg == NULL || ! **arg)
15122 tpnum = tracepoint_count;
15123 else
15124 tpnum = get_number (arg);
15125
15126 if (tpnum <= 0)
15127 {
15128 if (instring && *instring)
15129 printf_filtered (_("bad tracepoint number at or near '%s'\n"),
15130 instring);
15131 else
15132 printf_filtered (_("No previous tracepoint\n"));
15133 return NULL;
15134 }
15135
15136 ALL_TRACEPOINTS (t)
15137 if (t->number == tpnum)
15138 {
15139 return (struct tracepoint *) t;
15140 }
15141
15142 printf_unfiltered ("No tracepoint number %d.\n", tpnum);
15143 return NULL;
15144 }
15145
15146 void
15147 print_recreate_thread (struct breakpoint *b, struct ui_file *fp)
15148 {
15149 if (b->thread != -1)
15150 fprintf_unfiltered (fp, " thread %d", b->thread);
15151
15152 if (b->task != 0)
15153 fprintf_unfiltered (fp, " task %d", b->task);
15154
15155 fprintf_unfiltered (fp, "\n");
15156 }
15157
15158 /* Save information on user settable breakpoints (watchpoints, etc) to
15159 a new script file named FILENAME. If FILTER is non-NULL, call it
15160 on each breakpoint and only include the ones for which it returns
15161 non-zero. */
15162
15163 static void
15164 save_breakpoints (const char *filename, int from_tty,
15165 int (*filter) (const struct breakpoint *))
15166 {
15167 struct breakpoint *tp;
15168 int any = 0;
15169 int extra_trace_bits = 0;
15170
15171 if (filename == 0 || *filename == 0)
15172 error (_("Argument required (file name in which to save)"));
15173
15174 /* See if we have anything to save. */
15175 ALL_BREAKPOINTS (tp)
15176 {
15177 /* Skip internal and momentary breakpoints. */
15178 if (!user_breakpoint_p (tp))
15179 continue;
15180
15181 /* If we have a filter, only save the breakpoints it accepts. */
15182 if (filter && !filter (tp))
15183 continue;
15184
15185 any = 1;
15186
15187 if (is_tracepoint (tp))
15188 {
15189 extra_trace_bits = 1;
15190
15191 /* We can stop searching. */
15192 break;
15193 }
15194 }
15195
15196 if (!any)
15197 {
15198 warning (_("Nothing to save."));
15199 return;
15200 }
15201
15202 gdb::unique_xmalloc_ptr<char> expanded_filename (tilde_expand (filename));
15203
15204 stdio_file fp;
15205
15206 if (!fp.open (expanded_filename.get (), "w"))
15207 error (_("Unable to open file '%s' for saving (%s)"),
15208 expanded_filename.get (), safe_strerror (errno));
15209
15210 if (extra_trace_bits)
15211 save_trace_state_variables (&fp);
15212
15213 ALL_BREAKPOINTS (tp)
15214 {
15215 /* Skip internal and momentary breakpoints. */
15216 if (!user_breakpoint_p (tp))
15217 continue;
15218
15219 /* If we have a filter, only save the breakpoints it accepts. */
15220 if (filter && !filter (tp))
15221 continue;
15222
15223 tp->ops->print_recreate (tp, &fp);
15224
15225 /* Note, we can't rely on tp->number for anything, as we can't
15226 assume the recreated breakpoint numbers will match. Use $bpnum
15227 instead. */
15228
15229 if (tp->cond_string)
15230 fp.printf (" condition $bpnum %s\n", tp->cond_string);
15231
15232 if (tp->ignore_count)
15233 fp.printf (" ignore $bpnum %d\n", tp->ignore_count);
15234
15235 if (tp->type != bp_dprintf && tp->commands)
15236 {
15237 fp.puts (" commands\n");
15238
15239 current_uiout->redirect (&fp);
15240 TRY
15241 {
15242 print_command_lines (current_uiout, tp->commands.get (), 2);
15243 }
15244 CATCH (ex, RETURN_MASK_ALL)
15245 {
15246 current_uiout->redirect (NULL);
15247 throw_exception (ex);
15248 }
15249 END_CATCH
15250
15251 current_uiout->redirect (NULL);
15252 fp.puts (" end\n");
15253 }
15254
15255 if (tp->enable_state == bp_disabled)
15256 fp.puts ("disable $bpnum\n");
15257
15258 /* If this is a multi-location breakpoint, check if the locations
15259 should be individually disabled. Watchpoint locations are
15260 special, and not user visible. */
15261 if (!is_watchpoint (tp) && tp->loc && tp->loc->next)
15262 {
15263 struct bp_location *loc;
15264 int n = 1;
15265
15266 for (loc = tp->loc; loc != NULL; loc = loc->next, n++)
15267 if (!loc->enabled)
15268 fp.printf ("disable $bpnum.%d\n", n);
15269 }
15270 }
15271
15272 if (extra_trace_bits && *default_collect)
15273 fp.printf ("set default-collect %s\n", default_collect);
15274
15275 if (from_tty)
15276 printf_filtered (_("Saved to file '%s'.\n"), expanded_filename.get ());
15277 }
15278
15279 /* The `save breakpoints' command. */
15280
15281 static void
15282 save_breakpoints_command (const char *args, int from_tty)
15283 {
15284 save_breakpoints (args, from_tty, NULL);
15285 }
15286
15287 /* The `save tracepoints' command. */
15288
15289 static void
15290 save_tracepoints_command (const char *args, int from_tty)
15291 {
15292 save_breakpoints (args, from_tty, is_tracepoint);
15293 }
15294
15295 /* Create a vector of all tracepoints. */
15296
15297 VEC(breakpoint_p) *
15298 all_tracepoints (void)
15299 {
15300 VEC(breakpoint_p) *tp_vec = 0;
15301 struct breakpoint *tp;
15302
15303 ALL_TRACEPOINTS (tp)
15304 {
15305 VEC_safe_push (breakpoint_p, tp_vec, tp);
15306 }
15307
15308 return tp_vec;
15309 }
15310
15311 \f
15312 /* This help string is used to consolidate all the help string for specifying
15313 locations used by several commands. */
15314
15315 #define LOCATION_HELP_STRING \
15316 "Linespecs are colon-separated lists of location parameters, such as\n\
15317 source filename, function name, label name, and line number.\n\
15318 Example: To specify the start of a label named \"the_top\" in the\n\
15319 function \"fact\" in the file \"factorial.c\", use\n\
15320 \"factorial.c:fact:the_top\".\n\
15321 \n\
15322 Address locations begin with \"*\" and specify an exact address in the\n\
15323 program. Example: To specify the fourth byte past the start function\n\
15324 \"main\", use \"*main + 4\".\n\
15325 \n\
15326 Explicit locations are similar to linespecs but use an option/argument\n\
15327 syntax to specify location parameters.\n\
15328 Example: To specify the start of the label named \"the_top\" in the\n\
15329 function \"fact\" in the file \"factorial.c\", use \"-source factorial.c\n\
15330 -function fact -label the_top\".\n"
15331
15332 /* This help string is used for the break, hbreak, tbreak and thbreak
15333 commands. It is defined as a macro to prevent duplication.
15334 COMMAND should be a string constant containing the name of the
15335 command. */
15336
15337 #define BREAK_ARGS_HELP(command) \
15338 command" [PROBE_MODIFIER] [LOCATION] [thread THREADNUM] [if CONDITION]\n\
15339 PROBE_MODIFIER shall be present if the command is to be placed in a\n\
15340 probe point. Accepted values are `-probe' (for a generic, automatically\n\
15341 guessed probe type), `-probe-stap' (for a SystemTap probe) or \n\
15342 `-probe-dtrace' (for a DTrace probe).\n\
15343 LOCATION may be a linespec, address, or explicit location as described\n\
15344 below.\n\
15345 \n\
15346 With no LOCATION, uses current execution address of the selected\n\
15347 stack frame. This is useful for breaking on return to a stack frame.\n\
15348 \n\
15349 THREADNUM is the number from \"info threads\".\n\
15350 CONDITION is a boolean expression.\n\
15351 \n" LOCATION_HELP_STRING "\n\
15352 Multiple breakpoints at one place are permitted, and useful if their\n\
15353 conditions are different.\n\
15354 \n\
15355 Do \"help breakpoints\" for info on other commands dealing with breakpoints."
15356
15357 /* List of subcommands for "catch". */
15358 static struct cmd_list_element *catch_cmdlist;
15359
15360 /* List of subcommands for "tcatch". */
15361 static struct cmd_list_element *tcatch_cmdlist;
15362
15363 void
15364 add_catch_command (const char *name, const char *docstring,
15365 cmd_sfunc_ftype *sfunc,
15366 completer_ftype *completer,
15367 void *user_data_catch,
15368 void *user_data_tcatch)
15369 {
15370 struct cmd_list_element *command;
15371
15372 command = add_cmd (name, class_breakpoint, docstring,
15373 &catch_cmdlist);
15374 set_cmd_sfunc (command, sfunc);
15375 set_cmd_context (command, user_data_catch);
15376 set_cmd_completer (command, completer);
15377
15378 command = add_cmd (name, class_breakpoint, docstring,
15379 &tcatch_cmdlist);
15380 set_cmd_sfunc (command, sfunc);
15381 set_cmd_context (command, user_data_tcatch);
15382 set_cmd_completer (command, completer);
15383 }
15384
15385 static void
15386 save_command (char *arg, int from_tty)
15387 {
15388 printf_unfiltered (_("\"save\" must be followed by "
15389 "the name of a save subcommand.\n"));
15390 help_list (save_cmdlist, "save ", all_commands, gdb_stdout);
15391 }
15392
15393 struct breakpoint *
15394 iterate_over_breakpoints (int (*callback) (struct breakpoint *, void *),
15395 void *data)
15396 {
15397 struct breakpoint *b, *b_tmp;
15398
15399 ALL_BREAKPOINTS_SAFE (b, b_tmp)
15400 {
15401 if ((*callback) (b, data))
15402 return b;
15403 }
15404
15405 return NULL;
15406 }
15407
15408 /* Zero if any of the breakpoint's locations could be a location where
15409 functions have been inlined, nonzero otherwise. */
15410
15411 static int
15412 is_non_inline_function (struct breakpoint *b)
15413 {
15414 /* The shared library event breakpoint is set on the address of a
15415 non-inline function. */
15416 if (b->type == bp_shlib_event)
15417 return 1;
15418
15419 return 0;
15420 }
15421
15422 /* Nonzero if the specified PC cannot be a location where functions
15423 have been inlined. */
15424
15425 int
15426 pc_at_non_inline_function (struct address_space *aspace, CORE_ADDR pc,
15427 const struct target_waitstatus *ws)
15428 {
15429 struct breakpoint *b;
15430 struct bp_location *bl;
15431
15432 ALL_BREAKPOINTS (b)
15433 {
15434 if (!is_non_inline_function (b))
15435 continue;
15436
15437 for (bl = b->loc; bl != NULL; bl = bl->next)
15438 {
15439 if (!bl->shlib_disabled
15440 && bpstat_check_location (bl, aspace, pc, ws))
15441 return 1;
15442 }
15443 }
15444
15445 return 0;
15446 }
15447
15448 /* Remove any references to OBJFILE which is going to be freed. */
15449
15450 void
15451 breakpoint_free_objfile (struct objfile *objfile)
15452 {
15453 struct bp_location **locp, *loc;
15454
15455 ALL_BP_LOCATIONS (loc, locp)
15456 if (loc->symtab != NULL && SYMTAB_OBJFILE (loc->symtab) == objfile)
15457 loc->symtab = NULL;
15458 }
15459
15460 void
15461 initialize_breakpoint_ops (void)
15462 {
15463 static int initialized = 0;
15464
15465 struct breakpoint_ops *ops;
15466
15467 if (initialized)
15468 return;
15469 initialized = 1;
15470
15471 /* The breakpoint_ops structure to be inherit by all kinds of
15472 breakpoints (real breakpoints, i.e., user "break" breakpoints,
15473 internal and momentary breakpoints, etc.). */
15474 ops = &bkpt_base_breakpoint_ops;
15475 *ops = base_breakpoint_ops;
15476 ops->re_set = bkpt_re_set;
15477 ops->insert_location = bkpt_insert_location;
15478 ops->remove_location = bkpt_remove_location;
15479 ops->breakpoint_hit = bkpt_breakpoint_hit;
15480 ops->create_sals_from_location = bkpt_create_sals_from_location;
15481 ops->create_breakpoints_sal = bkpt_create_breakpoints_sal;
15482 ops->decode_location = bkpt_decode_location;
15483
15484 /* The breakpoint_ops structure to be used in regular breakpoints. */
15485 ops = &bkpt_breakpoint_ops;
15486 *ops = bkpt_base_breakpoint_ops;
15487 ops->re_set = bkpt_re_set;
15488 ops->resources_needed = bkpt_resources_needed;
15489 ops->print_it = bkpt_print_it;
15490 ops->print_mention = bkpt_print_mention;
15491 ops->print_recreate = bkpt_print_recreate;
15492
15493 /* Ranged breakpoints. */
15494 ops = &ranged_breakpoint_ops;
15495 *ops = bkpt_breakpoint_ops;
15496 ops->breakpoint_hit = breakpoint_hit_ranged_breakpoint;
15497 ops->resources_needed = resources_needed_ranged_breakpoint;
15498 ops->print_it = print_it_ranged_breakpoint;
15499 ops->print_one = print_one_ranged_breakpoint;
15500 ops->print_one_detail = print_one_detail_ranged_breakpoint;
15501 ops->print_mention = print_mention_ranged_breakpoint;
15502 ops->print_recreate = print_recreate_ranged_breakpoint;
15503
15504 /* Internal breakpoints. */
15505 ops = &internal_breakpoint_ops;
15506 *ops = bkpt_base_breakpoint_ops;
15507 ops->re_set = internal_bkpt_re_set;
15508 ops->check_status = internal_bkpt_check_status;
15509 ops->print_it = internal_bkpt_print_it;
15510 ops->print_mention = internal_bkpt_print_mention;
15511
15512 /* Momentary breakpoints. */
15513 ops = &momentary_breakpoint_ops;
15514 *ops = bkpt_base_breakpoint_ops;
15515 ops->re_set = momentary_bkpt_re_set;
15516 ops->check_status = momentary_bkpt_check_status;
15517 ops->print_it = momentary_bkpt_print_it;
15518 ops->print_mention = momentary_bkpt_print_mention;
15519
15520 /* Probe breakpoints. */
15521 ops = &bkpt_probe_breakpoint_ops;
15522 *ops = bkpt_breakpoint_ops;
15523 ops->insert_location = bkpt_probe_insert_location;
15524 ops->remove_location = bkpt_probe_remove_location;
15525 ops->create_sals_from_location = bkpt_probe_create_sals_from_location;
15526 ops->decode_location = bkpt_probe_decode_location;
15527
15528 /* Watchpoints. */
15529 ops = &watchpoint_breakpoint_ops;
15530 *ops = base_breakpoint_ops;
15531 ops->re_set = re_set_watchpoint;
15532 ops->insert_location = insert_watchpoint;
15533 ops->remove_location = remove_watchpoint;
15534 ops->breakpoint_hit = breakpoint_hit_watchpoint;
15535 ops->check_status = check_status_watchpoint;
15536 ops->resources_needed = resources_needed_watchpoint;
15537 ops->works_in_software_mode = works_in_software_mode_watchpoint;
15538 ops->print_it = print_it_watchpoint;
15539 ops->print_mention = print_mention_watchpoint;
15540 ops->print_recreate = print_recreate_watchpoint;
15541 ops->explains_signal = explains_signal_watchpoint;
15542
15543 /* Masked watchpoints. */
15544 ops = &masked_watchpoint_breakpoint_ops;
15545 *ops = watchpoint_breakpoint_ops;
15546 ops->insert_location = insert_masked_watchpoint;
15547 ops->remove_location = remove_masked_watchpoint;
15548 ops->resources_needed = resources_needed_masked_watchpoint;
15549 ops->works_in_software_mode = works_in_software_mode_masked_watchpoint;
15550 ops->print_it = print_it_masked_watchpoint;
15551 ops->print_one_detail = print_one_detail_masked_watchpoint;
15552 ops->print_mention = print_mention_masked_watchpoint;
15553 ops->print_recreate = print_recreate_masked_watchpoint;
15554
15555 /* Tracepoints. */
15556 ops = &tracepoint_breakpoint_ops;
15557 *ops = base_breakpoint_ops;
15558 ops->re_set = tracepoint_re_set;
15559 ops->breakpoint_hit = tracepoint_breakpoint_hit;
15560 ops->print_one_detail = tracepoint_print_one_detail;
15561 ops->print_mention = tracepoint_print_mention;
15562 ops->print_recreate = tracepoint_print_recreate;
15563 ops->create_sals_from_location = tracepoint_create_sals_from_location;
15564 ops->create_breakpoints_sal = tracepoint_create_breakpoints_sal;
15565 ops->decode_location = tracepoint_decode_location;
15566
15567 /* Probe tracepoints. */
15568 ops = &tracepoint_probe_breakpoint_ops;
15569 *ops = tracepoint_breakpoint_ops;
15570 ops->create_sals_from_location = tracepoint_probe_create_sals_from_location;
15571 ops->decode_location = tracepoint_probe_decode_location;
15572
15573 /* Static tracepoints with marker (`-m'). */
15574 ops = &strace_marker_breakpoint_ops;
15575 *ops = tracepoint_breakpoint_ops;
15576 ops->create_sals_from_location = strace_marker_create_sals_from_location;
15577 ops->create_breakpoints_sal = strace_marker_create_breakpoints_sal;
15578 ops->decode_location = strace_marker_decode_location;
15579
15580 /* Fork catchpoints. */
15581 ops = &catch_fork_breakpoint_ops;
15582 *ops = base_breakpoint_ops;
15583 ops->insert_location = insert_catch_fork;
15584 ops->remove_location = remove_catch_fork;
15585 ops->breakpoint_hit = breakpoint_hit_catch_fork;
15586 ops->print_it = print_it_catch_fork;
15587 ops->print_one = print_one_catch_fork;
15588 ops->print_mention = print_mention_catch_fork;
15589 ops->print_recreate = print_recreate_catch_fork;
15590
15591 /* Vfork catchpoints. */
15592 ops = &catch_vfork_breakpoint_ops;
15593 *ops = base_breakpoint_ops;
15594 ops->insert_location = insert_catch_vfork;
15595 ops->remove_location = remove_catch_vfork;
15596 ops->breakpoint_hit = breakpoint_hit_catch_vfork;
15597 ops->print_it = print_it_catch_vfork;
15598 ops->print_one = print_one_catch_vfork;
15599 ops->print_mention = print_mention_catch_vfork;
15600 ops->print_recreate = print_recreate_catch_vfork;
15601
15602 /* Exec catchpoints. */
15603 ops = &catch_exec_breakpoint_ops;
15604 *ops = base_breakpoint_ops;
15605 ops->insert_location = insert_catch_exec;
15606 ops->remove_location = remove_catch_exec;
15607 ops->breakpoint_hit = breakpoint_hit_catch_exec;
15608 ops->print_it = print_it_catch_exec;
15609 ops->print_one = print_one_catch_exec;
15610 ops->print_mention = print_mention_catch_exec;
15611 ops->print_recreate = print_recreate_catch_exec;
15612
15613 /* Solib-related catchpoints. */
15614 ops = &catch_solib_breakpoint_ops;
15615 *ops = base_breakpoint_ops;
15616 ops->insert_location = insert_catch_solib;
15617 ops->remove_location = remove_catch_solib;
15618 ops->breakpoint_hit = breakpoint_hit_catch_solib;
15619 ops->check_status = check_status_catch_solib;
15620 ops->print_it = print_it_catch_solib;
15621 ops->print_one = print_one_catch_solib;
15622 ops->print_mention = print_mention_catch_solib;
15623 ops->print_recreate = print_recreate_catch_solib;
15624
15625 ops = &dprintf_breakpoint_ops;
15626 *ops = bkpt_base_breakpoint_ops;
15627 ops->re_set = dprintf_re_set;
15628 ops->resources_needed = bkpt_resources_needed;
15629 ops->print_it = bkpt_print_it;
15630 ops->print_mention = bkpt_print_mention;
15631 ops->print_recreate = dprintf_print_recreate;
15632 ops->after_condition_true = dprintf_after_condition_true;
15633 ops->breakpoint_hit = dprintf_breakpoint_hit;
15634 }
15635
15636 /* Chain containing all defined "enable breakpoint" subcommands. */
15637
15638 static struct cmd_list_element *enablebreaklist = NULL;
15639
15640 void
15641 _initialize_breakpoint (void)
15642 {
15643 struct cmd_list_element *c;
15644
15645 initialize_breakpoint_ops ();
15646
15647 observer_attach_solib_unloaded (disable_breakpoints_in_unloaded_shlib);
15648 observer_attach_free_objfile (disable_breakpoints_in_freed_objfile);
15649 observer_attach_memory_changed (invalidate_bp_value_on_memory_change);
15650
15651 breakpoint_objfile_key
15652 = register_objfile_data_with_cleanup (NULL, free_breakpoint_probes);
15653
15654 breakpoint_chain = 0;
15655 /* Don't bother to call set_breakpoint_count. $bpnum isn't useful
15656 before a breakpoint is set. */
15657 breakpoint_count = 0;
15658
15659 tracepoint_count = 0;
15660
15661 add_com ("ignore", class_breakpoint, ignore_command, _("\
15662 Set ignore-count of breakpoint number N to COUNT.\n\
15663 Usage is `ignore N COUNT'."));
15664
15665 add_com ("commands", class_breakpoint, commands_command, _("\
15666 Set commands to be executed when the given breakpoints are hit.\n\
15667 Give a space-separated breakpoint list as argument after \"commands\".\n\
15668 A list element can be a breakpoint number (e.g. `5') or a range of numbers\n\
15669 (e.g. `5-7').\n\
15670 With no argument, the targeted breakpoint is the last one set.\n\
15671 The commands themselves follow starting on the next line.\n\
15672 Type a line containing \"end\" to indicate the end of them.\n\
15673 Give \"silent\" as the first line to make the breakpoint silent;\n\
15674 then no output is printed when it is hit, except what the commands print."));
15675
15676 c = add_com ("condition", class_breakpoint, condition_command, _("\
15677 Specify breakpoint number N to break only if COND is true.\n\
15678 Usage is `condition N COND', where N is an integer and COND is an\n\
15679 expression to be evaluated whenever breakpoint N is reached."));
15680 set_cmd_completer (c, condition_completer);
15681
15682 c = add_com ("tbreak", class_breakpoint, tbreak_command, _("\
15683 Set a temporary breakpoint.\n\
15684 Like \"break\" except the breakpoint is only temporary,\n\
15685 so it will be deleted when hit. Equivalent to \"break\" followed\n\
15686 by using \"enable delete\" on the breakpoint number.\n\
15687 \n"
15688 BREAK_ARGS_HELP ("tbreak")));
15689 set_cmd_completer (c, location_completer);
15690
15691 c = add_com ("hbreak", class_breakpoint, hbreak_command, _("\
15692 Set a hardware assisted breakpoint.\n\
15693 Like \"break\" except the breakpoint requires hardware support,\n\
15694 some target hardware may not have this support.\n\
15695 \n"
15696 BREAK_ARGS_HELP ("hbreak")));
15697 set_cmd_completer (c, location_completer);
15698
15699 c = add_com ("thbreak", class_breakpoint, thbreak_command, _("\
15700 Set a temporary hardware assisted breakpoint.\n\
15701 Like \"hbreak\" except the breakpoint is only temporary,\n\
15702 so it will be deleted when hit.\n\
15703 \n"
15704 BREAK_ARGS_HELP ("thbreak")));
15705 set_cmd_completer (c, location_completer);
15706
15707 add_prefix_cmd ("enable", class_breakpoint, enable_command, _("\
15708 Enable some breakpoints.\n\
15709 Give breakpoint numbers (separated by spaces) as arguments.\n\
15710 With no subcommand, breakpoints are enabled until you command otherwise.\n\
15711 This is used to cancel the effect of the \"disable\" command.\n\
15712 With a subcommand you can enable temporarily."),
15713 &enablelist, "enable ", 1, &cmdlist);
15714
15715 add_com_alias ("en", "enable", class_breakpoint, 1);
15716
15717 add_prefix_cmd ("breakpoints", class_breakpoint, enable_command, _("\
15718 Enable some breakpoints.\n\
15719 Give breakpoint numbers (separated by spaces) as arguments.\n\
15720 This is used to cancel the effect of the \"disable\" command.\n\
15721 May be abbreviated to simply \"enable\".\n"),
15722 &enablebreaklist, "enable breakpoints ", 1, &enablelist);
15723
15724 add_cmd ("once", no_class, enable_once_command, _("\
15725 Enable breakpoints for one hit. Give breakpoint numbers.\n\
15726 If a breakpoint is hit while enabled in this fashion, it becomes disabled."),
15727 &enablebreaklist);
15728
15729 add_cmd ("delete", no_class, enable_delete_command, _("\
15730 Enable breakpoints and delete when hit. Give breakpoint numbers.\n\
15731 If a breakpoint is hit while enabled in this fashion, it is deleted."),
15732 &enablebreaklist);
15733
15734 add_cmd ("count", no_class, enable_count_command, _("\
15735 Enable breakpoints for COUNT hits. Give count and then breakpoint numbers.\n\
15736 If a breakpoint is hit while enabled in this fashion,\n\
15737 the count is decremented; when it reaches zero, the breakpoint is disabled."),
15738 &enablebreaklist);
15739
15740 add_cmd ("delete", no_class, enable_delete_command, _("\
15741 Enable breakpoints and delete when hit. Give breakpoint numbers.\n\
15742 If a breakpoint is hit while enabled in this fashion, it is deleted."),
15743 &enablelist);
15744
15745 add_cmd ("once", no_class, enable_once_command, _("\
15746 Enable breakpoints for one hit. Give breakpoint numbers.\n\
15747 If a breakpoint is hit while enabled in this fashion, it becomes disabled."),
15748 &enablelist);
15749
15750 add_cmd ("count", no_class, enable_count_command, _("\
15751 Enable breakpoints for COUNT hits. Give count and then breakpoint numbers.\n\
15752 If a breakpoint is hit while enabled in this fashion,\n\
15753 the count is decremented; when it reaches zero, the breakpoint is disabled."),
15754 &enablelist);
15755
15756 add_prefix_cmd ("disable", class_breakpoint, disable_command, _("\
15757 Disable some breakpoints.\n\
15758 Arguments are breakpoint numbers with spaces in between.\n\
15759 To disable all breakpoints, give no argument.\n\
15760 A disabled breakpoint is not forgotten, but has no effect until re-enabled."),
15761 &disablelist, "disable ", 1, &cmdlist);
15762 add_com_alias ("dis", "disable", class_breakpoint, 1);
15763 add_com_alias ("disa", "disable", class_breakpoint, 1);
15764
15765 add_cmd ("breakpoints", class_alias, disable_command, _("\
15766 Disable some breakpoints.\n\
15767 Arguments are breakpoint numbers with spaces in between.\n\
15768 To disable all breakpoints, give no argument.\n\
15769 A disabled breakpoint is not forgotten, but has no effect until re-enabled.\n\
15770 This command may be abbreviated \"disable\"."),
15771 &disablelist);
15772
15773 add_prefix_cmd ("delete", class_breakpoint, delete_command, _("\
15774 Delete some breakpoints or auto-display expressions.\n\
15775 Arguments are breakpoint numbers with spaces in between.\n\
15776 To delete all breakpoints, give no argument.\n\
15777 \n\
15778 Also a prefix command for deletion of other GDB objects.\n\
15779 The \"unset\" command is also an alias for \"delete\"."),
15780 &deletelist, "delete ", 1, &cmdlist);
15781 add_com_alias ("d", "delete", class_breakpoint, 1);
15782 add_com_alias ("del", "delete", class_breakpoint, 1);
15783
15784 add_cmd ("breakpoints", class_alias, delete_command, _("\
15785 Delete some breakpoints or auto-display expressions.\n\
15786 Arguments are breakpoint numbers with spaces in between.\n\
15787 To delete all breakpoints, give no argument.\n\
15788 This command may be abbreviated \"delete\"."),
15789 &deletelist);
15790
15791 add_com ("clear", class_breakpoint, clear_command, _("\
15792 Clear breakpoint at specified location.\n\
15793 Argument may be a linespec, explicit, or address location as described below.\n\
15794 \n\
15795 With no argument, clears all breakpoints in the line that the selected frame\n\
15796 is executing in.\n"
15797 "\n" LOCATION_HELP_STRING "\n\
15798 See also the \"delete\" command which clears breakpoints by number."));
15799 add_com_alias ("cl", "clear", class_breakpoint, 1);
15800
15801 c = add_com ("break", class_breakpoint, break_command, _("\
15802 Set breakpoint at specified location.\n"
15803 BREAK_ARGS_HELP ("break")));
15804 set_cmd_completer (c, location_completer);
15805
15806 add_com_alias ("b", "break", class_run, 1);
15807 add_com_alias ("br", "break", class_run, 1);
15808 add_com_alias ("bre", "break", class_run, 1);
15809 add_com_alias ("brea", "break", class_run, 1);
15810
15811 if (dbx_commands)
15812 {
15813 add_abbrev_prefix_cmd ("stop", class_breakpoint, stop_command, _("\
15814 Break in function/address or break at a line in the current file."),
15815 &stoplist, "stop ", 1, &cmdlist);
15816 add_cmd ("in", class_breakpoint, stopin_command,
15817 _("Break in function or address."), &stoplist);
15818 add_cmd ("at", class_breakpoint, stopat_command,
15819 _("Break at a line in the current file."), &stoplist);
15820 add_com ("status", class_info, info_breakpoints_command, _("\
15821 Status of user-settable breakpoints, or breakpoint number NUMBER.\n\
15822 The \"Type\" column indicates one of:\n\
15823 \tbreakpoint - normal breakpoint\n\
15824 \twatchpoint - watchpoint\n\
15825 The \"Disp\" column contains one of \"keep\", \"del\", or \"dis\" to indicate\n\
15826 the disposition of the breakpoint after it gets hit. \"dis\" means that the\n\
15827 breakpoint will be disabled. The \"Address\" and \"What\" columns indicate the\n\
15828 address and file/line number respectively.\n\
15829 \n\
15830 Convenience variable \"$_\" and default examine address for \"x\"\n\
15831 are set to the address of the last breakpoint listed unless the command\n\
15832 is prefixed with \"server \".\n\n\
15833 Convenience variable \"$bpnum\" contains the number of the last\n\
15834 breakpoint set."));
15835 }
15836
15837 add_info ("breakpoints", info_breakpoints_command, _("\
15838 Status of specified breakpoints (all user-settable breakpoints if no argument).\n\
15839 The \"Type\" column indicates one of:\n\
15840 \tbreakpoint - normal breakpoint\n\
15841 \twatchpoint - watchpoint\n\
15842 The \"Disp\" column contains one of \"keep\", \"del\", or \"dis\" to indicate\n\
15843 the disposition of the breakpoint after it gets hit. \"dis\" means that the\n\
15844 breakpoint will be disabled. The \"Address\" and \"What\" columns indicate the\n\
15845 address and file/line number respectively.\n\
15846 \n\
15847 Convenience variable \"$_\" and default examine address for \"x\"\n\
15848 are set to the address of the last breakpoint listed unless the command\n\
15849 is prefixed with \"server \".\n\n\
15850 Convenience variable \"$bpnum\" contains the number of the last\n\
15851 breakpoint set."));
15852
15853 add_info_alias ("b", "breakpoints", 1);
15854
15855 add_cmd ("breakpoints", class_maintenance, maintenance_info_breakpoints, _("\
15856 Status of all breakpoints, or breakpoint number NUMBER.\n\
15857 The \"Type\" column indicates one of:\n\
15858 \tbreakpoint - normal breakpoint\n\
15859 \twatchpoint - watchpoint\n\
15860 \tlongjmp - internal breakpoint used to step through longjmp()\n\
15861 \tlongjmp resume - internal breakpoint at the target of longjmp()\n\
15862 \tuntil - internal breakpoint used by the \"until\" command\n\
15863 \tfinish - internal breakpoint used by the \"finish\" command\n\
15864 The \"Disp\" column contains one of \"keep\", \"del\", or \"dis\" to indicate\n\
15865 the disposition of the breakpoint after it gets hit. \"dis\" means that the\n\
15866 breakpoint will be disabled. The \"Address\" and \"What\" columns indicate the\n\
15867 address and file/line number respectively.\n\
15868 \n\
15869 Convenience variable \"$_\" and default examine address for \"x\"\n\
15870 are set to the address of the last breakpoint listed unless the command\n\
15871 is prefixed with \"server \".\n\n\
15872 Convenience variable \"$bpnum\" contains the number of the last\n\
15873 breakpoint set."),
15874 &maintenanceinfolist);
15875
15876 add_prefix_cmd ("catch", class_breakpoint, catch_command, _("\
15877 Set catchpoints to catch events."),
15878 &catch_cmdlist, "catch ",
15879 0/*allow-unknown*/, &cmdlist);
15880
15881 add_prefix_cmd ("tcatch", class_breakpoint, tcatch_command, _("\
15882 Set temporary catchpoints to catch events."),
15883 &tcatch_cmdlist, "tcatch ",
15884 0/*allow-unknown*/, &cmdlist);
15885
15886 add_catch_command ("fork", _("Catch calls to fork."),
15887 catch_fork_command_1,
15888 NULL,
15889 (void *) (uintptr_t) catch_fork_permanent,
15890 (void *) (uintptr_t) catch_fork_temporary);
15891 add_catch_command ("vfork", _("Catch calls to vfork."),
15892 catch_fork_command_1,
15893 NULL,
15894 (void *) (uintptr_t) catch_vfork_permanent,
15895 (void *) (uintptr_t) catch_vfork_temporary);
15896 add_catch_command ("exec", _("Catch calls to exec."),
15897 catch_exec_command_1,
15898 NULL,
15899 CATCH_PERMANENT,
15900 CATCH_TEMPORARY);
15901 add_catch_command ("load", _("Catch loads of shared libraries.\n\
15902 Usage: catch load [REGEX]\n\
15903 If REGEX is given, only stop for libraries matching the regular expression."),
15904 catch_load_command_1,
15905 NULL,
15906 CATCH_PERMANENT,
15907 CATCH_TEMPORARY);
15908 add_catch_command ("unload", _("Catch unloads of shared libraries.\n\
15909 Usage: catch unload [REGEX]\n\
15910 If REGEX is given, only stop for libraries matching the regular expression."),
15911 catch_unload_command_1,
15912 NULL,
15913 CATCH_PERMANENT,
15914 CATCH_TEMPORARY);
15915
15916 c = add_com ("watch", class_breakpoint, watch_command, _("\
15917 Set a watchpoint for an expression.\n\
15918 Usage: watch [-l|-location] EXPRESSION\n\
15919 A watchpoint stops execution of your program whenever the value of\n\
15920 an expression changes.\n\
15921 If -l or -location is given, this evaluates EXPRESSION and watches\n\
15922 the memory to which it refers."));
15923 set_cmd_completer (c, expression_completer);
15924
15925 c = add_com ("rwatch", class_breakpoint, rwatch_command, _("\
15926 Set a read watchpoint for an expression.\n\
15927 Usage: rwatch [-l|-location] EXPRESSION\n\
15928 A watchpoint stops execution of your program whenever the value of\n\
15929 an expression is read.\n\
15930 If -l or -location is given, this evaluates EXPRESSION and watches\n\
15931 the memory to which it refers."));
15932 set_cmd_completer (c, expression_completer);
15933
15934 c = add_com ("awatch", class_breakpoint, awatch_command, _("\
15935 Set a watchpoint for an expression.\n\
15936 Usage: awatch [-l|-location] EXPRESSION\n\
15937 A watchpoint stops execution of your program whenever the value of\n\
15938 an expression is either read or written.\n\
15939 If -l or -location is given, this evaluates EXPRESSION and watches\n\
15940 the memory to which it refers."));
15941 set_cmd_completer (c, expression_completer);
15942
15943 add_info ("watchpoints", info_watchpoints_command, _("\
15944 Status of specified watchpoints (all watchpoints if no argument)."));
15945
15946 /* XXX: cagney/2005-02-23: This should be a boolean, and should
15947 respond to changes - contrary to the description. */
15948 add_setshow_zinteger_cmd ("can-use-hw-watchpoints", class_support,
15949 &can_use_hw_watchpoints, _("\
15950 Set debugger's willingness to use watchpoint hardware."), _("\
15951 Show debugger's willingness to use watchpoint hardware."), _("\
15952 If zero, gdb will not use hardware for new watchpoints, even if\n\
15953 such is available. (However, any hardware watchpoints that were\n\
15954 created before setting this to nonzero, will continue to use watchpoint\n\
15955 hardware.)"),
15956 NULL,
15957 show_can_use_hw_watchpoints,
15958 &setlist, &showlist);
15959
15960 can_use_hw_watchpoints = 1;
15961
15962 /* Tracepoint manipulation commands. */
15963
15964 c = add_com ("trace", class_breakpoint, trace_command, _("\
15965 Set a tracepoint at specified location.\n\
15966 \n"
15967 BREAK_ARGS_HELP ("trace") "\n\
15968 Do \"help tracepoints\" for info on other tracepoint commands."));
15969 set_cmd_completer (c, location_completer);
15970
15971 add_com_alias ("tp", "trace", class_alias, 0);
15972 add_com_alias ("tr", "trace", class_alias, 1);
15973 add_com_alias ("tra", "trace", class_alias, 1);
15974 add_com_alias ("trac", "trace", class_alias, 1);
15975
15976 c = add_com ("ftrace", class_breakpoint, ftrace_command, _("\
15977 Set a fast tracepoint at specified location.\n\
15978 \n"
15979 BREAK_ARGS_HELP ("ftrace") "\n\
15980 Do \"help tracepoints\" for info on other tracepoint commands."));
15981 set_cmd_completer (c, location_completer);
15982
15983 c = add_com ("strace", class_breakpoint, strace_command, _("\
15984 Set a static tracepoint at location or marker.\n\
15985 \n\
15986 strace [LOCATION] [if CONDITION]\n\
15987 LOCATION may be a linespec, explicit, or address location (described below) \n\
15988 or -m MARKER_ID.\n\n\
15989 If a marker id is specified, probe the marker with that name. With\n\
15990 no LOCATION, uses current execution address of the selected stack frame.\n\
15991 Static tracepoints accept an extra collect action -- ``collect $_sdata''.\n\
15992 This collects arbitrary user data passed in the probe point call to the\n\
15993 tracing library. You can inspect it when analyzing the trace buffer,\n\
15994 by printing the $_sdata variable like any other convenience variable.\n\
15995 \n\
15996 CONDITION is a boolean expression.\n\
15997 \n" LOCATION_HELP_STRING "\n\
15998 Multiple tracepoints at one place are permitted, and useful if their\n\
15999 conditions are different.\n\
16000 \n\
16001 Do \"help breakpoints\" for info on other commands dealing with breakpoints.\n\
16002 Do \"help tracepoints\" for info on other tracepoint commands."));
16003 set_cmd_completer (c, location_completer);
16004
16005 add_info ("tracepoints", info_tracepoints_command, _("\
16006 Status of specified tracepoints (all tracepoints if no argument).\n\
16007 Convenience variable \"$tpnum\" contains the number of the\n\
16008 last tracepoint set."));
16009
16010 add_info_alias ("tp", "tracepoints", 1);
16011
16012 add_cmd ("tracepoints", class_trace, delete_trace_command, _("\
16013 Delete specified tracepoints.\n\
16014 Arguments are tracepoint numbers, separated by spaces.\n\
16015 No argument means delete all tracepoints."),
16016 &deletelist);
16017 add_alias_cmd ("tr", "tracepoints", class_trace, 1, &deletelist);
16018
16019 c = add_cmd ("tracepoints", class_trace, disable_trace_command, _("\
16020 Disable specified tracepoints.\n\
16021 Arguments are tracepoint numbers, separated by spaces.\n\
16022 No argument means disable all tracepoints."),
16023 &disablelist);
16024 deprecate_cmd (c, "disable");
16025
16026 c = add_cmd ("tracepoints", class_trace, enable_trace_command, _("\
16027 Enable specified tracepoints.\n\
16028 Arguments are tracepoint numbers, separated by spaces.\n\
16029 No argument means enable all tracepoints."),
16030 &enablelist);
16031 deprecate_cmd (c, "enable");
16032
16033 add_com ("passcount", class_trace, trace_pass_command, _("\
16034 Set the passcount for a tracepoint.\n\
16035 The trace will end when the tracepoint has been passed 'count' times.\n\
16036 Usage: passcount COUNT TPNUM, where TPNUM may also be \"all\";\n\
16037 if TPNUM is omitted, passcount refers to the last tracepoint defined."));
16038
16039 add_prefix_cmd ("save", class_breakpoint, save_command,
16040 _("Save breakpoint definitions as a script."),
16041 &save_cmdlist, "save ",
16042 0/*allow-unknown*/, &cmdlist);
16043
16044 c = add_cmd ("breakpoints", class_breakpoint, save_breakpoints_command, _("\
16045 Save current breakpoint definitions as a script.\n\
16046 This includes all types of breakpoints (breakpoints, watchpoints,\n\
16047 catchpoints, tracepoints). Use the 'source' command in another debug\n\
16048 session to restore them."),
16049 &save_cmdlist);
16050 set_cmd_completer (c, filename_completer);
16051
16052 c = add_cmd ("tracepoints", class_trace, save_tracepoints_command, _("\
16053 Save current tracepoint definitions as a script.\n\
16054 Use the 'source' command in another debug session to restore them."),
16055 &save_cmdlist);
16056 set_cmd_completer (c, filename_completer);
16057
16058 c = add_com_alias ("save-tracepoints", "save tracepoints", class_trace, 0);
16059 deprecate_cmd (c, "save tracepoints");
16060
16061 add_prefix_cmd ("breakpoint", class_maintenance, set_breakpoint_cmd, _("\
16062 Breakpoint specific settings\n\
16063 Configure various breakpoint-specific variables such as\n\
16064 pending breakpoint behavior"),
16065 &breakpoint_set_cmdlist, "set breakpoint ",
16066 0/*allow-unknown*/, &setlist);
16067 add_prefix_cmd ("breakpoint", class_maintenance, show_breakpoint_cmd, _("\
16068 Breakpoint specific settings\n\
16069 Configure various breakpoint-specific variables such as\n\
16070 pending breakpoint behavior"),
16071 &breakpoint_show_cmdlist, "show breakpoint ",
16072 0/*allow-unknown*/, &showlist);
16073
16074 add_setshow_auto_boolean_cmd ("pending", no_class,
16075 &pending_break_support, _("\
16076 Set debugger's behavior regarding pending breakpoints."), _("\
16077 Show debugger's behavior regarding pending breakpoints."), _("\
16078 If on, an unrecognized breakpoint location will cause gdb to create a\n\
16079 pending breakpoint. If off, an unrecognized breakpoint location results in\n\
16080 an error. If auto, an unrecognized breakpoint location results in a\n\
16081 user-query to see if a pending breakpoint should be created."),
16082 NULL,
16083 show_pending_break_support,
16084 &breakpoint_set_cmdlist,
16085 &breakpoint_show_cmdlist);
16086
16087 pending_break_support = AUTO_BOOLEAN_AUTO;
16088
16089 add_setshow_boolean_cmd ("auto-hw", no_class,
16090 &automatic_hardware_breakpoints, _("\
16091 Set automatic usage of hardware breakpoints."), _("\
16092 Show automatic usage of hardware breakpoints."), _("\
16093 If set, the debugger will automatically use hardware breakpoints for\n\
16094 breakpoints set with \"break\" but falling in read-only memory. If not set,\n\
16095 a warning will be emitted for such breakpoints."),
16096 NULL,
16097 show_automatic_hardware_breakpoints,
16098 &breakpoint_set_cmdlist,
16099 &breakpoint_show_cmdlist);
16100
16101 add_setshow_boolean_cmd ("always-inserted", class_support,
16102 &always_inserted_mode, _("\
16103 Set mode for inserting breakpoints."), _("\
16104 Show mode for inserting breakpoints."), _("\
16105 When this mode is on, breakpoints are inserted immediately as soon as\n\
16106 they're created, kept inserted even when execution stops, and removed\n\
16107 only when the user deletes them. When this mode is off (the default),\n\
16108 breakpoints are inserted only when execution continues, and removed\n\
16109 when execution stops."),
16110 NULL,
16111 &show_always_inserted_mode,
16112 &breakpoint_set_cmdlist,
16113 &breakpoint_show_cmdlist);
16114
16115 add_setshow_enum_cmd ("condition-evaluation", class_breakpoint,
16116 condition_evaluation_enums,
16117 &condition_evaluation_mode_1, _("\
16118 Set mode of breakpoint condition evaluation."), _("\
16119 Show mode of breakpoint condition evaluation."), _("\
16120 When this is set to \"host\", breakpoint conditions will be\n\
16121 evaluated on the host's side by GDB. When it is set to \"target\",\n\
16122 breakpoint conditions will be downloaded to the target (if the target\n\
16123 supports such feature) and conditions will be evaluated on the target's side.\n\
16124 If this is set to \"auto\" (default), this will be automatically set to\n\
16125 \"target\" if it supports condition evaluation, otherwise it will\n\
16126 be set to \"gdb\""),
16127 &set_condition_evaluation_mode,
16128 &show_condition_evaluation_mode,
16129 &breakpoint_set_cmdlist,
16130 &breakpoint_show_cmdlist);
16131
16132 add_com ("break-range", class_breakpoint, break_range_command, _("\
16133 Set a breakpoint for an address range.\n\
16134 break-range START-LOCATION, END-LOCATION\n\
16135 where START-LOCATION and END-LOCATION can be one of the following:\n\
16136 LINENUM, for that line in the current file,\n\
16137 FILE:LINENUM, for that line in that file,\n\
16138 +OFFSET, for that number of lines after the current line\n\
16139 or the start of the range\n\
16140 FUNCTION, for the first line in that function,\n\
16141 FILE:FUNCTION, to distinguish among like-named static functions.\n\
16142 *ADDRESS, for the instruction at that address.\n\
16143 \n\
16144 The breakpoint will stop execution of the inferior whenever it executes\n\
16145 an instruction at any address within the [START-LOCATION, END-LOCATION]\n\
16146 range (including START-LOCATION and END-LOCATION)."));
16147
16148 c = add_com ("dprintf", class_breakpoint, dprintf_command, _("\
16149 Set a dynamic printf at specified location.\n\
16150 dprintf location,format string,arg1,arg2,...\n\
16151 location may be a linespec, explicit, or address location.\n"
16152 "\n" LOCATION_HELP_STRING));
16153 set_cmd_completer (c, location_completer);
16154
16155 add_setshow_enum_cmd ("dprintf-style", class_support,
16156 dprintf_style_enums, &dprintf_style, _("\
16157 Set the style of usage for dynamic printf."), _("\
16158 Show the style of usage for dynamic printf."), _("\
16159 This setting chooses how GDB will do a dynamic printf.\n\
16160 If the value is \"gdb\", then the printing is done by GDB to its own\n\
16161 console, as with the \"printf\" command.\n\
16162 If the value is \"call\", the print is done by calling a function in your\n\
16163 program; by default printf(), but you can choose a different function or\n\
16164 output stream by setting dprintf-function and dprintf-channel."),
16165 update_dprintf_commands, NULL,
16166 &setlist, &showlist);
16167
16168 dprintf_function = xstrdup ("printf");
16169 add_setshow_string_cmd ("dprintf-function", class_support,
16170 &dprintf_function, _("\
16171 Set the function to use for dynamic printf"), _("\
16172 Show the function to use for dynamic printf"), NULL,
16173 update_dprintf_commands, NULL,
16174 &setlist, &showlist);
16175
16176 dprintf_channel = xstrdup ("");
16177 add_setshow_string_cmd ("dprintf-channel", class_support,
16178 &dprintf_channel, _("\
16179 Set the channel to use for dynamic printf"), _("\
16180 Show the channel to use for dynamic printf"), NULL,
16181 update_dprintf_commands, NULL,
16182 &setlist, &showlist);
16183
16184 add_setshow_boolean_cmd ("disconnected-dprintf", no_class,
16185 &disconnected_dprintf, _("\
16186 Set whether dprintf continues after GDB disconnects."), _("\
16187 Show whether dprintf continues after GDB disconnects."), _("\
16188 Use this to let dprintf commands continue to hit and produce output\n\
16189 even if GDB disconnects or detaches from the target."),
16190 NULL,
16191 NULL,
16192 &setlist, &showlist);
16193
16194 add_com ("agent-printf", class_vars, agent_printf_command, _("\
16195 agent-printf \"printf format string\", arg1, arg2, arg3, ..., argn\n\
16196 (target agent only) This is useful for formatted output in user-defined commands."));
16197
16198 automatic_hardware_breakpoints = 1;
16199
16200 observer_attach_about_to_proceed (breakpoint_about_to_proceed);
16201 observer_attach_thread_exit (remove_threaded_breakpoints);
16202 }
This page took 0.375085 seconds and 5 git commands to generate.