gdb/mi: New commands to catch C++ exceptions
[deliverable/binutils-gdb.git] / gdb / breakpoint.c
1 /* Everything about breakpoints, for GDB.
2
3 Copyright (C) 1986-2019 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 "observable.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 "common/format.h"
69 #include "thread-fsm.h"
70 #include "tid-parse.h"
71 #include "cli/cli-style.h"
72 #include "mi/mi-main.h"
73
74 /* readline include files */
75 #include "readline/readline.h"
76 #include "readline/history.h"
77
78 /* readline defines this. */
79 #undef savestring
80
81 #include "mi/mi-common.h"
82 #include "extension.h"
83 #include <algorithm>
84 #include "progspace-and-thread.h"
85 #include "common/array-view.h"
86 #include "common/gdb_optional.h"
87
88 /* Prototypes for local functions. */
89
90 static void map_breakpoint_numbers (const char *,
91 gdb::function_view<void (breakpoint *)>);
92
93 static void breakpoint_re_set_default (struct breakpoint *);
94
95 static void
96 create_sals_from_location_default (const struct event_location *location,
97 struct linespec_result *canonical,
98 enum bptype type_wanted);
99
100 static void create_breakpoints_sal_default (struct gdbarch *,
101 struct linespec_result *,
102 gdb::unique_xmalloc_ptr<char>,
103 gdb::unique_xmalloc_ptr<char>,
104 enum bptype,
105 enum bpdisp, int, int,
106 int,
107 const struct breakpoint_ops *,
108 int, int, int, unsigned);
109
110 static std::vector<symtab_and_line> decode_location_default
111 (struct breakpoint *b, const struct event_location *location,
112 struct program_space *search_pspace);
113
114 static int can_use_hardware_watchpoint
115 (const std::vector<value_ref_ptr> &vals);
116
117 static void mention (struct breakpoint *);
118
119 static struct breakpoint *set_raw_breakpoint_without_location (struct gdbarch *,
120 enum bptype,
121 const struct breakpoint_ops *);
122 static struct bp_location *add_location_to_breakpoint (struct breakpoint *,
123 const struct symtab_and_line *);
124
125 /* This function is used in gdbtk sources and thus can not be made
126 static. */
127 struct breakpoint *set_raw_breakpoint (struct gdbarch *gdbarch,
128 struct symtab_and_line,
129 enum bptype,
130 const struct breakpoint_ops *);
131
132 static struct breakpoint *
133 momentary_breakpoint_from_master (struct breakpoint *orig,
134 enum bptype type,
135 const struct breakpoint_ops *ops,
136 int loc_enabled);
137
138 static void breakpoint_adjustment_warning (CORE_ADDR, CORE_ADDR, int, int);
139
140 static CORE_ADDR adjust_breakpoint_address (struct gdbarch *gdbarch,
141 CORE_ADDR bpaddr,
142 enum bptype bptype);
143
144 static void describe_other_breakpoints (struct gdbarch *,
145 struct program_space *, CORE_ADDR,
146 struct obj_section *, int);
147
148 static int watchpoint_locations_match (struct bp_location *loc1,
149 struct bp_location *loc2);
150
151 static int breakpoint_location_address_match (struct bp_location *bl,
152 const struct address_space *aspace,
153 CORE_ADDR addr);
154
155 static int breakpoint_location_address_range_overlap (struct bp_location *,
156 const address_space *,
157 CORE_ADDR, int);
158
159 static int remove_breakpoint (struct bp_location *);
160 static int remove_breakpoint_1 (struct bp_location *, enum remove_bp_reason);
161
162 static enum print_stop_action print_bp_stop_message (bpstat bs);
163
164 static int hw_breakpoint_used_count (void);
165
166 static int hw_watchpoint_use_count (struct breakpoint *);
167
168 static int hw_watchpoint_used_count_others (struct breakpoint *except,
169 enum bptype type,
170 int *other_type_used);
171
172 static void enable_breakpoint_disp (struct breakpoint *, enum bpdisp,
173 int count);
174
175 static void free_bp_location (struct bp_location *loc);
176 static void incref_bp_location (struct bp_location *loc);
177 static void decref_bp_location (struct bp_location **loc);
178
179 static struct bp_location *allocate_bp_location (struct breakpoint *bpt);
180
181 /* update_global_location_list's modes of operation wrt to whether to
182 insert locations now. */
183 enum ugll_insert_mode
184 {
185 /* Don't insert any breakpoint locations into the inferior, only
186 remove already-inserted locations that no longer should be
187 inserted. Functions that delete a breakpoint or breakpoints
188 should specify this mode, so that deleting a breakpoint doesn't
189 have the side effect of inserting the locations of other
190 breakpoints that are marked not-inserted, but should_be_inserted
191 returns true on them.
192
193 This behavior is useful is situations close to tear-down -- e.g.,
194 after an exec, while the target still has execution, but
195 breakpoint shadows of the previous executable image should *NOT*
196 be restored to the new image; or before detaching, where the
197 target still has execution and wants to delete breakpoints from
198 GDB's lists, and all breakpoints had already been removed from
199 the inferior. */
200 UGLL_DONT_INSERT,
201
202 /* May insert breakpoints iff breakpoints_should_be_inserted_now
203 claims breakpoints should be inserted now. */
204 UGLL_MAY_INSERT,
205
206 /* Insert locations now, irrespective of
207 breakpoints_should_be_inserted_now. E.g., say all threads are
208 stopped right now, and the user did "continue". We need to
209 insert breakpoints _before_ resuming the target, but
210 UGLL_MAY_INSERT wouldn't insert them, because
211 breakpoints_should_be_inserted_now returns false at that point,
212 as no thread is running yet. */
213 UGLL_INSERT
214 };
215
216 static void update_global_location_list (enum ugll_insert_mode);
217
218 static void update_global_location_list_nothrow (enum ugll_insert_mode);
219
220 static int is_hardware_watchpoint (const struct breakpoint *bpt);
221
222 static void insert_breakpoint_locations (void);
223
224 static void trace_pass_command (const char *, int);
225
226 static void set_tracepoint_count (int num);
227
228 static int is_masked_watchpoint (const struct breakpoint *b);
229
230 static struct bp_location **get_first_locp_gte_addr (CORE_ADDR address);
231
232 /* Return 1 if B refers to a static tracepoint set by marker ("-m"), zero
233 otherwise. */
234
235 static int strace_marker_p (struct breakpoint *b);
236
237 /* The breakpoint_ops structure to be inherited by all breakpoint_ops
238 that are implemented on top of software or hardware breakpoints
239 (user breakpoints, internal and momentary breakpoints, etc.). */
240 static struct breakpoint_ops bkpt_base_breakpoint_ops;
241
242 /* Internal breakpoints class type. */
243 static struct breakpoint_ops internal_breakpoint_ops;
244
245 /* Momentary breakpoints class type. */
246 static struct breakpoint_ops momentary_breakpoint_ops;
247
248 /* The breakpoint_ops structure to be used in regular user created
249 breakpoints. */
250 struct breakpoint_ops bkpt_breakpoint_ops;
251
252 /* Breakpoints set on probes. */
253 static struct breakpoint_ops bkpt_probe_breakpoint_ops;
254
255 /* Dynamic printf class type. */
256 struct breakpoint_ops dprintf_breakpoint_ops;
257
258 /* The style in which to perform a dynamic printf. This is a user
259 option because different output options have different tradeoffs;
260 if GDB does the printing, there is better error handling if there
261 is a problem with any of the arguments, but using an inferior
262 function lets you have special-purpose printers and sending of
263 output to the same place as compiled-in print functions. */
264
265 static const char dprintf_style_gdb[] = "gdb";
266 static const char dprintf_style_call[] = "call";
267 static const char dprintf_style_agent[] = "agent";
268 static const char *const dprintf_style_enums[] = {
269 dprintf_style_gdb,
270 dprintf_style_call,
271 dprintf_style_agent,
272 NULL
273 };
274 static const char *dprintf_style = dprintf_style_gdb;
275
276 /* The function to use for dynamic printf if the preferred style is to
277 call into the inferior. The value is simply a string that is
278 copied into the command, so it can be anything that GDB can
279 evaluate to a callable address, not necessarily a function name. */
280
281 static char *dprintf_function;
282
283 /* The channel to use for dynamic printf if the preferred style is to
284 call into the inferior; if a nonempty string, it will be passed to
285 the call as the first argument, with the format string as the
286 second. As with the dprintf function, this can be anything that
287 GDB knows how to evaluate, so in addition to common choices like
288 "stderr", this could be an app-specific expression like
289 "mystreams[curlogger]". */
290
291 static char *dprintf_channel;
292
293 /* True if dprintf commands should continue to operate even if GDB
294 has disconnected. */
295 static int disconnected_dprintf = 1;
296
297 struct command_line *
298 breakpoint_commands (struct breakpoint *b)
299 {
300 return b->commands ? b->commands.get () : NULL;
301 }
302
303 /* Flag indicating that a command has proceeded the inferior past the
304 current breakpoint. */
305
306 static int breakpoint_proceeded;
307
308 const char *
309 bpdisp_text (enum bpdisp disp)
310 {
311 /* NOTE: the following values are a part of MI protocol and
312 represent values of 'disp' field returned when inferior stops at
313 a breakpoint. */
314 static const char * const bpdisps[] = {"del", "dstp", "dis", "keep"};
315
316 return bpdisps[(int) disp];
317 }
318
319 /* Prototypes for exported functions. */
320 /* If FALSE, gdb will not use hardware support for watchpoints, even
321 if such is available. */
322 static int can_use_hw_watchpoints;
323
324 static void
325 show_can_use_hw_watchpoints (struct ui_file *file, int from_tty,
326 struct cmd_list_element *c,
327 const char *value)
328 {
329 fprintf_filtered (file,
330 _("Debugger's willingness to use "
331 "watchpoint hardware is %s.\n"),
332 value);
333 }
334
335 /* If AUTO_BOOLEAN_FALSE, gdb will not attempt to create pending breakpoints.
336 If AUTO_BOOLEAN_TRUE, gdb will automatically create pending breakpoints
337 for unrecognized breakpoint locations.
338 If AUTO_BOOLEAN_AUTO, gdb will query when breakpoints are unrecognized. */
339 static enum auto_boolean pending_break_support;
340 static void
341 show_pending_break_support (struct ui_file *file, int from_tty,
342 struct cmd_list_element *c,
343 const char *value)
344 {
345 fprintf_filtered (file,
346 _("Debugger's behavior regarding "
347 "pending breakpoints is %s.\n"),
348 value);
349 }
350
351 /* If 1, gdb will automatically use hardware breakpoints for breakpoints
352 set with "break" but falling in read-only memory.
353 If 0, gdb will warn about such breakpoints, but won't automatically
354 use hardware breakpoints. */
355 static int automatic_hardware_breakpoints;
356 static void
357 show_automatic_hardware_breakpoints (struct ui_file *file, int from_tty,
358 struct cmd_list_element *c,
359 const char *value)
360 {
361 fprintf_filtered (file,
362 _("Automatic usage of hardware breakpoints is %s.\n"),
363 value);
364 }
365
366 /* If on, GDB keeps breakpoints inserted even if the inferior is
367 stopped, and immediately inserts any new breakpoints as soon as
368 they're created. If off (default), GDB keeps breakpoints off of
369 the target as long as possible. That is, it delays inserting
370 breakpoints until the next resume, and removes them again when the
371 target fully stops. This is a bit safer in case GDB crashes while
372 processing user input. */
373 static int always_inserted_mode = 0;
374
375 static void
376 show_always_inserted_mode (struct ui_file *file, int from_tty,
377 struct cmd_list_element *c, const char *value)
378 {
379 fprintf_filtered (file, _("Always inserted breakpoint mode is %s.\n"),
380 value);
381 }
382
383 /* See breakpoint.h. */
384
385 int
386 breakpoints_should_be_inserted_now (void)
387 {
388 if (gdbarch_has_global_breakpoints (target_gdbarch ()))
389 {
390 /* If breakpoints are global, they should be inserted even if no
391 thread under gdb's control is running, or even if there are
392 no threads under GDB's control yet. */
393 return 1;
394 }
395 else if (target_has_execution)
396 {
397 if (always_inserted_mode)
398 {
399 /* The user wants breakpoints inserted even if all threads
400 are stopped. */
401 return 1;
402 }
403
404 if (threads_are_executing ())
405 return 1;
406
407 /* Don't remove breakpoints yet if, even though all threads are
408 stopped, we still have events to process. */
409 for (thread_info *tp : all_non_exited_threads ())
410 if (tp->resumed
411 && tp->suspend.waitstatus_pending_p)
412 return 1;
413 }
414 return 0;
415 }
416
417 static const char condition_evaluation_both[] = "host or target";
418
419 /* Modes for breakpoint condition evaluation. */
420 static const char condition_evaluation_auto[] = "auto";
421 static const char condition_evaluation_host[] = "host";
422 static const char condition_evaluation_target[] = "target";
423 static const char *const condition_evaluation_enums[] = {
424 condition_evaluation_auto,
425 condition_evaluation_host,
426 condition_evaluation_target,
427 NULL
428 };
429
430 /* Global that holds the current mode for breakpoint condition evaluation. */
431 static const char *condition_evaluation_mode_1 = condition_evaluation_auto;
432
433 /* Global that we use to display information to the user (gets its value from
434 condition_evaluation_mode_1. */
435 static const char *condition_evaluation_mode = condition_evaluation_auto;
436
437 /* Translate a condition evaluation mode MODE into either "host"
438 or "target". This is used mostly to translate from "auto" to the
439 real setting that is being used. It returns the translated
440 evaluation mode. */
441
442 static const char *
443 translate_condition_evaluation_mode (const char *mode)
444 {
445 if (mode == condition_evaluation_auto)
446 {
447 if (target_supports_evaluation_of_breakpoint_conditions ())
448 return condition_evaluation_target;
449 else
450 return condition_evaluation_host;
451 }
452 else
453 return mode;
454 }
455
456 /* Discovers what condition_evaluation_auto translates to. */
457
458 static const char *
459 breakpoint_condition_evaluation_mode (void)
460 {
461 return translate_condition_evaluation_mode (condition_evaluation_mode);
462 }
463
464 /* Return true if GDB should evaluate breakpoint conditions or false
465 otherwise. */
466
467 static int
468 gdb_evaluates_breakpoint_condition_p (void)
469 {
470 const char *mode = breakpoint_condition_evaluation_mode ();
471
472 return (mode == condition_evaluation_host);
473 }
474
475 /* Are we executing breakpoint commands? */
476 static int executing_breakpoint_commands;
477
478 /* Are overlay event breakpoints enabled? */
479 static int overlay_events_enabled;
480
481 /* See description in breakpoint.h. */
482 int target_exact_watchpoints = 0;
483
484 /* Walk the following statement or block through all breakpoints.
485 ALL_BREAKPOINTS_SAFE does so even if the statement deletes the
486 current breakpoint. */
487
488 #define ALL_BREAKPOINTS(B) for (B = breakpoint_chain; B; B = B->next)
489
490 #define ALL_BREAKPOINTS_SAFE(B,TMP) \
491 for (B = breakpoint_chain; \
492 B ? (TMP=B->next, 1): 0; \
493 B = TMP)
494
495 /* Similar iterator for the low-level breakpoints. SAFE variant is
496 not provided so update_global_location_list must not be called
497 while executing the block of ALL_BP_LOCATIONS. */
498
499 #define ALL_BP_LOCATIONS(B,BP_TMP) \
500 for (BP_TMP = bp_locations; \
501 BP_TMP < bp_locations + bp_locations_count && (B = *BP_TMP);\
502 BP_TMP++)
503
504 /* Iterates through locations with address ADDRESS for the currently selected
505 program space. BP_LOCP_TMP points to each object. BP_LOCP_START points
506 to where the loop should start from.
507 If BP_LOCP_START is a NULL pointer, the macro automatically seeks the
508 appropriate location to start with. */
509
510 #define ALL_BP_LOCATIONS_AT_ADDR(BP_LOCP_TMP, BP_LOCP_START, ADDRESS) \
511 for (BP_LOCP_START = BP_LOCP_START == NULL ? get_first_locp_gte_addr (ADDRESS) : BP_LOCP_START, \
512 BP_LOCP_TMP = BP_LOCP_START; \
513 BP_LOCP_START \
514 && (BP_LOCP_TMP < bp_locations + bp_locations_count \
515 && (*BP_LOCP_TMP)->address == ADDRESS); \
516 BP_LOCP_TMP++)
517
518 /* Iterator for tracepoints only. */
519
520 #define ALL_TRACEPOINTS(B) \
521 for (B = breakpoint_chain; B; B = B->next) \
522 if (is_tracepoint (B))
523
524 /* Chains of all breakpoints defined. */
525
526 struct breakpoint *breakpoint_chain;
527
528 /* Array is sorted by bp_locations_compare - primarily by the ADDRESS. */
529
530 static struct bp_location **bp_locations;
531
532 /* Number of elements of BP_LOCATIONS. */
533
534 static unsigned bp_locations_count;
535
536 /* Maximum alignment offset between bp_target_info.PLACED_ADDRESS and
537 ADDRESS for the current elements of BP_LOCATIONS which get a valid
538 result from bp_location_has_shadow. You can use it for roughly
539 limiting the subrange of BP_LOCATIONS to scan for shadow bytes for
540 an address you need to read. */
541
542 static CORE_ADDR bp_locations_placed_address_before_address_max;
543
544 /* Maximum offset plus alignment between bp_target_info.PLACED_ADDRESS
545 + bp_target_info.SHADOW_LEN and ADDRESS for the current elements of
546 BP_LOCATIONS which get a valid result from bp_location_has_shadow.
547 You can use it for roughly limiting the subrange of BP_LOCATIONS to
548 scan for shadow bytes for an address you need to read. */
549
550 static CORE_ADDR bp_locations_shadow_len_after_address_max;
551
552 /* The locations that no longer correspond to any breakpoint, unlinked
553 from the bp_locations array, but for which a hit may still be
554 reported by a target. */
555 static std::vector<bp_location *> moribund_locations;
556
557 /* Number of last breakpoint made. */
558
559 static int breakpoint_count;
560
561 /* The value of `breakpoint_count' before the last command that
562 created breakpoints. If the last (break-like) command created more
563 than one breakpoint, then the difference between BREAKPOINT_COUNT
564 and PREV_BREAKPOINT_COUNT is more than one. */
565 static int prev_breakpoint_count;
566
567 /* Number of last tracepoint made. */
568
569 static int tracepoint_count;
570
571 static struct cmd_list_element *breakpoint_set_cmdlist;
572 static struct cmd_list_element *breakpoint_show_cmdlist;
573 struct cmd_list_element *save_cmdlist;
574
575 /* See declaration at breakpoint.h. */
576
577 struct breakpoint *
578 breakpoint_find_if (int (*func) (struct breakpoint *b, void *d),
579 void *user_data)
580 {
581 struct breakpoint *b = NULL;
582
583 ALL_BREAKPOINTS (b)
584 {
585 if (func (b, user_data) != 0)
586 break;
587 }
588
589 return b;
590 }
591
592 /* Return whether a breakpoint is an active enabled breakpoint. */
593 static int
594 breakpoint_enabled (struct breakpoint *b)
595 {
596 return (b->enable_state == bp_enabled);
597 }
598
599 /* Set breakpoint count to NUM. */
600
601 static void
602 set_breakpoint_count (int num)
603 {
604 prev_breakpoint_count = breakpoint_count;
605 breakpoint_count = num;
606 set_internalvar_integer (lookup_internalvar ("bpnum"), num);
607 }
608
609 /* Used by `start_rbreak_breakpoints' below, to record the current
610 breakpoint count before "rbreak" creates any breakpoint. */
611 static int rbreak_start_breakpoint_count;
612
613 /* Called at the start an "rbreak" command to record the first
614 breakpoint made. */
615
616 scoped_rbreak_breakpoints::scoped_rbreak_breakpoints ()
617 {
618 rbreak_start_breakpoint_count = breakpoint_count;
619 }
620
621 /* Called at the end of an "rbreak" command to record the last
622 breakpoint made. */
623
624 scoped_rbreak_breakpoints::~scoped_rbreak_breakpoints ()
625 {
626 prev_breakpoint_count = rbreak_start_breakpoint_count;
627 }
628
629 /* Used in run_command to zero the hit count when a new run starts. */
630
631 void
632 clear_breakpoint_hit_counts (void)
633 {
634 struct breakpoint *b;
635
636 ALL_BREAKPOINTS (b)
637 b->hit_count = 0;
638 }
639
640 \f
641 /* Return the breakpoint with the specified number, or NULL
642 if the number does not refer to an existing breakpoint. */
643
644 struct breakpoint *
645 get_breakpoint (int num)
646 {
647 struct breakpoint *b;
648
649 ALL_BREAKPOINTS (b)
650 if (b->number == num)
651 return b;
652
653 return NULL;
654 }
655
656 \f
657
658 /* Mark locations as "conditions have changed" in case the target supports
659 evaluating conditions on its side. */
660
661 static void
662 mark_breakpoint_modified (struct breakpoint *b)
663 {
664 struct bp_location *loc;
665
666 /* This is only meaningful if the target is
667 evaluating conditions and if the user has
668 opted for condition evaluation on the target's
669 side. */
670 if (gdb_evaluates_breakpoint_condition_p ()
671 || !target_supports_evaluation_of_breakpoint_conditions ())
672 return;
673
674 if (!is_breakpoint (b))
675 return;
676
677 for (loc = b->loc; loc; loc = loc->next)
678 loc->condition_changed = condition_modified;
679 }
680
681 /* Mark location as "conditions have changed" in case the target supports
682 evaluating conditions on its side. */
683
684 static void
685 mark_breakpoint_location_modified (struct bp_location *loc)
686 {
687 /* This is only meaningful if the target is
688 evaluating conditions and if the user has
689 opted for condition evaluation on the target's
690 side. */
691 if (gdb_evaluates_breakpoint_condition_p ()
692 || !target_supports_evaluation_of_breakpoint_conditions ())
693
694 return;
695
696 if (!is_breakpoint (loc->owner))
697 return;
698
699 loc->condition_changed = condition_modified;
700 }
701
702 /* Sets the condition-evaluation mode using the static global
703 condition_evaluation_mode. */
704
705 static void
706 set_condition_evaluation_mode (const char *args, int from_tty,
707 struct cmd_list_element *c)
708 {
709 const char *old_mode, *new_mode;
710
711 if ((condition_evaluation_mode_1 == condition_evaluation_target)
712 && !target_supports_evaluation_of_breakpoint_conditions ())
713 {
714 condition_evaluation_mode_1 = condition_evaluation_mode;
715 warning (_("Target does not support breakpoint condition evaluation.\n"
716 "Using host evaluation mode instead."));
717 return;
718 }
719
720 new_mode = translate_condition_evaluation_mode (condition_evaluation_mode_1);
721 old_mode = translate_condition_evaluation_mode (condition_evaluation_mode);
722
723 /* Flip the switch. Flip it even if OLD_MODE == NEW_MODE as one of the
724 settings was "auto". */
725 condition_evaluation_mode = condition_evaluation_mode_1;
726
727 /* Only update the mode if the user picked a different one. */
728 if (new_mode != old_mode)
729 {
730 struct bp_location *loc, **loc_tmp;
731 /* If the user switched to a different evaluation mode, we
732 need to synch the changes with the target as follows:
733
734 "host" -> "target": Send all (valid) conditions to the target.
735 "target" -> "host": Remove all the conditions from the target.
736 */
737
738 if (new_mode == condition_evaluation_target)
739 {
740 /* Mark everything modified and synch conditions with the
741 target. */
742 ALL_BP_LOCATIONS (loc, loc_tmp)
743 mark_breakpoint_location_modified (loc);
744 }
745 else
746 {
747 /* Manually mark non-duplicate locations to synch conditions
748 with the target. We do this to remove all the conditions the
749 target knows about. */
750 ALL_BP_LOCATIONS (loc, loc_tmp)
751 if (is_breakpoint (loc->owner) && loc->inserted)
752 loc->needs_update = 1;
753 }
754
755 /* Do the update. */
756 update_global_location_list (UGLL_MAY_INSERT);
757 }
758
759 return;
760 }
761
762 /* Shows the current mode of breakpoint condition evaluation. Explicitly shows
763 what "auto" is translating to. */
764
765 static void
766 show_condition_evaluation_mode (struct ui_file *file, int from_tty,
767 struct cmd_list_element *c, const char *value)
768 {
769 if (condition_evaluation_mode == condition_evaluation_auto)
770 fprintf_filtered (file,
771 _("Breakpoint condition evaluation "
772 "mode is %s (currently %s).\n"),
773 value,
774 breakpoint_condition_evaluation_mode ());
775 else
776 fprintf_filtered (file, _("Breakpoint condition evaluation mode is %s.\n"),
777 value);
778 }
779
780 /* A comparison function for bp_location AP and BP that is used by
781 bsearch. This comparison function only cares about addresses, unlike
782 the more general bp_locations_compare function. */
783
784 static int
785 bp_locations_compare_addrs (const void *ap, const void *bp)
786 {
787 const struct bp_location *a = *(const struct bp_location **) ap;
788 const struct bp_location *b = *(const struct bp_location **) bp;
789
790 if (a->address == b->address)
791 return 0;
792 else
793 return ((a->address > b->address) - (a->address < b->address));
794 }
795
796 /* Helper function to skip all bp_locations with addresses
797 less than ADDRESS. It returns the first bp_location that
798 is greater than or equal to ADDRESS. If none is found, just
799 return NULL. */
800
801 static struct bp_location **
802 get_first_locp_gte_addr (CORE_ADDR address)
803 {
804 struct bp_location dummy_loc;
805 struct bp_location *dummy_locp = &dummy_loc;
806 struct bp_location **locp_found = NULL;
807
808 /* Initialize the dummy location's address field. */
809 dummy_loc.address = address;
810
811 /* Find a close match to the first location at ADDRESS. */
812 locp_found = ((struct bp_location **)
813 bsearch (&dummy_locp, bp_locations, bp_locations_count,
814 sizeof (struct bp_location **),
815 bp_locations_compare_addrs));
816
817 /* Nothing was found, nothing left to do. */
818 if (locp_found == NULL)
819 return NULL;
820
821 /* We may have found a location that is at ADDRESS but is not the first in the
822 location's list. Go backwards (if possible) and locate the first one. */
823 while ((locp_found - 1) >= bp_locations
824 && (*(locp_found - 1))->address == address)
825 locp_found--;
826
827 return locp_found;
828 }
829
830 void
831 set_breakpoint_condition (struct breakpoint *b, const char *exp,
832 int from_tty)
833 {
834 xfree (b->cond_string);
835 b->cond_string = NULL;
836
837 if (is_watchpoint (b))
838 {
839 struct watchpoint *w = (struct watchpoint *) b;
840
841 w->cond_exp.reset ();
842 }
843 else
844 {
845 struct bp_location *loc;
846
847 for (loc = b->loc; loc; loc = loc->next)
848 {
849 loc->cond.reset ();
850
851 /* No need to free the condition agent expression
852 bytecode (if we have one). We will handle this
853 when we go through update_global_location_list. */
854 }
855 }
856
857 if (*exp == 0)
858 {
859 if (from_tty)
860 printf_filtered (_("Breakpoint %d now unconditional.\n"), b->number);
861 }
862 else
863 {
864 const char *arg = exp;
865
866 /* I don't know if it matters whether this is the string the user
867 typed in or the decompiled expression. */
868 b->cond_string = xstrdup (arg);
869 b->condition_not_parsed = 0;
870
871 if (is_watchpoint (b))
872 {
873 struct watchpoint *w = (struct watchpoint *) b;
874
875 innermost_block_tracker tracker;
876 arg = exp;
877 w->cond_exp = parse_exp_1 (&arg, 0, 0, 0, &tracker);
878 if (*arg)
879 error (_("Junk at end of expression"));
880 w->cond_exp_valid_block = tracker.block ();
881 }
882 else
883 {
884 struct bp_location *loc;
885
886 for (loc = b->loc; loc; loc = loc->next)
887 {
888 arg = exp;
889 loc->cond =
890 parse_exp_1 (&arg, loc->address,
891 block_for_pc (loc->address), 0);
892 if (*arg)
893 error (_("Junk at end of expression"));
894 }
895 }
896 }
897 mark_breakpoint_modified (b);
898
899 gdb::observers::breakpoint_modified.notify (b);
900 }
901
902 /* Completion for the "condition" command. */
903
904 static void
905 condition_completer (struct cmd_list_element *cmd,
906 completion_tracker &tracker,
907 const char *text, const char *word)
908 {
909 const char *space;
910
911 text = skip_spaces (text);
912 space = skip_to_space (text);
913 if (*space == '\0')
914 {
915 int len;
916 struct breakpoint *b;
917
918 if (text[0] == '$')
919 {
920 /* We don't support completion of history indices. */
921 if (!isdigit (text[1]))
922 complete_internalvar (tracker, &text[1]);
923 return;
924 }
925
926 /* We're completing the breakpoint number. */
927 len = strlen (text);
928
929 ALL_BREAKPOINTS (b)
930 {
931 char number[50];
932
933 xsnprintf (number, sizeof (number), "%d", b->number);
934
935 if (strncmp (number, text, len) == 0)
936 tracker.add_completion (make_unique_xstrdup (number));
937 }
938
939 return;
940 }
941
942 /* We're completing the expression part. */
943 text = skip_spaces (space);
944 expression_completer (cmd, tracker, text, word);
945 }
946
947 /* condition N EXP -- set break condition of breakpoint N to EXP. */
948
949 static void
950 condition_command (const char *arg, int from_tty)
951 {
952 struct breakpoint *b;
953 const char *p;
954 int bnum;
955
956 if (arg == 0)
957 error_no_arg (_("breakpoint number"));
958
959 p = arg;
960 bnum = get_number (&p);
961 if (bnum == 0)
962 error (_("Bad breakpoint argument: '%s'"), arg);
963
964 ALL_BREAKPOINTS (b)
965 if (b->number == bnum)
966 {
967 /* Check if this breakpoint has a "stop" method implemented in an
968 extension language. This method and conditions entered into GDB
969 from the CLI are mutually exclusive. */
970 const struct extension_language_defn *extlang
971 = get_breakpoint_cond_ext_lang (b, EXT_LANG_NONE);
972
973 if (extlang != NULL)
974 {
975 error (_("Only one stop condition allowed. There is currently"
976 " a %s stop condition defined for this breakpoint."),
977 ext_lang_capitalized_name (extlang));
978 }
979 set_breakpoint_condition (b, p, from_tty);
980
981 if (is_breakpoint (b))
982 update_global_location_list (UGLL_MAY_INSERT);
983
984 return;
985 }
986
987 error (_("No breakpoint number %d."), bnum);
988 }
989
990 /* Check that COMMAND do not contain commands that are suitable
991 only for tracepoints and not suitable for ordinary breakpoints.
992 Throw if any such commands is found. */
993
994 static void
995 check_no_tracepoint_commands (struct command_line *commands)
996 {
997 struct command_line *c;
998
999 for (c = commands; c; c = c->next)
1000 {
1001 if (c->control_type == while_stepping_control)
1002 error (_("The 'while-stepping' command can "
1003 "only be used for tracepoints"));
1004
1005 check_no_tracepoint_commands (c->body_list_0.get ());
1006 check_no_tracepoint_commands (c->body_list_1.get ());
1007
1008 /* Not that command parsing removes leading whitespace and comment
1009 lines and also empty lines. So, we only need to check for
1010 command directly. */
1011 if (strstr (c->line, "collect ") == c->line)
1012 error (_("The 'collect' command can only be used for tracepoints"));
1013
1014 if (strstr (c->line, "teval ") == c->line)
1015 error (_("The 'teval' command can only be used for tracepoints"));
1016 }
1017 }
1018
1019 struct longjmp_breakpoint : public breakpoint
1020 {
1021 ~longjmp_breakpoint () override;
1022 };
1023
1024 /* Encapsulate tests for different types of tracepoints. */
1025
1026 static bool
1027 is_tracepoint_type (bptype type)
1028 {
1029 return (type == bp_tracepoint
1030 || type == bp_fast_tracepoint
1031 || type == bp_static_tracepoint);
1032 }
1033
1034 static bool
1035 is_longjmp_type (bptype type)
1036 {
1037 return type == bp_longjmp || type == bp_exception;
1038 }
1039
1040 int
1041 is_tracepoint (const struct breakpoint *b)
1042 {
1043 return is_tracepoint_type (b->type);
1044 }
1045
1046 /* Factory function to create an appropriate instance of breakpoint given
1047 TYPE. */
1048
1049 static std::unique_ptr<breakpoint>
1050 new_breakpoint_from_type (bptype type)
1051 {
1052 breakpoint *b;
1053
1054 if (is_tracepoint_type (type))
1055 b = new tracepoint ();
1056 else if (is_longjmp_type (type))
1057 b = new longjmp_breakpoint ();
1058 else
1059 b = new breakpoint ();
1060
1061 return std::unique_ptr<breakpoint> (b);
1062 }
1063
1064 /* A helper function that validates that COMMANDS are valid for a
1065 breakpoint. This function will throw an exception if a problem is
1066 found. */
1067
1068 static void
1069 validate_commands_for_breakpoint (struct breakpoint *b,
1070 struct command_line *commands)
1071 {
1072 if (is_tracepoint (b))
1073 {
1074 struct tracepoint *t = (struct tracepoint *) b;
1075 struct command_line *c;
1076 struct command_line *while_stepping = 0;
1077
1078 /* Reset the while-stepping step count. The previous commands
1079 might have included a while-stepping action, while the new
1080 ones might not. */
1081 t->step_count = 0;
1082
1083 /* We need to verify that each top-level element of commands is
1084 valid for tracepoints, that there's at most one
1085 while-stepping element, and that the while-stepping's body
1086 has valid tracing commands excluding nested while-stepping.
1087 We also need to validate the tracepoint action line in the
1088 context of the tracepoint --- validate_actionline actually
1089 has side effects, like setting the tracepoint's
1090 while-stepping STEP_COUNT, in addition to checking if the
1091 collect/teval actions parse and make sense in the
1092 tracepoint's context. */
1093 for (c = commands; c; c = c->next)
1094 {
1095 if (c->control_type == while_stepping_control)
1096 {
1097 if (b->type == bp_fast_tracepoint)
1098 error (_("The 'while-stepping' command "
1099 "cannot be used for fast tracepoint"));
1100 else if (b->type == bp_static_tracepoint)
1101 error (_("The 'while-stepping' command "
1102 "cannot be used for static tracepoint"));
1103
1104 if (while_stepping)
1105 error (_("The 'while-stepping' command "
1106 "can be used only once"));
1107 else
1108 while_stepping = c;
1109 }
1110
1111 validate_actionline (c->line, b);
1112 }
1113 if (while_stepping)
1114 {
1115 struct command_line *c2;
1116
1117 gdb_assert (while_stepping->body_list_1 == nullptr);
1118 c2 = while_stepping->body_list_0.get ();
1119 for (; c2; c2 = c2->next)
1120 {
1121 if (c2->control_type == while_stepping_control)
1122 error (_("The 'while-stepping' command cannot be nested"));
1123 }
1124 }
1125 }
1126 else
1127 {
1128 check_no_tracepoint_commands (commands);
1129 }
1130 }
1131
1132 /* Return a vector of all the static tracepoints set at ADDR. The
1133 caller is responsible for releasing the vector. */
1134
1135 std::vector<breakpoint *>
1136 static_tracepoints_here (CORE_ADDR addr)
1137 {
1138 struct breakpoint *b;
1139 std::vector<breakpoint *> found;
1140 struct bp_location *loc;
1141
1142 ALL_BREAKPOINTS (b)
1143 if (b->type == bp_static_tracepoint)
1144 {
1145 for (loc = b->loc; loc; loc = loc->next)
1146 if (loc->address == addr)
1147 found.push_back (b);
1148 }
1149
1150 return found;
1151 }
1152
1153 /* Set the command list of B to COMMANDS. If breakpoint is tracepoint,
1154 validate that only allowed commands are included. */
1155
1156 void
1157 breakpoint_set_commands (struct breakpoint *b,
1158 counted_command_line &&commands)
1159 {
1160 validate_commands_for_breakpoint (b, commands.get ());
1161
1162 b->commands = std::move (commands);
1163 gdb::observers::breakpoint_modified.notify (b);
1164 }
1165
1166 /* Set the internal `silent' flag on the breakpoint. Note that this
1167 is not the same as the "silent" that may appear in the breakpoint's
1168 commands. */
1169
1170 void
1171 breakpoint_set_silent (struct breakpoint *b, int silent)
1172 {
1173 int old_silent = b->silent;
1174
1175 b->silent = silent;
1176 if (old_silent != silent)
1177 gdb::observers::breakpoint_modified.notify (b);
1178 }
1179
1180 /* Set the thread for this breakpoint. If THREAD is -1, make the
1181 breakpoint work for any thread. */
1182
1183 void
1184 breakpoint_set_thread (struct breakpoint *b, int thread)
1185 {
1186 int old_thread = b->thread;
1187
1188 b->thread = thread;
1189 if (old_thread != thread)
1190 gdb::observers::breakpoint_modified.notify (b);
1191 }
1192
1193 /* Set the task for this breakpoint. If TASK is 0, make the
1194 breakpoint work for any task. */
1195
1196 void
1197 breakpoint_set_task (struct breakpoint *b, int task)
1198 {
1199 int old_task = b->task;
1200
1201 b->task = task;
1202 if (old_task != task)
1203 gdb::observers::breakpoint_modified.notify (b);
1204 }
1205
1206 static void
1207 commands_command_1 (const char *arg, int from_tty,
1208 struct command_line *control)
1209 {
1210 counted_command_line cmd;
1211 /* cmd_read will be true once we have read cmd. Note that cmd might still be
1212 NULL after the call to read_command_lines if the user provides an empty
1213 list of command by just typing "end". */
1214 bool cmd_read = false;
1215
1216 std::string new_arg;
1217
1218 if (arg == NULL || !*arg)
1219 {
1220 if (breakpoint_count - prev_breakpoint_count > 1)
1221 new_arg = string_printf ("%d-%d", prev_breakpoint_count + 1,
1222 breakpoint_count);
1223 else if (breakpoint_count > 0)
1224 new_arg = string_printf ("%d", breakpoint_count);
1225 arg = new_arg.c_str ();
1226 }
1227
1228 map_breakpoint_numbers
1229 (arg, [&] (breakpoint *b)
1230 {
1231 if (!cmd_read)
1232 {
1233 gdb_assert (cmd == NULL);
1234 if (control != NULL)
1235 cmd = control->body_list_0;
1236 else
1237 {
1238 std::string str
1239 = string_printf (_("Type commands for breakpoint(s) "
1240 "%s, one per line."),
1241 arg);
1242
1243 auto do_validate = [=] (const char *line)
1244 {
1245 validate_actionline (line, b);
1246 };
1247 gdb::function_view<void (const char *)> validator;
1248 if (is_tracepoint (b))
1249 validator = do_validate;
1250
1251 cmd = read_command_lines (str.c_str (), from_tty, 1, validator);
1252 }
1253 cmd_read = true;
1254 }
1255
1256 /* If a breakpoint was on the list more than once, we don't need to
1257 do anything. */
1258 if (b->commands != cmd)
1259 {
1260 validate_commands_for_breakpoint (b, cmd.get ());
1261 b->commands = cmd;
1262 gdb::observers::breakpoint_modified.notify (b);
1263 }
1264 });
1265 }
1266
1267 static void
1268 commands_command (const char *arg, int from_tty)
1269 {
1270 commands_command_1 (arg, from_tty, NULL);
1271 }
1272
1273 /* Like commands_command, but instead of reading the commands from
1274 input stream, takes them from an already parsed command structure.
1275
1276 This is used by cli-script.c to DTRT with breakpoint commands
1277 that are part of if and while bodies. */
1278 enum command_control_type
1279 commands_from_control_command (const char *arg, struct command_line *cmd)
1280 {
1281 commands_command_1 (arg, 0, cmd);
1282 return simple_control;
1283 }
1284
1285 /* Return non-zero if BL->TARGET_INFO contains valid information. */
1286
1287 static int
1288 bp_location_has_shadow (struct bp_location *bl)
1289 {
1290 if (bl->loc_type != bp_loc_software_breakpoint)
1291 return 0;
1292 if (!bl->inserted)
1293 return 0;
1294 if (bl->target_info.shadow_len == 0)
1295 /* BL isn't valid, or doesn't shadow memory. */
1296 return 0;
1297 return 1;
1298 }
1299
1300 /* Update BUF, which is LEN bytes read from the target address
1301 MEMADDR, by replacing a memory breakpoint with its shadowed
1302 contents.
1303
1304 If READBUF is not NULL, this buffer must not overlap with the of
1305 the breakpoint location's shadow_contents buffer. Otherwise, a
1306 failed assertion internal error will be raised. */
1307
1308 static void
1309 one_breakpoint_xfer_memory (gdb_byte *readbuf, gdb_byte *writebuf,
1310 const gdb_byte *writebuf_org,
1311 ULONGEST memaddr, LONGEST len,
1312 struct bp_target_info *target_info,
1313 struct gdbarch *gdbarch)
1314 {
1315 /* Now do full processing of the found relevant range of elements. */
1316 CORE_ADDR bp_addr = 0;
1317 int bp_size = 0;
1318 int bptoffset = 0;
1319
1320 if (!breakpoint_address_match (target_info->placed_address_space, 0,
1321 current_program_space->aspace, 0))
1322 {
1323 /* The breakpoint is inserted in a different address space. */
1324 return;
1325 }
1326
1327 /* Addresses and length of the part of the breakpoint that
1328 we need to copy. */
1329 bp_addr = target_info->placed_address;
1330 bp_size = target_info->shadow_len;
1331
1332 if (bp_addr + bp_size <= memaddr)
1333 {
1334 /* The breakpoint is entirely before the chunk of memory we are
1335 reading. */
1336 return;
1337 }
1338
1339 if (bp_addr >= memaddr + len)
1340 {
1341 /* The breakpoint is entirely after the chunk of memory we are
1342 reading. */
1343 return;
1344 }
1345
1346 /* Offset within shadow_contents. */
1347 if (bp_addr < memaddr)
1348 {
1349 /* Only copy the second part of the breakpoint. */
1350 bp_size -= memaddr - bp_addr;
1351 bptoffset = memaddr - bp_addr;
1352 bp_addr = memaddr;
1353 }
1354
1355 if (bp_addr + bp_size > memaddr + len)
1356 {
1357 /* Only copy the first part of the breakpoint. */
1358 bp_size -= (bp_addr + bp_size) - (memaddr + len);
1359 }
1360
1361 if (readbuf != NULL)
1362 {
1363 /* Verify that the readbuf buffer does not overlap with the
1364 shadow_contents buffer. */
1365 gdb_assert (target_info->shadow_contents >= readbuf + len
1366 || readbuf >= (target_info->shadow_contents
1367 + target_info->shadow_len));
1368
1369 /* Update the read buffer with this inserted breakpoint's
1370 shadow. */
1371 memcpy (readbuf + bp_addr - memaddr,
1372 target_info->shadow_contents + bptoffset, bp_size);
1373 }
1374 else
1375 {
1376 const unsigned char *bp;
1377 CORE_ADDR addr = target_info->reqstd_address;
1378 int placed_size;
1379
1380 /* Update the shadow with what we want to write to memory. */
1381 memcpy (target_info->shadow_contents + bptoffset,
1382 writebuf_org + bp_addr - memaddr, bp_size);
1383
1384 /* Determine appropriate breakpoint contents and size for this
1385 address. */
1386 bp = gdbarch_breakpoint_from_pc (gdbarch, &addr, &placed_size);
1387
1388 /* Update the final write buffer with this inserted
1389 breakpoint's INSN. */
1390 memcpy (writebuf + bp_addr - memaddr, bp + bptoffset, bp_size);
1391 }
1392 }
1393
1394 /* Update BUF, which is LEN bytes read from the target address MEMADDR,
1395 by replacing any memory breakpoints with their shadowed contents.
1396
1397 If READBUF is not NULL, this buffer must not overlap with any of
1398 the breakpoint location's shadow_contents buffers. Otherwise,
1399 a failed assertion internal error will be raised.
1400
1401 The range of shadowed area by each bp_location is:
1402 bl->address - bp_locations_placed_address_before_address_max
1403 up to bl->address + bp_locations_shadow_len_after_address_max
1404 The range we were requested to resolve shadows for is:
1405 memaddr ... memaddr + len
1406 Thus the safe cutoff boundaries for performance optimization are
1407 memaddr + len <= (bl->address
1408 - bp_locations_placed_address_before_address_max)
1409 and:
1410 bl->address + bp_locations_shadow_len_after_address_max <= memaddr */
1411
1412 void
1413 breakpoint_xfer_memory (gdb_byte *readbuf, gdb_byte *writebuf,
1414 const gdb_byte *writebuf_org,
1415 ULONGEST memaddr, LONGEST len)
1416 {
1417 /* Left boundary, right boundary and median element of our binary
1418 search. */
1419 unsigned bc_l, bc_r, bc;
1420
1421 /* Find BC_L which is a leftmost element which may affect BUF
1422 content. It is safe to report lower value but a failure to
1423 report higher one. */
1424
1425 bc_l = 0;
1426 bc_r = bp_locations_count;
1427 while (bc_l + 1 < bc_r)
1428 {
1429 struct bp_location *bl;
1430
1431 bc = (bc_l + bc_r) / 2;
1432 bl = bp_locations[bc];
1433
1434 /* Check first BL->ADDRESS will not overflow due to the added
1435 constant. Then advance the left boundary only if we are sure
1436 the BC element can in no way affect the BUF content (MEMADDR
1437 to MEMADDR + LEN range).
1438
1439 Use the BP_LOCATIONS_SHADOW_LEN_AFTER_ADDRESS_MAX safety
1440 offset so that we cannot miss a breakpoint with its shadow
1441 range tail still reaching MEMADDR. */
1442
1443 if ((bl->address + bp_locations_shadow_len_after_address_max
1444 >= bl->address)
1445 && (bl->address + bp_locations_shadow_len_after_address_max
1446 <= memaddr))
1447 bc_l = bc;
1448 else
1449 bc_r = bc;
1450 }
1451
1452 /* Due to the binary search above, we need to make sure we pick the
1453 first location that's at BC_L's address. E.g., if there are
1454 multiple locations at the same address, BC_L may end up pointing
1455 at a duplicate location, and miss the "master"/"inserted"
1456 location. Say, given locations L1, L2 and L3 at addresses A and
1457 B:
1458
1459 L1@A, L2@A, L3@B, ...
1460
1461 BC_L could end up pointing at location L2, while the "master"
1462 location could be L1. Since the `loc->inserted' flag is only set
1463 on "master" locations, we'd forget to restore the shadow of L1
1464 and L2. */
1465 while (bc_l > 0
1466 && bp_locations[bc_l]->address == bp_locations[bc_l - 1]->address)
1467 bc_l--;
1468
1469 /* Now do full processing of the found relevant range of elements. */
1470
1471 for (bc = bc_l; bc < bp_locations_count; bc++)
1472 {
1473 struct bp_location *bl = bp_locations[bc];
1474
1475 /* bp_location array has BL->OWNER always non-NULL. */
1476 if (bl->owner->type == bp_none)
1477 warning (_("reading through apparently deleted breakpoint #%d?"),
1478 bl->owner->number);
1479
1480 /* Performance optimization: any further element can no longer affect BUF
1481 content. */
1482
1483 if (bl->address >= bp_locations_placed_address_before_address_max
1484 && memaddr + len <= (bl->address
1485 - bp_locations_placed_address_before_address_max))
1486 break;
1487
1488 if (!bp_location_has_shadow (bl))
1489 continue;
1490
1491 one_breakpoint_xfer_memory (readbuf, writebuf, writebuf_org,
1492 memaddr, len, &bl->target_info, bl->gdbarch);
1493 }
1494 }
1495
1496 \f
1497
1498 /* Return true if BPT is either a software breakpoint or a hardware
1499 breakpoint. */
1500
1501 int
1502 is_breakpoint (const struct breakpoint *bpt)
1503 {
1504 return (bpt->type == bp_breakpoint
1505 || bpt->type == bp_hardware_breakpoint
1506 || bpt->type == bp_dprintf);
1507 }
1508
1509 /* Return true if BPT is of any hardware watchpoint kind. */
1510
1511 static int
1512 is_hardware_watchpoint (const struct breakpoint *bpt)
1513 {
1514 return (bpt->type == bp_hardware_watchpoint
1515 || bpt->type == bp_read_watchpoint
1516 || bpt->type == bp_access_watchpoint);
1517 }
1518
1519 /* Return true if BPT is of any watchpoint kind, hardware or
1520 software. */
1521
1522 int
1523 is_watchpoint (const struct breakpoint *bpt)
1524 {
1525 return (is_hardware_watchpoint (bpt)
1526 || bpt->type == bp_watchpoint);
1527 }
1528
1529 /* Returns true if the current thread and its running state are safe
1530 to evaluate or update watchpoint B. Watchpoints on local
1531 expressions need to be evaluated in the context of the thread that
1532 was current when the watchpoint was created, and, that thread needs
1533 to be stopped to be able to select the correct frame context.
1534 Watchpoints on global expressions can be evaluated on any thread,
1535 and in any state. It is presently left to the target allowing
1536 memory accesses when threads are running. */
1537
1538 static int
1539 watchpoint_in_thread_scope (struct watchpoint *b)
1540 {
1541 return (b->pspace == current_program_space
1542 && (b->watchpoint_thread == null_ptid
1543 || (inferior_ptid == b->watchpoint_thread
1544 && !inferior_thread ()->executing)));
1545 }
1546
1547 /* Set watchpoint B to disp_del_at_next_stop, even including its possible
1548 associated bp_watchpoint_scope breakpoint. */
1549
1550 static void
1551 watchpoint_del_at_next_stop (struct watchpoint *w)
1552 {
1553 if (w->related_breakpoint != w)
1554 {
1555 gdb_assert (w->related_breakpoint->type == bp_watchpoint_scope);
1556 gdb_assert (w->related_breakpoint->related_breakpoint == w);
1557 w->related_breakpoint->disposition = disp_del_at_next_stop;
1558 w->related_breakpoint->related_breakpoint = w->related_breakpoint;
1559 w->related_breakpoint = w;
1560 }
1561 w->disposition = disp_del_at_next_stop;
1562 }
1563
1564 /* Extract a bitfield value from value VAL using the bit parameters contained in
1565 watchpoint W. */
1566
1567 static struct value *
1568 extract_bitfield_from_watchpoint_value (struct watchpoint *w, struct value *val)
1569 {
1570 struct value *bit_val;
1571
1572 if (val == NULL)
1573 return NULL;
1574
1575 bit_val = allocate_value (value_type (val));
1576
1577 unpack_value_bitfield (bit_val,
1578 w->val_bitpos,
1579 w->val_bitsize,
1580 value_contents_for_printing (val),
1581 value_offset (val),
1582 val);
1583
1584 return bit_val;
1585 }
1586
1587 /* Allocate a dummy location and add it to B, which must be a software
1588 watchpoint. This is required because even if a software watchpoint
1589 is not watching any memory, bpstat_stop_status requires a location
1590 to be able to report stops. */
1591
1592 static void
1593 software_watchpoint_add_no_memory_location (struct breakpoint *b,
1594 struct program_space *pspace)
1595 {
1596 gdb_assert (b->type == bp_watchpoint && b->loc == NULL);
1597
1598 b->loc = allocate_bp_location (b);
1599 b->loc->pspace = pspace;
1600 b->loc->address = -1;
1601 b->loc->length = -1;
1602 }
1603
1604 /* Returns true if B is a software watchpoint that is not watching any
1605 memory (e.g., "watch $pc"). */
1606
1607 static int
1608 is_no_memory_software_watchpoint (struct breakpoint *b)
1609 {
1610 return (b->type == bp_watchpoint
1611 && b->loc != NULL
1612 && b->loc->next == NULL
1613 && b->loc->address == -1
1614 && b->loc->length == -1);
1615 }
1616
1617 /* Assuming that B is a watchpoint:
1618 - Reparse watchpoint expression, if REPARSE is non-zero
1619 - Evaluate expression and store the result in B->val
1620 - Evaluate the condition if there is one, and store the result
1621 in b->loc->cond.
1622 - Update the list of values that must be watched in B->loc.
1623
1624 If the watchpoint disposition is disp_del_at_next_stop, then do
1625 nothing. If this is local watchpoint that is out of scope, delete
1626 it.
1627
1628 Even with `set breakpoint always-inserted on' the watchpoints are
1629 removed + inserted on each stop here. Normal breakpoints must
1630 never be removed because they might be missed by a running thread
1631 when debugging in non-stop mode. On the other hand, hardware
1632 watchpoints (is_hardware_watchpoint; processed here) are specific
1633 to each LWP since they are stored in each LWP's hardware debug
1634 registers. Therefore, such LWP must be stopped first in order to
1635 be able to modify its hardware watchpoints.
1636
1637 Hardware watchpoints must be reset exactly once after being
1638 presented to the user. It cannot be done sooner, because it would
1639 reset the data used to present the watchpoint hit to the user. And
1640 it must not be done later because it could display the same single
1641 watchpoint hit during multiple GDB stops. Note that the latter is
1642 relevant only to the hardware watchpoint types bp_read_watchpoint
1643 and bp_access_watchpoint. False hit by bp_hardware_watchpoint is
1644 not user-visible - its hit is suppressed if the memory content has
1645 not changed.
1646
1647 The following constraints influence the location where we can reset
1648 hardware watchpoints:
1649
1650 * target_stopped_by_watchpoint and target_stopped_data_address are
1651 called several times when GDB stops.
1652
1653 [linux]
1654 * Multiple hardware watchpoints can be hit at the same time,
1655 causing GDB to stop. GDB only presents one hardware watchpoint
1656 hit at a time as the reason for stopping, and all the other hits
1657 are presented later, one after the other, each time the user
1658 requests the execution to be resumed. Execution is not resumed
1659 for the threads still having pending hit event stored in
1660 LWP_INFO->STATUS. While the watchpoint is already removed from
1661 the inferior on the first stop the thread hit event is kept being
1662 reported from its cached value by linux_nat_stopped_data_address
1663 until the real thread resume happens after the watchpoint gets
1664 presented and thus its LWP_INFO->STATUS gets reset.
1665
1666 Therefore the hardware watchpoint hit can get safely reset on the
1667 watchpoint removal from inferior. */
1668
1669 static void
1670 update_watchpoint (struct watchpoint *b, int reparse)
1671 {
1672 int within_current_scope;
1673 struct frame_id saved_frame_id;
1674 int frame_saved;
1675
1676 /* If this is a local watchpoint, we only want to check if the
1677 watchpoint frame is in scope if the current thread is the thread
1678 that was used to create the watchpoint. */
1679 if (!watchpoint_in_thread_scope (b))
1680 return;
1681
1682 if (b->disposition == disp_del_at_next_stop)
1683 return;
1684
1685 frame_saved = 0;
1686
1687 /* Determine if the watchpoint is within scope. */
1688 if (b->exp_valid_block == NULL)
1689 within_current_scope = 1;
1690 else
1691 {
1692 struct frame_info *fi = get_current_frame ();
1693 struct gdbarch *frame_arch = get_frame_arch (fi);
1694 CORE_ADDR frame_pc = get_frame_pc (fi);
1695
1696 /* If we're at a point where the stack has been destroyed
1697 (e.g. in a function epilogue), unwinding may not work
1698 properly. Do not attempt to recreate locations at this
1699 point. See similar comments in watchpoint_check. */
1700 if (gdbarch_stack_frame_destroyed_p (frame_arch, frame_pc))
1701 return;
1702
1703 /* Save the current frame's ID so we can restore it after
1704 evaluating the watchpoint expression on its own frame. */
1705 /* FIXME drow/2003-09-09: It would be nice if evaluate_expression
1706 took a frame parameter, so that we didn't have to change the
1707 selected frame. */
1708 frame_saved = 1;
1709 saved_frame_id = get_frame_id (get_selected_frame (NULL));
1710
1711 fi = frame_find_by_id (b->watchpoint_frame);
1712 within_current_scope = (fi != NULL);
1713 if (within_current_scope)
1714 select_frame (fi);
1715 }
1716
1717 /* We don't free locations. They are stored in the bp_location array
1718 and update_global_location_list will eventually delete them and
1719 remove breakpoints if needed. */
1720 b->loc = NULL;
1721
1722 if (within_current_scope && reparse)
1723 {
1724 const char *s;
1725
1726 b->exp.reset ();
1727 s = b->exp_string_reparse ? b->exp_string_reparse : b->exp_string;
1728 b->exp = parse_exp_1 (&s, 0, b->exp_valid_block, 0);
1729 /* If the meaning of expression itself changed, the old value is
1730 no longer relevant. We don't want to report a watchpoint hit
1731 to the user when the old value and the new value may actually
1732 be completely different objects. */
1733 b->val = NULL;
1734 b->val_valid = 0;
1735
1736 /* Note that unlike with breakpoints, the watchpoint's condition
1737 expression is stored in the breakpoint object, not in the
1738 locations (re)created below. */
1739 if (b->cond_string != NULL)
1740 {
1741 b->cond_exp.reset ();
1742
1743 s = b->cond_string;
1744 b->cond_exp = parse_exp_1 (&s, 0, b->cond_exp_valid_block, 0);
1745 }
1746 }
1747
1748 /* If we failed to parse the expression, for example because
1749 it refers to a global variable in a not-yet-loaded shared library,
1750 don't try to insert watchpoint. We don't automatically delete
1751 such watchpoint, though, since failure to parse expression
1752 is different from out-of-scope watchpoint. */
1753 if (!target_has_execution)
1754 {
1755 /* Without execution, memory can't change. No use to try and
1756 set watchpoint locations. The watchpoint will be reset when
1757 the target gains execution, through breakpoint_re_set. */
1758 if (!can_use_hw_watchpoints)
1759 {
1760 if (b->ops->works_in_software_mode (b))
1761 b->type = bp_watchpoint;
1762 else
1763 error (_("Can't set read/access watchpoint when "
1764 "hardware watchpoints are disabled."));
1765 }
1766 }
1767 else if (within_current_scope && b->exp)
1768 {
1769 int pc = 0;
1770 std::vector<value_ref_ptr> val_chain;
1771 struct value *v, *result;
1772 struct program_space *frame_pspace;
1773
1774 fetch_subexp_value (b->exp.get (), &pc, &v, &result, &val_chain, 0);
1775
1776 /* Avoid setting b->val if it's already set. The meaning of
1777 b->val is 'the last value' user saw, and we should update
1778 it only if we reported that last value to user. As it
1779 happens, the code that reports it updates b->val directly.
1780 We don't keep track of the memory value for masked
1781 watchpoints. */
1782 if (!b->val_valid && !is_masked_watchpoint (b))
1783 {
1784 if (b->val_bitsize != 0)
1785 v = extract_bitfield_from_watchpoint_value (b, v);
1786 b->val = release_value (v);
1787 b->val_valid = 1;
1788 }
1789
1790 frame_pspace = get_frame_program_space (get_selected_frame (NULL));
1791
1792 /* Look at each value on the value chain. */
1793 gdb_assert (!val_chain.empty ());
1794 for (const value_ref_ptr &iter : val_chain)
1795 {
1796 v = iter.get ();
1797
1798 /* If it's a memory location, and GDB actually needed
1799 its contents to evaluate the expression, then we
1800 must watch it. If the first value returned is
1801 still lazy, that means an error occurred reading it;
1802 watch it anyway in case it becomes readable. */
1803 if (VALUE_LVAL (v) == lval_memory
1804 && (v == val_chain[0] || ! value_lazy (v)))
1805 {
1806 struct type *vtype = check_typedef (value_type (v));
1807
1808 /* We only watch structs and arrays if user asked
1809 for it explicitly, never if they just happen to
1810 appear in the middle of some value chain. */
1811 if (v == result
1812 || (TYPE_CODE (vtype) != TYPE_CODE_STRUCT
1813 && TYPE_CODE (vtype) != TYPE_CODE_ARRAY))
1814 {
1815 CORE_ADDR addr;
1816 enum target_hw_bp_type type;
1817 struct bp_location *loc, **tmp;
1818 int bitpos = 0, bitsize = 0;
1819
1820 if (value_bitsize (v) != 0)
1821 {
1822 /* Extract the bit parameters out from the bitfield
1823 sub-expression. */
1824 bitpos = value_bitpos (v);
1825 bitsize = value_bitsize (v);
1826 }
1827 else if (v == result && b->val_bitsize != 0)
1828 {
1829 /* If VAL_BITSIZE != 0 then RESULT is actually a bitfield
1830 lvalue whose bit parameters are saved in the fields
1831 VAL_BITPOS and VAL_BITSIZE. */
1832 bitpos = b->val_bitpos;
1833 bitsize = b->val_bitsize;
1834 }
1835
1836 addr = value_address (v);
1837 if (bitsize != 0)
1838 {
1839 /* Skip the bytes that don't contain the bitfield. */
1840 addr += bitpos / 8;
1841 }
1842
1843 type = hw_write;
1844 if (b->type == bp_read_watchpoint)
1845 type = hw_read;
1846 else if (b->type == bp_access_watchpoint)
1847 type = hw_access;
1848
1849 loc = allocate_bp_location (b);
1850 for (tmp = &(b->loc); *tmp != NULL; tmp = &((*tmp)->next))
1851 ;
1852 *tmp = loc;
1853 loc->gdbarch = get_type_arch (value_type (v));
1854
1855 loc->pspace = frame_pspace;
1856 loc->address = address_significant (loc->gdbarch, addr);
1857
1858 if (bitsize != 0)
1859 {
1860 /* Just cover the bytes that make up the bitfield. */
1861 loc->length = ((bitpos % 8) + bitsize + 7) / 8;
1862 }
1863 else
1864 loc->length = TYPE_LENGTH (value_type (v));
1865
1866 loc->watchpoint_type = type;
1867 }
1868 }
1869 }
1870
1871 /* Change the type of breakpoint between hardware assisted or
1872 an ordinary watchpoint depending on the hardware support
1873 and free hardware slots. REPARSE is set when the inferior
1874 is started. */
1875 if (reparse)
1876 {
1877 int reg_cnt;
1878 enum bp_loc_type loc_type;
1879 struct bp_location *bl;
1880
1881 reg_cnt = can_use_hardware_watchpoint (val_chain);
1882
1883 if (reg_cnt)
1884 {
1885 int i, target_resources_ok, other_type_used;
1886 enum bptype type;
1887
1888 /* Use an exact watchpoint when there's only one memory region to be
1889 watched, and only one debug register is needed to watch it. */
1890 b->exact = target_exact_watchpoints && reg_cnt == 1;
1891
1892 /* We need to determine how many resources are already
1893 used for all other hardware watchpoints plus this one
1894 to see if we still have enough resources to also fit
1895 this watchpoint in as well. */
1896
1897 /* If this is a software watchpoint, we try to turn it
1898 to a hardware one -- count resources as if B was of
1899 hardware watchpoint type. */
1900 type = b->type;
1901 if (type == bp_watchpoint)
1902 type = bp_hardware_watchpoint;
1903
1904 /* This watchpoint may or may not have been placed on
1905 the list yet at this point (it won't be in the list
1906 if we're trying to create it for the first time,
1907 through watch_command), so always account for it
1908 manually. */
1909
1910 /* Count resources used by all watchpoints except B. */
1911 i = hw_watchpoint_used_count_others (b, type, &other_type_used);
1912
1913 /* Add in the resources needed for B. */
1914 i += hw_watchpoint_use_count (b);
1915
1916 target_resources_ok
1917 = target_can_use_hardware_watchpoint (type, i, other_type_used);
1918 if (target_resources_ok <= 0)
1919 {
1920 int sw_mode = b->ops->works_in_software_mode (b);
1921
1922 if (target_resources_ok == 0 && !sw_mode)
1923 error (_("Target does not support this type of "
1924 "hardware watchpoint."));
1925 else if (target_resources_ok < 0 && !sw_mode)
1926 error (_("There are not enough available hardware "
1927 "resources for this watchpoint."));
1928
1929 /* Downgrade to software watchpoint. */
1930 b->type = bp_watchpoint;
1931 }
1932 else
1933 {
1934 /* If this was a software watchpoint, we've just
1935 found we have enough resources to turn it to a
1936 hardware watchpoint. Otherwise, this is a
1937 nop. */
1938 b->type = type;
1939 }
1940 }
1941 else if (!b->ops->works_in_software_mode (b))
1942 {
1943 if (!can_use_hw_watchpoints)
1944 error (_("Can't set read/access watchpoint when "
1945 "hardware watchpoints are disabled."));
1946 else
1947 error (_("Expression cannot be implemented with "
1948 "read/access watchpoint."));
1949 }
1950 else
1951 b->type = bp_watchpoint;
1952
1953 loc_type = (b->type == bp_watchpoint? bp_loc_other
1954 : bp_loc_hardware_watchpoint);
1955 for (bl = b->loc; bl; bl = bl->next)
1956 bl->loc_type = loc_type;
1957 }
1958
1959 /* If a software watchpoint is not watching any memory, then the
1960 above left it without any location set up. But,
1961 bpstat_stop_status requires a location to be able to report
1962 stops, so make sure there's at least a dummy one. */
1963 if (b->type == bp_watchpoint && b->loc == NULL)
1964 software_watchpoint_add_no_memory_location (b, frame_pspace);
1965 }
1966 else if (!within_current_scope)
1967 {
1968 printf_filtered (_("\
1969 Watchpoint %d deleted because the program has left the block\n\
1970 in which its expression is valid.\n"),
1971 b->number);
1972 watchpoint_del_at_next_stop (b);
1973 }
1974
1975 /* Restore the selected frame. */
1976 if (frame_saved)
1977 select_frame (frame_find_by_id (saved_frame_id));
1978 }
1979
1980
1981 /* Returns 1 iff breakpoint location should be
1982 inserted in the inferior. We don't differentiate the type of BL's owner
1983 (breakpoint vs. tracepoint), although insert_location in tracepoint's
1984 breakpoint_ops is not defined, because in insert_bp_location,
1985 tracepoint's insert_location will not be called. */
1986 static int
1987 should_be_inserted (struct bp_location *bl)
1988 {
1989 if (bl->owner == NULL || !breakpoint_enabled (bl->owner))
1990 return 0;
1991
1992 if (bl->owner->disposition == disp_del_at_next_stop)
1993 return 0;
1994
1995 if (!bl->enabled || bl->shlib_disabled || bl->duplicate)
1996 return 0;
1997
1998 if (user_breakpoint_p (bl->owner) && bl->pspace->executing_startup)
1999 return 0;
2000
2001 /* This is set for example, when we're attached to the parent of a
2002 vfork, and have detached from the child. The child is running
2003 free, and we expect it to do an exec or exit, at which point the
2004 OS makes the parent schedulable again (and the target reports
2005 that the vfork is done). Until the child is done with the shared
2006 memory region, do not insert breakpoints in the parent, otherwise
2007 the child could still trip on the parent's breakpoints. Since
2008 the parent is blocked anyway, it won't miss any breakpoint. */
2009 if (bl->pspace->breakpoints_not_allowed)
2010 return 0;
2011
2012 /* Don't insert a breakpoint if we're trying to step past its
2013 location, except if the breakpoint is a single-step breakpoint,
2014 and the breakpoint's thread is the thread which is stepping past
2015 a breakpoint. */
2016 if ((bl->loc_type == bp_loc_software_breakpoint
2017 || bl->loc_type == bp_loc_hardware_breakpoint)
2018 && stepping_past_instruction_at (bl->pspace->aspace,
2019 bl->address)
2020 /* The single-step breakpoint may be inserted at the location
2021 we're trying to step if the instruction branches to itself.
2022 However, the instruction won't be executed at all and it may
2023 break the semantics of the instruction, for example, the
2024 instruction is a conditional branch or updates some flags.
2025 We can't fix it unless GDB is able to emulate the instruction
2026 or switch to displaced stepping. */
2027 && !(bl->owner->type == bp_single_step
2028 && thread_is_stepping_over_breakpoint (bl->owner->thread)))
2029 {
2030 if (debug_infrun)
2031 {
2032 fprintf_unfiltered (gdb_stdlog,
2033 "infrun: skipping breakpoint: "
2034 "stepping past insn at: %s\n",
2035 paddress (bl->gdbarch, bl->address));
2036 }
2037 return 0;
2038 }
2039
2040 /* Don't insert watchpoints if we're trying to step past the
2041 instruction that triggered one. */
2042 if ((bl->loc_type == bp_loc_hardware_watchpoint)
2043 && stepping_past_nonsteppable_watchpoint ())
2044 {
2045 if (debug_infrun)
2046 {
2047 fprintf_unfiltered (gdb_stdlog,
2048 "infrun: stepping past non-steppable watchpoint. "
2049 "skipping watchpoint at %s:%d\n",
2050 paddress (bl->gdbarch, bl->address),
2051 bl->length);
2052 }
2053 return 0;
2054 }
2055
2056 return 1;
2057 }
2058
2059 /* Same as should_be_inserted but does the check assuming
2060 that the location is not duplicated. */
2061
2062 static int
2063 unduplicated_should_be_inserted (struct bp_location *bl)
2064 {
2065 int result;
2066 const int save_duplicate = bl->duplicate;
2067
2068 bl->duplicate = 0;
2069 result = should_be_inserted (bl);
2070 bl->duplicate = save_duplicate;
2071 return result;
2072 }
2073
2074 /* Parses a conditional described by an expression COND into an
2075 agent expression bytecode suitable for evaluation
2076 by the bytecode interpreter. Return NULL if there was
2077 any error during parsing. */
2078
2079 static agent_expr_up
2080 parse_cond_to_aexpr (CORE_ADDR scope, struct expression *cond)
2081 {
2082 if (cond == NULL)
2083 return NULL;
2084
2085 agent_expr_up aexpr;
2086
2087 /* We don't want to stop processing, so catch any errors
2088 that may show up. */
2089 try
2090 {
2091 aexpr = gen_eval_for_expr (scope, cond);
2092 }
2093
2094 catch (const gdb_exception_error &ex)
2095 {
2096 /* If we got here, it means the condition could not be parsed to a valid
2097 bytecode expression and thus can't be evaluated on the target's side.
2098 It's no use iterating through the conditions. */
2099 }
2100
2101 /* We have a valid agent expression. */
2102 return aexpr;
2103 }
2104
2105 /* Based on location BL, create a list of breakpoint conditions to be
2106 passed on to the target. If we have duplicated locations with different
2107 conditions, we will add such conditions to the list. The idea is that the
2108 target will evaluate the list of conditions and will only notify GDB when
2109 one of them is true. */
2110
2111 static void
2112 build_target_condition_list (struct bp_location *bl)
2113 {
2114 struct bp_location **locp = NULL, **loc2p;
2115 int null_condition_or_parse_error = 0;
2116 int modified = bl->needs_update;
2117 struct bp_location *loc;
2118
2119 /* Release conditions left over from a previous insert. */
2120 bl->target_info.conditions.clear ();
2121
2122 /* This is only meaningful if the target is
2123 evaluating conditions and if the user has
2124 opted for condition evaluation on the target's
2125 side. */
2126 if (gdb_evaluates_breakpoint_condition_p ()
2127 || !target_supports_evaluation_of_breakpoint_conditions ())
2128 return;
2129
2130 /* Do a first pass to check for locations with no assigned
2131 conditions or conditions that fail to parse to a valid agent expression
2132 bytecode. If any of these happen, then it's no use to send conditions
2133 to the target since this location will always trigger and generate a
2134 response back to GDB. */
2135 ALL_BP_LOCATIONS_AT_ADDR (loc2p, locp, bl->address)
2136 {
2137 loc = (*loc2p);
2138 if (is_breakpoint (loc->owner) && loc->pspace->num == bl->pspace->num)
2139 {
2140 if (modified)
2141 {
2142 /* Re-parse the conditions since something changed. In that
2143 case we already freed the condition bytecodes (see
2144 force_breakpoint_reinsertion). We just
2145 need to parse the condition to bytecodes again. */
2146 loc->cond_bytecode = parse_cond_to_aexpr (bl->address,
2147 loc->cond.get ());
2148 }
2149
2150 /* If we have a NULL bytecode expression, it means something
2151 went wrong or we have a null condition expression. */
2152 if (!loc->cond_bytecode)
2153 {
2154 null_condition_or_parse_error = 1;
2155 break;
2156 }
2157 }
2158 }
2159
2160 /* If any of these happened, it means we will have to evaluate the conditions
2161 for the location's address on gdb's side. It is no use keeping bytecodes
2162 for all the other duplicate locations, thus we free all of them here.
2163
2164 This is so we have a finer control over which locations' conditions are
2165 being evaluated by GDB or the remote stub. */
2166 if (null_condition_or_parse_error)
2167 {
2168 ALL_BP_LOCATIONS_AT_ADDR (loc2p, locp, bl->address)
2169 {
2170 loc = (*loc2p);
2171 if (is_breakpoint (loc->owner) && loc->pspace->num == bl->pspace->num)
2172 {
2173 /* Only go as far as the first NULL bytecode is
2174 located. */
2175 if (!loc->cond_bytecode)
2176 return;
2177
2178 loc->cond_bytecode.reset ();
2179 }
2180 }
2181 }
2182
2183 /* No NULL conditions or failed bytecode generation. Build a condition list
2184 for this location's address. */
2185 ALL_BP_LOCATIONS_AT_ADDR (loc2p, locp, bl->address)
2186 {
2187 loc = (*loc2p);
2188 if (loc->cond
2189 && is_breakpoint (loc->owner)
2190 && loc->pspace->num == bl->pspace->num
2191 && loc->owner->enable_state == bp_enabled
2192 && loc->enabled)
2193 {
2194 /* Add the condition to the vector. This will be used later
2195 to send the conditions to the target. */
2196 bl->target_info.conditions.push_back (loc->cond_bytecode.get ());
2197 }
2198 }
2199
2200 return;
2201 }
2202
2203 /* Parses a command described by string CMD into an agent expression
2204 bytecode suitable for evaluation by the bytecode interpreter.
2205 Return NULL if there was any error during parsing. */
2206
2207 static agent_expr_up
2208 parse_cmd_to_aexpr (CORE_ADDR scope, char *cmd)
2209 {
2210 const char *cmdrest;
2211 const char *format_start, *format_end;
2212 struct gdbarch *gdbarch = get_current_arch ();
2213
2214 if (cmd == NULL)
2215 return NULL;
2216
2217 cmdrest = cmd;
2218
2219 if (*cmdrest == ',')
2220 ++cmdrest;
2221 cmdrest = skip_spaces (cmdrest);
2222
2223 if (*cmdrest++ != '"')
2224 error (_("No format string following the location"));
2225
2226 format_start = cmdrest;
2227
2228 format_pieces fpieces (&cmdrest);
2229
2230 format_end = cmdrest;
2231
2232 if (*cmdrest++ != '"')
2233 error (_("Bad format string, non-terminated '\"'."));
2234
2235 cmdrest = skip_spaces (cmdrest);
2236
2237 if (!(*cmdrest == ',' || *cmdrest == '\0'))
2238 error (_("Invalid argument syntax"));
2239
2240 if (*cmdrest == ',')
2241 cmdrest++;
2242 cmdrest = skip_spaces (cmdrest);
2243
2244 /* For each argument, make an expression. */
2245
2246 std::vector<struct expression *> argvec;
2247 while (*cmdrest != '\0')
2248 {
2249 const char *cmd1;
2250
2251 cmd1 = cmdrest;
2252 expression_up expr = parse_exp_1 (&cmd1, scope, block_for_pc (scope), 1);
2253 argvec.push_back (expr.release ());
2254 cmdrest = cmd1;
2255 if (*cmdrest == ',')
2256 ++cmdrest;
2257 }
2258
2259 agent_expr_up aexpr;
2260
2261 /* We don't want to stop processing, so catch any errors
2262 that may show up. */
2263 try
2264 {
2265 aexpr = gen_printf (scope, gdbarch, 0, 0,
2266 format_start, format_end - format_start,
2267 argvec.size (), argvec.data ());
2268 }
2269 catch (const gdb_exception_error &ex)
2270 {
2271 /* If we got here, it means the command could not be parsed to a valid
2272 bytecode expression and thus can't be evaluated on the target's side.
2273 It's no use iterating through the other commands. */
2274 }
2275
2276 /* We have a valid agent expression, return it. */
2277 return aexpr;
2278 }
2279
2280 /* Based on location BL, create a list of breakpoint commands to be
2281 passed on to the target. If we have duplicated locations with
2282 different commands, we will add any such to the list. */
2283
2284 static void
2285 build_target_command_list (struct bp_location *bl)
2286 {
2287 struct bp_location **locp = NULL, **loc2p;
2288 int null_command_or_parse_error = 0;
2289 int modified = bl->needs_update;
2290 struct bp_location *loc;
2291
2292 /* Clear commands left over from a previous insert. */
2293 bl->target_info.tcommands.clear ();
2294
2295 if (!target_can_run_breakpoint_commands ())
2296 return;
2297
2298 /* For now, limit to agent-style dprintf breakpoints. */
2299 if (dprintf_style != dprintf_style_agent)
2300 return;
2301
2302 /* For now, if we have any duplicate location that isn't a dprintf,
2303 don't install the target-side commands, as that would make the
2304 breakpoint not be reported to the core, and we'd lose
2305 control. */
2306 ALL_BP_LOCATIONS_AT_ADDR (loc2p, locp, bl->address)
2307 {
2308 loc = (*loc2p);
2309 if (is_breakpoint (loc->owner)
2310 && loc->pspace->num == bl->pspace->num
2311 && loc->owner->type != bp_dprintf)
2312 return;
2313 }
2314
2315 /* Do a first pass to check for locations with no assigned
2316 conditions or conditions that fail to parse to a valid agent expression
2317 bytecode. If any of these happen, then it's no use to send conditions
2318 to the target since this location will always trigger and generate a
2319 response back to GDB. */
2320 ALL_BP_LOCATIONS_AT_ADDR (loc2p, locp, bl->address)
2321 {
2322 loc = (*loc2p);
2323 if (is_breakpoint (loc->owner) && loc->pspace->num == bl->pspace->num)
2324 {
2325 if (modified)
2326 {
2327 /* Re-parse the commands since something changed. In that
2328 case we already freed the command bytecodes (see
2329 force_breakpoint_reinsertion). We just
2330 need to parse the command to bytecodes again. */
2331 loc->cmd_bytecode
2332 = parse_cmd_to_aexpr (bl->address,
2333 loc->owner->extra_string);
2334 }
2335
2336 /* If we have a NULL bytecode expression, it means something
2337 went wrong or we have a null command expression. */
2338 if (!loc->cmd_bytecode)
2339 {
2340 null_command_or_parse_error = 1;
2341 break;
2342 }
2343 }
2344 }
2345
2346 /* If anything failed, then we're not doing target-side commands,
2347 and so clean up. */
2348 if (null_command_or_parse_error)
2349 {
2350 ALL_BP_LOCATIONS_AT_ADDR (loc2p, locp, bl->address)
2351 {
2352 loc = (*loc2p);
2353 if (is_breakpoint (loc->owner)
2354 && loc->pspace->num == bl->pspace->num)
2355 {
2356 /* Only go as far as the first NULL bytecode is
2357 located. */
2358 if (loc->cmd_bytecode == NULL)
2359 return;
2360
2361 loc->cmd_bytecode.reset ();
2362 }
2363 }
2364 }
2365
2366 /* No NULL commands or failed bytecode generation. Build a command list
2367 for this location's address. */
2368 ALL_BP_LOCATIONS_AT_ADDR (loc2p, locp, bl->address)
2369 {
2370 loc = (*loc2p);
2371 if (loc->owner->extra_string
2372 && is_breakpoint (loc->owner)
2373 && loc->pspace->num == bl->pspace->num
2374 && loc->owner->enable_state == bp_enabled
2375 && loc->enabled)
2376 {
2377 /* Add the command to the vector. This will be used later
2378 to send the commands to the target. */
2379 bl->target_info.tcommands.push_back (loc->cmd_bytecode.get ());
2380 }
2381 }
2382
2383 bl->target_info.persist = 0;
2384 /* Maybe flag this location as persistent. */
2385 if (bl->owner->type == bp_dprintf && disconnected_dprintf)
2386 bl->target_info.persist = 1;
2387 }
2388
2389 /* Return the kind of breakpoint on address *ADDR. Get the kind
2390 of breakpoint according to ADDR except single-step breakpoint.
2391 Get the kind of single-step breakpoint according to the current
2392 registers state. */
2393
2394 static int
2395 breakpoint_kind (struct bp_location *bl, CORE_ADDR *addr)
2396 {
2397 if (bl->owner->type == bp_single_step)
2398 {
2399 struct thread_info *thr = find_thread_global_id (bl->owner->thread);
2400 struct regcache *regcache;
2401
2402 regcache = get_thread_regcache (thr);
2403
2404 return gdbarch_breakpoint_kind_from_current_state (bl->gdbarch,
2405 regcache, addr);
2406 }
2407 else
2408 return gdbarch_breakpoint_kind_from_pc (bl->gdbarch, addr);
2409 }
2410
2411 /* Insert a low-level "breakpoint" of some type. BL is the breakpoint
2412 location. Any error messages are printed to TMP_ERROR_STREAM; and
2413 DISABLED_BREAKS, and HW_BREAKPOINT_ERROR are used to report problems.
2414 Returns 0 for success, 1 if the bp_location type is not supported or
2415 -1 for failure.
2416
2417 NOTE drow/2003-09-09: This routine could be broken down to an
2418 object-style method for each breakpoint or catchpoint type. */
2419 static int
2420 insert_bp_location (struct bp_location *bl,
2421 struct ui_file *tmp_error_stream,
2422 int *disabled_breaks,
2423 int *hw_breakpoint_error,
2424 int *hw_bp_error_explained_already)
2425 {
2426 gdb_exception bp_excpt;
2427
2428 if (!should_be_inserted (bl) || (bl->inserted && !bl->needs_update))
2429 return 0;
2430
2431 /* Note we don't initialize bl->target_info, as that wipes out
2432 the breakpoint location's shadow_contents if the breakpoint
2433 is still inserted at that location. This in turn breaks
2434 target_read_memory which depends on these buffers when
2435 a memory read is requested at the breakpoint location:
2436 Once the target_info has been wiped, we fail to see that
2437 we have a breakpoint inserted at that address and thus
2438 read the breakpoint instead of returning the data saved in
2439 the breakpoint location's shadow contents. */
2440 bl->target_info.reqstd_address = bl->address;
2441 bl->target_info.placed_address_space = bl->pspace->aspace;
2442 bl->target_info.length = bl->length;
2443
2444 /* When working with target-side conditions, we must pass all the conditions
2445 for the same breakpoint address down to the target since GDB will not
2446 insert those locations. With a list of breakpoint conditions, the target
2447 can decide when to stop and notify GDB. */
2448
2449 if (is_breakpoint (bl->owner))
2450 {
2451 build_target_condition_list (bl);
2452 build_target_command_list (bl);
2453 /* Reset the modification marker. */
2454 bl->needs_update = 0;
2455 }
2456
2457 if (bl->loc_type == bp_loc_software_breakpoint
2458 || bl->loc_type == bp_loc_hardware_breakpoint)
2459 {
2460 if (bl->owner->type != bp_hardware_breakpoint)
2461 {
2462 /* If the explicitly specified breakpoint type
2463 is not hardware breakpoint, check the memory map to see
2464 if the breakpoint address is in read only memory or not.
2465
2466 Two important cases are:
2467 - location type is not hardware breakpoint, memory
2468 is readonly. We change the type of the location to
2469 hardware breakpoint.
2470 - location type is hardware breakpoint, memory is
2471 read-write. This means we've previously made the
2472 location hardware one, but then the memory map changed,
2473 so we undo.
2474
2475 When breakpoints are removed, remove_breakpoints will use
2476 location types we've just set here, the only possible
2477 problem is that memory map has changed during running
2478 program, but it's not going to work anyway with current
2479 gdb. */
2480 struct mem_region *mr
2481 = lookup_mem_region (bl->target_info.reqstd_address);
2482
2483 if (mr)
2484 {
2485 if (automatic_hardware_breakpoints)
2486 {
2487 enum bp_loc_type new_type;
2488
2489 if (mr->attrib.mode != MEM_RW)
2490 new_type = bp_loc_hardware_breakpoint;
2491 else
2492 new_type = bp_loc_software_breakpoint;
2493
2494 if (new_type != bl->loc_type)
2495 {
2496 static int said = 0;
2497
2498 bl->loc_type = new_type;
2499 if (!said)
2500 {
2501 fprintf_filtered (gdb_stdout,
2502 _("Note: automatically using "
2503 "hardware breakpoints for "
2504 "read-only addresses.\n"));
2505 said = 1;
2506 }
2507 }
2508 }
2509 else if (bl->loc_type == bp_loc_software_breakpoint
2510 && mr->attrib.mode != MEM_RW)
2511 {
2512 fprintf_unfiltered (tmp_error_stream,
2513 _("Cannot insert breakpoint %d.\n"
2514 "Cannot set software breakpoint "
2515 "at read-only address %s\n"),
2516 bl->owner->number,
2517 paddress (bl->gdbarch, bl->address));
2518 return 1;
2519 }
2520 }
2521 }
2522
2523 /* First check to see if we have to handle an overlay. */
2524 if (overlay_debugging == ovly_off
2525 || bl->section == NULL
2526 || !(section_is_overlay (bl->section)))
2527 {
2528 /* No overlay handling: just set the breakpoint. */
2529 try
2530 {
2531 int val;
2532
2533 val = bl->owner->ops->insert_location (bl);
2534 if (val)
2535 bp_excpt = gdb_exception {RETURN_ERROR, GENERIC_ERROR};
2536 }
2537 catch (gdb_exception &e)
2538 {
2539 bp_excpt = std::move (e);
2540 }
2541 }
2542 else
2543 {
2544 /* This breakpoint is in an overlay section.
2545 Shall we set a breakpoint at the LMA? */
2546 if (!overlay_events_enabled)
2547 {
2548 /* Yes -- overlay event support is not active,
2549 so we must try to set a breakpoint at the LMA.
2550 This will not work for a hardware breakpoint. */
2551 if (bl->loc_type == bp_loc_hardware_breakpoint)
2552 warning (_("hardware breakpoint %d not supported in overlay!"),
2553 bl->owner->number);
2554 else
2555 {
2556 CORE_ADDR addr = overlay_unmapped_address (bl->address,
2557 bl->section);
2558 /* Set a software (trap) breakpoint at the LMA. */
2559 bl->overlay_target_info = bl->target_info;
2560 bl->overlay_target_info.reqstd_address = addr;
2561
2562 /* No overlay handling: just set the breakpoint. */
2563 try
2564 {
2565 int val;
2566
2567 bl->overlay_target_info.kind
2568 = breakpoint_kind (bl, &addr);
2569 bl->overlay_target_info.placed_address = addr;
2570 val = target_insert_breakpoint (bl->gdbarch,
2571 &bl->overlay_target_info);
2572 if (val)
2573 bp_excpt
2574 = gdb_exception {RETURN_ERROR, GENERIC_ERROR};
2575 }
2576 catch (gdb_exception &e)
2577 {
2578 bp_excpt = std::move (e);
2579 }
2580
2581 if (bp_excpt.reason != 0)
2582 fprintf_unfiltered (tmp_error_stream,
2583 "Overlay breakpoint %d "
2584 "failed: in ROM?\n",
2585 bl->owner->number);
2586 }
2587 }
2588 /* Shall we set a breakpoint at the VMA? */
2589 if (section_is_mapped (bl->section))
2590 {
2591 /* Yes. This overlay section is mapped into memory. */
2592 try
2593 {
2594 int val;
2595
2596 val = bl->owner->ops->insert_location (bl);
2597 if (val)
2598 bp_excpt = gdb_exception {RETURN_ERROR, GENERIC_ERROR};
2599 }
2600 catch (gdb_exception &e)
2601 {
2602 bp_excpt = std::move (e);
2603 }
2604 }
2605 else
2606 {
2607 /* No. This breakpoint will not be inserted.
2608 No error, but do not mark the bp as 'inserted'. */
2609 return 0;
2610 }
2611 }
2612
2613 if (bp_excpt.reason != 0)
2614 {
2615 /* Can't set the breakpoint. */
2616
2617 /* In some cases, we might not be able to insert a
2618 breakpoint in a shared library that has already been
2619 removed, but we have not yet processed the shlib unload
2620 event. Unfortunately, some targets that implement
2621 breakpoint insertion themselves can't tell why the
2622 breakpoint insertion failed (e.g., the remote target
2623 doesn't define error codes), so we must treat generic
2624 errors as memory errors. */
2625 if (bp_excpt.reason == RETURN_ERROR
2626 && (bp_excpt.error == GENERIC_ERROR
2627 || bp_excpt.error == MEMORY_ERROR)
2628 && bl->loc_type == bp_loc_software_breakpoint
2629 && (solib_name_from_address (bl->pspace, bl->address)
2630 || shared_objfile_contains_address_p (bl->pspace,
2631 bl->address)))
2632 {
2633 /* See also: disable_breakpoints_in_shlibs. */
2634 bl->shlib_disabled = 1;
2635 gdb::observers::breakpoint_modified.notify (bl->owner);
2636 if (!*disabled_breaks)
2637 {
2638 fprintf_unfiltered (tmp_error_stream,
2639 "Cannot insert breakpoint %d.\n",
2640 bl->owner->number);
2641 fprintf_unfiltered (tmp_error_stream,
2642 "Temporarily disabling shared "
2643 "library breakpoints:\n");
2644 }
2645 *disabled_breaks = 1;
2646 fprintf_unfiltered (tmp_error_stream,
2647 "breakpoint #%d\n", bl->owner->number);
2648 return 0;
2649 }
2650 else
2651 {
2652 if (bl->loc_type == bp_loc_hardware_breakpoint)
2653 {
2654 *hw_breakpoint_error = 1;
2655 *hw_bp_error_explained_already = bp_excpt.message != NULL;
2656 fprintf_unfiltered (tmp_error_stream,
2657 "Cannot insert hardware breakpoint %d%s",
2658 bl->owner->number,
2659 bp_excpt.message ? ":" : ".\n");
2660 if (bp_excpt.message != NULL)
2661 fprintf_unfiltered (tmp_error_stream, "%s.\n",
2662 bp_excpt.what ());
2663 }
2664 else
2665 {
2666 if (bp_excpt.message == NULL)
2667 {
2668 std::string message
2669 = memory_error_message (TARGET_XFER_E_IO,
2670 bl->gdbarch, bl->address);
2671
2672 fprintf_unfiltered (tmp_error_stream,
2673 "Cannot insert breakpoint %d.\n"
2674 "%s\n",
2675 bl->owner->number, message.c_str ());
2676 }
2677 else
2678 {
2679 fprintf_unfiltered (tmp_error_stream,
2680 "Cannot insert breakpoint %d: %s\n",
2681 bl->owner->number,
2682 bp_excpt.what ());
2683 }
2684 }
2685 return 1;
2686
2687 }
2688 }
2689 else
2690 bl->inserted = 1;
2691
2692 return 0;
2693 }
2694
2695 else if (bl->loc_type == bp_loc_hardware_watchpoint
2696 /* NOTE drow/2003-09-08: This state only exists for removing
2697 watchpoints. It's not clear that it's necessary... */
2698 && bl->owner->disposition != disp_del_at_next_stop)
2699 {
2700 int val;
2701
2702 gdb_assert (bl->owner->ops != NULL
2703 && bl->owner->ops->insert_location != NULL);
2704
2705 val = bl->owner->ops->insert_location (bl);
2706
2707 /* If trying to set a read-watchpoint, and it turns out it's not
2708 supported, try emulating one with an access watchpoint. */
2709 if (val == 1 && bl->watchpoint_type == hw_read)
2710 {
2711 struct bp_location *loc, **loc_temp;
2712
2713 /* But don't try to insert it, if there's already another
2714 hw_access location that would be considered a duplicate
2715 of this one. */
2716 ALL_BP_LOCATIONS (loc, loc_temp)
2717 if (loc != bl
2718 && loc->watchpoint_type == hw_access
2719 && watchpoint_locations_match (bl, loc))
2720 {
2721 bl->duplicate = 1;
2722 bl->inserted = 1;
2723 bl->target_info = loc->target_info;
2724 bl->watchpoint_type = hw_access;
2725 val = 0;
2726 break;
2727 }
2728
2729 if (val == 1)
2730 {
2731 bl->watchpoint_type = hw_access;
2732 val = bl->owner->ops->insert_location (bl);
2733
2734 if (val)
2735 /* Back to the original value. */
2736 bl->watchpoint_type = hw_read;
2737 }
2738 }
2739
2740 bl->inserted = (val == 0);
2741 }
2742
2743 else if (bl->owner->type == bp_catchpoint)
2744 {
2745 int val;
2746
2747 gdb_assert (bl->owner->ops != NULL
2748 && bl->owner->ops->insert_location != NULL);
2749
2750 val = bl->owner->ops->insert_location (bl);
2751 if (val)
2752 {
2753 bl->owner->enable_state = bp_disabled;
2754
2755 if (val == 1)
2756 warning (_("\
2757 Error inserting catchpoint %d: Your system does not support this type\n\
2758 of catchpoint."), bl->owner->number);
2759 else
2760 warning (_("Error inserting catchpoint %d."), bl->owner->number);
2761 }
2762
2763 bl->inserted = (val == 0);
2764
2765 /* We've already printed an error message if there was a problem
2766 inserting this catchpoint, and we've disabled the catchpoint,
2767 so just return success. */
2768 return 0;
2769 }
2770
2771 return 0;
2772 }
2773
2774 /* This function is called when program space PSPACE is about to be
2775 deleted. It takes care of updating breakpoints to not reference
2776 PSPACE anymore. */
2777
2778 void
2779 breakpoint_program_space_exit (struct program_space *pspace)
2780 {
2781 struct breakpoint *b, *b_temp;
2782 struct bp_location *loc, **loc_temp;
2783
2784 /* Remove any breakpoint that was set through this program space. */
2785 ALL_BREAKPOINTS_SAFE (b, b_temp)
2786 {
2787 if (b->pspace == pspace)
2788 delete_breakpoint (b);
2789 }
2790
2791 /* Breakpoints set through other program spaces could have locations
2792 bound to PSPACE as well. Remove those. */
2793 ALL_BP_LOCATIONS (loc, loc_temp)
2794 {
2795 struct bp_location *tmp;
2796
2797 if (loc->pspace == pspace)
2798 {
2799 /* ALL_BP_LOCATIONS bp_location has LOC->OWNER always non-NULL. */
2800 if (loc->owner->loc == loc)
2801 loc->owner->loc = loc->next;
2802 else
2803 for (tmp = loc->owner->loc; tmp->next != NULL; tmp = tmp->next)
2804 if (tmp->next == loc)
2805 {
2806 tmp->next = loc->next;
2807 break;
2808 }
2809 }
2810 }
2811
2812 /* Now update the global location list to permanently delete the
2813 removed locations above. */
2814 update_global_location_list (UGLL_DONT_INSERT);
2815 }
2816
2817 /* Make sure all breakpoints are inserted in inferior.
2818 Throws exception on any error.
2819 A breakpoint that is already inserted won't be inserted
2820 again, so calling this function twice is safe. */
2821 void
2822 insert_breakpoints (void)
2823 {
2824 struct breakpoint *bpt;
2825
2826 ALL_BREAKPOINTS (bpt)
2827 if (is_hardware_watchpoint (bpt))
2828 {
2829 struct watchpoint *w = (struct watchpoint *) bpt;
2830
2831 update_watchpoint (w, 0 /* don't reparse. */);
2832 }
2833
2834 /* Updating watchpoints creates new locations, so update the global
2835 location list. Explicitly tell ugll to insert locations and
2836 ignore breakpoints_always_inserted_mode. */
2837 update_global_location_list (UGLL_INSERT);
2838 }
2839
2840 /* Invoke CALLBACK for each of bp_location. */
2841
2842 void
2843 iterate_over_bp_locations (walk_bp_location_callback callback)
2844 {
2845 struct bp_location *loc, **loc_tmp;
2846
2847 ALL_BP_LOCATIONS (loc, loc_tmp)
2848 {
2849 callback (loc, NULL);
2850 }
2851 }
2852
2853 /* This is used when we need to synch breakpoint conditions between GDB and the
2854 target. It is the case with deleting and disabling of breakpoints when using
2855 always-inserted mode. */
2856
2857 static void
2858 update_inserted_breakpoint_locations (void)
2859 {
2860 struct bp_location *bl, **blp_tmp;
2861 int error_flag = 0;
2862 int val = 0;
2863 int disabled_breaks = 0;
2864 int hw_breakpoint_error = 0;
2865 int hw_bp_details_reported = 0;
2866
2867 string_file tmp_error_stream;
2868
2869 /* Explicitly mark the warning -- this will only be printed if
2870 there was an error. */
2871 tmp_error_stream.puts ("Warning:\n");
2872
2873 scoped_restore_current_pspace_and_thread restore_pspace_thread;
2874
2875 ALL_BP_LOCATIONS (bl, blp_tmp)
2876 {
2877 /* We only want to update software breakpoints and hardware
2878 breakpoints. */
2879 if (!is_breakpoint (bl->owner))
2880 continue;
2881
2882 /* We only want to update locations that are already inserted
2883 and need updating. This is to avoid unwanted insertion during
2884 deletion of breakpoints. */
2885 if (!bl->inserted || !bl->needs_update)
2886 continue;
2887
2888 switch_to_program_space_and_thread (bl->pspace);
2889
2890 /* For targets that support global breakpoints, there's no need
2891 to select an inferior to insert breakpoint to. In fact, even
2892 if we aren't attached to any process yet, we should still
2893 insert breakpoints. */
2894 if (!gdbarch_has_global_breakpoints (target_gdbarch ())
2895 && inferior_ptid == null_ptid)
2896 continue;
2897
2898 val = insert_bp_location (bl, &tmp_error_stream, &disabled_breaks,
2899 &hw_breakpoint_error, &hw_bp_details_reported);
2900 if (val)
2901 error_flag = val;
2902 }
2903
2904 if (error_flag)
2905 {
2906 target_terminal::ours_for_output ();
2907 error_stream (tmp_error_stream);
2908 }
2909 }
2910
2911 /* Used when starting or continuing the program. */
2912
2913 static void
2914 insert_breakpoint_locations (void)
2915 {
2916 struct breakpoint *bpt;
2917 struct bp_location *bl, **blp_tmp;
2918 int error_flag = 0;
2919 int val = 0;
2920 int disabled_breaks = 0;
2921 int hw_breakpoint_error = 0;
2922 int hw_bp_error_explained_already = 0;
2923
2924 string_file tmp_error_stream;
2925
2926 /* Explicitly mark the warning -- this will only be printed if
2927 there was an error. */
2928 tmp_error_stream.puts ("Warning:\n");
2929
2930 scoped_restore_current_pspace_and_thread restore_pspace_thread;
2931
2932 ALL_BP_LOCATIONS (bl, blp_tmp)
2933 {
2934 if (!should_be_inserted (bl) || (bl->inserted && !bl->needs_update))
2935 continue;
2936
2937 /* There is no point inserting thread-specific breakpoints if
2938 the thread no longer exists. ALL_BP_LOCATIONS bp_location
2939 has BL->OWNER always non-NULL. */
2940 if (bl->owner->thread != -1
2941 && !valid_global_thread_id (bl->owner->thread))
2942 continue;
2943
2944 switch_to_program_space_and_thread (bl->pspace);
2945
2946 /* For targets that support global breakpoints, there's no need
2947 to select an inferior to insert breakpoint to. In fact, even
2948 if we aren't attached to any process yet, we should still
2949 insert breakpoints. */
2950 if (!gdbarch_has_global_breakpoints (target_gdbarch ())
2951 && inferior_ptid == null_ptid)
2952 continue;
2953
2954 val = insert_bp_location (bl, &tmp_error_stream, &disabled_breaks,
2955 &hw_breakpoint_error, &hw_bp_error_explained_already);
2956 if (val)
2957 error_flag = val;
2958 }
2959
2960 /* If we failed to insert all locations of a watchpoint, remove
2961 them, as half-inserted watchpoint is of limited use. */
2962 ALL_BREAKPOINTS (bpt)
2963 {
2964 int some_failed = 0;
2965 struct bp_location *loc;
2966
2967 if (!is_hardware_watchpoint (bpt))
2968 continue;
2969
2970 if (!breakpoint_enabled (bpt))
2971 continue;
2972
2973 if (bpt->disposition == disp_del_at_next_stop)
2974 continue;
2975
2976 for (loc = bpt->loc; loc; loc = loc->next)
2977 if (!loc->inserted && should_be_inserted (loc))
2978 {
2979 some_failed = 1;
2980 break;
2981 }
2982 if (some_failed)
2983 {
2984 for (loc = bpt->loc; loc; loc = loc->next)
2985 if (loc->inserted)
2986 remove_breakpoint (loc);
2987
2988 hw_breakpoint_error = 1;
2989 tmp_error_stream.printf ("Could not insert "
2990 "hardware watchpoint %d.\n",
2991 bpt->number);
2992 error_flag = -1;
2993 }
2994 }
2995
2996 if (error_flag)
2997 {
2998 /* If a hardware breakpoint or watchpoint was inserted, add a
2999 message about possibly exhausted resources. */
3000 if (hw_breakpoint_error && !hw_bp_error_explained_already)
3001 {
3002 tmp_error_stream.printf ("Could not insert hardware breakpoints:\n\
3003 You may have requested too many hardware breakpoints/watchpoints.\n");
3004 }
3005 target_terminal::ours_for_output ();
3006 error_stream (tmp_error_stream);
3007 }
3008 }
3009
3010 /* Used when the program stops.
3011 Returns zero if successful, or non-zero if there was a problem
3012 removing a breakpoint location. */
3013
3014 int
3015 remove_breakpoints (void)
3016 {
3017 struct bp_location *bl, **blp_tmp;
3018 int val = 0;
3019
3020 ALL_BP_LOCATIONS (bl, blp_tmp)
3021 {
3022 if (bl->inserted && !is_tracepoint (bl->owner))
3023 val |= remove_breakpoint (bl);
3024 }
3025 return val;
3026 }
3027
3028 /* When a thread exits, remove breakpoints that are related to
3029 that thread. */
3030
3031 static void
3032 remove_threaded_breakpoints (struct thread_info *tp, int silent)
3033 {
3034 struct breakpoint *b, *b_tmp;
3035
3036 ALL_BREAKPOINTS_SAFE (b, b_tmp)
3037 {
3038 if (b->thread == tp->global_num && user_breakpoint_p (b))
3039 {
3040 b->disposition = disp_del_at_next_stop;
3041
3042 printf_filtered (_("\
3043 Thread-specific breakpoint %d deleted - thread %s no longer in the thread list.\n"),
3044 b->number, print_thread_id (tp));
3045
3046 /* Hide it from the user. */
3047 b->number = 0;
3048 }
3049 }
3050 }
3051
3052 /* Remove breakpoints of inferior INF. */
3053
3054 int
3055 remove_breakpoints_inf (inferior *inf)
3056 {
3057 struct bp_location *bl, **blp_tmp;
3058 int val;
3059
3060 ALL_BP_LOCATIONS (bl, blp_tmp)
3061 {
3062 if (bl->pspace != inf->pspace)
3063 continue;
3064
3065 if (bl->inserted && !bl->target_info.persist)
3066 {
3067 val = remove_breakpoint (bl);
3068 if (val != 0)
3069 return val;
3070 }
3071 }
3072 return 0;
3073 }
3074
3075 static int internal_breakpoint_number = -1;
3076
3077 /* Set the breakpoint number of B, depending on the value of INTERNAL.
3078 If INTERNAL is non-zero, the breakpoint number will be populated
3079 from internal_breakpoint_number and that variable decremented.
3080 Otherwise the breakpoint number will be populated from
3081 breakpoint_count and that value incremented. Internal breakpoints
3082 do not set the internal var bpnum. */
3083 static void
3084 set_breakpoint_number (int internal, struct breakpoint *b)
3085 {
3086 if (internal)
3087 b->number = internal_breakpoint_number--;
3088 else
3089 {
3090 set_breakpoint_count (breakpoint_count + 1);
3091 b->number = breakpoint_count;
3092 }
3093 }
3094
3095 static struct breakpoint *
3096 create_internal_breakpoint (struct gdbarch *gdbarch,
3097 CORE_ADDR address, enum bptype type,
3098 const struct breakpoint_ops *ops)
3099 {
3100 symtab_and_line sal;
3101 sal.pc = address;
3102 sal.section = find_pc_overlay (sal.pc);
3103 sal.pspace = current_program_space;
3104
3105 breakpoint *b = set_raw_breakpoint (gdbarch, sal, type, ops);
3106 b->number = internal_breakpoint_number--;
3107 b->disposition = disp_donttouch;
3108
3109 return b;
3110 }
3111
3112 static const char *const longjmp_names[] =
3113 {
3114 "longjmp", "_longjmp", "siglongjmp", "_siglongjmp"
3115 };
3116 #define NUM_LONGJMP_NAMES ARRAY_SIZE(longjmp_names)
3117
3118 /* Per-objfile data private to breakpoint.c. */
3119 struct breakpoint_objfile_data
3120 {
3121 /* Minimal symbol for "_ovly_debug_event" (if any). */
3122 struct bound_minimal_symbol overlay_msym {};
3123
3124 /* Minimal symbol(s) for "longjmp", "siglongjmp", etc. (if any). */
3125 struct bound_minimal_symbol longjmp_msym[NUM_LONGJMP_NAMES] {};
3126
3127 /* True if we have looked for longjmp probes. */
3128 int longjmp_searched = 0;
3129
3130 /* SystemTap probe points for longjmp (if any). These are non-owning
3131 references. */
3132 std::vector<probe *> longjmp_probes;
3133
3134 /* Minimal symbol for "std::terminate()" (if any). */
3135 struct bound_minimal_symbol terminate_msym {};
3136
3137 /* Minimal symbol for "_Unwind_DebugHook" (if any). */
3138 struct bound_minimal_symbol exception_msym {};
3139
3140 /* True if we have looked for exception probes. */
3141 int exception_searched = 0;
3142
3143 /* SystemTap probe points for unwinding (if any). These are non-owning
3144 references. */
3145 std::vector<probe *> exception_probes;
3146 };
3147
3148 static const struct objfile_key<breakpoint_objfile_data>
3149 breakpoint_objfile_key;
3150
3151 /* Minimal symbol not found sentinel. */
3152 static struct minimal_symbol msym_not_found;
3153
3154 /* Returns TRUE if MSYM point to the "not found" sentinel. */
3155
3156 static int
3157 msym_not_found_p (const struct minimal_symbol *msym)
3158 {
3159 return msym == &msym_not_found;
3160 }
3161
3162 /* Return per-objfile data needed by breakpoint.c.
3163 Allocate the data if necessary. */
3164
3165 static struct breakpoint_objfile_data *
3166 get_breakpoint_objfile_data (struct objfile *objfile)
3167 {
3168 struct breakpoint_objfile_data *bp_objfile_data;
3169
3170 bp_objfile_data = breakpoint_objfile_key.get (objfile);
3171 if (bp_objfile_data == NULL)
3172 bp_objfile_data = breakpoint_objfile_key.emplace (objfile);
3173 return bp_objfile_data;
3174 }
3175
3176 static void
3177 create_overlay_event_breakpoint (void)
3178 {
3179 const char *const func_name = "_ovly_debug_event";
3180
3181 for (objfile *objfile : current_program_space->objfiles ())
3182 {
3183 struct breakpoint *b;
3184 struct breakpoint_objfile_data *bp_objfile_data;
3185 CORE_ADDR addr;
3186 struct explicit_location explicit_loc;
3187
3188 bp_objfile_data = get_breakpoint_objfile_data (objfile);
3189
3190 if (msym_not_found_p (bp_objfile_data->overlay_msym.minsym))
3191 continue;
3192
3193 if (bp_objfile_data->overlay_msym.minsym == NULL)
3194 {
3195 struct bound_minimal_symbol m;
3196
3197 m = lookup_minimal_symbol_text (func_name, objfile);
3198 if (m.minsym == NULL)
3199 {
3200 /* Avoid future lookups in this objfile. */
3201 bp_objfile_data->overlay_msym.minsym = &msym_not_found;
3202 continue;
3203 }
3204 bp_objfile_data->overlay_msym = m;
3205 }
3206
3207 addr = BMSYMBOL_VALUE_ADDRESS (bp_objfile_data->overlay_msym);
3208 b = create_internal_breakpoint (get_objfile_arch (objfile), addr,
3209 bp_overlay_event,
3210 &internal_breakpoint_ops);
3211 initialize_explicit_location (&explicit_loc);
3212 explicit_loc.function_name = ASTRDUP (func_name);
3213 b->location = new_explicit_location (&explicit_loc);
3214
3215 if (overlay_debugging == ovly_auto)
3216 {
3217 b->enable_state = bp_enabled;
3218 overlay_events_enabled = 1;
3219 }
3220 else
3221 {
3222 b->enable_state = bp_disabled;
3223 overlay_events_enabled = 0;
3224 }
3225 }
3226 }
3227
3228 static void
3229 create_longjmp_master_breakpoint (void)
3230 {
3231 struct program_space *pspace;
3232
3233 scoped_restore_current_program_space restore_pspace;
3234
3235 ALL_PSPACES (pspace)
3236 {
3237 set_current_program_space (pspace);
3238
3239 for (objfile *objfile : current_program_space->objfiles ())
3240 {
3241 int i;
3242 struct gdbarch *gdbarch;
3243 struct breakpoint_objfile_data *bp_objfile_data;
3244
3245 gdbarch = get_objfile_arch (objfile);
3246
3247 bp_objfile_data = get_breakpoint_objfile_data (objfile);
3248
3249 if (!bp_objfile_data->longjmp_searched)
3250 {
3251 std::vector<probe *> ret
3252 = find_probes_in_objfile (objfile, "libc", "longjmp");
3253
3254 if (!ret.empty ())
3255 {
3256 /* We are only interested in checking one element. */
3257 probe *p = ret[0];
3258
3259 if (!p->can_evaluate_arguments ())
3260 {
3261 /* We cannot use the probe interface here, because it does
3262 not know how to evaluate arguments. */
3263 ret.clear ();
3264 }
3265 }
3266 bp_objfile_data->longjmp_probes = ret;
3267 bp_objfile_data->longjmp_searched = 1;
3268 }
3269
3270 if (!bp_objfile_data->longjmp_probes.empty ())
3271 {
3272 for (probe *p : bp_objfile_data->longjmp_probes)
3273 {
3274 struct breakpoint *b;
3275
3276 b = create_internal_breakpoint (gdbarch,
3277 p->get_relocated_address (objfile),
3278 bp_longjmp_master,
3279 &internal_breakpoint_ops);
3280 b->location = new_probe_location ("-probe-stap libc:longjmp");
3281 b->enable_state = bp_disabled;
3282 }
3283
3284 continue;
3285 }
3286
3287 if (!gdbarch_get_longjmp_target_p (gdbarch))
3288 continue;
3289
3290 for (i = 0; i < NUM_LONGJMP_NAMES; i++)
3291 {
3292 struct breakpoint *b;
3293 const char *func_name;
3294 CORE_ADDR addr;
3295 struct explicit_location explicit_loc;
3296
3297 if (msym_not_found_p (bp_objfile_data->longjmp_msym[i].minsym))
3298 continue;
3299
3300 func_name = longjmp_names[i];
3301 if (bp_objfile_data->longjmp_msym[i].minsym == NULL)
3302 {
3303 struct bound_minimal_symbol m;
3304
3305 m = lookup_minimal_symbol_text (func_name, objfile);
3306 if (m.minsym == NULL)
3307 {
3308 /* Prevent future lookups in this objfile. */
3309 bp_objfile_data->longjmp_msym[i].minsym = &msym_not_found;
3310 continue;
3311 }
3312 bp_objfile_data->longjmp_msym[i] = m;
3313 }
3314
3315 addr = BMSYMBOL_VALUE_ADDRESS (bp_objfile_data->longjmp_msym[i]);
3316 b = create_internal_breakpoint (gdbarch, addr, bp_longjmp_master,
3317 &internal_breakpoint_ops);
3318 initialize_explicit_location (&explicit_loc);
3319 explicit_loc.function_name = ASTRDUP (func_name);
3320 b->location = new_explicit_location (&explicit_loc);
3321 b->enable_state = bp_disabled;
3322 }
3323 }
3324 }
3325 }
3326
3327 /* Create a master std::terminate breakpoint. */
3328 static void
3329 create_std_terminate_master_breakpoint (void)
3330 {
3331 struct program_space *pspace;
3332 const char *const func_name = "std::terminate()";
3333
3334 scoped_restore_current_program_space restore_pspace;
3335
3336 ALL_PSPACES (pspace)
3337 {
3338 CORE_ADDR addr;
3339
3340 set_current_program_space (pspace);
3341
3342 for (objfile *objfile : current_program_space->objfiles ())
3343 {
3344 struct breakpoint *b;
3345 struct breakpoint_objfile_data *bp_objfile_data;
3346 struct explicit_location explicit_loc;
3347
3348 bp_objfile_data = get_breakpoint_objfile_data (objfile);
3349
3350 if (msym_not_found_p (bp_objfile_data->terminate_msym.minsym))
3351 continue;
3352
3353 if (bp_objfile_data->terminate_msym.minsym == NULL)
3354 {
3355 struct bound_minimal_symbol m;
3356
3357 m = lookup_minimal_symbol (func_name, NULL, objfile);
3358 if (m.minsym == NULL || (MSYMBOL_TYPE (m.minsym) != mst_text
3359 && MSYMBOL_TYPE (m.minsym) != mst_file_text))
3360 {
3361 /* Prevent future lookups in this objfile. */
3362 bp_objfile_data->terminate_msym.minsym = &msym_not_found;
3363 continue;
3364 }
3365 bp_objfile_data->terminate_msym = m;
3366 }
3367
3368 addr = BMSYMBOL_VALUE_ADDRESS (bp_objfile_data->terminate_msym);
3369 b = create_internal_breakpoint (get_objfile_arch (objfile), addr,
3370 bp_std_terminate_master,
3371 &internal_breakpoint_ops);
3372 initialize_explicit_location (&explicit_loc);
3373 explicit_loc.function_name = ASTRDUP (func_name);
3374 b->location = new_explicit_location (&explicit_loc);
3375 b->enable_state = bp_disabled;
3376 }
3377 }
3378 }
3379
3380 /* Install a master breakpoint on the unwinder's debug hook. */
3381
3382 static void
3383 create_exception_master_breakpoint (void)
3384 {
3385 const char *const func_name = "_Unwind_DebugHook";
3386
3387 for (objfile *objfile : current_program_space->objfiles ())
3388 {
3389 struct breakpoint *b;
3390 struct gdbarch *gdbarch;
3391 struct breakpoint_objfile_data *bp_objfile_data;
3392 CORE_ADDR addr;
3393 struct explicit_location explicit_loc;
3394
3395 bp_objfile_data = get_breakpoint_objfile_data (objfile);
3396
3397 /* We prefer the SystemTap probe point if it exists. */
3398 if (!bp_objfile_data->exception_searched)
3399 {
3400 std::vector<probe *> ret
3401 = find_probes_in_objfile (objfile, "libgcc", "unwind");
3402
3403 if (!ret.empty ())
3404 {
3405 /* We are only interested in checking one element. */
3406 probe *p = ret[0];
3407
3408 if (!p->can_evaluate_arguments ())
3409 {
3410 /* We cannot use the probe interface here, because it does
3411 not know how to evaluate arguments. */
3412 ret.clear ();
3413 }
3414 }
3415 bp_objfile_data->exception_probes = ret;
3416 bp_objfile_data->exception_searched = 1;
3417 }
3418
3419 if (!bp_objfile_data->exception_probes.empty ())
3420 {
3421 gdbarch = get_objfile_arch (objfile);
3422
3423 for (probe *p : bp_objfile_data->exception_probes)
3424 {
3425 b = create_internal_breakpoint (gdbarch,
3426 p->get_relocated_address (objfile),
3427 bp_exception_master,
3428 &internal_breakpoint_ops);
3429 b->location = new_probe_location ("-probe-stap libgcc:unwind");
3430 b->enable_state = bp_disabled;
3431 }
3432
3433 continue;
3434 }
3435
3436 /* Otherwise, try the hook function. */
3437
3438 if (msym_not_found_p (bp_objfile_data->exception_msym.minsym))
3439 continue;
3440
3441 gdbarch = get_objfile_arch (objfile);
3442
3443 if (bp_objfile_data->exception_msym.minsym == NULL)
3444 {
3445 struct bound_minimal_symbol debug_hook;
3446
3447 debug_hook = lookup_minimal_symbol (func_name, NULL, objfile);
3448 if (debug_hook.minsym == NULL)
3449 {
3450 bp_objfile_data->exception_msym.minsym = &msym_not_found;
3451 continue;
3452 }
3453
3454 bp_objfile_data->exception_msym = debug_hook;
3455 }
3456
3457 addr = BMSYMBOL_VALUE_ADDRESS (bp_objfile_data->exception_msym);
3458 addr = gdbarch_convert_from_func_ptr_addr (gdbarch, addr,
3459 current_top_target ());
3460 b = create_internal_breakpoint (gdbarch, addr, bp_exception_master,
3461 &internal_breakpoint_ops);
3462 initialize_explicit_location (&explicit_loc);
3463 explicit_loc.function_name = ASTRDUP (func_name);
3464 b->location = new_explicit_location (&explicit_loc);
3465 b->enable_state = bp_disabled;
3466 }
3467 }
3468
3469 /* Does B have a location spec? */
3470
3471 static int
3472 breakpoint_event_location_empty_p (const struct breakpoint *b)
3473 {
3474 return b->location != NULL && event_location_empty_p (b->location.get ());
3475 }
3476
3477 void
3478 update_breakpoints_after_exec (void)
3479 {
3480 struct breakpoint *b, *b_tmp;
3481 struct bp_location *bploc, **bplocp_tmp;
3482
3483 /* We're about to delete breakpoints from GDB's lists. If the
3484 INSERTED flag is true, GDB will try to lift the breakpoints by
3485 writing the breakpoints' "shadow contents" back into memory. The
3486 "shadow contents" are NOT valid after an exec, so GDB should not
3487 do that. Instead, the target is responsible from marking
3488 breakpoints out as soon as it detects an exec. We don't do that
3489 here instead, because there may be other attempts to delete
3490 breakpoints after detecting an exec and before reaching here. */
3491 ALL_BP_LOCATIONS (bploc, bplocp_tmp)
3492 if (bploc->pspace == current_program_space)
3493 gdb_assert (!bploc->inserted);
3494
3495 ALL_BREAKPOINTS_SAFE (b, b_tmp)
3496 {
3497 if (b->pspace != current_program_space)
3498 continue;
3499
3500 /* Solib breakpoints must be explicitly reset after an exec(). */
3501 if (b->type == bp_shlib_event)
3502 {
3503 delete_breakpoint (b);
3504 continue;
3505 }
3506
3507 /* JIT breakpoints must be explicitly reset after an exec(). */
3508 if (b->type == bp_jit_event)
3509 {
3510 delete_breakpoint (b);
3511 continue;
3512 }
3513
3514 /* Thread event breakpoints must be set anew after an exec(),
3515 as must overlay event and longjmp master breakpoints. */
3516 if (b->type == bp_thread_event || b->type == bp_overlay_event
3517 || b->type == bp_longjmp_master || b->type == bp_std_terminate_master
3518 || b->type == bp_exception_master)
3519 {
3520 delete_breakpoint (b);
3521 continue;
3522 }
3523
3524 /* Step-resume breakpoints are meaningless after an exec(). */
3525 if (b->type == bp_step_resume || b->type == bp_hp_step_resume)
3526 {
3527 delete_breakpoint (b);
3528 continue;
3529 }
3530
3531 /* Just like single-step breakpoints. */
3532 if (b->type == bp_single_step)
3533 {
3534 delete_breakpoint (b);
3535 continue;
3536 }
3537
3538 /* Longjmp and longjmp-resume breakpoints are also meaningless
3539 after an exec. */
3540 if (b->type == bp_longjmp || b->type == bp_longjmp_resume
3541 || b->type == bp_longjmp_call_dummy
3542 || b->type == bp_exception || b->type == bp_exception_resume)
3543 {
3544 delete_breakpoint (b);
3545 continue;
3546 }
3547
3548 if (b->type == bp_catchpoint)
3549 {
3550 /* For now, none of the bp_catchpoint breakpoints need to
3551 do anything at this point. In the future, if some of
3552 the catchpoints need to something, we will need to add
3553 a new method, and call this method from here. */
3554 continue;
3555 }
3556
3557 /* bp_finish is a special case. The only way we ought to be able
3558 to see one of these when an exec() has happened, is if the user
3559 caught a vfork, and then said "finish". Ordinarily a finish just
3560 carries them to the call-site of the current callee, by setting
3561 a temporary bp there and resuming. But in this case, the finish
3562 will carry them entirely through the vfork & exec.
3563
3564 We don't want to allow a bp_finish to remain inserted now. But
3565 we can't safely delete it, 'cause finish_command has a handle to
3566 the bp on a bpstat, and will later want to delete it. There's a
3567 chance (and I've seen it happen) that if we delete the bp_finish
3568 here, that its storage will get reused by the time finish_command
3569 gets 'round to deleting the "use to be a bp_finish" breakpoint.
3570 We really must allow finish_command to delete a bp_finish.
3571
3572 In the absence of a general solution for the "how do we know
3573 it's safe to delete something others may have handles to?"
3574 problem, what we'll do here is just uninsert the bp_finish, and
3575 let finish_command delete it.
3576
3577 (We know the bp_finish is "doomed" in the sense that it's
3578 momentary, and will be deleted as soon as finish_command sees
3579 the inferior stopped. So it doesn't matter that the bp's
3580 address is probably bogus in the new a.out, unlike e.g., the
3581 solib breakpoints.) */
3582
3583 if (b->type == bp_finish)
3584 {
3585 continue;
3586 }
3587
3588 /* Without a symbolic address, we have little hope of the
3589 pre-exec() address meaning the same thing in the post-exec()
3590 a.out. */
3591 if (breakpoint_event_location_empty_p (b))
3592 {
3593 delete_breakpoint (b);
3594 continue;
3595 }
3596 }
3597 }
3598
3599 int
3600 detach_breakpoints (ptid_t ptid)
3601 {
3602 struct bp_location *bl, **blp_tmp;
3603 int val = 0;
3604 scoped_restore save_inferior_ptid = make_scoped_restore (&inferior_ptid);
3605 struct inferior *inf = current_inferior ();
3606
3607 if (ptid.pid () == inferior_ptid.pid ())
3608 error (_("Cannot detach breakpoints of inferior_ptid"));
3609
3610 /* Set inferior_ptid; remove_breakpoint_1 uses this global. */
3611 inferior_ptid = ptid;
3612 ALL_BP_LOCATIONS (bl, blp_tmp)
3613 {
3614 if (bl->pspace != inf->pspace)
3615 continue;
3616
3617 /* This function must physically remove breakpoints locations
3618 from the specified ptid, without modifying the breakpoint
3619 package's state. Locations of type bp_loc_other are only
3620 maintained at GDB side. So, there is no need to remove
3621 these bp_loc_other locations. Moreover, removing these
3622 would modify the breakpoint package's state. */
3623 if (bl->loc_type == bp_loc_other)
3624 continue;
3625
3626 if (bl->inserted)
3627 val |= remove_breakpoint_1 (bl, DETACH_BREAKPOINT);
3628 }
3629
3630 return val;
3631 }
3632
3633 /* Remove the breakpoint location BL from the current address space.
3634 Note that this is used to detach breakpoints from a child fork.
3635 When we get here, the child isn't in the inferior list, and neither
3636 do we have objects to represent its address space --- we should
3637 *not* look at bl->pspace->aspace here. */
3638
3639 static int
3640 remove_breakpoint_1 (struct bp_location *bl, enum remove_bp_reason reason)
3641 {
3642 int val;
3643
3644 /* BL is never in moribund_locations by our callers. */
3645 gdb_assert (bl->owner != NULL);
3646
3647 /* The type of none suggests that owner is actually deleted.
3648 This should not ever happen. */
3649 gdb_assert (bl->owner->type != bp_none);
3650
3651 if (bl->loc_type == bp_loc_software_breakpoint
3652 || bl->loc_type == bp_loc_hardware_breakpoint)
3653 {
3654 /* "Normal" instruction breakpoint: either the standard
3655 trap-instruction bp (bp_breakpoint), or a
3656 bp_hardware_breakpoint. */
3657
3658 /* First check to see if we have to handle an overlay. */
3659 if (overlay_debugging == ovly_off
3660 || bl->section == NULL
3661 || !(section_is_overlay (bl->section)))
3662 {
3663 /* No overlay handling: just remove the breakpoint. */
3664
3665 /* If we're trying to uninsert a memory breakpoint that we
3666 know is set in a dynamic object that is marked
3667 shlib_disabled, then either the dynamic object was
3668 removed with "remove-symbol-file" or with
3669 "nosharedlibrary". In the former case, we don't know
3670 whether another dynamic object might have loaded over the
3671 breakpoint's address -- the user might well let us know
3672 about it next with add-symbol-file (the whole point of
3673 add-symbol-file is letting the user manually maintain a
3674 list of dynamically loaded objects). If we have the
3675 breakpoint's shadow memory, that is, this is a software
3676 breakpoint managed by GDB, check whether the breakpoint
3677 is still inserted in memory, to avoid overwriting wrong
3678 code with stale saved shadow contents. Note that HW
3679 breakpoints don't have shadow memory, as they're
3680 implemented using a mechanism that is not dependent on
3681 being able to modify the target's memory, and as such
3682 they should always be removed. */
3683 if (bl->shlib_disabled
3684 && bl->target_info.shadow_len != 0
3685 && !memory_validate_breakpoint (bl->gdbarch, &bl->target_info))
3686 val = 0;
3687 else
3688 val = bl->owner->ops->remove_location (bl, reason);
3689 }
3690 else
3691 {
3692 /* This breakpoint is in an overlay section.
3693 Did we set a breakpoint at the LMA? */
3694 if (!overlay_events_enabled)
3695 {
3696 /* Yes -- overlay event support is not active, so we
3697 should have set a breakpoint at the LMA. Remove it.
3698 */
3699 /* Ignore any failures: if the LMA is in ROM, we will
3700 have already warned when we failed to insert it. */
3701 if (bl->loc_type == bp_loc_hardware_breakpoint)
3702 target_remove_hw_breakpoint (bl->gdbarch,
3703 &bl->overlay_target_info);
3704 else
3705 target_remove_breakpoint (bl->gdbarch,
3706 &bl->overlay_target_info,
3707 reason);
3708 }
3709 /* Did we set a breakpoint at the VMA?
3710 If so, we will have marked the breakpoint 'inserted'. */
3711 if (bl->inserted)
3712 {
3713 /* Yes -- remove it. Previously we did not bother to
3714 remove the breakpoint if the section had been
3715 unmapped, but let's not rely on that being safe. We
3716 don't know what the overlay manager might do. */
3717
3718 /* However, we should remove *software* breakpoints only
3719 if the section is still mapped, or else we overwrite
3720 wrong code with the saved shadow contents. */
3721 if (bl->loc_type == bp_loc_hardware_breakpoint
3722 || section_is_mapped (bl->section))
3723 val = bl->owner->ops->remove_location (bl, reason);
3724 else
3725 val = 0;
3726 }
3727 else
3728 {
3729 /* No -- not inserted, so no need to remove. No error. */
3730 val = 0;
3731 }
3732 }
3733
3734 /* In some cases, we might not be able to remove a breakpoint in
3735 a shared library that has already been removed, but we have
3736 not yet processed the shlib unload event. Similarly for an
3737 unloaded add-symbol-file object - the user might not yet have
3738 had the chance to remove-symbol-file it. shlib_disabled will
3739 be set if the library/object has already been removed, but
3740 the breakpoint hasn't been uninserted yet, e.g., after
3741 "nosharedlibrary" or "remove-symbol-file" with breakpoints
3742 always-inserted mode. */
3743 if (val
3744 && (bl->loc_type == bp_loc_software_breakpoint
3745 && (bl->shlib_disabled
3746 || solib_name_from_address (bl->pspace, bl->address)
3747 || shared_objfile_contains_address_p (bl->pspace,
3748 bl->address))))
3749 val = 0;
3750
3751 if (val)
3752 return val;
3753 bl->inserted = (reason == DETACH_BREAKPOINT);
3754 }
3755 else if (bl->loc_type == bp_loc_hardware_watchpoint)
3756 {
3757 gdb_assert (bl->owner->ops != NULL
3758 && bl->owner->ops->remove_location != NULL);
3759
3760 bl->inserted = (reason == DETACH_BREAKPOINT);
3761 bl->owner->ops->remove_location (bl, reason);
3762
3763 /* Failure to remove any of the hardware watchpoints comes here. */
3764 if (reason == REMOVE_BREAKPOINT && bl->inserted)
3765 warning (_("Could not remove hardware watchpoint %d."),
3766 bl->owner->number);
3767 }
3768 else if (bl->owner->type == bp_catchpoint
3769 && breakpoint_enabled (bl->owner)
3770 && !bl->duplicate)
3771 {
3772 gdb_assert (bl->owner->ops != NULL
3773 && bl->owner->ops->remove_location != NULL);
3774
3775 val = bl->owner->ops->remove_location (bl, reason);
3776 if (val)
3777 return val;
3778
3779 bl->inserted = (reason == DETACH_BREAKPOINT);
3780 }
3781
3782 return 0;
3783 }
3784
3785 static int
3786 remove_breakpoint (struct bp_location *bl)
3787 {
3788 /* BL is never in moribund_locations by our callers. */
3789 gdb_assert (bl->owner != NULL);
3790
3791 /* The type of none suggests that owner is actually deleted.
3792 This should not ever happen. */
3793 gdb_assert (bl->owner->type != bp_none);
3794
3795 scoped_restore_current_pspace_and_thread restore_pspace_thread;
3796
3797 switch_to_program_space_and_thread (bl->pspace);
3798
3799 return remove_breakpoint_1 (bl, REMOVE_BREAKPOINT);
3800 }
3801
3802 /* Clear the "inserted" flag in all breakpoints. */
3803
3804 void
3805 mark_breakpoints_out (void)
3806 {
3807 struct bp_location *bl, **blp_tmp;
3808
3809 ALL_BP_LOCATIONS (bl, blp_tmp)
3810 if (bl->pspace == current_program_space)
3811 bl->inserted = 0;
3812 }
3813
3814 /* Clear the "inserted" flag in all breakpoints and delete any
3815 breakpoints which should go away between runs of the program.
3816
3817 Plus other such housekeeping that has to be done for breakpoints
3818 between runs.
3819
3820 Note: this function gets called at the end of a run (by
3821 generic_mourn_inferior) and when a run begins (by
3822 init_wait_for_inferior). */
3823
3824
3825
3826 void
3827 breakpoint_init_inferior (enum inf_context context)
3828 {
3829 struct breakpoint *b, *b_tmp;
3830 struct program_space *pspace = current_program_space;
3831
3832 /* If breakpoint locations are shared across processes, then there's
3833 nothing to do. */
3834 if (gdbarch_has_global_breakpoints (target_gdbarch ()))
3835 return;
3836
3837 mark_breakpoints_out ();
3838
3839 ALL_BREAKPOINTS_SAFE (b, b_tmp)
3840 {
3841 if (b->loc && b->loc->pspace != pspace)
3842 continue;
3843
3844 switch (b->type)
3845 {
3846 case bp_call_dummy:
3847 case bp_longjmp_call_dummy:
3848
3849 /* If the call dummy breakpoint is at the entry point it will
3850 cause problems when the inferior is rerun, so we better get
3851 rid of it. */
3852
3853 case bp_watchpoint_scope:
3854
3855 /* Also get rid of scope breakpoints. */
3856
3857 case bp_shlib_event:
3858
3859 /* Also remove solib event breakpoints. Their addresses may
3860 have changed since the last time we ran the program.
3861 Actually we may now be debugging against different target;
3862 and so the solib backend that installed this breakpoint may
3863 not be used in by the target. E.g.,
3864
3865 (gdb) file prog-linux
3866 (gdb) run # native linux target
3867 ...
3868 (gdb) kill
3869 (gdb) file prog-win.exe
3870 (gdb) tar rem :9999 # remote Windows gdbserver.
3871 */
3872
3873 case bp_step_resume:
3874
3875 /* Also remove step-resume breakpoints. */
3876
3877 case bp_single_step:
3878
3879 /* Also remove single-step breakpoints. */
3880
3881 delete_breakpoint (b);
3882 break;
3883
3884 case bp_watchpoint:
3885 case bp_hardware_watchpoint:
3886 case bp_read_watchpoint:
3887 case bp_access_watchpoint:
3888 {
3889 struct watchpoint *w = (struct watchpoint *) b;
3890
3891 /* Likewise for watchpoints on local expressions. */
3892 if (w->exp_valid_block != NULL)
3893 delete_breakpoint (b);
3894 else
3895 {
3896 /* Get rid of existing locations, which are no longer
3897 valid. New ones will be created in
3898 update_watchpoint, when the inferior is restarted.
3899 The next update_global_location_list call will
3900 garbage collect them. */
3901 b->loc = NULL;
3902
3903 if (context == inf_starting)
3904 {
3905 /* Reset val field to force reread of starting value in
3906 insert_breakpoints. */
3907 w->val.reset (nullptr);
3908 w->val_valid = 0;
3909 }
3910 }
3911 }
3912 break;
3913 default:
3914 break;
3915 }
3916 }
3917
3918 /* Get rid of the moribund locations. */
3919 for (bp_location *bl : moribund_locations)
3920 decref_bp_location (&bl);
3921 moribund_locations.clear ();
3922 }
3923
3924 /* These functions concern about actual breakpoints inserted in the
3925 target --- to e.g. check if we need to do decr_pc adjustment or if
3926 we need to hop over the bkpt --- so we check for address space
3927 match, not program space. */
3928
3929 /* breakpoint_here_p (PC) returns non-zero if an enabled breakpoint
3930 exists at PC. It returns ordinary_breakpoint_here if it's an
3931 ordinary breakpoint, or permanent_breakpoint_here if it's a
3932 permanent breakpoint.
3933 - When continuing from a location with an ordinary breakpoint, we
3934 actually single step once before calling insert_breakpoints.
3935 - When continuing from a location with a permanent breakpoint, we
3936 need to use the `SKIP_PERMANENT_BREAKPOINT' macro, provided by
3937 the target, to advance the PC past the breakpoint. */
3938
3939 enum breakpoint_here
3940 breakpoint_here_p (const address_space *aspace, CORE_ADDR pc)
3941 {
3942 struct bp_location *bl, **blp_tmp;
3943 int any_breakpoint_here = 0;
3944
3945 ALL_BP_LOCATIONS (bl, blp_tmp)
3946 {
3947 if (bl->loc_type != bp_loc_software_breakpoint
3948 && bl->loc_type != bp_loc_hardware_breakpoint)
3949 continue;
3950
3951 /* ALL_BP_LOCATIONS bp_location has BL->OWNER always non-NULL. */
3952 if ((breakpoint_enabled (bl->owner)
3953 || bl->permanent)
3954 && breakpoint_location_address_match (bl, aspace, pc))
3955 {
3956 if (overlay_debugging
3957 && section_is_overlay (bl->section)
3958 && !section_is_mapped (bl->section))
3959 continue; /* unmapped overlay -- can't be a match */
3960 else if (bl->permanent)
3961 return permanent_breakpoint_here;
3962 else
3963 any_breakpoint_here = 1;
3964 }
3965 }
3966
3967 return any_breakpoint_here ? ordinary_breakpoint_here : no_breakpoint_here;
3968 }
3969
3970 /* See breakpoint.h. */
3971
3972 int
3973 breakpoint_in_range_p (const address_space *aspace,
3974 CORE_ADDR addr, ULONGEST len)
3975 {
3976 struct bp_location *bl, **blp_tmp;
3977
3978 ALL_BP_LOCATIONS (bl, blp_tmp)
3979 {
3980 if (bl->loc_type != bp_loc_software_breakpoint
3981 && bl->loc_type != bp_loc_hardware_breakpoint)
3982 continue;
3983
3984 if ((breakpoint_enabled (bl->owner)
3985 || bl->permanent)
3986 && breakpoint_location_address_range_overlap (bl, aspace,
3987 addr, len))
3988 {
3989 if (overlay_debugging
3990 && section_is_overlay (bl->section)
3991 && !section_is_mapped (bl->section))
3992 {
3993 /* Unmapped overlay -- can't be a match. */
3994 continue;
3995 }
3996
3997 return 1;
3998 }
3999 }
4000
4001 return 0;
4002 }
4003
4004 /* Return true if there's a moribund breakpoint at PC. */
4005
4006 int
4007 moribund_breakpoint_here_p (const address_space *aspace, CORE_ADDR pc)
4008 {
4009 for (bp_location *loc : moribund_locations)
4010 if (breakpoint_location_address_match (loc, aspace, pc))
4011 return 1;
4012
4013 return 0;
4014 }
4015
4016 /* Returns non-zero iff BL is inserted at PC, in address space
4017 ASPACE. */
4018
4019 static int
4020 bp_location_inserted_here_p (struct bp_location *bl,
4021 const address_space *aspace, CORE_ADDR pc)
4022 {
4023 if (bl->inserted
4024 && breakpoint_address_match (bl->pspace->aspace, bl->address,
4025 aspace, pc))
4026 {
4027 if (overlay_debugging
4028 && section_is_overlay (bl->section)
4029 && !section_is_mapped (bl->section))
4030 return 0; /* unmapped overlay -- can't be a match */
4031 else
4032 return 1;
4033 }
4034 return 0;
4035 }
4036
4037 /* Returns non-zero iff there's a breakpoint inserted at PC. */
4038
4039 int
4040 breakpoint_inserted_here_p (const address_space *aspace, CORE_ADDR pc)
4041 {
4042 struct bp_location **blp, **blp_tmp = NULL;
4043
4044 ALL_BP_LOCATIONS_AT_ADDR (blp, blp_tmp, pc)
4045 {
4046 struct bp_location *bl = *blp;
4047
4048 if (bl->loc_type != bp_loc_software_breakpoint
4049 && bl->loc_type != bp_loc_hardware_breakpoint)
4050 continue;
4051
4052 if (bp_location_inserted_here_p (bl, aspace, pc))
4053 return 1;
4054 }
4055 return 0;
4056 }
4057
4058 /* This function returns non-zero iff there is a software breakpoint
4059 inserted at PC. */
4060
4061 int
4062 software_breakpoint_inserted_here_p (const address_space *aspace,
4063 CORE_ADDR pc)
4064 {
4065 struct bp_location **blp, **blp_tmp = NULL;
4066
4067 ALL_BP_LOCATIONS_AT_ADDR (blp, blp_tmp, pc)
4068 {
4069 struct bp_location *bl = *blp;
4070
4071 if (bl->loc_type != bp_loc_software_breakpoint)
4072 continue;
4073
4074 if (bp_location_inserted_here_p (bl, aspace, pc))
4075 return 1;
4076 }
4077
4078 return 0;
4079 }
4080
4081 /* See breakpoint.h. */
4082
4083 int
4084 hardware_breakpoint_inserted_here_p (const address_space *aspace,
4085 CORE_ADDR pc)
4086 {
4087 struct bp_location **blp, **blp_tmp = NULL;
4088
4089 ALL_BP_LOCATIONS_AT_ADDR (blp, blp_tmp, pc)
4090 {
4091 struct bp_location *bl = *blp;
4092
4093 if (bl->loc_type != bp_loc_hardware_breakpoint)
4094 continue;
4095
4096 if (bp_location_inserted_here_p (bl, aspace, pc))
4097 return 1;
4098 }
4099
4100 return 0;
4101 }
4102
4103 int
4104 hardware_watchpoint_inserted_in_range (const address_space *aspace,
4105 CORE_ADDR addr, ULONGEST len)
4106 {
4107 struct breakpoint *bpt;
4108
4109 ALL_BREAKPOINTS (bpt)
4110 {
4111 struct bp_location *loc;
4112
4113 if (bpt->type != bp_hardware_watchpoint
4114 && bpt->type != bp_access_watchpoint)
4115 continue;
4116
4117 if (!breakpoint_enabled (bpt))
4118 continue;
4119
4120 for (loc = bpt->loc; loc; loc = loc->next)
4121 if (loc->pspace->aspace == aspace && loc->inserted)
4122 {
4123 CORE_ADDR l, h;
4124
4125 /* Check for intersection. */
4126 l = std::max<CORE_ADDR> (loc->address, addr);
4127 h = std::min<CORE_ADDR> (loc->address + loc->length, addr + len);
4128 if (l < h)
4129 return 1;
4130 }
4131 }
4132 return 0;
4133 }
4134 \f
4135
4136 /* bpstat stuff. External routines' interfaces are documented
4137 in breakpoint.h. */
4138
4139 int
4140 is_catchpoint (struct breakpoint *ep)
4141 {
4142 return (ep->type == bp_catchpoint);
4143 }
4144
4145 /* Frees any storage that is part of a bpstat. Does not walk the
4146 'next' chain. */
4147
4148 bpstats::~bpstats ()
4149 {
4150 if (bp_location_at != NULL)
4151 decref_bp_location (&bp_location_at);
4152 }
4153
4154 /* Clear a bpstat so that it says we are not at any breakpoint.
4155 Also free any storage that is part of a bpstat. */
4156
4157 void
4158 bpstat_clear (bpstat *bsp)
4159 {
4160 bpstat p;
4161 bpstat q;
4162
4163 if (bsp == 0)
4164 return;
4165 p = *bsp;
4166 while (p != NULL)
4167 {
4168 q = p->next;
4169 delete p;
4170 p = q;
4171 }
4172 *bsp = NULL;
4173 }
4174
4175 bpstats::bpstats (const bpstats &other)
4176 : next (NULL),
4177 bp_location_at (other.bp_location_at),
4178 breakpoint_at (other.breakpoint_at),
4179 commands (other.commands),
4180 print (other.print),
4181 stop (other.stop),
4182 print_it (other.print_it)
4183 {
4184 if (other.old_val != NULL)
4185 old_val = release_value (value_copy (other.old_val.get ()));
4186 incref_bp_location (bp_location_at);
4187 }
4188
4189 /* Return a copy of a bpstat. Like "bs1 = bs2" but all storage that
4190 is part of the bpstat is copied as well. */
4191
4192 bpstat
4193 bpstat_copy (bpstat bs)
4194 {
4195 bpstat p = NULL;
4196 bpstat tmp;
4197 bpstat retval = NULL;
4198
4199 if (bs == NULL)
4200 return bs;
4201
4202 for (; bs != NULL; bs = bs->next)
4203 {
4204 tmp = new bpstats (*bs);
4205
4206 if (p == NULL)
4207 /* This is the first thing in the chain. */
4208 retval = tmp;
4209 else
4210 p->next = tmp;
4211 p = tmp;
4212 }
4213 p->next = NULL;
4214 return retval;
4215 }
4216
4217 /* Find the bpstat associated with this breakpoint. */
4218
4219 bpstat
4220 bpstat_find_breakpoint (bpstat bsp, struct breakpoint *breakpoint)
4221 {
4222 if (bsp == NULL)
4223 return NULL;
4224
4225 for (; bsp != NULL; bsp = bsp->next)
4226 {
4227 if (bsp->breakpoint_at == breakpoint)
4228 return bsp;
4229 }
4230 return NULL;
4231 }
4232
4233 /* See breakpoint.h. */
4234
4235 int
4236 bpstat_explains_signal (bpstat bsp, enum gdb_signal sig)
4237 {
4238 for (; bsp != NULL; bsp = bsp->next)
4239 {
4240 if (bsp->breakpoint_at == NULL)
4241 {
4242 /* A moribund location can never explain a signal other than
4243 GDB_SIGNAL_TRAP. */
4244 if (sig == GDB_SIGNAL_TRAP)
4245 return 1;
4246 }
4247 else
4248 {
4249 if (bsp->breakpoint_at->ops->explains_signal (bsp->breakpoint_at,
4250 sig))
4251 return 1;
4252 }
4253 }
4254
4255 return 0;
4256 }
4257
4258 /* Put in *NUM the breakpoint number of the first breakpoint we are
4259 stopped at. *BSP upon return is a bpstat which points to the
4260 remaining breakpoints stopped at (but which is not guaranteed to be
4261 good for anything but further calls to bpstat_num).
4262
4263 Return 0 if passed a bpstat which does not indicate any breakpoints.
4264 Return -1 if stopped at a breakpoint that has been deleted since
4265 we set it.
4266 Return 1 otherwise. */
4267
4268 int
4269 bpstat_num (bpstat *bsp, int *num)
4270 {
4271 struct breakpoint *b;
4272
4273 if ((*bsp) == NULL)
4274 return 0; /* No more breakpoint values */
4275
4276 /* We assume we'll never have several bpstats that correspond to a
4277 single breakpoint -- otherwise, this function might return the
4278 same number more than once and this will look ugly. */
4279 b = (*bsp)->breakpoint_at;
4280 *bsp = (*bsp)->next;
4281 if (b == NULL)
4282 return -1; /* breakpoint that's been deleted since */
4283
4284 *num = b->number; /* We have its number */
4285 return 1;
4286 }
4287
4288 /* See breakpoint.h. */
4289
4290 void
4291 bpstat_clear_actions (void)
4292 {
4293 bpstat bs;
4294
4295 if (inferior_ptid == null_ptid)
4296 return;
4297
4298 thread_info *tp = inferior_thread ();
4299 for (bs = tp->control.stop_bpstat; bs != NULL; bs = bs->next)
4300 {
4301 bs->commands = NULL;
4302 bs->old_val.reset (nullptr);
4303 }
4304 }
4305
4306 /* Called when a command is about to proceed the inferior. */
4307
4308 static void
4309 breakpoint_about_to_proceed (void)
4310 {
4311 if (inferior_ptid != null_ptid)
4312 {
4313 struct thread_info *tp = inferior_thread ();
4314
4315 /* Allow inferior function calls in breakpoint commands to not
4316 interrupt the command list. When the call finishes
4317 successfully, the inferior will be standing at the same
4318 breakpoint as if nothing happened. */
4319 if (tp->control.in_infcall)
4320 return;
4321 }
4322
4323 breakpoint_proceeded = 1;
4324 }
4325
4326 /* Return non-zero iff CMD as the first line of a command sequence is `silent'
4327 or its equivalent. */
4328
4329 static int
4330 command_line_is_silent (struct command_line *cmd)
4331 {
4332 return cmd && (strcmp ("silent", cmd->line) == 0);
4333 }
4334
4335 /* Execute all the commands associated with all the breakpoints at
4336 this location. Any of these commands could cause the process to
4337 proceed beyond this point, etc. We look out for such changes by
4338 checking the global "breakpoint_proceeded" after each command.
4339
4340 Returns true if a breakpoint command resumed the inferior. In that
4341 case, it is the caller's responsibility to recall it again with the
4342 bpstat of the current thread. */
4343
4344 static int
4345 bpstat_do_actions_1 (bpstat *bsp)
4346 {
4347 bpstat bs;
4348 int again = 0;
4349
4350 /* Avoid endless recursion if a `source' command is contained
4351 in bs->commands. */
4352 if (executing_breakpoint_commands)
4353 return 0;
4354
4355 scoped_restore save_executing
4356 = make_scoped_restore (&executing_breakpoint_commands, 1);
4357
4358 scoped_restore preventer = prevent_dont_repeat ();
4359
4360 /* This pointer will iterate over the list of bpstat's. */
4361 bs = *bsp;
4362
4363 breakpoint_proceeded = 0;
4364 for (; bs != NULL; bs = bs->next)
4365 {
4366 struct command_line *cmd = NULL;
4367
4368 /* Take ownership of the BSP's command tree, if it has one.
4369
4370 The command tree could legitimately contain commands like
4371 'step' and 'next', which call clear_proceed_status, which
4372 frees stop_bpstat's command tree. To make sure this doesn't
4373 free the tree we're executing out from under us, we need to
4374 take ownership of the tree ourselves. Since a given bpstat's
4375 commands are only executed once, we don't need to copy it; we
4376 can clear the pointer in the bpstat, and make sure we free
4377 the tree when we're done. */
4378 counted_command_line ccmd = bs->commands;
4379 bs->commands = NULL;
4380 if (ccmd != NULL)
4381 cmd = ccmd.get ();
4382 if (command_line_is_silent (cmd))
4383 {
4384 /* The action has been already done by bpstat_stop_status. */
4385 cmd = cmd->next;
4386 }
4387
4388 while (cmd != NULL)
4389 {
4390 execute_control_command (cmd);
4391
4392 if (breakpoint_proceeded)
4393 break;
4394 else
4395 cmd = cmd->next;
4396 }
4397
4398 if (breakpoint_proceeded)
4399 {
4400 if (current_ui->async)
4401 /* If we are in async mode, then the target might be still
4402 running, not stopped at any breakpoint, so nothing for
4403 us to do here -- just return to the event loop. */
4404 ;
4405 else
4406 /* In sync mode, when execute_control_command returns
4407 we're already standing on the next breakpoint.
4408 Breakpoint commands for that stop were not run, since
4409 execute_command does not run breakpoint commands --
4410 only command_line_handler does, but that one is not
4411 involved in execution of breakpoint commands. So, we
4412 can now execute breakpoint commands. It should be
4413 noted that making execute_command do bpstat actions is
4414 not an option -- in this case we'll have recursive
4415 invocation of bpstat for each breakpoint with a
4416 command, and can easily blow up GDB stack. Instead, we
4417 return true, which will trigger the caller to recall us
4418 with the new stop_bpstat. */
4419 again = 1;
4420 break;
4421 }
4422 }
4423 return again;
4424 }
4425
4426 /* Helper for bpstat_do_actions. Get the current thread, if there's
4427 one, is alive and has execution. Return NULL otherwise. */
4428
4429 static thread_info *
4430 get_bpstat_thread ()
4431 {
4432 if (inferior_ptid == null_ptid || !target_has_execution)
4433 return NULL;
4434
4435 thread_info *tp = inferior_thread ();
4436 if (tp->state == THREAD_EXITED || tp->executing)
4437 return NULL;
4438 return tp;
4439 }
4440
4441 void
4442 bpstat_do_actions (void)
4443 {
4444 auto cleanup_if_error = make_scope_exit (bpstat_clear_actions);
4445 thread_info *tp;
4446
4447 /* Do any commands attached to breakpoint we are stopped at. */
4448 while ((tp = get_bpstat_thread ()) != NULL)
4449 {
4450 /* Since in sync mode, bpstat_do_actions may resume the
4451 inferior, and only return when it is stopped at the next
4452 breakpoint, we keep doing breakpoint actions until it returns
4453 false to indicate the inferior was not resumed. */
4454 if (!bpstat_do_actions_1 (&tp->control.stop_bpstat))
4455 break;
4456 }
4457
4458 cleanup_if_error.release ();
4459 }
4460
4461 /* Print out the (old or new) value associated with a watchpoint. */
4462
4463 static void
4464 watchpoint_value_print (struct value *val, struct ui_file *stream)
4465 {
4466 if (val == NULL)
4467 fprintf_unfiltered (stream, _("<unreadable>"));
4468 else
4469 {
4470 struct value_print_options opts;
4471 get_user_print_options (&opts);
4472 value_print (val, stream, &opts);
4473 }
4474 }
4475
4476 /* Print the "Thread ID hit" part of "Thread ID hit Breakpoint N" if
4477 debugging multiple threads. */
4478
4479 void
4480 maybe_print_thread_hit_breakpoint (struct ui_out *uiout)
4481 {
4482 if (uiout->is_mi_like_p ())
4483 return;
4484
4485 uiout->text ("\n");
4486
4487 if (show_thread_that_caused_stop ())
4488 {
4489 const char *name;
4490 struct thread_info *thr = inferior_thread ();
4491
4492 uiout->text ("Thread ");
4493 uiout->field_fmt ("thread-id", "%s", print_thread_id (thr));
4494
4495 name = thr->name != NULL ? thr->name : target_thread_name (thr);
4496 if (name != NULL)
4497 {
4498 uiout->text (" \"");
4499 uiout->field_fmt ("name", "%s", name);
4500 uiout->text ("\"");
4501 }
4502
4503 uiout->text (" hit ");
4504 }
4505 }
4506
4507 /* Generic routine for printing messages indicating why we
4508 stopped. The behavior of this function depends on the value
4509 'print_it' in the bpstat structure. Under some circumstances we
4510 may decide not to print anything here and delegate the task to
4511 normal_stop(). */
4512
4513 static enum print_stop_action
4514 print_bp_stop_message (bpstat bs)
4515 {
4516 switch (bs->print_it)
4517 {
4518 case print_it_noop:
4519 /* Nothing should be printed for this bpstat entry. */
4520 return PRINT_UNKNOWN;
4521 break;
4522
4523 case print_it_done:
4524 /* We still want to print the frame, but we already printed the
4525 relevant messages. */
4526 return PRINT_SRC_AND_LOC;
4527 break;
4528
4529 case print_it_normal:
4530 {
4531 struct breakpoint *b = bs->breakpoint_at;
4532
4533 /* bs->breakpoint_at can be NULL if it was a momentary breakpoint
4534 which has since been deleted. */
4535 if (b == NULL)
4536 return PRINT_UNKNOWN;
4537
4538 /* Normal case. Call the breakpoint's print_it method. */
4539 return b->ops->print_it (bs);
4540 }
4541 break;
4542
4543 default:
4544 internal_error (__FILE__, __LINE__,
4545 _("print_bp_stop_message: unrecognized enum value"));
4546 break;
4547 }
4548 }
4549
4550 /* A helper function that prints a shared library stopped event. */
4551
4552 static void
4553 print_solib_event (int is_catchpoint)
4554 {
4555 bool any_deleted = !current_program_space->deleted_solibs.empty ();
4556 bool any_added = !current_program_space->added_solibs.empty ();
4557
4558 if (!is_catchpoint)
4559 {
4560 if (any_added || any_deleted)
4561 current_uiout->text (_("Stopped due to shared library event:\n"));
4562 else
4563 current_uiout->text (_("Stopped due to shared library event (no "
4564 "libraries added or removed)\n"));
4565 }
4566
4567 if (current_uiout->is_mi_like_p ())
4568 current_uiout->field_string ("reason",
4569 async_reason_lookup (EXEC_ASYNC_SOLIB_EVENT));
4570
4571 if (any_deleted)
4572 {
4573 current_uiout->text (_(" Inferior unloaded "));
4574 ui_out_emit_list list_emitter (current_uiout, "removed");
4575 for (int ix = 0; ix < current_program_space->deleted_solibs.size (); ix++)
4576 {
4577 const std::string &name = current_program_space->deleted_solibs[ix];
4578
4579 if (ix > 0)
4580 current_uiout->text (" ");
4581 current_uiout->field_string ("library", name);
4582 current_uiout->text ("\n");
4583 }
4584 }
4585
4586 if (any_added)
4587 {
4588 current_uiout->text (_(" Inferior loaded "));
4589 ui_out_emit_list list_emitter (current_uiout, "added");
4590 bool first = true;
4591 for (so_list *iter : current_program_space->added_solibs)
4592 {
4593 if (!first)
4594 current_uiout->text (" ");
4595 first = false;
4596 current_uiout->field_string ("library", iter->so_name);
4597 current_uiout->text ("\n");
4598 }
4599 }
4600 }
4601
4602 /* Print a message indicating what happened. This is called from
4603 normal_stop(). The input to this routine is the head of the bpstat
4604 list - a list of the eventpoints that caused this stop. KIND is
4605 the target_waitkind for the stopping event. This
4606 routine calls the generic print routine for printing a message
4607 about reasons for stopping. This will print (for example) the
4608 "Breakpoint n," part of the output. The return value of this
4609 routine is one of:
4610
4611 PRINT_UNKNOWN: Means we printed nothing.
4612 PRINT_SRC_AND_LOC: Means we printed something, and expect subsequent
4613 code to print the location. An example is
4614 "Breakpoint 1, " which should be followed by
4615 the location.
4616 PRINT_SRC_ONLY: Means we printed something, but there is no need
4617 to also print the location part of the message.
4618 An example is the catch/throw messages, which
4619 don't require a location appended to the end.
4620 PRINT_NOTHING: We have done some printing and we don't need any
4621 further info to be printed. */
4622
4623 enum print_stop_action
4624 bpstat_print (bpstat bs, int kind)
4625 {
4626 enum print_stop_action val;
4627
4628 /* Maybe another breakpoint in the chain caused us to stop.
4629 (Currently all watchpoints go on the bpstat whether hit or not.
4630 That probably could (should) be changed, provided care is taken
4631 with respect to bpstat_explains_signal). */
4632 for (; bs; bs = bs->next)
4633 {
4634 val = print_bp_stop_message (bs);
4635 if (val == PRINT_SRC_ONLY
4636 || val == PRINT_SRC_AND_LOC
4637 || val == PRINT_NOTHING)
4638 return val;
4639 }
4640
4641 /* If we had hit a shared library event breakpoint,
4642 print_bp_stop_message would print out this message. If we hit an
4643 OS-level shared library event, do the same thing. */
4644 if (kind == TARGET_WAITKIND_LOADED)
4645 {
4646 print_solib_event (0);
4647 return PRINT_NOTHING;
4648 }
4649
4650 /* We reached the end of the chain, or we got a null BS to start
4651 with and nothing was printed. */
4652 return PRINT_UNKNOWN;
4653 }
4654
4655 /* Evaluate the boolean expression EXP and return the result. */
4656
4657 static bool
4658 breakpoint_cond_eval (expression *exp)
4659 {
4660 struct value *mark = value_mark ();
4661 bool res = value_true (evaluate_expression (exp));
4662
4663 value_free_to_mark (mark);
4664 return res;
4665 }
4666
4667 /* Allocate a new bpstat. Link it to the FIFO list by BS_LINK_POINTER. */
4668
4669 bpstats::bpstats (struct bp_location *bl, bpstat **bs_link_pointer)
4670 : next (NULL),
4671 bp_location_at (bl),
4672 breakpoint_at (bl->owner),
4673 commands (NULL),
4674 print (0),
4675 stop (0),
4676 print_it (print_it_normal)
4677 {
4678 incref_bp_location (bl);
4679 **bs_link_pointer = this;
4680 *bs_link_pointer = &next;
4681 }
4682
4683 bpstats::bpstats ()
4684 : next (NULL),
4685 bp_location_at (NULL),
4686 breakpoint_at (NULL),
4687 commands (NULL),
4688 print (0),
4689 stop (0),
4690 print_it (print_it_normal)
4691 {
4692 }
4693 \f
4694 /* The target has stopped with waitstatus WS. Check if any hardware
4695 watchpoints have triggered, according to the target. */
4696
4697 int
4698 watchpoints_triggered (struct target_waitstatus *ws)
4699 {
4700 bool stopped_by_watchpoint = target_stopped_by_watchpoint ();
4701 CORE_ADDR addr;
4702 struct breakpoint *b;
4703
4704 if (!stopped_by_watchpoint)
4705 {
4706 /* We were not stopped by a watchpoint. Mark all watchpoints
4707 as not triggered. */
4708 ALL_BREAKPOINTS (b)
4709 if (is_hardware_watchpoint (b))
4710 {
4711 struct watchpoint *w = (struct watchpoint *) b;
4712
4713 w->watchpoint_triggered = watch_triggered_no;
4714 }
4715
4716 return 0;
4717 }
4718
4719 if (!target_stopped_data_address (current_top_target (), &addr))
4720 {
4721 /* We were stopped by a watchpoint, but we don't know where.
4722 Mark all watchpoints as unknown. */
4723 ALL_BREAKPOINTS (b)
4724 if (is_hardware_watchpoint (b))
4725 {
4726 struct watchpoint *w = (struct watchpoint *) b;
4727
4728 w->watchpoint_triggered = watch_triggered_unknown;
4729 }
4730
4731 return 1;
4732 }
4733
4734 /* The target could report the data address. Mark watchpoints
4735 affected by this data address as triggered, and all others as not
4736 triggered. */
4737
4738 ALL_BREAKPOINTS (b)
4739 if (is_hardware_watchpoint (b))
4740 {
4741 struct watchpoint *w = (struct watchpoint *) b;
4742 struct bp_location *loc;
4743
4744 w->watchpoint_triggered = watch_triggered_no;
4745 for (loc = b->loc; loc; loc = loc->next)
4746 {
4747 if (is_masked_watchpoint (b))
4748 {
4749 CORE_ADDR newaddr = addr & w->hw_wp_mask;
4750 CORE_ADDR start = loc->address & w->hw_wp_mask;
4751
4752 if (newaddr == start)
4753 {
4754 w->watchpoint_triggered = watch_triggered_yes;
4755 break;
4756 }
4757 }
4758 /* Exact match not required. Within range is sufficient. */
4759 else if (target_watchpoint_addr_within_range (current_top_target (),
4760 addr, loc->address,
4761 loc->length))
4762 {
4763 w->watchpoint_triggered = watch_triggered_yes;
4764 break;
4765 }
4766 }
4767 }
4768
4769 return 1;
4770 }
4771
4772 /* Possible return values for watchpoint_check. */
4773 enum wp_check_result
4774 {
4775 /* The watchpoint has been deleted. */
4776 WP_DELETED = 1,
4777
4778 /* The value has changed. */
4779 WP_VALUE_CHANGED = 2,
4780
4781 /* The value has not changed. */
4782 WP_VALUE_NOT_CHANGED = 3,
4783
4784 /* Ignore this watchpoint, no matter if the value changed or not. */
4785 WP_IGNORE = 4,
4786 };
4787
4788 #define BP_TEMPFLAG 1
4789 #define BP_HARDWAREFLAG 2
4790
4791 /* Evaluate watchpoint condition expression and check if its value
4792 changed. */
4793
4794 static wp_check_result
4795 watchpoint_check (bpstat bs)
4796 {
4797 struct watchpoint *b;
4798 struct frame_info *fr;
4799 int within_current_scope;
4800
4801 /* BS is built from an existing struct breakpoint. */
4802 gdb_assert (bs->breakpoint_at != NULL);
4803 b = (struct watchpoint *) bs->breakpoint_at;
4804
4805 /* If this is a local watchpoint, we only want to check if the
4806 watchpoint frame is in scope if the current thread is the thread
4807 that was used to create the watchpoint. */
4808 if (!watchpoint_in_thread_scope (b))
4809 return WP_IGNORE;
4810
4811 if (b->exp_valid_block == NULL)
4812 within_current_scope = 1;
4813 else
4814 {
4815 struct frame_info *frame = get_current_frame ();
4816 struct gdbarch *frame_arch = get_frame_arch (frame);
4817 CORE_ADDR frame_pc = get_frame_pc (frame);
4818
4819 /* stack_frame_destroyed_p() returns a non-zero value if we're
4820 still in the function but the stack frame has already been
4821 invalidated. Since we can't rely on the values of local
4822 variables after the stack has been destroyed, we are treating
4823 the watchpoint in that state as `not changed' without further
4824 checking. Don't mark watchpoints as changed if the current
4825 frame is in an epilogue - even if they are in some other
4826 frame, our view of the stack is likely to be wrong and
4827 frame_find_by_id could error out. */
4828 if (gdbarch_stack_frame_destroyed_p (frame_arch, frame_pc))
4829 return WP_IGNORE;
4830
4831 fr = frame_find_by_id (b->watchpoint_frame);
4832 within_current_scope = (fr != NULL);
4833
4834 /* If we've gotten confused in the unwinder, we might have
4835 returned a frame that can't describe this variable. */
4836 if (within_current_scope)
4837 {
4838 struct symbol *function;
4839
4840 function = get_frame_function (fr);
4841 if (function == NULL
4842 || !contained_in (b->exp_valid_block,
4843 SYMBOL_BLOCK_VALUE (function)))
4844 within_current_scope = 0;
4845 }
4846
4847 if (within_current_scope)
4848 /* If we end up stopping, the current frame will get selected
4849 in normal_stop. So this call to select_frame won't affect
4850 the user. */
4851 select_frame (fr);
4852 }
4853
4854 if (within_current_scope)
4855 {
4856 /* We use value_{,free_to_}mark because it could be a *long*
4857 time before we return to the command level and call
4858 free_all_values. We can't call free_all_values because we
4859 might be in the middle of evaluating a function call. */
4860
4861 int pc = 0;
4862 struct value *mark;
4863 struct value *new_val;
4864
4865 if (is_masked_watchpoint (b))
4866 /* Since we don't know the exact trigger address (from
4867 stopped_data_address), just tell the user we've triggered
4868 a mask watchpoint. */
4869 return WP_VALUE_CHANGED;
4870
4871 mark = value_mark ();
4872 fetch_subexp_value (b->exp.get (), &pc, &new_val, NULL, NULL, 0);
4873
4874 if (b->val_bitsize != 0)
4875 new_val = extract_bitfield_from_watchpoint_value (b, new_val);
4876
4877 /* We use value_equal_contents instead of value_equal because
4878 the latter coerces an array to a pointer, thus comparing just
4879 the address of the array instead of its contents. This is
4880 not what we want. */
4881 if ((b->val != NULL) != (new_val != NULL)
4882 || (b->val != NULL && !value_equal_contents (b->val.get (),
4883 new_val)))
4884 {
4885 bs->old_val = b->val;
4886 b->val = release_value (new_val);
4887 b->val_valid = 1;
4888 if (new_val != NULL)
4889 value_free_to_mark (mark);
4890 return WP_VALUE_CHANGED;
4891 }
4892 else
4893 {
4894 /* Nothing changed. */
4895 value_free_to_mark (mark);
4896 return WP_VALUE_NOT_CHANGED;
4897 }
4898 }
4899 else
4900 {
4901 /* This seems like the only logical thing to do because
4902 if we temporarily ignored the watchpoint, then when
4903 we reenter the block in which it is valid it contains
4904 garbage (in the case of a function, it may have two
4905 garbage values, one before and one after the prologue).
4906 So we can't even detect the first assignment to it and
4907 watch after that (since the garbage may or may not equal
4908 the first value assigned). */
4909 /* We print all the stop information in
4910 breakpoint_ops->print_it, but in this case, by the time we
4911 call breakpoint_ops->print_it this bp will be deleted
4912 already. So we have no choice but print the information
4913 here. */
4914
4915 SWITCH_THRU_ALL_UIS ()
4916 {
4917 struct ui_out *uiout = current_uiout;
4918
4919 if (uiout->is_mi_like_p ())
4920 uiout->field_string
4921 ("reason", async_reason_lookup (EXEC_ASYNC_WATCHPOINT_SCOPE));
4922 uiout->text ("\nWatchpoint ");
4923 uiout->field_int ("wpnum", b->number);
4924 uiout->text (" deleted because the program has left the block in\n"
4925 "which its expression is valid.\n");
4926 }
4927
4928 /* Make sure the watchpoint's commands aren't executed. */
4929 b->commands = NULL;
4930 watchpoint_del_at_next_stop (b);
4931
4932 return WP_DELETED;
4933 }
4934 }
4935
4936 /* Return true if it looks like target has stopped due to hitting
4937 breakpoint location BL. This function does not check if we should
4938 stop, only if BL explains the stop. */
4939
4940 static int
4941 bpstat_check_location (const struct bp_location *bl,
4942 const address_space *aspace, CORE_ADDR bp_addr,
4943 const struct target_waitstatus *ws)
4944 {
4945 struct breakpoint *b = bl->owner;
4946
4947 /* BL is from an existing breakpoint. */
4948 gdb_assert (b != NULL);
4949
4950 return b->ops->breakpoint_hit (bl, aspace, bp_addr, ws);
4951 }
4952
4953 /* Determine if the watched values have actually changed, and we
4954 should stop. If not, set BS->stop to 0. */
4955
4956 static void
4957 bpstat_check_watchpoint (bpstat bs)
4958 {
4959 const struct bp_location *bl;
4960 struct watchpoint *b;
4961
4962 /* BS is built for existing struct breakpoint. */
4963 bl = bs->bp_location_at;
4964 gdb_assert (bl != NULL);
4965 b = (struct watchpoint *) bs->breakpoint_at;
4966 gdb_assert (b != NULL);
4967
4968 {
4969 int must_check_value = 0;
4970
4971 if (b->type == bp_watchpoint)
4972 /* For a software watchpoint, we must always check the
4973 watched value. */
4974 must_check_value = 1;
4975 else if (b->watchpoint_triggered == watch_triggered_yes)
4976 /* We have a hardware watchpoint (read, write, or access)
4977 and the target earlier reported an address watched by
4978 this watchpoint. */
4979 must_check_value = 1;
4980 else if (b->watchpoint_triggered == watch_triggered_unknown
4981 && b->type == bp_hardware_watchpoint)
4982 /* We were stopped by a hardware watchpoint, but the target could
4983 not report the data address. We must check the watchpoint's
4984 value. Access and read watchpoints are out of luck; without
4985 a data address, we can't figure it out. */
4986 must_check_value = 1;
4987
4988 if (must_check_value)
4989 {
4990 wp_check_result e;
4991
4992 try
4993 {
4994 e = watchpoint_check (bs);
4995 }
4996 catch (const gdb_exception &ex)
4997 {
4998 exception_fprintf (gdb_stderr, ex,
4999 "Error evaluating expression "
5000 "for watchpoint %d\n",
5001 b->number);
5002
5003 SWITCH_THRU_ALL_UIS ()
5004 {
5005 printf_filtered (_("Watchpoint %d deleted.\n"),
5006 b->number);
5007 }
5008 watchpoint_del_at_next_stop (b);
5009 e = WP_DELETED;
5010 }
5011
5012 switch (e)
5013 {
5014 case WP_DELETED:
5015 /* We've already printed what needs to be printed. */
5016 bs->print_it = print_it_done;
5017 /* Stop. */
5018 break;
5019 case WP_IGNORE:
5020 bs->print_it = print_it_noop;
5021 bs->stop = 0;
5022 break;
5023 case WP_VALUE_CHANGED:
5024 if (b->type == bp_read_watchpoint)
5025 {
5026 /* There are two cases to consider here:
5027
5028 1. We're watching the triggered memory for reads.
5029 In that case, trust the target, and always report
5030 the watchpoint hit to the user. Even though
5031 reads don't cause value changes, the value may
5032 have changed since the last time it was read, and
5033 since we're not trapping writes, we will not see
5034 those, and as such we should ignore our notion of
5035 old value.
5036
5037 2. We're watching the triggered memory for both
5038 reads and writes. There are two ways this may
5039 happen:
5040
5041 2.1. This is a target that can't break on data
5042 reads only, but can break on accesses (reads or
5043 writes), such as e.g., x86. We detect this case
5044 at the time we try to insert read watchpoints.
5045
5046 2.2. Otherwise, the target supports read
5047 watchpoints, but, the user set an access or write
5048 watchpoint watching the same memory as this read
5049 watchpoint.
5050
5051 If we're watching memory writes as well as reads,
5052 ignore watchpoint hits when we find that the
5053 value hasn't changed, as reads don't cause
5054 changes. This still gives false positives when
5055 the program writes the same value to memory as
5056 what there was already in memory (we will confuse
5057 it for a read), but it's much better than
5058 nothing. */
5059
5060 int other_write_watchpoint = 0;
5061
5062 if (bl->watchpoint_type == hw_read)
5063 {
5064 struct breakpoint *other_b;
5065
5066 ALL_BREAKPOINTS (other_b)
5067 if (other_b->type == bp_hardware_watchpoint
5068 || other_b->type == bp_access_watchpoint)
5069 {
5070 struct watchpoint *other_w =
5071 (struct watchpoint *) other_b;
5072
5073 if (other_w->watchpoint_triggered
5074 == watch_triggered_yes)
5075 {
5076 other_write_watchpoint = 1;
5077 break;
5078 }
5079 }
5080 }
5081
5082 if (other_write_watchpoint
5083 || bl->watchpoint_type == hw_access)
5084 {
5085 /* We're watching the same memory for writes,
5086 and the value changed since the last time we
5087 updated it, so this trap must be for a write.
5088 Ignore it. */
5089 bs->print_it = print_it_noop;
5090 bs->stop = 0;
5091 }
5092 }
5093 break;
5094 case WP_VALUE_NOT_CHANGED:
5095 if (b->type == bp_hardware_watchpoint
5096 || b->type == bp_watchpoint)
5097 {
5098 /* Don't stop: write watchpoints shouldn't fire if
5099 the value hasn't changed. */
5100 bs->print_it = print_it_noop;
5101 bs->stop = 0;
5102 }
5103 /* Stop. */
5104 break;
5105 default:
5106 /* Can't happen. */
5107 break;
5108 }
5109 }
5110 else /* must_check_value == 0 */
5111 {
5112 /* This is a case where some watchpoint(s) triggered, but
5113 not at the address of this watchpoint, or else no
5114 watchpoint triggered after all. So don't print
5115 anything for this watchpoint. */
5116 bs->print_it = print_it_noop;
5117 bs->stop = 0;
5118 }
5119 }
5120 }
5121
5122 /* For breakpoints that are currently marked as telling gdb to stop,
5123 check conditions (condition proper, frame, thread and ignore count)
5124 of breakpoint referred to by BS. If we should not stop for this
5125 breakpoint, set BS->stop to 0. */
5126
5127 static void
5128 bpstat_check_breakpoint_conditions (bpstat bs, thread_info *thread)
5129 {
5130 const struct bp_location *bl;
5131 struct breakpoint *b;
5132 /* Assume stop. */
5133 bool condition_result = true;
5134 struct expression *cond;
5135
5136 gdb_assert (bs->stop);
5137
5138 /* BS is built for existing struct breakpoint. */
5139 bl = bs->bp_location_at;
5140 gdb_assert (bl != NULL);
5141 b = bs->breakpoint_at;
5142 gdb_assert (b != NULL);
5143
5144 /* Even if the target evaluated the condition on its end and notified GDB, we
5145 need to do so again since GDB does not know if we stopped due to a
5146 breakpoint or a single step breakpoint. */
5147
5148 if (frame_id_p (b->frame_id)
5149 && !frame_id_eq (b->frame_id, get_stack_frame_id (get_current_frame ())))
5150 {
5151 bs->stop = 0;
5152 return;
5153 }
5154
5155 /* If this is a thread/task-specific breakpoint, don't waste cpu
5156 evaluating the condition if this isn't the specified
5157 thread/task. */
5158 if ((b->thread != -1 && b->thread != thread->global_num)
5159 || (b->task != 0 && b->task != ada_get_task_number (thread)))
5160 {
5161 bs->stop = 0;
5162 return;
5163 }
5164
5165 /* Evaluate extension language breakpoints that have a "stop" method
5166 implemented. */
5167 bs->stop = breakpoint_ext_lang_cond_says_stop (b);
5168
5169 if (is_watchpoint (b))
5170 {
5171 struct watchpoint *w = (struct watchpoint *) b;
5172
5173 cond = w->cond_exp.get ();
5174 }
5175 else
5176 cond = bl->cond.get ();
5177
5178 if (cond && b->disposition != disp_del_at_next_stop)
5179 {
5180 int within_current_scope = 1;
5181 struct watchpoint * w;
5182
5183 /* We use value_mark and value_free_to_mark because it could
5184 be a long time before we return to the command level and
5185 call free_all_values. We can't call free_all_values
5186 because we might be in the middle of evaluating a
5187 function call. */
5188 struct value *mark = value_mark ();
5189
5190 if (is_watchpoint (b))
5191 w = (struct watchpoint *) b;
5192 else
5193 w = NULL;
5194
5195 /* Need to select the frame, with all that implies so that
5196 the conditions will have the right context. Because we
5197 use the frame, we will not see an inlined function's
5198 variables when we arrive at a breakpoint at the start
5199 of the inlined function; the current frame will be the
5200 call site. */
5201 if (w == NULL || w->cond_exp_valid_block == NULL)
5202 select_frame (get_current_frame ());
5203 else
5204 {
5205 struct frame_info *frame;
5206
5207 /* For local watchpoint expressions, which particular
5208 instance of a local is being watched matters, so we
5209 keep track of the frame to evaluate the expression
5210 in. To evaluate the condition however, it doesn't
5211 really matter which instantiation of the function
5212 where the condition makes sense triggers the
5213 watchpoint. This allows an expression like "watch
5214 global if q > 10" set in `func', catch writes to
5215 global on all threads that call `func', or catch
5216 writes on all recursive calls of `func' by a single
5217 thread. We simply always evaluate the condition in
5218 the innermost frame that's executing where it makes
5219 sense to evaluate the condition. It seems
5220 intuitive. */
5221 frame = block_innermost_frame (w->cond_exp_valid_block);
5222 if (frame != NULL)
5223 select_frame (frame);
5224 else
5225 within_current_scope = 0;
5226 }
5227 if (within_current_scope)
5228 {
5229 try
5230 {
5231 condition_result = breakpoint_cond_eval (cond);
5232 }
5233 catch (const gdb_exception &ex)
5234 {
5235 exception_fprintf (gdb_stderr, ex,
5236 "Error in testing breakpoint condition:\n");
5237 }
5238 }
5239 else
5240 {
5241 warning (_("Watchpoint condition cannot be tested "
5242 "in the current scope"));
5243 /* If we failed to set the right context for this
5244 watchpoint, unconditionally report it. */
5245 }
5246 /* FIXME-someday, should give breakpoint #. */
5247 value_free_to_mark (mark);
5248 }
5249
5250 if (cond && !condition_result)
5251 {
5252 bs->stop = 0;
5253 }
5254 else if (b->ignore_count > 0)
5255 {
5256 b->ignore_count--;
5257 bs->stop = 0;
5258 /* Increase the hit count even though we don't stop. */
5259 ++(b->hit_count);
5260 gdb::observers::breakpoint_modified.notify (b);
5261 }
5262 }
5263
5264 /* Returns true if we need to track moribund locations of LOC's type
5265 on the current target. */
5266
5267 static int
5268 need_moribund_for_location_type (struct bp_location *loc)
5269 {
5270 return ((loc->loc_type == bp_loc_software_breakpoint
5271 && !target_supports_stopped_by_sw_breakpoint ())
5272 || (loc->loc_type == bp_loc_hardware_breakpoint
5273 && !target_supports_stopped_by_hw_breakpoint ()));
5274 }
5275
5276 /* See breakpoint.h. */
5277
5278 bpstat
5279 build_bpstat_chain (const address_space *aspace, CORE_ADDR bp_addr,
5280 const struct target_waitstatus *ws)
5281 {
5282 struct breakpoint *b;
5283 bpstat bs_head = NULL, *bs_link = &bs_head;
5284
5285 ALL_BREAKPOINTS (b)
5286 {
5287 if (!breakpoint_enabled (b))
5288 continue;
5289
5290 for (bp_location *bl = b->loc; bl != NULL; bl = bl->next)
5291 {
5292 /* For hardware watchpoints, we look only at the first
5293 location. The watchpoint_check function will work on the
5294 entire expression, not the individual locations. For
5295 read watchpoints, the watchpoints_triggered function has
5296 checked all locations already. */
5297 if (b->type == bp_hardware_watchpoint && bl != b->loc)
5298 break;
5299
5300 if (!bl->enabled || bl->shlib_disabled)
5301 continue;
5302
5303 if (!bpstat_check_location (bl, aspace, bp_addr, ws))
5304 continue;
5305
5306 /* Come here if it's a watchpoint, or if the break address
5307 matches. */
5308
5309 bpstat bs = new bpstats (bl, &bs_link); /* Alloc a bpstat to
5310 explain stop. */
5311
5312 /* Assume we stop. Should we find a watchpoint that is not
5313 actually triggered, or if the condition of the breakpoint
5314 evaluates as false, we'll reset 'stop' to 0. */
5315 bs->stop = 1;
5316 bs->print = 1;
5317
5318 /* If this is a scope breakpoint, mark the associated
5319 watchpoint as triggered so that we will handle the
5320 out-of-scope event. We'll get to the watchpoint next
5321 iteration. */
5322 if (b->type == bp_watchpoint_scope && b->related_breakpoint != b)
5323 {
5324 struct watchpoint *w = (struct watchpoint *) b->related_breakpoint;
5325
5326 w->watchpoint_triggered = watch_triggered_yes;
5327 }
5328 }
5329 }
5330
5331 /* Check if a moribund breakpoint explains the stop. */
5332 if (!target_supports_stopped_by_sw_breakpoint ()
5333 || !target_supports_stopped_by_hw_breakpoint ())
5334 {
5335 for (bp_location *loc : moribund_locations)
5336 {
5337 if (breakpoint_location_address_match (loc, aspace, bp_addr)
5338 && need_moribund_for_location_type (loc))
5339 {
5340 bpstat bs = new bpstats (loc, &bs_link);
5341 /* For hits of moribund locations, we should just proceed. */
5342 bs->stop = 0;
5343 bs->print = 0;
5344 bs->print_it = print_it_noop;
5345 }
5346 }
5347 }
5348
5349 return bs_head;
5350 }
5351
5352 /* See breakpoint.h. */
5353
5354 bpstat
5355 bpstat_stop_status (const address_space *aspace,
5356 CORE_ADDR bp_addr, thread_info *thread,
5357 const struct target_waitstatus *ws,
5358 bpstat stop_chain)
5359 {
5360 struct breakpoint *b = NULL;
5361 /* First item of allocated bpstat's. */
5362 bpstat bs_head = stop_chain;
5363 bpstat bs;
5364 int need_remove_insert;
5365 int removed_any;
5366
5367 /* First, build the bpstat chain with locations that explain a
5368 target stop, while being careful to not set the target running,
5369 as that may invalidate locations (in particular watchpoint
5370 locations are recreated). Resuming will happen here with
5371 breakpoint conditions or watchpoint expressions that include
5372 inferior function calls. */
5373 if (bs_head == NULL)
5374 bs_head = build_bpstat_chain (aspace, bp_addr, ws);
5375
5376 /* A bit of special processing for shlib breakpoints. We need to
5377 process solib loading here, so that the lists of loaded and
5378 unloaded libraries are correct before we handle "catch load" and
5379 "catch unload". */
5380 for (bs = bs_head; bs != NULL; bs = bs->next)
5381 {
5382 if (bs->breakpoint_at && bs->breakpoint_at->type == bp_shlib_event)
5383 {
5384 handle_solib_event ();
5385 break;
5386 }
5387 }
5388
5389 /* Now go through the locations that caused the target to stop, and
5390 check whether we're interested in reporting this stop to higher
5391 layers, or whether we should resume the target transparently. */
5392
5393 removed_any = 0;
5394
5395 for (bs = bs_head; bs != NULL; bs = bs->next)
5396 {
5397 if (!bs->stop)
5398 continue;
5399
5400 b = bs->breakpoint_at;
5401 b->ops->check_status (bs);
5402 if (bs->stop)
5403 {
5404 bpstat_check_breakpoint_conditions (bs, thread);
5405
5406 if (bs->stop)
5407 {
5408 ++(b->hit_count);
5409 gdb::observers::breakpoint_modified.notify (b);
5410
5411 /* We will stop here. */
5412 if (b->disposition == disp_disable)
5413 {
5414 --(b->enable_count);
5415 if (b->enable_count <= 0)
5416 b->enable_state = bp_disabled;
5417 removed_any = 1;
5418 }
5419 if (b->silent)
5420 bs->print = 0;
5421 bs->commands = b->commands;
5422 if (command_line_is_silent (bs->commands
5423 ? bs->commands.get () : NULL))
5424 bs->print = 0;
5425
5426 b->ops->after_condition_true (bs);
5427 }
5428
5429 }
5430
5431 /* Print nothing for this entry if we don't stop or don't
5432 print. */
5433 if (!bs->stop || !bs->print)
5434 bs->print_it = print_it_noop;
5435 }
5436
5437 /* If we aren't stopping, the value of some hardware watchpoint may
5438 not have changed, but the intermediate memory locations we are
5439 watching may have. Don't bother if we're stopping; this will get
5440 done later. */
5441 need_remove_insert = 0;
5442 if (! bpstat_causes_stop (bs_head))
5443 for (bs = bs_head; bs != NULL; bs = bs->next)
5444 if (!bs->stop
5445 && bs->breakpoint_at
5446 && is_hardware_watchpoint (bs->breakpoint_at))
5447 {
5448 struct watchpoint *w = (struct watchpoint *) bs->breakpoint_at;
5449
5450 update_watchpoint (w, 0 /* don't reparse. */);
5451 need_remove_insert = 1;
5452 }
5453
5454 if (need_remove_insert)
5455 update_global_location_list (UGLL_MAY_INSERT);
5456 else if (removed_any)
5457 update_global_location_list (UGLL_DONT_INSERT);
5458
5459 return bs_head;
5460 }
5461
5462 static void
5463 handle_jit_event (void)
5464 {
5465 struct frame_info *frame;
5466 struct gdbarch *gdbarch;
5467
5468 if (debug_infrun)
5469 fprintf_unfiltered (gdb_stdlog, "handling bp_jit_event\n");
5470
5471 /* Switch terminal for any messages produced by
5472 breakpoint_re_set. */
5473 target_terminal::ours_for_output ();
5474
5475 frame = get_current_frame ();
5476 gdbarch = get_frame_arch (frame);
5477
5478 jit_event_handler (gdbarch);
5479
5480 target_terminal::inferior ();
5481 }
5482
5483 /* Prepare WHAT final decision for infrun. */
5484
5485 /* Decide what infrun needs to do with this bpstat. */
5486
5487 struct bpstat_what
5488 bpstat_what (bpstat bs_head)
5489 {
5490 struct bpstat_what retval;
5491 bpstat bs;
5492
5493 retval.main_action = BPSTAT_WHAT_KEEP_CHECKING;
5494 retval.call_dummy = STOP_NONE;
5495 retval.is_longjmp = 0;
5496
5497 for (bs = bs_head; bs != NULL; bs = bs->next)
5498 {
5499 /* Extract this BS's action. After processing each BS, we check
5500 if its action overrides all we've seem so far. */
5501 enum bpstat_what_main_action this_action = BPSTAT_WHAT_KEEP_CHECKING;
5502 enum bptype bptype;
5503
5504 if (bs->breakpoint_at == NULL)
5505 {
5506 /* I suspect this can happen if it was a momentary
5507 breakpoint which has since been deleted. */
5508 bptype = bp_none;
5509 }
5510 else
5511 bptype = bs->breakpoint_at->type;
5512
5513 switch (bptype)
5514 {
5515 case bp_none:
5516 break;
5517 case bp_breakpoint:
5518 case bp_hardware_breakpoint:
5519 case bp_single_step:
5520 case bp_until:
5521 case bp_finish:
5522 case bp_shlib_event:
5523 if (bs->stop)
5524 {
5525 if (bs->print)
5526 this_action = BPSTAT_WHAT_STOP_NOISY;
5527 else
5528 this_action = BPSTAT_WHAT_STOP_SILENT;
5529 }
5530 else
5531 this_action = BPSTAT_WHAT_SINGLE;
5532 break;
5533 case bp_watchpoint:
5534 case bp_hardware_watchpoint:
5535 case bp_read_watchpoint:
5536 case bp_access_watchpoint:
5537 if (bs->stop)
5538 {
5539 if (bs->print)
5540 this_action = BPSTAT_WHAT_STOP_NOISY;
5541 else
5542 this_action = BPSTAT_WHAT_STOP_SILENT;
5543 }
5544 else
5545 {
5546 /* There was a watchpoint, but we're not stopping.
5547 This requires no further action. */
5548 }
5549 break;
5550 case bp_longjmp:
5551 case bp_longjmp_call_dummy:
5552 case bp_exception:
5553 if (bs->stop)
5554 {
5555 this_action = BPSTAT_WHAT_SET_LONGJMP_RESUME;
5556 retval.is_longjmp = bptype != bp_exception;
5557 }
5558 else
5559 this_action = BPSTAT_WHAT_SINGLE;
5560 break;
5561 case bp_longjmp_resume:
5562 case bp_exception_resume:
5563 if (bs->stop)
5564 {
5565 this_action = BPSTAT_WHAT_CLEAR_LONGJMP_RESUME;
5566 retval.is_longjmp = bptype == bp_longjmp_resume;
5567 }
5568 else
5569 this_action = BPSTAT_WHAT_SINGLE;
5570 break;
5571 case bp_step_resume:
5572 if (bs->stop)
5573 this_action = BPSTAT_WHAT_STEP_RESUME;
5574 else
5575 {
5576 /* It is for the wrong frame. */
5577 this_action = BPSTAT_WHAT_SINGLE;
5578 }
5579 break;
5580 case bp_hp_step_resume:
5581 if (bs->stop)
5582 this_action = BPSTAT_WHAT_HP_STEP_RESUME;
5583 else
5584 {
5585 /* It is for the wrong frame. */
5586 this_action = BPSTAT_WHAT_SINGLE;
5587 }
5588 break;
5589 case bp_watchpoint_scope:
5590 case bp_thread_event:
5591 case bp_overlay_event:
5592 case bp_longjmp_master:
5593 case bp_std_terminate_master:
5594 case bp_exception_master:
5595 this_action = BPSTAT_WHAT_SINGLE;
5596 break;
5597 case bp_catchpoint:
5598 if (bs->stop)
5599 {
5600 if (bs->print)
5601 this_action = BPSTAT_WHAT_STOP_NOISY;
5602 else
5603 this_action = BPSTAT_WHAT_STOP_SILENT;
5604 }
5605 else
5606 {
5607 /* There was a catchpoint, but we're not stopping.
5608 This requires no further action. */
5609 }
5610 break;
5611 case bp_jit_event:
5612 this_action = BPSTAT_WHAT_SINGLE;
5613 break;
5614 case bp_call_dummy:
5615 /* Make sure the action is stop (silent or noisy),
5616 so infrun.c pops the dummy frame. */
5617 retval.call_dummy = STOP_STACK_DUMMY;
5618 this_action = BPSTAT_WHAT_STOP_SILENT;
5619 break;
5620 case bp_std_terminate:
5621 /* Make sure the action is stop (silent or noisy),
5622 so infrun.c pops the dummy frame. */
5623 retval.call_dummy = STOP_STD_TERMINATE;
5624 this_action = BPSTAT_WHAT_STOP_SILENT;
5625 break;
5626 case bp_tracepoint:
5627 case bp_fast_tracepoint:
5628 case bp_static_tracepoint:
5629 /* Tracepoint hits should not be reported back to GDB, and
5630 if one got through somehow, it should have been filtered
5631 out already. */
5632 internal_error (__FILE__, __LINE__,
5633 _("bpstat_what: tracepoint encountered"));
5634 break;
5635 case bp_gnu_ifunc_resolver:
5636 /* Step over it (and insert bp_gnu_ifunc_resolver_return). */
5637 this_action = BPSTAT_WHAT_SINGLE;
5638 break;
5639 case bp_gnu_ifunc_resolver_return:
5640 /* The breakpoint will be removed, execution will restart from the
5641 PC of the former breakpoint. */
5642 this_action = BPSTAT_WHAT_KEEP_CHECKING;
5643 break;
5644
5645 case bp_dprintf:
5646 if (bs->stop)
5647 this_action = BPSTAT_WHAT_STOP_SILENT;
5648 else
5649 this_action = BPSTAT_WHAT_SINGLE;
5650 break;
5651
5652 default:
5653 internal_error (__FILE__, __LINE__,
5654 _("bpstat_what: unhandled bptype %d"), (int) bptype);
5655 }
5656
5657 retval.main_action = std::max (retval.main_action, this_action);
5658 }
5659
5660 return retval;
5661 }
5662
5663 void
5664 bpstat_run_callbacks (bpstat bs_head)
5665 {
5666 bpstat bs;
5667
5668 for (bs = bs_head; bs != NULL; bs = bs->next)
5669 {
5670 struct breakpoint *b = bs->breakpoint_at;
5671
5672 if (b == NULL)
5673 continue;
5674 switch (b->type)
5675 {
5676 case bp_jit_event:
5677 handle_jit_event ();
5678 break;
5679 case bp_gnu_ifunc_resolver:
5680 gnu_ifunc_resolver_stop (b);
5681 break;
5682 case bp_gnu_ifunc_resolver_return:
5683 gnu_ifunc_resolver_return_stop (b);
5684 break;
5685 }
5686 }
5687 }
5688
5689 /* Nonzero if we should step constantly (e.g. watchpoints on machines
5690 without hardware support). This isn't related to a specific bpstat,
5691 just to things like whether watchpoints are set. */
5692
5693 int
5694 bpstat_should_step (void)
5695 {
5696 struct breakpoint *b;
5697
5698 ALL_BREAKPOINTS (b)
5699 if (breakpoint_enabled (b) && b->type == bp_watchpoint && b->loc != NULL)
5700 return 1;
5701 return 0;
5702 }
5703
5704 int
5705 bpstat_causes_stop (bpstat bs)
5706 {
5707 for (; bs != NULL; bs = bs->next)
5708 if (bs->stop)
5709 return 1;
5710
5711 return 0;
5712 }
5713
5714 \f
5715
5716 /* Compute a string of spaces suitable to indent the next line
5717 so it starts at the position corresponding to the table column
5718 named COL_NAME in the currently active table of UIOUT. */
5719
5720 static char *
5721 wrap_indent_at_field (struct ui_out *uiout, const char *col_name)
5722 {
5723 static char wrap_indent[80];
5724 int i, total_width, width, align;
5725 const char *text;
5726
5727 total_width = 0;
5728 for (i = 1; uiout->query_table_field (i, &width, &align, &text); i++)
5729 {
5730 if (strcmp (text, col_name) == 0)
5731 {
5732 gdb_assert (total_width < sizeof wrap_indent);
5733 memset (wrap_indent, ' ', total_width);
5734 wrap_indent[total_width] = 0;
5735
5736 return wrap_indent;
5737 }
5738
5739 total_width += width + 1;
5740 }
5741
5742 return NULL;
5743 }
5744
5745 /* Determine if the locations of this breakpoint will have their conditions
5746 evaluated by the target, host or a mix of both. Returns the following:
5747
5748 "host": Host evals condition.
5749 "host or target": Host or Target evals condition.
5750 "target": Target evals condition.
5751 */
5752
5753 static const char *
5754 bp_condition_evaluator (struct breakpoint *b)
5755 {
5756 struct bp_location *bl;
5757 char host_evals = 0;
5758 char target_evals = 0;
5759
5760 if (!b)
5761 return NULL;
5762
5763 if (!is_breakpoint (b))
5764 return NULL;
5765
5766 if (gdb_evaluates_breakpoint_condition_p ()
5767 || !target_supports_evaluation_of_breakpoint_conditions ())
5768 return condition_evaluation_host;
5769
5770 for (bl = b->loc; bl; bl = bl->next)
5771 {
5772 if (bl->cond_bytecode)
5773 target_evals++;
5774 else
5775 host_evals++;
5776 }
5777
5778 if (host_evals && target_evals)
5779 return condition_evaluation_both;
5780 else if (target_evals)
5781 return condition_evaluation_target;
5782 else
5783 return condition_evaluation_host;
5784 }
5785
5786 /* Determine the breakpoint location's condition evaluator. This is
5787 similar to bp_condition_evaluator, but for locations. */
5788
5789 static const char *
5790 bp_location_condition_evaluator (struct bp_location *bl)
5791 {
5792 if (bl && !is_breakpoint (bl->owner))
5793 return NULL;
5794
5795 if (gdb_evaluates_breakpoint_condition_p ()
5796 || !target_supports_evaluation_of_breakpoint_conditions ())
5797 return condition_evaluation_host;
5798
5799 if (bl && bl->cond_bytecode)
5800 return condition_evaluation_target;
5801 else
5802 return condition_evaluation_host;
5803 }
5804
5805 /* Print the LOC location out of the list of B->LOC locations. */
5806
5807 static void
5808 print_breakpoint_location (struct breakpoint *b,
5809 struct bp_location *loc)
5810 {
5811 struct ui_out *uiout = current_uiout;
5812
5813 scoped_restore_current_program_space restore_pspace;
5814
5815 if (loc != NULL && loc->shlib_disabled)
5816 loc = NULL;
5817
5818 if (loc != NULL)
5819 set_current_program_space (loc->pspace);
5820
5821 if (b->display_canonical)
5822 uiout->field_string ("what", event_location_to_string (b->location.get ()));
5823 else if (loc && loc->symtab)
5824 {
5825 const struct symbol *sym = loc->symbol;
5826
5827 if (sym)
5828 {
5829 uiout->text ("in ");
5830 uiout->field_string ("func", SYMBOL_PRINT_NAME (sym),
5831 ui_out_style_kind::FUNCTION);
5832 uiout->text (" ");
5833 uiout->wrap_hint (wrap_indent_at_field (uiout, "what"));
5834 uiout->text ("at ");
5835 }
5836 uiout->field_string ("file",
5837 symtab_to_filename_for_display (loc->symtab),
5838 ui_out_style_kind::FILE);
5839 uiout->text (":");
5840
5841 if (uiout->is_mi_like_p ())
5842 uiout->field_string ("fullname", symtab_to_fullname (loc->symtab));
5843
5844 uiout->field_int ("line", loc->line_number);
5845 }
5846 else if (loc)
5847 {
5848 string_file stb;
5849
5850 print_address_symbolic (loc->gdbarch, loc->address, &stb,
5851 demangle, "");
5852 uiout->field_stream ("at", stb);
5853 }
5854 else
5855 {
5856 uiout->field_string ("pending",
5857 event_location_to_string (b->location.get ()));
5858 /* If extra_string is available, it could be holding a condition
5859 or dprintf arguments. In either case, make sure it is printed,
5860 too, but only for non-MI streams. */
5861 if (!uiout->is_mi_like_p () && b->extra_string != NULL)
5862 {
5863 if (b->type == bp_dprintf)
5864 uiout->text (",");
5865 else
5866 uiout->text (" ");
5867 uiout->text (b->extra_string);
5868 }
5869 }
5870
5871 if (loc && is_breakpoint (b)
5872 && breakpoint_condition_evaluation_mode () == condition_evaluation_target
5873 && bp_condition_evaluator (b) == condition_evaluation_both)
5874 {
5875 uiout->text (" (");
5876 uiout->field_string ("evaluated-by",
5877 bp_location_condition_evaluator (loc));
5878 uiout->text (")");
5879 }
5880 }
5881
5882 static const char *
5883 bptype_string (enum bptype type)
5884 {
5885 struct ep_type_description
5886 {
5887 enum bptype type;
5888 const char *description;
5889 };
5890 static struct ep_type_description bptypes[] =
5891 {
5892 {bp_none, "?deleted?"},
5893 {bp_breakpoint, "breakpoint"},
5894 {bp_hardware_breakpoint, "hw breakpoint"},
5895 {bp_single_step, "sw single-step"},
5896 {bp_until, "until"},
5897 {bp_finish, "finish"},
5898 {bp_watchpoint, "watchpoint"},
5899 {bp_hardware_watchpoint, "hw watchpoint"},
5900 {bp_read_watchpoint, "read watchpoint"},
5901 {bp_access_watchpoint, "acc watchpoint"},
5902 {bp_longjmp, "longjmp"},
5903 {bp_longjmp_resume, "longjmp resume"},
5904 {bp_longjmp_call_dummy, "longjmp for call dummy"},
5905 {bp_exception, "exception"},
5906 {bp_exception_resume, "exception resume"},
5907 {bp_step_resume, "step resume"},
5908 {bp_hp_step_resume, "high-priority step resume"},
5909 {bp_watchpoint_scope, "watchpoint scope"},
5910 {bp_call_dummy, "call dummy"},
5911 {bp_std_terminate, "std::terminate"},
5912 {bp_shlib_event, "shlib events"},
5913 {bp_thread_event, "thread events"},
5914 {bp_overlay_event, "overlay events"},
5915 {bp_longjmp_master, "longjmp master"},
5916 {bp_std_terminate_master, "std::terminate master"},
5917 {bp_exception_master, "exception master"},
5918 {bp_catchpoint, "catchpoint"},
5919 {bp_tracepoint, "tracepoint"},
5920 {bp_fast_tracepoint, "fast tracepoint"},
5921 {bp_static_tracepoint, "static tracepoint"},
5922 {bp_dprintf, "dprintf"},
5923 {bp_jit_event, "jit events"},
5924 {bp_gnu_ifunc_resolver, "STT_GNU_IFUNC resolver"},
5925 {bp_gnu_ifunc_resolver_return, "STT_GNU_IFUNC resolver return"},
5926 };
5927
5928 if (((int) type >= (sizeof (bptypes) / sizeof (bptypes[0])))
5929 || ((int) type != bptypes[(int) type].type))
5930 internal_error (__FILE__, __LINE__,
5931 _("bptypes table does not describe type #%d."),
5932 (int) type);
5933
5934 return bptypes[(int) type].description;
5935 }
5936
5937 /* For MI, output a field named 'thread-groups' with a list as the value.
5938 For CLI, prefix the list with the string 'inf'. */
5939
5940 static void
5941 output_thread_groups (struct ui_out *uiout,
5942 const char *field_name,
5943 const std::vector<int> &inf_nums,
5944 int mi_only)
5945 {
5946 int is_mi = uiout->is_mi_like_p ();
5947
5948 /* For backward compatibility, don't display inferiors in CLI unless
5949 there are several. Always display them for MI. */
5950 if (!is_mi && mi_only)
5951 return;
5952
5953 ui_out_emit_list list_emitter (uiout, field_name);
5954
5955 for (size_t i = 0; i < inf_nums.size (); i++)
5956 {
5957 if (is_mi)
5958 {
5959 char mi_group[10];
5960
5961 xsnprintf (mi_group, sizeof (mi_group), "i%d", inf_nums[i]);
5962 uiout->field_string (NULL, mi_group);
5963 }
5964 else
5965 {
5966 if (i == 0)
5967 uiout->text (" inf ");
5968 else
5969 uiout->text (", ");
5970
5971 uiout->text (plongest (inf_nums[i]));
5972 }
5973 }
5974 }
5975
5976 /* Print B to gdb_stdout. */
5977
5978 static void
5979 print_one_breakpoint_location (struct breakpoint *b,
5980 struct bp_location *loc,
5981 int loc_number,
5982 struct bp_location **last_loc,
5983 int allflag)
5984 {
5985 struct command_line *l;
5986 static char bpenables[] = "nynny";
5987
5988 struct ui_out *uiout = current_uiout;
5989 int header_of_multiple = 0;
5990 int part_of_multiple = (loc != NULL);
5991 struct value_print_options opts;
5992
5993 get_user_print_options (&opts);
5994
5995 gdb_assert (!loc || loc_number != 0);
5996 /* See comment in print_one_breakpoint concerning treatment of
5997 breakpoints with single disabled location. */
5998 if (loc == NULL
5999 && (b->loc != NULL
6000 && (b->loc->next != NULL || !b->loc->enabled)))
6001 header_of_multiple = 1;
6002 if (loc == NULL)
6003 loc = b->loc;
6004
6005 annotate_record ();
6006
6007 /* 1 */
6008 annotate_field (0);
6009 if (part_of_multiple)
6010 uiout->field_fmt ("number", "%d.%d", b->number, loc_number);
6011 else
6012 uiout->field_int ("number", b->number);
6013
6014 /* 2 */
6015 annotate_field (1);
6016 if (part_of_multiple)
6017 uiout->field_skip ("type");
6018 else
6019 uiout->field_string ("type", bptype_string (b->type));
6020
6021 /* 3 */
6022 annotate_field (2);
6023 if (part_of_multiple)
6024 uiout->field_skip ("disp");
6025 else
6026 uiout->field_string ("disp", bpdisp_text (b->disposition));
6027
6028 /* 4 */
6029 annotate_field (3);
6030 if (part_of_multiple)
6031 uiout->field_string ("enabled", loc->enabled ? "y" : "n");
6032 else
6033 uiout->field_fmt ("enabled", "%c", bpenables[(int) b->enable_state]);
6034
6035 /* 5 and 6 */
6036 if (b->ops != NULL && b->ops->print_one != NULL)
6037 {
6038 /* Although the print_one can possibly print all locations,
6039 calling it here is not likely to get any nice result. So,
6040 make sure there's just one location. */
6041 gdb_assert (b->loc == NULL || b->loc->next == NULL);
6042 b->ops->print_one (b, last_loc);
6043 }
6044 else
6045 switch (b->type)
6046 {
6047 case bp_none:
6048 internal_error (__FILE__, __LINE__,
6049 _("print_one_breakpoint: bp_none encountered\n"));
6050 break;
6051
6052 case bp_watchpoint:
6053 case bp_hardware_watchpoint:
6054 case bp_read_watchpoint:
6055 case bp_access_watchpoint:
6056 {
6057 struct watchpoint *w = (struct watchpoint *) b;
6058
6059 /* Field 4, the address, is omitted (which makes the columns
6060 not line up too nicely with the headers, but the effect
6061 is relatively readable). */
6062 if (opts.addressprint)
6063 uiout->field_skip ("addr");
6064 annotate_field (5);
6065 uiout->field_string ("what", w->exp_string);
6066 }
6067 break;
6068
6069 case bp_breakpoint:
6070 case bp_hardware_breakpoint:
6071 case bp_single_step:
6072 case bp_until:
6073 case bp_finish:
6074 case bp_longjmp:
6075 case bp_longjmp_resume:
6076 case bp_longjmp_call_dummy:
6077 case bp_exception:
6078 case bp_exception_resume:
6079 case bp_step_resume:
6080 case bp_hp_step_resume:
6081 case bp_watchpoint_scope:
6082 case bp_call_dummy:
6083 case bp_std_terminate:
6084 case bp_shlib_event:
6085 case bp_thread_event:
6086 case bp_overlay_event:
6087 case bp_longjmp_master:
6088 case bp_std_terminate_master:
6089 case bp_exception_master:
6090 case bp_tracepoint:
6091 case bp_fast_tracepoint:
6092 case bp_static_tracepoint:
6093 case bp_dprintf:
6094 case bp_jit_event:
6095 case bp_gnu_ifunc_resolver:
6096 case bp_gnu_ifunc_resolver_return:
6097 if (opts.addressprint)
6098 {
6099 annotate_field (4);
6100 if (header_of_multiple)
6101 uiout->field_string ("addr", "<MULTIPLE>");
6102 else if (b->loc == NULL || loc->shlib_disabled)
6103 uiout->field_string ("addr", "<PENDING>");
6104 else
6105 uiout->field_core_addr ("addr",
6106 loc->gdbarch, loc->address);
6107 }
6108 annotate_field (5);
6109 if (!header_of_multiple)
6110 print_breakpoint_location (b, loc);
6111 if (b->loc)
6112 *last_loc = b->loc;
6113 break;
6114 }
6115
6116
6117 if (loc != NULL && !header_of_multiple)
6118 {
6119 std::vector<int> inf_nums;
6120 int mi_only = 1;
6121
6122 for (inferior *inf : all_inferiors ())
6123 {
6124 if (inf->pspace == loc->pspace)
6125 inf_nums.push_back (inf->num);
6126 }
6127
6128 /* For backward compatibility, don't display inferiors in CLI unless
6129 there are several. Always display for MI. */
6130 if (allflag
6131 || (!gdbarch_has_global_breakpoints (target_gdbarch ())
6132 && (number_of_program_spaces () > 1
6133 || number_of_inferiors () > 1)
6134 /* LOC is for existing B, it cannot be in
6135 moribund_locations and thus having NULL OWNER. */
6136 && loc->owner->type != bp_catchpoint))
6137 mi_only = 0;
6138 output_thread_groups (uiout, "thread-groups", inf_nums, mi_only);
6139 }
6140
6141 if (!part_of_multiple)
6142 {
6143 if (b->thread != -1)
6144 {
6145 /* FIXME: This seems to be redundant and lost here; see the
6146 "stop only in" line a little further down. */
6147 uiout->text (" thread ");
6148 uiout->field_int ("thread", b->thread);
6149 }
6150 else if (b->task != 0)
6151 {
6152 uiout->text (" task ");
6153 uiout->field_int ("task", b->task);
6154 }
6155 }
6156
6157 uiout->text ("\n");
6158
6159 if (!part_of_multiple)
6160 b->ops->print_one_detail (b, uiout);
6161
6162 if (part_of_multiple && frame_id_p (b->frame_id))
6163 {
6164 annotate_field (6);
6165 uiout->text ("\tstop only in stack frame at ");
6166 /* FIXME: cagney/2002-12-01: Shouldn't be poking around inside
6167 the frame ID. */
6168 uiout->field_core_addr ("frame",
6169 b->gdbarch, b->frame_id.stack_addr);
6170 uiout->text ("\n");
6171 }
6172
6173 if (!part_of_multiple && b->cond_string)
6174 {
6175 annotate_field (7);
6176 if (is_tracepoint (b))
6177 uiout->text ("\ttrace only if ");
6178 else
6179 uiout->text ("\tstop only if ");
6180 uiout->field_string ("cond", b->cond_string);
6181
6182 /* Print whether the target is doing the breakpoint's condition
6183 evaluation. If GDB is doing the evaluation, don't print anything. */
6184 if (is_breakpoint (b)
6185 && breakpoint_condition_evaluation_mode ()
6186 == condition_evaluation_target)
6187 {
6188 uiout->text (" (");
6189 uiout->field_string ("evaluated-by",
6190 bp_condition_evaluator (b));
6191 uiout->text (" evals)");
6192 }
6193 uiout->text ("\n");
6194 }
6195
6196 if (!part_of_multiple && b->thread != -1)
6197 {
6198 /* FIXME should make an annotation for this. */
6199 uiout->text ("\tstop only in thread ");
6200 if (uiout->is_mi_like_p ())
6201 uiout->field_int ("thread", b->thread);
6202 else
6203 {
6204 struct thread_info *thr = find_thread_global_id (b->thread);
6205
6206 uiout->field_string ("thread", print_thread_id (thr));
6207 }
6208 uiout->text ("\n");
6209 }
6210
6211 if (!part_of_multiple)
6212 {
6213 if (b->hit_count)
6214 {
6215 /* FIXME should make an annotation for this. */
6216 if (is_catchpoint (b))
6217 uiout->text ("\tcatchpoint");
6218 else if (is_tracepoint (b))
6219 uiout->text ("\ttracepoint");
6220 else
6221 uiout->text ("\tbreakpoint");
6222 uiout->text (" already hit ");
6223 uiout->field_int ("times", b->hit_count);
6224 if (b->hit_count == 1)
6225 uiout->text (" time\n");
6226 else
6227 uiout->text (" times\n");
6228 }
6229 else
6230 {
6231 /* Output the count also if it is zero, but only if this is mi. */
6232 if (uiout->is_mi_like_p ())
6233 uiout->field_int ("times", b->hit_count);
6234 }
6235 }
6236
6237 if (!part_of_multiple && b->ignore_count)
6238 {
6239 annotate_field (8);
6240 uiout->text ("\tignore next ");
6241 uiout->field_int ("ignore", b->ignore_count);
6242 uiout->text (" hits\n");
6243 }
6244
6245 /* Note that an enable count of 1 corresponds to "enable once"
6246 behavior, which is reported by the combination of enablement and
6247 disposition, so we don't need to mention it here. */
6248 if (!part_of_multiple && b->enable_count > 1)
6249 {
6250 annotate_field (8);
6251 uiout->text ("\tdisable after ");
6252 /* Tweak the wording to clarify that ignore and enable counts
6253 are distinct, and have additive effect. */
6254 if (b->ignore_count)
6255 uiout->text ("additional ");
6256 else
6257 uiout->text ("next ");
6258 uiout->field_int ("enable", b->enable_count);
6259 uiout->text (" hits\n");
6260 }
6261
6262 if (!part_of_multiple && is_tracepoint (b))
6263 {
6264 struct tracepoint *tp = (struct tracepoint *) b;
6265
6266 if (tp->traceframe_usage)
6267 {
6268 uiout->text ("\ttrace buffer usage ");
6269 uiout->field_int ("traceframe-usage", tp->traceframe_usage);
6270 uiout->text (" bytes\n");
6271 }
6272 }
6273
6274 l = b->commands ? b->commands.get () : NULL;
6275 if (!part_of_multiple && l)
6276 {
6277 annotate_field (9);
6278 ui_out_emit_tuple tuple_emitter (uiout, "script");
6279 print_command_lines (uiout, l, 4);
6280 }
6281
6282 if (is_tracepoint (b))
6283 {
6284 struct tracepoint *t = (struct tracepoint *) b;
6285
6286 if (!part_of_multiple && t->pass_count)
6287 {
6288 annotate_field (10);
6289 uiout->text ("\tpass count ");
6290 uiout->field_int ("pass", t->pass_count);
6291 uiout->text (" \n");
6292 }
6293
6294 /* Don't display it when tracepoint or tracepoint location is
6295 pending. */
6296 if (!header_of_multiple && loc != NULL && !loc->shlib_disabled)
6297 {
6298 annotate_field (11);
6299
6300 if (uiout->is_mi_like_p ())
6301 uiout->field_string ("installed",
6302 loc->inserted ? "y" : "n");
6303 else
6304 {
6305 if (loc->inserted)
6306 uiout->text ("\t");
6307 else
6308 uiout->text ("\tnot ");
6309 uiout->text ("installed on target\n");
6310 }
6311 }
6312 }
6313
6314 if (uiout->is_mi_like_p () && !part_of_multiple)
6315 {
6316 if (is_watchpoint (b))
6317 {
6318 struct watchpoint *w = (struct watchpoint *) b;
6319
6320 uiout->field_string ("original-location", w->exp_string);
6321 }
6322 else if (b->location != NULL
6323 && event_location_to_string (b->location.get ()) != NULL)
6324 uiout->field_string ("original-location",
6325 event_location_to_string (b->location.get ()));
6326 }
6327 }
6328
6329 /* See breakpoint.h. */
6330
6331 bool fix_multi_location_breakpoint_output_globally = false;
6332
6333 static void
6334 print_one_breakpoint (struct breakpoint *b,
6335 struct bp_location **last_loc,
6336 int allflag)
6337 {
6338 struct ui_out *uiout = current_uiout;
6339 bool use_fixed_output
6340 = (uiout->test_flags (fix_multi_location_breakpoint_output)
6341 || fix_multi_location_breakpoint_output_globally);
6342
6343 gdb::optional<ui_out_emit_tuple> bkpt_tuple_emitter (gdb::in_place, uiout, "bkpt");
6344 print_one_breakpoint_location (b, NULL, 0, last_loc, allflag);
6345
6346 /* The mi2 broken format: the main breakpoint tuple ends here, the locations
6347 are outside. */
6348 if (!use_fixed_output)
6349 bkpt_tuple_emitter.reset ();
6350
6351 /* If this breakpoint has custom print function,
6352 it's already printed. Otherwise, print individual
6353 locations, if any. */
6354 if (b->ops == NULL || b->ops->print_one == NULL)
6355 {
6356 /* If breakpoint has a single location that is disabled, we
6357 print it as if it had several locations, since otherwise it's
6358 hard to represent "breakpoint enabled, location disabled"
6359 situation.
6360
6361 Note that while hardware watchpoints have several locations
6362 internally, that's not a property exposed to user. */
6363 if (b->loc
6364 && !is_hardware_watchpoint (b)
6365 && (b->loc->next || !b->loc->enabled))
6366 {
6367 gdb::optional<ui_out_emit_list> locations_list;
6368
6369 /* For MI version <= 2, keep the behavior where GDB outputs an invalid
6370 MI record. For later versions, place breakpoint locations in a
6371 list. */
6372 if (uiout->is_mi_like_p () && use_fixed_output)
6373 locations_list.emplace (uiout, "locations");
6374
6375 int n = 1;
6376 for (bp_location *loc = b->loc; loc != NULL; loc = loc->next, ++n)
6377 {
6378 ui_out_emit_tuple loc_tuple_emitter (uiout, NULL);
6379 print_one_breakpoint_location (b, loc, n, last_loc, allflag);
6380 }
6381 }
6382 }
6383 }
6384
6385 static int
6386 breakpoint_address_bits (struct breakpoint *b)
6387 {
6388 int print_address_bits = 0;
6389 struct bp_location *loc;
6390
6391 /* Software watchpoints that aren't watching memory don't have an
6392 address to print. */
6393 if (is_no_memory_software_watchpoint (b))
6394 return 0;
6395
6396 for (loc = b->loc; loc; loc = loc->next)
6397 {
6398 int addr_bit;
6399
6400 addr_bit = gdbarch_addr_bit (loc->gdbarch);
6401 if (addr_bit > print_address_bits)
6402 print_address_bits = addr_bit;
6403 }
6404
6405 return print_address_bits;
6406 }
6407
6408 /* See breakpoint.h. */
6409
6410 void
6411 print_breakpoint (breakpoint *b)
6412 {
6413 struct bp_location *dummy_loc = NULL;
6414 print_one_breakpoint (b, &dummy_loc, 0);
6415 }
6416
6417 /* Return true if this breakpoint was set by the user, false if it is
6418 internal or momentary. */
6419
6420 int
6421 user_breakpoint_p (struct breakpoint *b)
6422 {
6423 return b->number > 0;
6424 }
6425
6426 /* See breakpoint.h. */
6427
6428 int
6429 pending_breakpoint_p (struct breakpoint *b)
6430 {
6431 return b->loc == NULL;
6432 }
6433
6434 /* Print information on user settable breakpoint (watchpoint, etc)
6435 number BNUM. If BNUM is -1 print all user-settable breakpoints.
6436 If ALLFLAG is non-zero, include non-user-settable breakpoints. If
6437 FILTER is non-NULL, call it on each breakpoint and only include the
6438 ones for which it returns non-zero. Return the total number of
6439 breakpoints listed. */
6440
6441 static int
6442 breakpoint_1 (const char *args, int allflag,
6443 int (*filter) (const struct breakpoint *))
6444 {
6445 struct breakpoint *b;
6446 struct bp_location *last_loc = NULL;
6447 int nr_printable_breakpoints;
6448 struct value_print_options opts;
6449 int print_address_bits = 0;
6450 int print_type_col_width = 14;
6451 struct ui_out *uiout = current_uiout;
6452
6453 get_user_print_options (&opts);
6454
6455 /* Compute the number of rows in the table, as well as the size
6456 required for address fields. */
6457 nr_printable_breakpoints = 0;
6458 ALL_BREAKPOINTS (b)
6459 {
6460 /* If we have a filter, only list the breakpoints it accepts. */
6461 if (filter && !filter (b))
6462 continue;
6463
6464 /* If we have an "args" string, it is a list of breakpoints to
6465 accept. Skip the others. */
6466 if (args != NULL && *args != '\0')
6467 {
6468 if (allflag && parse_and_eval_long (args) != b->number)
6469 continue;
6470 if (!allflag && !number_is_in_list (args, b->number))
6471 continue;
6472 }
6473
6474 if (allflag || user_breakpoint_p (b))
6475 {
6476 int addr_bit, type_len;
6477
6478 addr_bit = breakpoint_address_bits (b);
6479 if (addr_bit > print_address_bits)
6480 print_address_bits = addr_bit;
6481
6482 type_len = strlen (bptype_string (b->type));
6483 if (type_len > print_type_col_width)
6484 print_type_col_width = type_len;
6485
6486 nr_printable_breakpoints++;
6487 }
6488 }
6489
6490 {
6491 ui_out_emit_table table_emitter (uiout,
6492 opts.addressprint ? 6 : 5,
6493 nr_printable_breakpoints,
6494 "BreakpointTable");
6495
6496 if (nr_printable_breakpoints > 0)
6497 annotate_breakpoints_headers ();
6498 if (nr_printable_breakpoints > 0)
6499 annotate_field (0);
6500 uiout->table_header (7, ui_left, "number", "Num"); /* 1 */
6501 if (nr_printable_breakpoints > 0)
6502 annotate_field (1);
6503 uiout->table_header (print_type_col_width, ui_left, "type", "Type"); /* 2 */
6504 if (nr_printable_breakpoints > 0)
6505 annotate_field (2);
6506 uiout->table_header (4, ui_left, "disp", "Disp"); /* 3 */
6507 if (nr_printable_breakpoints > 0)
6508 annotate_field (3);
6509 uiout->table_header (3, ui_left, "enabled", "Enb"); /* 4 */
6510 if (opts.addressprint)
6511 {
6512 if (nr_printable_breakpoints > 0)
6513 annotate_field (4);
6514 if (print_address_bits <= 32)
6515 uiout->table_header (10, ui_left, "addr", "Address"); /* 5 */
6516 else
6517 uiout->table_header (18, ui_left, "addr", "Address"); /* 5 */
6518 }
6519 if (nr_printable_breakpoints > 0)
6520 annotate_field (5);
6521 uiout->table_header (40, ui_noalign, "what", "What"); /* 6 */
6522 uiout->table_body ();
6523 if (nr_printable_breakpoints > 0)
6524 annotate_breakpoints_table ();
6525
6526 ALL_BREAKPOINTS (b)
6527 {
6528 QUIT;
6529 /* If we have a filter, only list the breakpoints it accepts. */
6530 if (filter && !filter (b))
6531 continue;
6532
6533 /* If we have an "args" string, it is a list of breakpoints to
6534 accept. Skip the others. */
6535
6536 if (args != NULL && *args != '\0')
6537 {
6538 if (allflag) /* maintenance info breakpoint */
6539 {
6540 if (parse_and_eval_long (args) != b->number)
6541 continue;
6542 }
6543 else /* all others */
6544 {
6545 if (!number_is_in_list (args, b->number))
6546 continue;
6547 }
6548 }
6549 /* We only print out user settable breakpoints unless the
6550 allflag is set. */
6551 if (allflag || user_breakpoint_p (b))
6552 print_one_breakpoint (b, &last_loc, allflag);
6553 }
6554 }
6555
6556 if (nr_printable_breakpoints == 0)
6557 {
6558 /* If there's a filter, let the caller decide how to report
6559 empty list. */
6560 if (!filter)
6561 {
6562 if (args == NULL || *args == '\0')
6563 uiout->message ("No breakpoints or watchpoints.\n");
6564 else
6565 uiout->message ("No breakpoint or watchpoint matching '%s'.\n",
6566 args);
6567 }
6568 }
6569 else
6570 {
6571 if (last_loc && !server_command)
6572 set_next_address (last_loc->gdbarch, last_loc->address);
6573 }
6574
6575 /* FIXME? Should this be moved up so that it is only called when
6576 there have been breakpoints? */
6577 annotate_breakpoints_table_end ();
6578
6579 return nr_printable_breakpoints;
6580 }
6581
6582 /* Display the value of default-collect in a way that is generally
6583 compatible with the breakpoint list. */
6584
6585 static void
6586 default_collect_info (void)
6587 {
6588 struct ui_out *uiout = current_uiout;
6589
6590 /* If it has no value (which is frequently the case), say nothing; a
6591 message like "No default-collect." gets in user's face when it's
6592 not wanted. */
6593 if (!*default_collect)
6594 return;
6595
6596 /* The following phrase lines up nicely with per-tracepoint collect
6597 actions. */
6598 uiout->text ("default collect ");
6599 uiout->field_string ("default-collect", default_collect);
6600 uiout->text (" \n");
6601 }
6602
6603 static void
6604 info_breakpoints_command (const char *args, int from_tty)
6605 {
6606 breakpoint_1 (args, 0, NULL);
6607
6608 default_collect_info ();
6609 }
6610
6611 static void
6612 info_watchpoints_command (const char *args, int from_tty)
6613 {
6614 int num_printed = breakpoint_1 (args, 0, is_watchpoint);
6615 struct ui_out *uiout = current_uiout;
6616
6617 if (num_printed == 0)
6618 {
6619 if (args == NULL || *args == '\0')
6620 uiout->message ("No watchpoints.\n");
6621 else
6622 uiout->message ("No watchpoint matching '%s'.\n", args);
6623 }
6624 }
6625
6626 static void
6627 maintenance_info_breakpoints (const char *args, int from_tty)
6628 {
6629 breakpoint_1 (args, 1, NULL);
6630
6631 default_collect_info ();
6632 }
6633
6634 static int
6635 breakpoint_has_pc (struct breakpoint *b,
6636 struct program_space *pspace,
6637 CORE_ADDR pc, struct obj_section *section)
6638 {
6639 struct bp_location *bl = b->loc;
6640
6641 for (; bl; bl = bl->next)
6642 {
6643 if (bl->pspace == pspace
6644 && bl->address == pc
6645 && (!overlay_debugging || bl->section == section))
6646 return 1;
6647 }
6648 return 0;
6649 }
6650
6651 /* Print a message describing any user-breakpoints set at PC. This
6652 concerns with logical breakpoints, so we match program spaces, not
6653 address spaces. */
6654
6655 static void
6656 describe_other_breakpoints (struct gdbarch *gdbarch,
6657 struct program_space *pspace, CORE_ADDR pc,
6658 struct obj_section *section, int thread)
6659 {
6660 int others = 0;
6661 struct breakpoint *b;
6662
6663 ALL_BREAKPOINTS (b)
6664 others += (user_breakpoint_p (b)
6665 && breakpoint_has_pc (b, pspace, pc, section));
6666 if (others > 0)
6667 {
6668 if (others == 1)
6669 printf_filtered (_("Note: breakpoint "));
6670 else /* if (others == ???) */
6671 printf_filtered (_("Note: breakpoints "));
6672 ALL_BREAKPOINTS (b)
6673 if (user_breakpoint_p (b) && breakpoint_has_pc (b, pspace, pc, section))
6674 {
6675 others--;
6676 printf_filtered ("%d", b->number);
6677 if (b->thread == -1 && thread != -1)
6678 printf_filtered (" (all threads)");
6679 else if (b->thread != -1)
6680 printf_filtered (" (thread %d)", b->thread);
6681 printf_filtered ("%s%s ",
6682 ((b->enable_state == bp_disabled
6683 || b->enable_state == bp_call_disabled)
6684 ? " (disabled)"
6685 : ""),
6686 (others > 1) ? ","
6687 : ((others == 1) ? " and" : ""));
6688 }
6689 printf_filtered (_("also set at pc "));
6690 fputs_styled (paddress (gdbarch, pc), address_style.style (), gdb_stdout);
6691 printf_filtered (".\n");
6692 }
6693 }
6694 \f
6695
6696 /* Return true iff it is meaningful to use the address member of
6697 BPT locations. For some breakpoint types, the locations' address members
6698 are irrelevant and it makes no sense to attempt to compare them to other
6699 addresses (or use them for any other purpose either).
6700
6701 More specifically, each of the following breakpoint types will
6702 always have a zero valued location address and we don't want to mark
6703 breakpoints of any of these types to be a duplicate of an actual
6704 breakpoint location at address zero:
6705
6706 bp_watchpoint
6707 bp_catchpoint
6708
6709 */
6710
6711 static int
6712 breakpoint_address_is_meaningful (struct breakpoint *bpt)
6713 {
6714 enum bptype type = bpt->type;
6715
6716 return (type != bp_watchpoint && type != bp_catchpoint);
6717 }
6718
6719 /* Assuming LOC1 and LOC2's owners are hardware watchpoints, returns
6720 true if LOC1 and LOC2 represent the same watchpoint location. */
6721
6722 static int
6723 watchpoint_locations_match (struct bp_location *loc1,
6724 struct bp_location *loc2)
6725 {
6726 struct watchpoint *w1 = (struct watchpoint *) loc1->owner;
6727 struct watchpoint *w2 = (struct watchpoint *) loc2->owner;
6728
6729 /* Both of them must exist. */
6730 gdb_assert (w1 != NULL);
6731 gdb_assert (w2 != NULL);
6732
6733 /* If the target can evaluate the condition expression in hardware,
6734 then we we need to insert both watchpoints even if they are at
6735 the same place. Otherwise the watchpoint will only trigger when
6736 the condition of whichever watchpoint was inserted evaluates to
6737 true, not giving a chance for GDB to check the condition of the
6738 other watchpoint. */
6739 if ((w1->cond_exp
6740 && target_can_accel_watchpoint_condition (loc1->address,
6741 loc1->length,
6742 loc1->watchpoint_type,
6743 w1->cond_exp.get ()))
6744 || (w2->cond_exp
6745 && target_can_accel_watchpoint_condition (loc2->address,
6746 loc2->length,
6747 loc2->watchpoint_type,
6748 w2->cond_exp.get ())))
6749 return 0;
6750
6751 /* Note that this checks the owner's type, not the location's. In
6752 case the target does not support read watchpoints, but does
6753 support access watchpoints, we'll have bp_read_watchpoint
6754 watchpoints with hw_access locations. Those should be considered
6755 duplicates of hw_read locations. The hw_read locations will
6756 become hw_access locations later. */
6757 return (loc1->owner->type == loc2->owner->type
6758 && loc1->pspace->aspace == loc2->pspace->aspace
6759 && loc1->address == loc2->address
6760 && loc1->length == loc2->length);
6761 }
6762
6763 /* See breakpoint.h. */
6764
6765 int
6766 breakpoint_address_match (const address_space *aspace1, CORE_ADDR addr1,
6767 const address_space *aspace2, CORE_ADDR addr2)
6768 {
6769 return ((gdbarch_has_global_breakpoints (target_gdbarch ())
6770 || aspace1 == aspace2)
6771 && addr1 == addr2);
6772 }
6773
6774 /* Returns true if {ASPACE2,ADDR2} falls within the range determined by
6775 {ASPACE1,ADDR1,LEN1}. In most targets, this can only be true if ASPACE1
6776 matches ASPACE2. On targets that have global breakpoints, the address
6777 space doesn't really matter. */
6778
6779 static int
6780 breakpoint_address_match_range (const address_space *aspace1,
6781 CORE_ADDR addr1,
6782 int len1, const address_space *aspace2,
6783 CORE_ADDR addr2)
6784 {
6785 return ((gdbarch_has_global_breakpoints (target_gdbarch ())
6786 || aspace1 == aspace2)
6787 && addr2 >= addr1 && addr2 < addr1 + len1);
6788 }
6789
6790 /* Returns true if {ASPACE,ADDR} matches the breakpoint BL. BL may be
6791 a ranged breakpoint. In most targets, a match happens only if ASPACE
6792 matches the breakpoint's address space. On targets that have global
6793 breakpoints, the address space doesn't really matter. */
6794
6795 static int
6796 breakpoint_location_address_match (struct bp_location *bl,
6797 const address_space *aspace,
6798 CORE_ADDR addr)
6799 {
6800 return (breakpoint_address_match (bl->pspace->aspace, bl->address,
6801 aspace, addr)
6802 || (bl->length
6803 && breakpoint_address_match_range (bl->pspace->aspace,
6804 bl->address, bl->length,
6805 aspace, addr)));
6806 }
6807
6808 /* Returns true if the [ADDR,ADDR+LEN) range in ASPACE overlaps
6809 breakpoint BL. BL may be a ranged breakpoint. In most targets, a
6810 match happens only if ASPACE matches the breakpoint's address
6811 space. On targets that have global breakpoints, the address space
6812 doesn't really matter. */
6813
6814 static int
6815 breakpoint_location_address_range_overlap (struct bp_location *bl,
6816 const address_space *aspace,
6817 CORE_ADDR addr, int len)
6818 {
6819 if (gdbarch_has_global_breakpoints (target_gdbarch ())
6820 || bl->pspace->aspace == aspace)
6821 {
6822 int bl_len = bl->length != 0 ? bl->length : 1;
6823
6824 if (mem_ranges_overlap (addr, len, bl->address, bl_len))
6825 return 1;
6826 }
6827 return 0;
6828 }
6829
6830 /* If LOC1 and LOC2's owners are not tracepoints, returns false directly.
6831 Then, if LOC1 and LOC2 represent the same tracepoint location, returns
6832 true, otherwise returns false. */
6833
6834 static int
6835 tracepoint_locations_match (struct bp_location *loc1,
6836 struct bp_location *loc2)
6837 {
6838 if (is_tracepoint (loc1->owner) && is_tracepoint (loc2->owner))
6839 /* Since tracepoint locations are never duplicated with others', tracepoint
6840 locations at the same address of different tracepoints are regarded as
6841 different locations. */
6842 return (loc1->address == loc2->address && loc1->owner == loc2->owner);
6843 else
6844 return 0;
6845 }
6846
6847 /* Assuming LOC1 and LOC2's types' have meaningful target addresses
6848 (breakpoint_address_is_meaningful), returns true if LOC1 and LOC2
6849 represent the same location. */
6850
6851 static int
6852 breakpoint_locations_match (struct bp_location *loc1,
6853 struct bp_location *loc2)
6854 {
6855 int hw_point1, hw_point2;
6856
6857 /* Both of them must not be in moribund_locations. */
6858 gdb_assert (loc1->owner != NULL);
6859 gdb_assert (loc2->owner != NULL);
6860
6861 hw_point1 = is_hardware_watchpoint (loc1->owner);
6862 hw_point2 = is_hardware_watchpoint (loc2->owner);
6863
6864 if (hw_point1 != hw_point2)
6865 return 0;
6866 else if (hw_point1)
6867 return watchpoint_locations_match (loc1, loc2);
6868 else if (is_tracepoint (loc1->owner) || is_tracepoint (loc2->owner))
6869 return tracepoint_locations_match (loc1, loc2);
6870 else
6871 /* We compare bp_location.length in order to cover ranged breakpoints. */
6872 return (breakpoint_address_match (loc1->pspace->aspace, loc1->address,
6873 loc2->pspace->aspace, loc2->address)
6874 && loc1->length == loc2->length);
6875 }
6876
6877 static void
6878 breakpoint_adjustment_warning (CORE_ADDR from_addr, CORE_ADDR to_addr,
6879 int bnum, int have_bnum)
6880 {
6881 /* The longest string possibly returned by hex_string_custom
6882 is 50 chars. These must be at least that big for safety. */
6883 char astr1[64];
6884 char astr2[64];
6885
6886 strcpy (astr1, hex_string_custom ((unsigned long) from_addr, 8));
6887 strcpy (astr2, hex_string_custom ((unsigned long) to_addr, 8));
6888 if (have_bnum)
6889 warning (_("Breakpoint %d address previously adjusted from %s to %s."),
6890 bnum, astr1, astr2);
6891 else
6892 warning (_("Breakpoint address adjusted from %s to %s."), astr1, astr2);
6893 }
6894
6895 /* Adjust a breakpoint's address to account for architectural
6896 constraints on breakpoint placement. Return the adjusted address.
6897 Note: Very few targets require this kind of adjustment. For most
6898 targets, this function is simply the identity function. */
6899
6900 static CORE_ADDR
6901 adjust_breakpoint_address (struct gdbarch *gdbarch,
6902 CORE_ADDR bpaddr, enum bptype bptype)
6903 {
6904 if (bptype == bp_watchpoint
6905 || bptype == bp_hardware_watchpoint
6906 || bptype == bp_read_watchpoint
6907 || bptype == bp_access_watchpoint
6908 || bptype == bp_catchpoint)
6909 {
6910 /* Watchpoints and the various bp_catch_* eventpoints should not
6911 have their addresses modified. */
6912 return bpaddr;
6913 }
6914 else if (bptype == bp_single_step)
6915 {
6916 /* Single-step breakpoints should not have their addresses
6917 modified. If there's any architectural constrain that
6918 applies to this address, then it should have already been
6919 taken into account when the breakpoint was created in the
6920 first place. If we didn't do this, stepping through e.g.,
6921 Thumb-2 IT blocks would break. */
6922 return bpaddr;
6923 }
6924 else
6925 {
6926 CORE_ADDR adjusted_bpaddr = bpaddr;
6927
6928 if (gdbarch_adjust_breakpoint_address_p (gdbarch))
6929 {
6930 /* Some targets have architectural constraints on the placement
6931 of breakpoint instructions. Obtain the adjusted address. */
6932 adjusted_bpaddr = gdbarch_adjust_breakpoint_address (gdbarch, bpaddr);
6933 }
6934
6935 adjusted_bpaddr = address_significant (gdbarch, adjusted_bpaddr);
6936
6937 /* An adjusted breakpoint address can significantly alter
6938 a user's expectations. Print a warning if an adjustment
6939 is required. */
6940 if (adjusted_bpaddr != bpaddr)
6941 breakpoint_adjustment_warning (bpaddr, adjusted_bpaddr, 0, 0);
6942
6943 return adjusted_bpaddr;
6944 }
6945 }
6946
6947 bp_location::bp_location (breakpoint *owner)
6948 {
6949 bp_location *loc = this;
6950
6951 loc->owner = owner;
6952 loc->cond_bytecode = NULL;
6953 loc->shlib_disabled = 0;
6954 loc->enabled = 1;
6955
6956 switch (owner->type)
6957 {
6958 case bp_breakpoint:
6959 case bp_single_step:
6960 case bp_until:
6961 case bp_finish:
6962 case bp_longjmp:
6963 case bp_longjmp_resume:
6964 case bp_longjmp_call_dummy:
6965 case bp_exception:
6966 case bp_exception_resume:
6967 case bp_step_resume:
6968 case bp_hp_step_resume:
6969 case bp_watchpoint_scope:
6970 case bp_call_dummy:
6971 case bp_std_terminate:
6972 case bp_shlib_event:
6973 case bp_thread_event:
6974 case bp_overlay_event:
6975 case bp_jit_event:
6976 case bp_longjmp_master:
6977 case bp_std_terminate_master:
6978 case bp_exception_master:
6979 case bp_gnu_ifunc_resolver:
6980 case bp_gnu_ifunc_resolver_return:
6981 case bp_dprintf:
6982 loc->loc_type = bp_loc_software_breakpoint;
6983 mark_breakpoint_location_modified (loc);
6984 break;
6985 case bp_hardware_breakpoint:
6986 loc->loc_type = bp_loc_hardware_breakpoint;
6987 mark_breakpoint_location_modified (loc);
6988 break;
6989 case bp_hardware_watchpoint:
6990 case bp_read_watchpoint:
6991 case bp_access_watchpoint:
6992 loc->loc_type = bp_loc_hardware_watchpoint;
6993 break;
6994 case bp_watchpoint:
6995 case bp_catchpoint:
6996 case bp_tracepoint:
6997 case bp_fast_tracepoint:
6998 case bp_static_tracepoint:
6999 loc->loc_type = bp_loc_other;
7000 break;
7001 default:
7002 internal_error (__FILE__, __LINE__, _("unknown breakpoint type"));
7003 }
7004
7005 loc->refc = 1;
7006 }
7007
7008 /* Allocate a struct bp_location. */
7009
7010 static struct bp_location *
7011 allocate_bp_location (struct breakpoint *bpt)
7012 {
7013 return bpt->ops->allocate_location (bpt);
7014 }
7015
7016 static void
7017 free_bp_location (struct bp_location *loc)
7018 {
7019 delete loc;
7020 }
7021
7022 /* Increment reference count. */
7023
7024 static void
7025 incref_bp_location (struct bp_location *bl)
7026 {
7027 ++bl->refc;
7028 }
7029
7030 /* Decrement reference count. If the reference count reaches 0,
7031 destroy the bp_location. Sets *BLP to NULL. */
7032
7033 static void
7034 decref_bp_location (struct bp_location **blp)
7035 {
7036 gdb_assert ((*blp)->refc > 0);
7037
7038 if (--(*blp)->refc == 0)
7039 free_bp_location (*blp);
7040 *blp = NULL;
7041 }
7042
7043 /* Add breakpoint B at the end of the global breakpoint chain. */
7044
7045 static breakpoint *
7046 add_to_breakpoint_chain (std::unique_ptr<breakpoint> &&b)
7047 {
7048 struct breakpoint *b1;
7049 struct breakpoint *result = b.get ();
7050
7051 /* Add this breakpoint to the end of the chain so that a list of
7052 breakpoints will come out in order of increasing numbers. */
7053
7054 b1 = breakpoint_chain;
7055 if (b1 == 0)
7056 breakpoint_chain = b.release ();
7057 else
7058 {
7059 while (b1->next)
7060 b1 = b1->next;
7061 b1->next = b.release ();
7062 }
7063
7064 return result;
7065 }
7066
7067 /* Initializes breakpoint B with type BPTYPE and no locations yet. */
7068
7069 static void
7070 init_raw_breakpoint_without_location (struct breakpoint *b,
7071 struct gdbarch *gdbarch,
7072 enum bptype bptype,
7073 const struct breakpoint_ops *ops)
7074 {
7075 gdb_assert (ops != NULL);
7076
7077 b->ops = ops;
7078 b->type = bptype;
7079 b->gdbarch = gdbarch;
7080 b->language = current_language->la_language;
7081 b->input_radix = input_radix;
7082 b->related_breakpoint = b;
7083 }
7084
7085 /* Helper to set_raw_breakpoint below. Creates a breakpoint
7086 that has type BPTYPE and has no locations as yet. */
7087
7088 static struct breakpoint *
7089 set_raw_breakpoint_without_location (struct gdbarch *gdbarch,
7090 enum bptype bptype,
7091 const struct breakpoint_ops *ops)
7092 {
7093 std::unique_ptr<breakpoint> b = new_breakpoint_from_type (bptype);
7094
7095 init_raw_breakpoint_without_location (b.get (), gdbarch, bptype, ops);
7096 return add_to_breakpoint_chain (std::move (b));
7097 }
7098
7099 /* Initialize loc->function_name. EXPLICIT_LOC says no indirect function
7100 resolutions should be made as the user specified the location explicitly
7101 enough. */
7102
7103 static void
7104 set_breakpoint_location_function (struct bp_location *loc, int explicit_loc)
7105 {
7106 gdb_assert (loc->owner != NULL);
7107
7108 if (loc->owner->type == bp_breakpoint
7109 || loc->owner->type == bp_hardware_breakpoint
7110 || is_tracepoint (loc->owner))
7111 {
7112 const char *function_name;
7113
7114 if (loc->msymbol != NULL
7115 && (MSYMBOL_TYPE (loc->msymbol) == mst_text_gnu_ifunc
7116 || MSYMBOL_TYPE (loc->msymbol) == mst_data_gnu_ifunc)
7117 && !explicit_loc)
7118 {
7119 struct breakpoint *b = loc->owner;
7120
7121 function_name = MSYMBOL_LINKAGE_NAME (loc->msymbol);
7122
7123 if (b->type == bp_breakpoint && b->loc == loc
7124 && loc->next == NULL && b->related_breakpoint == b)
7125 {
7126 /* Create only the whole new breakpoint of this type but do not
7127 mess more complicated breakpoints with multiple locations. */
7128 b->type = bp_gnu_ifunc_resolver;
7129 /* Remember the resolver's address for use by the return
7130 breakpoint. */
7131 loc->related_address = loc->address;
7132 }
7133 }
7134 else
7135 find_pc_partial_function (loc->address, &function_name, NULL, NULL);
7136
7137 if (function_name)
7138 loc->function_name = xstrdup (function_name);
7139 }
7140 }
7141
7142 /* Attempt to determine architecture of location identified by SAL. */
7143 struct gdbarch *
7144 get_sal_arch (struct symtab_and_line sal)
7145 {
7146 if (sal.section)
7147 return get_objfile_arch (sal.section->objfile);
7148 if (sal.symtab)
7149 return get_objfile_arch (SYMTAB_OBJFILE (sal.symtab));
7150
7151 return NULL;
7152 }
7153
7154 /* Low level routine for partially initializing a breakpoint of type
7155 BPTYPE. The newly created breakpoint's address, section, source
7156 file name, and line number are provided by SAL.
7157
7158 It is expected that the caller will complete the initialization of
7159 the newly created breakpoint struct as well as output any status
7160 information regarding the creation of a new breakpoint. */
7161
7162 static void
7163 init_raw_breakpoint (struct breakpoint *b, struct gdbarch *gdbarch,
7164 struct symtab_and_line sal, enum bptype bptype,
7165 const struct breakpoint_ops *ops)
7166 {
7167 init_raw_breakpoint_without_location (b, gdbarch, bptype, ops);
7168
7169 add_location_to_breakpoint (b, &sal);
7170
7171 if (bptype != bp_catchpoint)
7172 gdb_assert (sal.pspace != NULL);
7173
7174 /* Store the program space that was used to set the breakpoint,
7175 except for ordinary breakpoints, which are independent of the
7176 program space. */
7177 if (bptype != bp_breakpoint && bptype != bp_hardware_breakpoint)
7178 b->pspace = sal.pspace;
7179 }
7180
7181 /* set_raw_breakpoint is a low level routine for allocating and
7182 partially initializing a breakpoint of type BPTYPE. The newly
7183 created breakpoint's address, section, source file name, and line
7184 number are provided by SAL. The newly created and partially
7185 initialized breakpoint is added to the breakpoint chain and
7186 is also returned as the value of this function.
7187
7188 It is expected that the caller will complete the initialization of
7189 the newly created breakpoint struct as well as output any status
7190 information regarding the creation of a new breakpoint. In
7191 particular, set_raw_breakpoint does NOT set the breakpoint
7192 number! Care should be taken to not allow an error to occur
7193 prior to completing the initialization of the breakpoint. If this
7194 should happen, a bogus breakpoint will be left on the chain. */
7195
7196 struct breakpoint *
7197 set_raw_breakpoint (struct gdbarch *gdbarch,
7198 struct symtab_and_line sal, enum bptype bptype,
7199 const struct breakpoint_ops *ops)
7200 {
7201 std::unique_ptr<breakpoint> b = new_breakpoint_from_type (bptype);
7202
7203 init_raw_breakpoint (b.get (), gdbarch, sal, bptype, ops);
7204 return add_to_breakpoint_chain (std::move (b));
7205 }
7206
7207 /* Call this routine when stepping and nexting to enable a breakpoint
7208 if we do a longjmp() or 'throw' in TP. FRAME is the frame which
7209 initiated the operation. */
7210
7211 void
7212 set_longjmp_breakpoint (struct thread_info *tp, struct frame_id frame)
7213 {
7214 struct breakpoint *b, *b_tmp;
7215 int thread = tp->global_num;
7216
7217 /* To avoid having to rescan all objfile symbols at every step,
7218 we maintain a list of continually-inserted but always disabled
7219 longjmp "master" breakpoints. Here, we simply create momentary
7220 clones of those and enable them for the requested thread. */
7221 ALL_BREAKPOINTS_SAFE (b, b_tmp)
7222 if (b->pspace == current_program_space
7223 && (b->type == bp_longjmp_master
7224 || b->type == bp_exception_master))
7225 {
7226 enum bptype type = b->type == bp_longjmp_master ? bp_longjmp : bp_exception;
7227 struct breakpoint *clone;
7228
7229 /* longjmp_breakpoint_ops ensures INITIATING_FRAME is cleared again
7230 after their removal. */
7231 clone = momentary_breakpoint_from_master (b, type,
7232 &momentary_breakpoint_ops, 1);
7233 clone->thread = thread;
7234 }
7235
7236 tp->initiating_frame = frame;
7237 }
7238
7239 /* Delete all longjmp breakpoints from THREAD. */
7240 void
7241 delete_longjmp_breakpoint (int thread)
7242 {
7243 struct breakpoint *b, *b_tmp;
7244
7245 ALL_BREAKPOINTS_SAFE (b, b_tmp)
7246 if (b->type == bp_longjmp || b->type == bp_exception)
7247 {
7248 if (b->thread == thread)
7249 delete_breakpoint (b);
7250 }
7251 }
7252
7253 void
7254 delete_longjmp_breakpoint_at_next_stop (int thread)
7255 {
7256 struct breakpoint *b, *b_tmp;
7257
7258 ALL_BREAKPOINTS_SAFE (b, b_tmp)
7259 if (b->type == bp_longjmp || b->type == bp_exception)
7260 {
7261 if (b->thread == thread)
7262 b->disposition = disp_del_at_next_stop;
7263 }
7264 }
7265
7266 /* Place breakpoints of type bp_longjmp_call_dummy to catch longjmp for
7267 INFERIOR_PTID thread. Chain them all by RELATED_BREAKPOINT and return
7268 pointer to any of them. Return NULL if this system cannot place longjmp
7269 breakpoints. */
7270
7271 struct breakpoint *
7272 set_longjmp_breakpoint_for_call_dummy (void)
7273 {
7274 struct breakpoint *b, *retval = NULL;
7275
7276 ALL_BREAKPOINTS (b)
7277 if (b->pspace == current_program_space && b->type == bp_longjmp_master)
7278 {
7279 struct breakpoint *new_b;
7280
7281 new_b = momentary_breakpoint_from_master (b, bp_longjmp_call_dummy,
7282 &momentary_breakpoint_ops,
7283 1);
7284 new_b->thread = inferior_thread ()->global_num;
7285
7286 /* Link NEW_B into the chain of RETVAL breakpoints. */
7287
7288 gdb_assert (new_b->related_breakpoint == new_b);
7289 if (retval == NULL)
7290 retval = new_b;
7291 new_b->related_breakpoint = retval;
7292 while (retval->related_breakpoint != new_b->related_breakpoint)
7293 retval = retval->related_breakpoint;
7294 retval->related_breakpoint = new_b;
7295 }
7296
7297 return retval;
7298 }
7299
7300 /* Verify all existing dummy frames and their associated breakpoints for
7301 TP. Remove those which can no longer be found in the current frame
7302 stack.
7303
7304 You should call this function only at places where it is safe to currently
7305 unwind the whole stack. Failed stack unwind would discard live dummy
7306 frames. */
7307
7308 void
7309 check_longjmp_breakpoint_for_call_dummy (struct thread_info *tp)
7310 {
7311 struct breakpoint *b, *b_tmp;
7312
7313 ALL_BREAKPOINTS_SAFE (b, b_tmp)
7314 if (b->type == bp_longjmp_call_dummy && b->thread == tp->global_num)
7315 {
7316 struct breakpoint *dummy_b = b->related_breakpoint;
7317
7318 while (dummy_b != b && dummy_b->type != bp_call_dummy)
7319 dummy_b = dummy_b->related_breakpoint;
7320 if (dummy_b->type != bp_call_dummy
7321 || frame_find_by_id (dummy_b->frame_id) != NULL)
7322 continue;
7323
7324 dummy_frame_discard (dummy_b->frame_id, tp);
7325
7326 while (b->related_breakpoint != b)
7327 {
7328 if (b_tmp == b->related_breakpoint)
7329 b_tmp = b->related_breakpoint->next;
7330 delete_breakpoint (b->related_breakpoint);
7331 }
7332 delete_breakpoint (b);
7333 }
7334 }
7335
7336 void
7337 enable_overlay_breakpoints (void)
7338 {
7339 struct breakpoint *b;
7340
7341 ALL_BREAKPOINTS (b)
7342 if (b->type == bp_overlay_event)
7343 {
7344 b->enable_state = bp_enabled;
7345 update_global_location_list (UGLL_MAY_INSERT);
7346 overlay_events_enabled = 1;
7347 }
7348 }
7349
7350 void
7351 disable_overlay_breakpoints (void)
7352 {
7353 struct breakpoint *b;
7354
7355 ALL_BREAKPOINTS (b)
7356 if (b->type == bp_overlay_event)
7357 {
7358 b->enable_state = bp_disabled;
7359 update_global_location_list (UGLL_DONT_INSERT);
7360 overlay_events_enabled = 0;
7361 }
7362 }
7363
7364 /* Set an active std::terminate breakpoint for each std::terminate
7365 master breakpoint. */
7366 void
7367 set_std_terminate_breakpoint (void)
7368 {
7369 struct breakpoint *b, *b_tmp;
7370
7371 ALL_BREAKPOINTS_SAFE (b, b_tmp)
7372 if (b->pspace == current_program_space
7373 && b->type == bp_std_terminate_master)
7374 {
7375 momentary_breakpoint_from_master (b, bp_std_terminate,
7376 &momentary_breakpoint_ops, 1);
7377 }
7378 }
7379
7380 /* Delete all the std::terminate breakpoints. */
7381 void
7382 delete_std_terminate_breakpoint (void)
7383 {
7384 struct breakpoint *b, *b_tmp;
7385
7386 ALL_BREAKPOINTS_SAFE (b, b_tmp)
7387 if (b->type == bp_std_terminate)
7388 delete_breakpoint (b);
7389 }
7390
7391 struct breakpoint *
7392 create_thread_event_breakpoint (struct gdbarch *gdbarch, CORE_ADDR address)
7393 {
7394 struct breakpoint *b;
7395
7396 b = create_internal_breakpoint (gdbarch, address, bp_thread_event,
7397 &internal_breakpoint_ops);
7398
7399 b->enable_state = bp_enabled;
7400 /* location has to be used or breakpoint_re_set will delete me. */
7401 b->location = new_address_location (b->loc->address, NULL, 0);
7402
7403 update_global_location_list_nothrow (UGLL_MAY_INSERT);
7404
7405 return b;
7406 }
7407
7408 struct lang_and_radix
7409 {
7410 enum language lang;
7411 int radix;
7412 };
7413
7414 /* Create a breakpoint for JIT code registration and unregistration. */
7415
7416 struct breakpoint *
7417 create_jit_event_breakpoint (struct gdbarch *gdbarch, CORE_ADDR address)
7418 {
7419 return create_internal_breakpoint (gdbarch, address, bp_jit_event,
7420 &internal_breakpoint_ops);
7421 }
7422
7423 /* Remove JIT code registration and unregistration breakpoint(s). */
7424
7425 void
7426 remove_jit_event_breakpoints (void)
7427 {
7428 struct breakpoint *b, *b_tmp;
7429
7430 ALL_BREAKPOINTS_SAFE (b, b_tmp)
7431 if (b->type == bp_jit_event
7432 && b->loc->pspace == current_program_space)
7433 delete_breakpoint (b);
7434 }
7435
7436 void
7437 remove_solib_event_breakpoints (void)
7438 {
7439 struct breakpoint *b, *b_tmp;
7440
7441 ALL_BREAKPOINTS_SAFE (b, b_tmp)
7442 if (b->type == bp_shlib_event
7443 && b->loc->pspace == current_program_space)
7444 delete_breakpoint (b);
7445 }
7446
7447 /* See breakpoint.h. */
7448
7449 void
7450 remove_solib_event_breakpoints_at_next_stop (void)
7451 {
7452 struct breakpoint *b, *b_tmp;
7453
7454 ALL_BREAKPOINTS_SAFE (b, b_tmp)
7455 if (b->type == bp_shlib_event
7456 && b->loc->pspace == current_program_space)
7457 b->disposition = disp_del_at_next_stop;
7458 }
7459
7460 /* Helper for create_solib_event_breakpoint /
7461 create_and_insert_solib_event_breakpoint. Allows specifying which
7462 INSERT_MODE to pass through to update_global_location_list. */
7463
7464 static struct breakpoint *
7465 create_solib_event_breakpoint_1 (struct gdbarch *gdbarch, CORE_ADDR address,
7466 enum ugll_insert_mode insert_mode)
7467 {
7468 struct breakpoint *b;
7469
7470 b = create_internal_breakpoint (gdbarch, address, bp_shlib_event,
7471 &internal_breakpoint_ops);
7472 update_global_location_list_nothrow (insert_mode);
7473 return b;
7474 }
7475
7476 struct breakpoint *
7477 create_solib_event_breakpoint (struct gdbarch *gdbarch, CORE_ADDR address)
7478 {
7479 return create_solib_event_breakpoint_1 (gdbarch, address, UGLL_MAY_INSERT);
7480 }
7481
7482 /* See breakpoint.h. */
7483
7484 struct breakpoint *
7485 create_and_insert_solib_event_breakpoint (struct gdbarch *gdbarch, CORE_ADDR address)
7486 {
7487 struct breakpoint *b;
7488
7489 /* Explicitly tell update_global_location_list to insert
7490 locations. */
7491 b = create_solib_event_breakpoint_1 (gdbarch, address, UGLL_INSERT);
7492 if (!b->loc->inserted)
7493 {
7494 delete_breakpoint (b);
7495 return NULL;
7496 }
7497 return b;
7498 }
7499
7500 /* Disable any breakpoints that are on code in shared libraries. Only
7501 apply to enabled breakpoints, disabled ones can just stay disabled. */
7502
7503 void
7504 disable_breakpoints_in_shlibs (void)
7505 {
7506 struct bp_location *loc, **locp_tmp;
7507
7508 ALL_BP_LOCATIONS (loc, locp_tmp)
7509 {
7510 /* ALL_BP_LOCATIONS bp_location has LOC->OWNER always non-NULL. */
7511 struct breakpoint *b = loc->owner;
7512
7513 /* We apply the check to all breakpoints, including disabled for
7514 those with loc->duplicate set. This is so that when breakpoint
7515 becomes enabled, or the duplicate is removed, gdb will try to
7516 insert all breakpoints. If we don't set shlib_disabled here,
7517 we'll try to insert those breakpoints and fail. */
7518 if (((b->type == bp_breakpoint)
7519 || (b->type == bp_jit_event)
7520 || (b->type == bp_hardware_breakpoint)
7521 || (is_tracepoint (b)))
7522 && loc->pspace == current_program_space
7523 && !loc->shlib_disabled
7524 && solib_name_from_address (loc->pspace, loc->address)
7525 )
7526 {
7527 loc->shlib_disabled = 1;
7528 }
7529 }
7530 }
7531
7532 /* Disable any breakpoints and tracepoints that are in SOLIB upon
7533 notification of unloaded_shlib. Only apply to enabled breakpoints,
7534 disabled ones can just stay disabled. */
7535
7536 static void
7537 disable_breakpoints_in_unloaded_shlib (struct so_list *solib)
7538 {
7539 struct bp_location *loc, **locp_tmp;
7540 int disabled_shlib_breaks = 0;
7541
7542 ALL_BP_LOCATIONS (loc, locp_tmp)
7543 {
7544 /* ALL_BP_LOCATIONS bp_location has LOC->OWNER always non-NULL. */
7545 struct breakpoint *b = loc->owner;
7546
7547 if (solib->pspace == loc->pspace
7548 && !loc->shlib_disabled
7549 && (((b->type == bp_breakpoint
7550 || b->type == bp_jit_event
7551 || b->type == bp_hardware_breakpoint)
7552 && (loc->loc_type == bp_loc_hardware_breakpoint
7553 || loc->loc_type == bp_loc_software_breakpoint))
7554 || is_tracepoint (b))
7555 && solib_contains_address_p (solib, loc->address))
7556 {
7557 loc->shlib_disabled = 1;
7558 /* At this point, we cannot rely on remove_breakpoint
7559 succeeding so we must mark the breakpoint as not inserted
7560 to prevent future errors occurring in remove_breakpoints. */
7561 loc->inserted = 0;
7562
7563 /* This may cause duplicate notifications for the same breakpoint. */
7564 gdb::observers::breakpoint_modified.notify (b);
7565
7566 if (!disabled_shlib_breaks)
7567 {
7568 target_terminal::ours_for_output ();
7569 warning (_("Temporarily disabling breakpoints "
7570 "for unloaded shared library \"%s\""),
7571 solib->so_name);
7572 }
7573 disabled_shlib_breaks = 1;
7574 }
7575 }
7576 }
7577
7578 /* Disable any breakpoints and tracepoints in OBJFILE upon
7579 notification of free_objfile. Only apply to enabled breakpoints,
7580 disabled ones can just stay disabled. */
7581
7582 static void
7583 disable_breakpoints_in_freed_objfile (struct objfile *objfile)
7584 {
7585 struct breakpoint *b;
7586
7587 if (objfile == NULL)
7588 return;
7589
7590 /* OBJF_SHARED|OBJF_USERLOADED objfiles are dynamic modules manually
7591 managed by the user with add-symbol-file/remove-symbol-file.
7592 Similarly to how breakpoints in shared libraries are handled in
7593 response to "nosharedlibrary", mark breakpoints in such modules
7594 shlib_disabled so they end up uninserted on the next global
7595 location list update. Shared libraries not loaded by the user
7596 aren't handled here -- they're already handled in
7597 disable_breakpoints_in_unloaded_shlib, called by solib.c's
7598 solib_unloaded observer. We skip objfiles that are not
7599 OBJF_SHARED as those aren't considered dynamic objects (e.g. the
7600 main objfile). */
7601 if ((objfile->flags & OBJF_SHARED) == 0
7602 || (objfile->flags & OBJF_USERLOADED) == 0)
7603 return;
7604
7605 ALL_BREAKPOINTS (b)
7606 {
7607 struct bp_location *loc;
7608 int bp_modified = 0;
7609
7610 if (!is_breakpoint (b) && !is_tracepoint (b))
7611 continue;
7612
7613 for (loc = b->loc; loc != NULL; loc = loc->next)
7614 {
7615 CORE_ADDR loc_addr = loc->address;
7616
7617 if (loc->loc_type != bp_loc_hardware_breakpoint
7618 && loc->loc_type != bp_loc_software_breakpoint)
7619 continue;
7620
7621 if (loc->shlib_disabled != 0)
7622 continue;
7623
7624 if (objfile->pspace != loc->pspace)
7625 continue;
7626
7627 if (loc->loc_type != bp_loc_hardware_breakpoint
7628 && loc->loc_type != bp_loc_software_breakpoint)
7629 continue;
7630
7631 if (is_addr_in_objfile (loc_addr, objfile))
7632 {
7633 loc->shlib_disabled = 1;
7634 /* At this point, we don't know whether the object was
7635 unmapped from the inferior or not, so leave the
7636 inserted flag alone. We'll handle failure to
7637 uninsert quietly, in case the object was indeed
7638 unmapped. */
7639
7640 mark_breakpoint_location_modified (loc);
7641
7642 bp_modified = 1;
7643 }
7644 }
7645
7646 if (bp_modified)
7647 gdb::observers::breakpoint_modified.notify (b);
7648 }
7649 }
7650
7651 /* FORK & VFORK catchpoints. */
7652
7653 /* An instance of this type is used to represent a fork or vfork
7654 catchpoint. A breakpoint is really of this type iff its ops pointer points
7655 to CATCH_FORK_BREAKPOINT_OPS. */
7656
7657 struct fork_catchpoint : public breakpoint
7658 {
7659 /* Process id of a child process whose forking triggered this
7660 catchpoint. This field is only valid immediately after this
7661 catchpoint has triggered. */
7662 ptid_t forked_inferior_pid;
7663 };
7664
7665 /* Implement the "insert" breakpoint_ops method for fork
7666 catchpoints. */
7667
7668 static int
7669 insert_catch_fork (struct bp_location *bl)
7670 {
7671 return target_insert_fork_catchpoint (inferior_ptid.pid ());
7672 }
7673
7674 /* Implement the "remove" breakpoint_ops method for fork
7675 catchpoints. */
7676
7677 static int
7678 remove_catch_fork (struct bp_location *bl, enum remove_bp_reason reason)
7679 {
7680 return target_remove_fork_catchpoint (inferior_ptid.pid ());
7681 }
7682
7683 /* Implement the "breakpoint_hit" breakpoint_ops method for fork
7684 catchpoints. */
7685
7686 static int
7687 breakpoint_hit_catch_fork (const struct bp_location *bl,
7688 const address_space *aspace, CORE_ADDR bp_addr,
7689 const struct target_waitstatus *ws)
7690 {
7691 struct fork_catchpoint *c = (struct fork_catchpoint *) bl->owner;
7692
7693 if (ws->kind != TARGET_WAITKIND_FORKED)
7694 return 0;
7695
7696 c->forked_inferior_pid = ws->value.related_pid;
7697 return 1;
7698 }
7699
7700 /* Implement the "print_it" breakpoint_ops method for fork
7701 catchpoints. */
7702
7703 static enum print_stop_action
7704 print_it_catch_fork (bpstat bs)
7705 {
7706 struct ui_out *uiout = current_uiout;
7707 struct breakpoint *b = bs->breakpoint_at;
7708 struct fork_catchpoint *c = (struct fork_catchpoint *) bs->breakpoint_at;
7709
7710 annotate_catchpoint (b->number);
7711 maybe_print_thread_hit_breakpoint (uiout);
7712 if (b->disposition == disp_del)
7713 uiout->text ("Temporary catchpoint ");
7714 else
7715 uiout->text ("Catchpoint ");
7716 if (uiout->is_mi_like_p ())
7717 {
7718 uiout->field_string ("reason", async_reason_lookup (EXEC_ASYNC_FORK));
7719 uiout->field_string ("disp", bpdisp_text (b->disposition));
7720 }
7721 uiout->field_int ("bkptno", b->number);
7722 uiout->text (" (forked process ");
7723 uiout->field_int ("newpid", c->forked_inferior_pid.pid ());
7724 uiout->text ("), ");
7725 return PRINT_SRC_AND_LOC;
7726 }
7727
7728 /* Implement the "print_one" breakpoint_ops method for fork
7729 catchpoints. */
7730
7731 static void
7732 print_one_catch_fork (struct breakpoint *b, struct bp_location **last_loc)
7733 {
7734 struct fork_catchpoint *c = (struct fork_catchpoint *) b;
7735 struct value_print_options opts;
7736 struct ui_out *uiout = current_uiout;
7737
7738 get_user_print_options (&opts);
7739
7740 /* Field 4, the address, is omitted (which makes the columns not
7741 line up too nicely with the headers, but the effect is relatively
7742 readable). */
7743 if (opts.addressprint)
7744 uiout->field_skip ("addr");
7745 annotate_field (5);
7746 uiout->text ("fork");
7747 if (c->forked_inferior_pid != null_ptid)
7748 {
7749 uiout->text (", process ");
7750 uiout->field_int ("what", c->forked_inferior_pid.pid ());
7751 uiout->spaces (1);
7752 }
7753
7754 if (uiout->is_mi_like_p ())
7755 uiout->field_string ("catch-type", "fork");
7756 }
7757
7758 /* Implement the "print_mention" breakpoint_ops method for fork
7759 catchpoints. */
7760
7761 static void
7762 print_mention_catch_fork (struct breakpoint *b)
7763 {
7764 printf_filtered (_("Catchpoint %d (fork)"), b->number);
7765 }
7766
7767 /* Implement the "print_recreate" breakpoint_ops method for fork
7768 catchpoints. */
7769
7770 static void
7771 print_recreate_catch_fork (struct breakpoint *b, struct ui_file *fp)
7772 {
7773 fprintf_unfiltered (fp, "catch fork");
7774 print_recreate_thread (b, fp);
7775 }
7776
7777 /* The breakpoint_ops structure to be used in fork catchpoints. */
7778
7779 static struct breakpoint_ops catch_fork_breakpoint_ops;
7780
7781 /* Implement the "insert" breakpoint_ops method for vfork
7782 catchpoints. */
7783
7784 static int
7785 insert_catch_vfork (struct bp_location *bl)
7786 {
7787 return target_insert_vfork_catchpoint (inferior_ptid.pid ());
7788 }
7789
7790 /* Implement the "remove" breakpoint_ops method for vfork
7791 catchpoints. */
7792
7793 static int
7794 remove_catch_vfork (struct bp_location *bl, enum remove_bp_reason reason)
7795 {
7796 return target_remove_vfork_catchpoint (inferior_ptid.pid ());
7797 }
7798
7799 /* Implement the "breakpoint_hit" breakpoint_ops method for vfork
7800 catchpoints. */
7801
7802 static int
7803 breakpoint_hit_catch_vfork (const struct bp_location *bl,
7804 const address_space *aspace, CORE_ADDR bp_addr,
7805 const struct target_waitstatus *ws)
7806 {
7807 struct fork_catchpoint *c = (struct fork_catchpoint *) bl->owner;
7808
7809 if (ws->kind != TARGET_WAITKIND_VFORKED)
7810 return 0;
7811
7812 c->forked_inferior_pid = ws->value.related_pid;
7813 return 1;
7814 }
7815
7816 /* Implement the "print_it" breakpoint_ops method for vfork
7817 catchpoints. */
7818
7819 static enum print_stop_action
7820 print_it_catch_vfork (bpstat bs)
7821 {
7822 struct ui_out *uiout = current_uiout;
7823 struct breakpoint *b = bs->breakpoint_at;
7824 struct fork_catchpoint *c = (struct fork_catchpoint *) b;
7825
7826 annotate_catchpoint (b->number);
7827 maybe_print_thread_hit_breakpoint (uiout);
7828 if (b->disposition == disp_del)
7829 uiout->text ("Temporary catchpoint ");
7830 else
7831 uiout->text ("Catchpoint ");
7832 if (uiout->is_mi_like_p ())
7833 {
7834 uiout->field_string ("reason", async_reason_lookup (EXEC_ASYNC_VFORK));
7835 uiout->field_string ("disp", bpdisp_text (b->disposition));
7836 }
7837 uiout->field_int ("bkptno", b->number);
7838 uiout->text (" (vforked process ");
7839 uiout->field_int ("newpid", c->forked_inferior_pid.pid ());
7840 uiout->text ("), ");
7841 return PRINT_SRC_AND_LOC;
7842 }
7843
7844 /* Implement the "print_one" breakpoint_ops method for vfork
7845 catchpoints. */
7846
7847 static void
7848 print_one_catch_vfork (struct breakpoint *b, struct bp_location **last_loc)
7849 {
7850 struct fork_catchpoint *c = (struct fork_catchpoint *) b;
7851 struct value_print_options opts;
7852 struct ui_out *uiout = current_uiout;
7853
7854 get_user_print_options (&opts);
7855 /* Field 4, the address, is omitted (which makes the columns not
7856 line up too nicely with the headers, but the effect is relatively
7857 readable). */
7858 if (opts.addressprint)
7859 uiout->field_skip ("addr");
7860 annotate_field (5);
7861 uiout->text ("vfork");
7862 if (c->forked_inferior_pid != null_ptid)
7863 {
7864 uiout->text (", process ");
7865 uiout->field_int ("what", c->forked_inferior_pid.pid ());
7866 uiout->spaces (1);
7867 }
7868
7869 if (uiout->is_mi_like_p ())
7870 uiout->field_string ("catch-type", "vfork");
7871 }
7872
7873 /* Implement the "print_mention" breakpoint_ops method for vfork
7874 catchpoints. */
7875
7876 static void
7877 print_mention_catch_vfork (struct breakpoint *b)
7878 {
7879 printf_filtered (_("Catchpoint %d (vfork)"), b->number);
7880 }
7881
7882 /* Implement the "print_recreate" breakpoint_ops method for vfork
7883 catchpoints. */
7884
7885 static void
7886 print_recreate_catch_vfork (struct breakpoint *b, struct ui_file *fp)
7887 {
7888 fprintf_unfiltered (fp, "catch vfork");
7889 print_recreate_thread (b, fp);
7890 }
7891
7892 /* The breakpoint_ops structure to be used in vfork catchpoints. */
7893
7894 static struct breakpoint_ops catch_vfork_breakpoint_ops;
7895
7896 /* An instance of this type is used to represent an solib catchpoint.
7897 A breakpoint is really of this type iff its ops pointer points to
7898 CATCH_SOLIB_BREAKPOINT_OPS. */
7899
7900 struct solib_catchpoint : public breakpoint
7901 {
7902 ~solib_catchpoint () override;
7903
7904 /* True for "catch load", false for "catch unload". */
7905 unsigned char is_load;
7906
7907 /* Regular expression to match, if any. COMPILED is only valid when
7908 REGEX is non-NULL. */
7909 char *regex;
7910 std::unique_ptr<compiled_regex> compiled;
7911 };
7912
7913 solib_catchpoint::~solib_catchpoint ()
7914 {
7915 xfree (this->regex);
7916 }
7917
7918 static int
7919 insert_catch_solib (struct bp_location *ignore)
7920 {
7921 return 0;
7922 }
7923
7924 static int
7925 remove_catch_solib (struct bp_location *ignore, enum remove_bp_reason reason)
7926 {
7927 return 0;
7928 }
7929
7930 static int
7931 breakpoint_hit_catch_solib (const struct bp_location *bl,
7932 const address_space *aspace,
7933 CORE_ADDR bp_addr,
7934 const struct target_waitstatus *ws)
7935 {
7936 struct solib_catchpoint *self = (struct solib_catchpoint *) bl->owner;
7937 struct breakpoint *other;
7938
7939 if (ws->kind == TARGET_WAITKIND_LOADED)
7940 return 1;
7941
7942 ALL_BREAKPOINTS (other)
7943 {
7944 struct bp_location *other_bl;
7945
7946 if (other == bl->owner)
7947 continue;
7948
7949 if (other->type != bp_shlib_event)
7950 continue;
7951
7952 if (self->pspace != NULL && other->pspace != self->pspace)
7953 continue;
7954
7955 for (other_bl = other->loc; other_bl != NULL; other_bl = other_bl->next)
7956 {
7957 if (other->ops->breakpoint_hit (other_bl, aspace, bp_addr, ws))
7958 return 1;
7959 }
7960 }
7961
7962 return 0;
7963 }
7964
7965 static void
7966 check_status_catch_solib (struct bpstats *bs)
7967 {
7968 struct solib_catchpoint *self
7969 = (struct solib_catchpoint *) bs->breakpoint_at;
7970
7971 if (self->is_load)
7972 {
7973 for (so_list *iter : current_program_space->added_solibs)
7974 {
7975 if (!self->regex
7976 || self->compiled->exec (iter->so_name, 0, NULL, 0) == 0)
7977 return;
7978 }
7979 }
7980 else
7981 {
7982 for (const std::string &iter : current_program_space->deleted_solibs)
7983 {
7984 if (!self->regex
7985 || self->compiled->exec (iter.c_str (), 0, NULL, 0) == 0)
7986 return;
7987 }
7988 }
7989
7990 bs->stop = 0;
7991 bs->print_it = print_it_noop;
7992 }
7993
7994 static enum print_stop_action
7995 print_it_catch_solib (bpstat bs)
7996 {
7997 struct breakpoint *b = bs->breakpoint_at;
7998 struct ui_out *uiout = current_uiout;
7999
8000 annotate_catchpoint (b->number);
8001 maybe_print_thread_hit_breakpoint (uiout);
8002 if (b->disposition == disp_del)
8003 uiout->text ("Temporary catchpoint ");
8004 else
8005 uiout->text ("Catchpoint ");
8006 uiout->field_int ("bkptno", b->number);
8007 uiout->text ("\n");
8008 if (uiout->is_mi_like_p ())
8009 uiout->field_string ("disp", bpdisp_text (b->disposition));
8010 print_solib_event (1);
8011 return PRINT_SRC_AND_LOC;
8012 }
8013
8014 static void
8015 print_one_catch_solib (struct breakpoint *b, struct bp_location **locs)
8016 {
8017 struct solib_catchpoint *self = (struct solib_catchpoint *) b;
8018 struct value_print_options opts;
8019 struct ui_out *uiout = current_uiout;
8020
8021 get_user_print_options (&opts);
8022 /* Field 4, the address, is omitted (which makes the columns not
8023 line up too nicely with the headers, but the effect is relatively
8024 readable). */
8025 if (opts.addressprint)
8026 {
8027 annotate_field (4);
8028 uiout->field_skip ("addr");
8029 }
8030
8031 std::string msg;
8032 annotate_field (5);
8033 if (self->is_load)
8034 {
8035 if (self->regex)
8036 msg = string_printf (_("load of library matching %s"), self->regex);
8037 else
8038 msg = _("load of library");
8039 }
8040 else
8041 {
8042 if (self->regex)
8043 msg = string_printf (_("unload of library matching %s"), self->regex);
8044 else
8045 msg = _("unload of library");
8046 }
8047 uiout->field_string ("what", msg);
8048
8049 if (uiout->is_mi_like_p ())
8050 uiout->field_string ("catch-type", self->is_load ? "load" : "unload");
8051 }
8052
8053 static void
8054 print_mention_catch_solib (struct breakpoint *b)
8055 {
8056 struct solib_catchpoint *self = (struct solib_catchpoint *) b;
8057
8058 printf_filtered (_("Catchpoint %d (%s)"), b->number,
8059 self->is_load ? "load" : "unload");
8060 }
8061
8062 static void
8063 print_recreate_catch_solib (struct breakpoint *b, struct ui_file *fp)
8064 {
8065 struct solib_catchpoint *self = (struct solib_catchpoint *) b;
8066
8067 fprintf_unfiltered (fp, "%s %s",
8068 b->disposition == disp_del ? "tcatch" : "catch",
8069 self->is_load ? "load" : "unload");
8070 if (self->regex)
8071 fprintf_unfiltered (fp, " %s", self->regex);
8072 fprintf_unfiltered (fp, "\n");
8073 }
8074
8075 static struct breakpoint_ops catch_solib_breakpoint_ops;
8076
8077 /* Shared helper function (MI and CLI) for creating and installing
8078 a shared object event catchpoint. If IS_LOAD is non-zero then
8079 the events to be caught are load events, otherwise they are
8080 unload events. If IS_TEMP is non-zero the catchpoint is a
8081 temporary one. If ENABLED is non-zero the catchpoint is
8082 created in an enabled state. */
8083
8084 void
8085 add_solib_catchpoint (const char *arg, int is_load, int is_temp, int enabled)
8086 {
8087 struct gdbarch *gdbarch = get_current_arch ();
8088
8089 if (!arg)
8090 arg = "";
8091 arg = skip_spaces (arg);
8092
8093 std::unique_ptr<solib_catchpoint> c (new solib_catchpoint ());
8094
8095 if (*arg != '\0')
8096 {
8097 c->compiled.reset (new compiled_regex (arg, REG_NOSUB,
8098 _("Invalid regexp")));
8099 c->regex = xstrdup (arg);
8100 }
8101
8102 c->is_load = is_load;
8103 init_catchpoint (c.get (), gdbarch, is_temp, NULL,
8104 &catch_solib_breakpoint_ops);
8105
8106 c->enable_state = enabled ? bp_enabled : bp_disabled;
8107
8108 install_breakpoint (0, std::move (c), 1);
8109 }
8110
8111 /* A helper function that does all the work for "catch load" and
8112 "catch unload". */
8113
8114 static void
8115 catch_load_or_unload (const char *arg, int from_tty, int is_load,
8116 struct cmd_list_element *command)
8117 {
8118 int tempflag;
8119 const int enabled = 1;
8120
8121 tempflag = get_cmd_context (command) == CATCH_TEMPORARY;
8122
8123 add_solib_catchpoint (arg, is_load, tempflag, enabled);
8124 }
8125
8126 static void
8127 catch_load_command_1 (const char *arg, int from_tty,
8128 struct cmd_list_element *command)
8129 {
8130 catch_load_or_unload (arg, from_tty, 1, command);
8131 }
8132
8133 static void
8134 catch_unload_command_1 (const char *arg, int from_tty,
8135 struct cmd_list_element *command)
8136 {
8137 catch_load_or_unload (arg, from_tty, 0, command);
8138 }
8139
8140 /* Initialize a new breakpoint of the bp_catchpoint kind. If TEMPFLAG
8141 is non-zero, then make the breakpoint temporary. If COND_STRING is
8142 not NULL, then store it in the breakpoint. OPS, if not NULL, is
8143 the breakpoint_ops structure associated to the catchpoint. */
8144
8145 void
8146 init_catchpoint (struct breakpoint *b,
8147 struct gdbarch *gdbarch, int tempflag,
8148 const char *cond_string,
8149 const struct breakpoint_ops *ops)
8150 {
8151 symtab_and_line sal;
8152 sal.pspace = current_program_space;
8153
8154 init_raw_breakpoint (b, gdbarch, sal, bp_catchpoint, ops);
8155
8156 b->cond_string = (cond_string == NULL) ? NULL : xstrdup (cond_string);
8157 b->disposition = tempflag ? disp_del : disp_donttouch;
8158 }
8159
8160 void
8161 install_breakpoint (int internal, std::unique_ptr<breakpoint> &&arg, int update_gll)
8162 {
8163 breakpoint *b = add_to_breakpoint_chain (std::move (arg));
8164 set_breakpoint_number (internal, b);
8165 if (is_tracepoint (b))
8166 set_tracepoint_count (breakpoint_count);
8167 if (!internal)
8168 mention (b);
8169 gdb::observers::breakpoint_created.notify (b);
8170
8171 if (update_gll)
8172 update_global_location_list (UGLL_MAY_INSERT);
8173 }
8174
8175 static void
8176 create_fork_vfork_event_catchpoint (struct gdbarch *gdbarch,
8177 int tempflag, const char *cond_string,
8178 const struct breakpoint_ops *ops)
8179 {
8180 std::unique_ptr<fork_catchpoint> c (new fork_catchpoint ());
8181
8182 init_catchpoint (c.get (), gdbarch, tempflag, cond_string, ops);
8183
8184 c->forked_inferior_pid = null_ptid;
8185
8186 install_breakpoint (0, std::move (c), 1);
8187 }
8188
8189 /* Exec catchpoints. */
8190
8191 /* An instance of this type is used to represent an exec catchpoint.
8192 A breakpoint is really of this type iff its ops pointer points to
8193 CATCH_EXEC_BREAKPOINT_OPS. */
8194
8195 struct exec_catchpoint : public breakpoint
8196 {
8197 ~exec_catchpoint () override;
8198
8199 /* Filename of a program whose exec triggered this catchpoint.
8200 This field is only valid immediately after this catchpoint has
8201 triggered. */
8202 char *exec_pathname;
8203 };
8204
8205 /* Exec catchpoint destructor. */
8206
8207 exec_catchpoint::~exec_catchpoint ()
8208 {
8209 xfree (this->exec_pathname);
8210 }
8211
8212 static int
8213 insert_catch_exec (struct bp_location *bl)
8214 {
8215 return target_insert_exec_catchpoint (inferior_ptid.pid ());
8216 }
8217
8218 static int
8219 remove_catch_exec (struct bp_location *bl, enum remove_bp_reason reason)
8220 {
8221 return target_remove_exec_catchpoint (inferior_ptid.pid ());
8222 }
8223
8224 static int
8225 breakpoint_hit_catch_exec (const struct bp_location *bl,
8226 const address_space *aspace, CORE_ADDR bp_addr,
8227 const struct target_waitstatus *ws)
8228 {
8229 struct exec_catchpoint *c = (struct exec_catchpoint *) bl->owner;
8230
8231 if (ws->kind != TARGET_WAITKIND_EXECD)
8232 return 0;
8233
8234 c->exec_pathname = xstrdup (ws->value.execd_pathname);
8235 return 1;
8236 }
8237
8238 static enum print_stop_action
8239 print_it_catch_exec (bpstat bs)
8240 {
8241 struct ui_out *uiout = current_uiout;
8242 struct breakpoint *b = bs->breakpoint_at;
8243 struct exec_catchpoint *c = (struct exec_catchpoint *) b;
8244
8245 annotate_catchpoint (b->number);
8246 maybe_print_thread_hit_breakpoint (uiout);
8247 if (b->disposition == disp_del)
8248 uiout->text ("Temporary catchpoint ");
8249 else
8250 uiout->text ("Catchpoint ");
8251 if (uiout->is_mi_like_p ())
8252 {
8253 uiout->field_string ("reason", async_reason_lookup (EXEC_ASYNC_EXEC));
8254 uiout->field_string ("disp", bpdisp_text (b->disposition));
8255 }
8256 uiout->field_int ("bkptno", b->number);
8257 uiout->text (" (exec'd ");
8258 uiout->field_string ("new-exec", c->exec_pathname);
8259 uiout->text ("), ");
8260
8261 return PRINT_SRC_AND_LOC;
8262 }
8263
8264 static void
8265 print_one_catch_exec (struct breakpoint *b, struct bp_location **last_loc)
8266 {
8267 struct exec_catchpoint *c = (struct exec_catchpoint *) b;
8268 struct value_print_options opts;
8269 struct ui_out *uiout = current_uiout;
8270
8271 get_user_print_options (&opts);
8272
8273 /* Field 4, the address, is omitted (which makes the columns
8274 not line up too nicely with the headers, but the effect
8275 is relatively readable). */
8276 if (opts.addressprint)
8277 uiout->field_skip ("addr");
8278 annotate_field (5);
8279 uiout->text ("exec");
8280 if (c->exec_pathname != NULL)
8281 {
8282 uiout->text (", program \"");
8283 uiout->field_string ("what", c->exec_pathname);
8284 uiout->text ("\" ");
8285 }
8286
8287 if (uiout->is_mi_like_p ())
8288 uiout->field_string ("catch-type", "exec");
8289 }
8290
8291 static void
8292 print_mention_catch_exec (struct breakpoint *b)
8293 {
8294 printf_filtered (_("Catchpoint %d (exec)"), b->number);
8295 }
8296
8297 /* Implement the "print_recreate" breakpoint_ops method for exec
8298 catchpoints. */
8299
8300 static void
8301 print_recreate_catch_exec (struct breakpoint *b, struct ui_file *fp)
8302 {
8303 fprintf_unfiltered (fp, "catch exec");
8304 print_recreate_thread (b, fp);
8305 }
8306
8307 static struct breakpoint_ops catch_exec_breakpoint_ops;
8308
8309 static int
8310 hw_breakpoint_used_count (void)
8311 {
8312 int i = 0;
8313 struct breakpoint *b;
8314 struct bp_location *bl;
8315
8316 ALL_BREAKPOINTS (b)
8317 {
8318 if (b->type == bp_hardware_breakpoint && breakpoint_enabled (b))
8319 for (bl = b->loc; bl; bl = bl->next)
8320 {
8321 /* Special types of hardware breakpoints may use more than
8322 one register. */
8323 i += b->ops->resources_needed (bl);
8324 }
8325 }
8326
8327 return i;
8328 }
8329
8330 /* Returns the resources B would use if it were a hardware
8331 watchpoint. */
8332
8333 static int
8334 hw_watchpoint_use_count (struct breakpoint *b)
8335 {
8336 int i = 0;
8337 struct bp_location *bl;
8338
8339 if (!breakpoint_enabled (b))
8340 return 0;
8341
8342 for (bl = b->loc; bl; bl = bl->next)
8343 {
8344 /* Special types of hardware watchpoints may use more than
8345 one register. */
8346 i += b->ops->resources_needed (bl);
8347 }
8348
8349 return i;
8350 }
8351
8352 /* Returns the sum the used resources of all hardware watchpoints of
8353 type TYPE in the breakpoints list. Also returns in OTHER_TYPE_USED
8354 the sum of the used resources of all hardware watchpoints of other
8355 types _not_ TYPE. */
8356
8357 static int
8358 hw_watchpoint_used_count_others (struct breakpoint *except,
8359 enum bptype type, int *other_type_used)
8360 {
8361 int i = 0;
8362 struct breakpoint *b;
8363
8364 *other_type_used = 0;
8365 ALL_BREAKPOINTS (b)
8366 {
8367 if (b == except)
8368 continue;
8369 if (!breakpoint_enabled (b))
8370 continue;
8371
8372 if (b->type == type)
8373 i += hw_watchpoint_use_count (b);
8374 else if (is_hardware_watchpoint (b))
8375 *other_type_used = 1;
8376 }
8377
8378 return i;
8379 }
8380
8381 void
8382 disable_watchpoints_before_interactive_call_start (void)
8383 {
8384 struct breakpoint *b;
8385
8386 ALL_BREAKPOINTS (b)
8387 {
8388 if (is_watchpoint (b) && breakpoint_enabled (b))
8389 {
8390 b->enable_state = bp_call_disabled;
8391 update_global_location_list (UGLL_DONT_INSERT);
8392 }
8393 }
8394 }
8395
8396 void
8397 enable_watchpoints_after_interactive_call_stop (void)
8398 {
8399 struct breakpoint *b;
8400
8401 ALL_BREAKPOINTS (b)
8402 {
8403 if (is_watchpoint (b) && b->enable_state == bp_call_disabled)
8404 {
8405 b->enable_state = bp_enabled;
8406 update_global_location_list (UGLL_MAY_INSERT);
8407 }
8408 }
8409 }
8410
8411 void
8412 disable_breakpoints_before_startup (void)
8413 {
8414 current_program_space->executing_startup = 1;
8415 update_global_location_list (UGLL_DONT_INSERT);
8416 }
8417
8418 void
8419 enable_breakpoints_after_startup (void)
8420 {
8421 current_program_space->executing_startup = 0;
8422 breakpoint_re_set ();
8423 }
8424
8425 /* Create a new single-step breakpoint for thread THREAD, with no
8426 locations. */
8427
8428 static struct breakpoint *
8429 new_single_step_breakpoint (int thread, struct gdbarch *gdbarch)
8430 {
8431 std::unique_ptr<breakpoint> b (new breakpoint ());
8432
8433 init_raw_breakpoint_without_location (b.get (), gdbarch, bp_single_step,
8434 &momentary_breakpoint_ops);
8435
8436 b->disposition = disp_donttouch;
8437 b->frame_id = null_frame_id;
8438
8439 b->thread = thread;
8440 gdb_assert (b->thread != 0);
8441
8442 return add_to_breakpoint_chain (std::move (b));
8443 }
8444
8445 /* Set a momentary breakpoint of type TYPE at address specified by
8446 SAL. If FRAME_ID is valid, the breakpoint is restricted to that
8447 frame. */
8448
8449 breakpoint_up
8450 set_momentary_breakpoint (struct gdbarch *gdbarch, struct symtab_and_line sal,
8451 struct frame_id frame_id, enum bptype type)
8452 {
8453 struct breakpoint *b;
8454
8455 /* If FRAME_ID is valid, it should be a real frame, not an inlined or
8456 tail-called one. */
8457 gdb_assert (!frame_id_artificial_p (frame_id));
8458
8459 b = set_raw_breakpoint (gdbarch, sal, type, &momentary_breakpoint_ops);
8460 b->enable_state = bp_enabled;
8461 b->disposition = disp_donttouch;
8462 b->frame_id = frame_id;
8463
8464 b->thread = inferior_thread ()->global_num;
8465
8466 update_global_location_list_nothrow (UGLL_MAY_INSERT);
8467
8468 return breakpoint_up (b);
8469 }
8470
8471 /* Make a momentary breakpoint based on the master breakpoint ORIG.
8472 The new breakpoint will have type TYPE, use OPS as its
8473 breakpoint_ops, and will set enabled to LOC_ENABLED. */
8474
8475 static struct breakpoint *
8476 momentary_breakpoint_from_master (struct breakpoint *orig,
8477 enum bptype type,
8478 const struct breakpoint_ops *ops,
8479 int loc_enabled)
8480 {
8481 struct breakpoint *copy;
8482
8483 copy = set_raw_breakpoint_without_location (orig->gdbarch, type, ops);
8484 copy->loc = allocate_bp_location (copy);
8485 set_breakpoint_location_function (copy->loc, 1);
8486
8487 copy->loc->gdbarch = orig->loc->gdbarch;
8488 copy->loc->requested_address = orig->loc->requested_address;
8489 copy->loc->address = orig->loc->address;
8490 copy->loc->section = orig->loc->section;
8491 copy->loc->pspace = orig->loc->pspace;
8492 copy->loc->probe = orig->loc->probe;
8493 copy->loc->line_number = orig->loc->line_number;
8494 copy->loc->symtab = orig->loc->symtab;
8495 copy->loc->enabled = loc_enabled;
8496 copy->frame_id = orig->frame_id;
8497 copy->thread = orig->thread;
8498 copy->pspace = orig->pspace;
8499
8500 copy->enable_state = bp_enabled;
8501 copy->disposition = disp_donttouch;
8502 copy->number = internal_breakpoint_number--;
8503
8504 update_global_location_list_nothrow (UGLL_DONT_INSERT);
8505 return copy;
8506 }
8507
8508 /* Make a deep copy of momentary breakpoint ORIG. Returns NULL if
8509 ORIG is NULL. */
8510
8511 struct breakpoint *
8512 clone_momentary_breakpoint (struct breakpoint *orig)
8513 {
8514 /* If there's nothing to clone, then return nothing. */
8515 if (orig == NULL)
8516 return NULL;
8517
8518 return momentary_breakpoint_from_master (orig, orig->type, orig->ops, 0);
8519 }
8520
8521 breakpoint_up
8522 set_momentary_breakpoint_at_pc (struct gdbarch *gdbarch, CORE_ADDR pc,
8523 enum bptype type)
8524 {
8525 struct symtab_and_line sal;
8526
8527 sal = find_pc_line (pc, 0);
8528 sal.pc = pc;
8529 sal.section = find_pc_overlay (pc);
8530 sal.explicit_pc = 1;
8531
8532 return set_momentary_breakpoint (gdbarch, sal, null_frame_id, type);
8533 }
8534 \f
8535
8536 /* Tell the user we have just set a breakpoint B. */
8537
8538 static void
8539 mention (struct breakpoint *b)
8540 {
8541 b->ops->print_mention (b);
8542 current_uiout->text ("\n");
8543 }
8544 \f
8545
8546 static int bp_loc_is_permanent (struct bp_location *loc);
8547
8548 static struct bp_location *
8549 add_location_to_breakpoint (struct breakpoint *b,
8550 const struct symtab_and_line *sal)
8551 {
8552 struct bp_location *loc, **tmp;
8553 CORE_ADDR adjusted_address;
8554 struct gdbarch *loc_gdbarch = get_sal_arch (*sal);
8555
8556 if (loc_gdbarch == NULL)
8557 loc_gdbarch = b->gdbarch;
8558
8559 /* Adjust the breakpoint's address prior to allocating a location.
8560 Once we call allocate_bp_location(), that mostly uninitialized
8561 location will be placed on the location chain. Adjustment of the
8562 breakpoint may cause target_read_memory() to be called and we do
8563 not want its scan of the location chain to find a breakpoint and
8564 location that's only been partially initialized. */
8565 adjusted_address = adjust_breakpoint_address (loc_gdbarch,
8566 sal->pc, b->type);
8567
8568 /* Sort the locations by their ADDRESS. */
8569 loc = allocate_bp_location (b);
8570 for (tmp = &(b->loc); *tmp != NULL && (*tmp)->address <= adjusted_address;
8571 tmp = &((*tmp)->next))
8572 ;
8573 loc->next = *tmp;
8574 *tmp = loc;
8575
8576 loc->requested_address = sal->pc;
8577 loc->address = adjusted_address;
8578 loc->pspace = sal->pspace;
8579 loc->probe.prob = sal->prob;
8580 loc->probe.objfile = sal->objfile;
8581 gdb_assert (loc->pspace != NULL);
8582 loc->section = sal->section;
8583 loc->gdbarch = loc_gdbarch;
8584 loc->line_number = sal->line;
8585 loc->symtab = sal->symtab;
8586 loc->symbol = sal->symbol;
8587 loc->msymbol = sal->msymbol;
8588 loc->objfile = sal->objfile;
8589
8590 set_breakpoint_location_function (loc,
8591 sal->explicit_pc || sal->explicit_line);
8592
8593 /* While by definition, permanent breakpoints are already present in the
8594 code, we don't mark the location as inserted. Normally one would expect
8595 that GDB could rely on that breakpoint instruction to stop the program,
8596 thus removing the need to insert its own breakpoint, except that executing
8597 the breakpoint instruction can kill the target instead of reporting a
8598 SIGTRAP. E.g., on SPARC, when interrupts are disabled, executing the
8599 instruction resets the CPU, so QEMU 2.0.0 for SPARC correspondingly dies
8600 with "Trap 0x02 while interrupts disabled, Error state". Letting the
8601 breakpoint be inserted normally results in QEMU knowing about the GDB
8602 breakpoint, and thus trap before the breakpoint instruction is executed.
8603 (If GDB later needs to continue execution past the permanent breakpoint,
8604 it manually increments the PC, thus avoiding executing the breakpoint
8605 instruction.) */
8606 if (bp_loc_is_permanent (loc))
8607 loc->permanent = 1;
8608
8609 return loc;
8610 }
8611 \f
8612
8613 /* See breakpoint.h. */
8614
8615 int
8616 program_breakpoint_here_p (struct gdbarch *gdbarch, CORE_ADDR address)
8617 {
8618 int len;
8619 CORE_ADDR addr;
8620 const gdb_byte *bpoint;
8621 gdb_byte *target_mem;
8622
8623 addr = address;
8624 bpoint = gdbarch_breakpoint_from_pc (gdbarch, &addr, &len);
8625
8626 /* Software breakpoints unsupported? */
8627 if (bpoint == NULL)
8628 return 0;
8629
8630 target_mem = (gdb_byte *) alloca (len);
8631
8632 /* Enable the automatic memory restoration from breakpoints while
8633 we read the memory. Otherwise we could say about our temporary
8634 breakpoints they are permanent. */
8635 scoped_restore restore_memory
8636 = make_scoped_restore_show_memory_breakpoints (0);
8637
8638 if (target_read_memory (address, target_mem, len) == 0
8639 && memcmp (target_mem, bpoint, len) == 0)
8640 return 1;
8641
8642 return 0;
8643 }
8644
8645 /* Return 1 if LOC is pointing to a permanent breakpoint,
8646 return 0 otherwise. */
8647
8648 static int
8649 bp_loc_is_permanent (struct bp_location *loc)
8650 {
8651 gdb_assert (loc != NULL);
8652
8653 /* If we have a catchpoint or a watchpoint, just return 0. We should not
8654 attempt to read from the addresses the locations of these breakpoint types
8655 point to. program_breakpoint_here_p, below, will attempt to read
8656 memory. */
8657 if (!breakpoint_address_is_meaningful (loc->owner))
8658 return 0;
8659
8660 scoped_restore_current_pspace_and_thread restore_pspace_thread;
8661 switch_to_program_space_and_thread (loc->pspace);
8662 return program_breakpoint_here_p (loc->gdbarch, loc->address);
8663 }
8664
8665 /* Build a command list for the dprintf corresponding to the current
8666 settings of the dprintf style options. */
8667
8668 static void
8669 update_dprintf_command_list (struct breakpoint *b)
8670 {
8671 char *dprintf_args = b->extra_string;
8672 char *printf_line = NULL;
8673
8674 if (!dprintf_args)
8675 return;
8676
8677 dprintf_args = skip_spaces (dprintf_args);
8678
8679 /* Allow a comma, as it may have terminated a location, but don't
8680 insist on it. */
8681 if (*dprintf_args == ',')
8682 ++dprintf_args;
8683 dprintf_args = skip_spaces (dprintf_args);
8684
8685 if (*dprintf_args != '"')
8686 error (_("Bad format string, missing '\"'."));
8687
8688 if (strcmp (dprintf_style, dprintf_style_gdb) == 0)
8689 printf_line = xstrprintf ("printf %s", dprintf_args);
8690 else if (strcmp (dprintf_style, dprintf_style_call) == 0)
8691 {
8692 if (!dprintf_function)
8693 error (_("No function supplied for dprintf call"));
8694
8695 if (dprintf_channel && strlen (dprintf_channel) > 0)
8696 printf_line = xstrprintf ("call (void) %s (%s,%s)",
8697 dprintf_function,
8698 dprintf_channel,
8699 dprintf_args);
8700 else
8701 printf_line = xstrprintf ("call (void) %s (%s)",
8702 dprintf_function,
8703 dprintf_args);
8704 }
8705 else if (strcmp (dprintf_style, dprintf_style_agent) == 0)
8706 {
8707 if (target_can_run_breakpoint_commands ())
8708 printf_line = xstrprintf ("agent-printf %s", dprintf_args);
8709 else
8710 {
8711 warning (_("Target cannot run dprintf commands, falling back to GDB printf"));
8712 printf_line = xstrprintf ("printf %s", dprintf_args);
8713 }
8714 }
8715 else
8716 internal_error (__FILE__, __LINE__,
8717 _("Invalid dprintf style."));
8718
8719 gdb_assert (printf_line != NULL);
8720
8721 /* Manufacture a printf sequence. */
8722 struct command_line *printf_cmd_line
8723 = new struct command_line (simple_control, printf_line);
8724 breakpoint_set_commands (b, counted_command_line (printf_cmd_line,
8725 command_lines_deleter ()));
8726 }
8727
8728 /* Update all dprintf commands, making their command lists reflect
8729 current style settings. */
8730
8731 static void
8732 update_dprintf_commands (const char *args, int from_tty,
8733 struct cmd_list_element *c)
8734 {
8735 struct breakpoint *b;
8736
8737 ALL_BREAKPOINTS (b)
8738 {
8739 if (b->type == bp_dprintf)
8740 update_dprintf_command_list (b);
8741 }
8742 }
8743
8744 /* Create a breakpoint with SAL as location. Use LOCATION
8745 as a description of the location, and COND_STRING
8746 as condition expression. If LOCATION is NULL then create an
8747 "address location" from the address in the SAL. */
8748
8749 static void
8750 init_breakpoint_sal (struct breakpoint *b, struct gdbarch *gdbarch,
8751 gdb::array_view<const symtab_and_line> sals,
8752 event_location_up &&location,
8753 gdb::unique_xmalloc_ptr<char> filter,
8754 gdb::unique_xmalloc_ptr<char> cond_string,
8755 gdb::unique_xmalloc_ptr<char> extra_string,
8756 enum bptype type, enum bpdisp disposition,
8757 int thread, int task, int ignore_count,
8758 const struct breakpoint_ops *ops, int from_tty,
8759 int enabled, int internal, unsigned flags,
8760 int display_canonical)
8761 {
8762 int i;
8763
8764 if (type == bp_hardware_breakpoint)
8765 {
8766 int target_resources_ok;
8767
8768 i = hw_breakpoint_used_count ();
8769 target_resources_ok =
8770 target_can_use_hardware_watchpoint (bp_hardware_breakpoint,
8771 i + 1, 0);
8772 if (target_resources_ok == 0)
8773 error (_("No hardware breakpoint support in the target."));
8774 else if (target_resources_ok < 0)
8775 error (_("Hardware breakpoints used exceeds limit."));
8776 }
8777
8778 gdb_assert (!sals.empty ());
8779
8780 for (const auto &sal : sals)
8781 {
8782 struct bp_location *loc;
8783
8784 if (from_tty)
8785 {
8786 struct gdbarch *loc_gdbarch = get_sal_arch (sal);
8787 if (!loc_gdbarch)
8788 loc_gdbarch = gdbarch;
8789
8790 describe_other_breakpoints (loc_gdbarch,
8791 sal.pspace, sal.pc, sal.section, thread);
8792 }
8793
8794 if (&sal == &sals[0])
8795 {
8796 init_raw_breakpoint (b, gdbarch, sal, type, ops);
8797 b->thread = thread;
8798 b->task = task;
8799
8800 b->cond_string = cond_string.release ();
8801 b->extra_string = extra_string.release ();
8802 b->ignore_count = ignore_count;
8803 b->enable_state = enabled ? bp_enabled : bp_disabled;
8804 b->disposition = disposition;
8805
8806 if ((flags & CREATE_BREAKPOINT_FLAGS_INSERTED) != 0)
8807 b->loc->inserted = 1;
8808
8809 if (type == bp_static_tracepoint)
8810 {
8811 struct tracepoint *t = (struct tracepoint *) b;
8812 struct static_tracepoint_marker marker;
8813
8814 if (strace_marker_p (b))
8815 {
8816 /* We already know the marker exists, otherwise, we
8817 wouldn't see a sal for it. */
8818 const char *p
8819 = &event_location_to_string (b->location.get ())[3];
8820 const char *endp;
8821
8822 p = skip_spaces (p);
8823
8824 endp = skip_to_space (p);
8825
8826 t->static_trace_marker_id.assign (p, endp - p);
8827
8828 printf_filtered (_("Probed static tracepoint "
8829 "marker \"%s\"\n"),
8830 t->static_trace_marker_id.c_str ());
8831 }
8832 else if (target_static_tracepoint_marker_at (sal.pc, &marker))
8833 {
8834 t->static_trace_marker_id = std::move (marker.str_id);
8835
8836 printf_filtered (_("Probed static tracepoint "
8837 "marker \"%s\"\n"),
8838 t->static_trace_marker_id.c_str ());
8839 }
8840 else
8841 warning (_("Couldn't determine the static "
8842 "tracepoint marker to probe"));
8843 }
8844
8845 loc = b->loc;
8846 }
8847 else
8848 {
8849 loc = add_location_to_breakpoint (b, &sal);
8850 if ((flags & CREATE_BREAKPOINT_FLAGS_INSERTED) != 0)
8851 loc->inserted = 1;
8852 }
8853
8854 if (b->cond_string)
8855 {
8856 const char *arg = b->cond_string;
8857
8858 loc->cond = parse_exp_1 (&arg, loc->address,
8859 block_for_pc (loc->address), 0);
8860 if (*arg)
8861 error (_("Garbage '%s' follows condition"), arg);
8862 }
8863
8864 /* Dynamic printf requires and uses additional arguments on the
8865 command line, otherwise it's an error. */
8866 if (type == bp_dprintf)
8867 {
8868 if (b->extra_string)
8869 update_dprintf_command_list (b);
8870 else
8871 error (_("Format string required"));
8872 }
8873 else if (b->extra_string)
8874 error (_("Garbage '%s' at end of command"), b->extra_string);
8875 }
8876
8877 b->display_canonical = display_canonical;
8878 if (location != NULL)
8879 b->location = std::move (location);
8880 else
8881 b->location = new_address_location (b->loc->address, NULL, 0);
8882 b->filter = filter.release ();
8883 }
8884
8885 static void
8886 create_breakpoint_sal (struct gdbarch *gdbarch,
8887 gdb::array_view<const symtab_and_line> sals,
8888 event_location_up &&location,
8889 gdb::unique_xmalloc_ptr<char> filter,
8890 gdb::unique_xmalloc_ptr<char> cond_string,
8891 gdb::unique_xmalloc_ptr<char> extra_string,
8892 enum bptype type, enum bpdisp disposition,
8893 int thread, int task, int ignore_count,
8894 const struct breakpoint_ops *ops, int from_tty,
8895 int enabled, int internal, unsigned flags,
8896 int display_canonical)
8897 {
8898 std::unique_ptr<breakpoint> b = new_breakpoint_from_type (type);
8899
8900 init_breakpoint_sal (b.get (), gdbarch,
8901 sals, std::move (location),
8902 std::move (filter),
8903 std::move (cond_string),
8904 std::move (extra_string),
8905 type, disposition,
8906 thread, task, ignore_count,
8907 ops, from_tty,
8908 enabled, internal, flags,
8909 display_canonical);
8910
8911 install_breakpoint (internal, std::move (b), 0);
8912 }
8913
8914 /* Add SALS.nelts breakpoints to the breakpoint table. For each
8915 SALS.sal[i] breakpoint, include the corresponding ADDR_STRING[i]
8916 value. COND_STRING, if not NULL, specified the condition to be
8917 used for all breakpoints. Essentially the only case where
8918 SALS.nelts is not 1 is when we set a breakpoint on an overloaded
8919 function. In that case, it's still not possible to specify
8920 separate conditions for different overloaded functions, so
8921 we take just a single condition string.
8922
8923 NOTE: If the function succeeds, the caller is expected to cleanup
8924 the arrays ADDR_STRING, COND_STRING, and SALS (but not the
8925 array contents). If the function fails (error() is called), the
8926 caller is expected to cleanups both the ADDR_STRING, COND_STRING,
8927 COND and SALS arrays and each of those arrays contents. */
8928
8929 static void
8930 create_breakpoints_sal (struct gdbarch *gdbarch,
8931 struct linespec_result *canonical,
8932 gdb::unique_xmalloc_ptr<char> cond_string,
8933 gdb::unique_xmalloc_ptr<char> extra_string,
8934 enum bptype type, enum bpdisp disposition,
8935 int thread, int task, int ignore_count,
8936 const struct breakpoint_ops *ops, int from_tty,
8937 int enabled, int internal, unsigned flags)
8938 {
8939 if (canonical->pre_expanded)
8940 gdb_assert (canonical->lsals.size () == 1);
8941
8942 for (const auto &lsal : canonical->lsals)
8943 {
8944 /* Note that 'location' can be NULL in the case of a plain
8945 'break', without arguments. */
8946 event_location_up location
8947 = (canonical->location != NULL
8948 ? copy_event_location (canonical->location.get ()) : NULL);
8949 gdb::unique_xmalloc_ptr<char> filter_string
8950 (lsal.canonical != NULL ? xstrdup (lsal.canonical) : NULL);
8951
8952 create_breakpoint_sal (gdbarch, lsal.sals,
8953 std::move (location),
8954 std::move (filter_string),
8955 std::move (cond_string),
8956 std::move (extra_string),
8957 type, disposition,
8958 thread, task, ignore_count, ops,
8959 from_tty, enabled, internal, flags,
8960 canonical->special_display);
8961 }
8962 }
8963
8964 /* Parse LOCATION which is assumed to be a SAL specification possibly
8965 followed by conditionals. On return, SALS contains an array of SAL
8966 addresses found. LOCATION points to the end of the SAL (for
8967 linespec locations).
8968
8969 The array and the line spec strings are allocated on the heap, it is
8970 the caller's responsibility to free them. */
8971
8972 static void
8973 parse_breakpoint_sals (const struct event_location *location,
8974 struct linespec_result *canonical)
8975 {
8976 struct symtab_and_line cursal;
8977
8978 if (event_location_type (location) == LINESPEC_LOCATION)
8979 {
8980 const char *spec = get_linespec_location (location)->spec_string;
8981
8982 if (spec == NULL)
8983 {
8984 /* The last displayed codepoint, if it's valid, is our default
8985 breakpoint address. */
8986 if (last_displayed_sal_is_valid ())
8987 {
8988 /* Set sal's pspace, pc, symtab, and line to the values
8989 corresponding to the last call to print_frame_info.
8990 Be sure to reinitialize LINE with NOTCURRENT == 0
8991 as the breakpoint line number is inappropriate otherwise.
8992 find_pc_line would adjust PC, re-set it back. */
8993 symtab_and_line sal = get_last_displayed_sal ();
8994 CORE_ADDR pc = sal.pc;
8995
8996 sal = find_pc_line (pc, 0);
8997
8998 /* "break" without arguments is equivalent to "break *PC"
8999 where PC is the last displayed codepoint's address. So
9000 make sure to set sal.explicit_pc to prevent GDB from
9001 trying to expand the list of sals to include all other
9002 instances with the same symtab and line. */
9003 sal.pc = pc;
9004 sal.explicit_pc = 1;
9005
9006 struct linespec_sals lsal;
9007 lsal.sals = {sal};
9008 lsal.canonical = NULL;
9009
9010 canonical->lsals.push_back (std::move (lsal));
9011 return;
9012 }
9013 else
9014 error (_("No default breakpoint address now."));
9015 }
9016 }
9017
9018 /* Force almost all breakpoints to be in terms of the
9019 current_source_symtab (which is decode_line_1's default).
9020 This should produce the results we want almost all of the
9021 time while leaving default_breakpoint_* alone.
9022
9023 ObjC: However, don't match an Objective-C method name which
9024 may have a '+' or '-' succeeded by a '['. */
9025 cursal = get_current_source_symtab_and_line ();
9026 if (last_displayed_sal_is_valid ())
9027 {
9028 const char *spec = NULL;
9029
9030 if (event_location_type (location) == LINESPEC_LOCATION)
9031 spec = get_linespec_location (location)->spec_string;
9032
9033 if (!cursal.symtab
9034 || (spec != NULL
9035 && strchr ("+-", spec[0]) != NULL
9036 && spec[1] != '['))
9037 {
9038 decode_line_full (location, DECODE_LINE_FUNFIRSTLINE, NULL,
9039 get_last_displayed_symtab (),
9040 get_last_displayed_line (),
9041 canonical, NULL, NULL);
9042 return;
9043 }
9044 }
9045
9046 decode_line_full (location, DECODE_LINE_FUNFIRSTLINE, NULL,
9047 cursal.symtab, cursal.line, canonical, NULL, NULL);
9048 }
9049
9050
9051 /* Convert each SAL into a real PC. Verify that the PC can be
9052 inserted as a breakpoint. If it can't throw an error. */
9053
9054 static void
9055 breakpoint_sals_to_pc (std::vector<symtab_and_line> &sals)
9056 {
9057 for (auto &sal : sals)
9058 resolve_sal_pc (&sal);
9059 }
9060
9061 /* Fast tracepoints may have restrictions on valid locations. For
9062 instance, a fast tracepoint using a jump instead of a trap will
9063 likely have to overwrite more bytes than a trap would, and so can
9064 only be placed where the instruction is longer than the jump, or a
9065 multi-instruction sequence does not have a jump into the middle of
9066 it, etc. */
9067
9068 static void
9069 check_fast_tracepoint_sals (struct gdbarch *gdbarch,
9070 gdb::array_view<const symtab_and_line> sals)
9071 {
9072 for (const auto &sal : sals)
9073 {
9074 struct gdbarch *sarch;
9075
9076 sarch = get_sal_arch (sal);
9077 /* We fall back to GDBARCH if there is no architecture
9078 associated with SAL. */
9079 if (sarch == NULL)
9080 sarch = gdbarch;
9081 std::string msg;
9082 if (!gdbarch_fast_tracepoint_valid_at (sarch, sal.pc, &msg))
9083 error (_("May not have a fast tracepoint at %s%s"),
9084 paddress (sarch, sal.pc), msg.c_str ());
9085 }
9086 }
9087
9088 /* Given TOK, a string specification of condition and thread, as
9089 accepted by the 'break' command, extract the condition
9090 string and thread number and set *COND_STRING and *THREAD.
9091 PC identifies the context at which the condition should be parsed.
9092 If no condition is found, *COND_STRING is set to NULL.
9093 If no thread is found, *THREAD is set to -1. */
9094
9095 static void
9096 find_condition_and_thread (const char *tok, CORE_ADDR pc,
9097 char **cond_string, int *thread, int *task,
9098 char **rest)
9099 {
9100 *cond_string = NULL;
9101 *thread = -1;
9102 *task = 0;
9103 *rest = NULL;
9104
9105 while (tok && *tok)
9106 {
9107 const char *end_tok;
9108 int toklen;
9109 const char *cond_start = NULL;
9110 const char *cond_end = NULL;
9111
9112 tok = skip_spaces (tok);
9113
9114 if ((*tok == '"' || *tok == ',') && rest)
9115 {
9116 *rest = savestring (tok, strlen (tok));
9117 return;
9118 }
9119
9120 end_tok = skip_to_space (tok);
9121
9122 toklen = end_tok - tok;
9123
9124 if (toklen >= 1 && strncmp (tok, "if", toklen) == 0)
9125 {
9126 tok = cond_start = end_tok + 1;
9127 parse_exp_1 (&tok, pc, block_for_pc (pc), 0);
9128 cond_end = tok;
9129 *cond_string = savestring (cond_start, cond_end - cond_start);
9130 }
9131 else if (toklen >= 1 && strncmp (tok, "thread", toklen) == 0)
9132 {
9133 const char *tmptok;
9134 struct thread_info *thr;
9135
9136 tok = end_tok + 1;
9137 thr = parse_thread_id (tok, &tmptok);
9138 if (tok == tmptok)
9139 error (_("Junk after thread keyword."));
9140 *thread = thr->global_num;
9141 tok = tmptok;
9142 }
9143 else if (toklen >= 1 && strncmp (tok, "task", toklen) == 0)
9144 {
9145 char *tmptok;
9146
9147 tok = end_tok + 1;
9148 *task = strtol (tok, &tmptok, 0);
9149 if (tok == tmptok)
9150 error (_("Junk after task keyword."));
9151 if (!valid_task_id (*task))
9152 error (_("Unknown task %d."), *task);
9153 tok = tmptok;
9154 }
9155 else if (rest)
9156 {
9157 *rest = savestring (tok, strlen (tok));
9158 return;
9159 }
9160 else
9161 error (_("Junk at end of arguments."));
9162 }
9163 }
9164
9165 /* Decode a static tracepoint marker spec. */
9166
9167 static std::vector<symtab_and_line>
9168 decode_static_tracepoint_spec (const char **arg_p)
9169 {
9170 const char *p = &(*arg_p)[3];
9171 const char *endp;
9172
9173 p = skip_spaces (p);
9174
9175 endp = skip_to_space (p);
9176
9177 std::string marker_str (p, endp - p);
9178
9179 std::vector<static_tracepoint_marker> markers
9180 = target_static_tracepoint_markers_by_strid (marker_str.c_str ());
9181 if (markers.empty ())
9182 error (_("No known static tracepoint marker named %s"),
9183 marker_str.c_str ());
9184
9185 std::vector<symtab_and_line> sals;
9186 sals.reserve (markers.size ());
9187
9188 for (const static_tracepoint_marker &marker : markers)
9189 {
9190 symtab_and_line sal = find_pc_line (marker.address, 0);
9191 sal.pc = marker.address;
9192 sals.push_back (sal);
9193 }
9194
9195 *arg_p = endp;
9196 return sals;
9197 }
9198
9199 /* See breakpoint.h. */
9200
9201 int
9202 create_breakpoint (struct gdbarch *gdbarch,
9203 const struct event_location *location,
9204 const char *cond_string,
9205 int thread, const char *extra_string,
9206 int parse_extra,
9207 int tempflag, enum bptype type_wanted,
9208 int ignore_count,
9209 enum auto_boolean pending_break_support,
9210 const struct breakpoint_ops *ops,
9211 int from_tty, int enabled, int internal,
9212 unsigned flags)
9213 {
9214 struct linespec_result canonical;
9215 int pending = 0;
9216 int task = 0;
9217 int prev_bkpt_count = breakpoint_count;
9218
9219 gdb_assert (ops != NULL);
9220
9221 /* If extra_string isn't useful, set it to NULL. */
9222 if (extra_string != NULL && *extra_string == '\0')
9223 extra_string = NULL;
9224
9225 try
9226 {
9227 ops->create_sals_from_location (location, &canonical, type_wanted);
9228 }
9229 catch (const gdb_exception_error &e)
9230 {
9231 /* If caller is interested in rc value from parse, set
9232 value. */
9233 if (e.error == NOT_FOUND_ERROR)
9234 {
9235 /* If pending breakpoint support is turned off, throw
9236 error. */
9237
9238 if (pending_break_support == AUTO_BOOLEAN_FALSE)
9239 throw;
9240
9241 exception_print (gdb_stderr, e);
9242
9243 /* If pending breakpoint support is auto query and the user
9244 selects no, then simply return the error code. */
9245 if (pending_break_support == AUTO_BOOLEAN_AUTO
9246 && !nquery (_("Make %s pending on future shared library load? "),
9247 bptype_string (type_wanted)))
9248 return 0;
9249
9250 /* At this point, either the user was queried about setting
9251 a pending breakpoint and selected yes, or pending
9252 breakpoint behavior is on and thus a pending breakpoint
9253 is defaulted on behalf of the user. */
9254 pending = 1;
9255 }
9256 else
9257 throw;
9258 }
9259
9260 if (!pending && canonical.lsals.empty ())
9261 return 0;
9262
9263 /* Resolve all line numbers to PC's and verify that the addresses
9264 are ok for the target. */
9265 if (!pending)
9266 {
9267 for (auto &lsal : canonical.lsals)
9268 breakpoint_sals_to_pc (lsal.sals);
9269 }
9270
9271 /* Fast tracepoints may have additional restrictions on location. */
9272 if (!pending && type_wanted == bp_fast_tracepoint)
9273 {
9274 for (const auto &lsal : canonical.lsals)
9275 check_fast_tracepoint_sals (gdbarch, lsal.sals);
9276 }
9277
9278 /* Verify that condition can be parsed, before setting any
9279 breakpoints. Allocate a separate condition expression for each
9280 breakpoint. */
9281 if (!pending)
9282 {
9283 gdb::unique_xmalloc_ptr<char> cond_string_copy;
9284 gdb::unique_xmalloc_ptr<char> extra_string_copy;
9285
9286 if (parse_extra)
9287 {
9288 char *rest;
9289 char *cond;
9290
9291 const linespec_sals &lsal = canonical.lsals[0];
9292
9293 /* Here we only parse 'arg' to separate condition
9294 from thread number, so parsing in context of first
9295 sal is OK. When setting the breakpoint we'll
9296 re-parse it in context of each sal. */
9297
9298 find_condition_and_thread (extra_string, lsal.sals[0].pc,
9299 &cond, &thread, &task, &rest);
9300 cond_string_copy.reset (cond);
9301 extra_string_copy.reset (rest);
9302 }
9303 else
9304 {
9305 if (type_wanted != bp_dprintf
9306 && extra_string != NULL && *extra_string != '\0')
9307 error (_("Garbage '%s' at end of location"), extra_string);
9308
9309 /* Create a private copy of condition string. */
9310 if (cond_string)
9311 cond_string_copy.reset (xstrdup (cond_string));
9312 /* Create a private copy of any extra string. */
9313 if (extra_string)
9314 extra_string_copy.reset (xstrdup (extra_string));
9315 }
9316
9317 ops->create_breakpoints_sal (gdbarch, &canonical,
9318 std::move (cond_string_copy),
9319 std::move (extra_string_copy),
9320 type_wanted,
9321 tempflag ? disp_del : disp_donttouch,
9322 thread, task, ignore_count, ops,
9323 from_tty, enabled, internal, flags);
9324 }
9325 else
9326 {
9327 std::unique_ptr <breakpoint> b = new_breakpoint_from_type (type_wanted);
9328
9329 init_raw_breakpoint_without_location (b.get (), gdbarch, type_wanted, ops);
9330 b->location = copy_event_location (location);
9331
9332 if (parse_extra)
9333 b->cond_string = NULL;
9334 else
9335 {
9336 /* Create a private copy of condition string. */
9337 b->cond_string = cond_string != NULL ? xstrdup (cond_string) : NULL;
9338 b->thread = thread;
9339 }
9340
9341 /* Create a private copy of any extra string. */
9342 b->extra_string = extra_string != NULL ? xstrdup (extra_string) : NULL;
9343 b->ignore_count = ignore_count;
9344 b->disposition = tempflag ? disp_del : disp_donttouch;
9345 b->condition_not_parsed = 1;
9346 b->enable_state = enabled ? bp_enabled : bp_disabled;
9347 if ((type_wanted != bp_breakpoint
9348 && type_wanted != bp_hardware_breakpoint) || thread != -1)
9349 b->pspace = current_program_space;
9350
9351 install_breakpoint (internal, std::move (b), 0);
9352 }
9353
9354 if (canonical.lsals.size () > 1)
9355 {
9356 warning (_("Multiple breakpoints were set.\nUse the "
9357 "\"delete\" command to delete unwanted breakpoints."));
9358 prev_breakpoint_count = prev_bkpt_count;
9359 }
9360
9361 update_global_location_list (UGLL_MAY_INSERT);
9362
9363 return 1;
9364 }
9365
9366 /* Set a breakpoint.
9367 ARG is a string describing breakpoint address,
9368 condition, and thread.
9369 FLAG specifies if a breakpoint is hardware on,
9370 and if breakpoint is temporary, using BP_HARDWARE_FLAG
9371 and BP_TEMPFLAG. */
9372
9373 static void
9374 break_command_1 (const char *arg, int flag, int from_tty)
9375 {
9376 int tempflag = flag & BP_TEMPFLAG;
9377 enum bptype type_wanted = (flag & BP_HARDWAREFLAG
9378 ? bp_hardware_breakpoint
9379 : bp_breakpoint);
9380 struct breakpoint_ops *ops;
9381
9382 event_location_up location = string_to_event_location (&arg, current_language);
9383
9384 /* Matching breakpoints on probes. */
9385 if (location != NULL
9386 && event_location_type (location.get ()) == PROBE_LOCATION)
9387 ops = &bkpt_probe_breakpoint_ops;
9388 else
9389 ops = &bkpt_breakpoint_ops;
9390
9391 create_breakpoint (get_current_arch (),
9392 location.get (),
9393 NULL, 0, arg, 1 /* parse arg */,
9394 tempflag, type_wanted,
9395 0 /* Ignore count */,
9396 pending_break_support,
9397 ops,
9398 from_tty,
9399 1 /* enabled */,
9400 0 /* internal */,
9401 0);
9402 }
9403
9404 /* Helper function for break_command_1 and disassemble_command. */
9405
9406 void
9407 resolve_sal_pc (struct symtab_and_line *sal)
9408 {
9409 CORE_ADDR pc;
9410
9411 if (sal->pc == 0 && sal->symtab != NULL)
9412 {
9413 if (!find_line_pc (sal->symtab, sal->line, &pc))
9414 error (_("No line %d in file \"%s\"."),
9415 sal->line, symtab_to_filename_for_display (sal->symtab));
9416 sal->pc = pc;
9417
9418 /* If this SAL corresponds to a breakpoint inserted using a line
9419 number, then skip the function prologue if necessary. */
9420 if (sal->explicit_line)
9421 skip_prologue_sal (sal);
9422 }
9423
9424 if (sal->section == 0 && sal->symtab != NULL)
9425 {
9426 const struct blockvector *bv;
9427 const struct block *b;
9428 struct symbol *sym;
9429
9430 bv = blockvector_for_pc_sect (sal->pc, 0, &b,
9431 SYMTAB_COMPUNIT (sal->symtab));
9432 if (bv != NULL)
9433 {
9434 sym = block_linkage_function (b);
9435 if (sym != NULL)
9436 {
9437 fixup_symbol_section (sym, SYMTAB_OBJFILE (sal->symtab));
9438 sal->section = SYMBOL_OBJ_SECTION (SYMTAB_OBJFILE (sal->symtab),
9439 sym);
9440 }
9441 else
9442 {
9443 /* It really is worthwhile to have the section, so we'll
9444 just have to look harder. This case can be executed
9445 if we have line numbers but no functions (as can
9446 happen in assembly source). */
9447
9448 scoped_restore_current_pspace_and_thread restore_pspace_thread;
9449 switch_to_program_space_and_thread (sal->pspace);
9450
9451 bound_minimal_symbol msym = lookup_minimal_symbol_by_pc (sal->pc);
9452 if (msym.minsym)
9453 sal->section = MSYMBOL_OBJ_SECTION (msym.objfile, msym.minsym);
9454 }
9455 }
9456 }
9457 }
9458
9459 void
9460 break_command (const char *arg, int from_tty)
9461 {
9462 break_command_1 (arg, 0, from_tty);
9463 }
9464
9465 void
9466 tbreak_command (const char *arg, int from_tty)
9467 {
9468 break_command_1 (arg, BP_TEMPFLAG, from_tty);
9469 }
9470
9471 static void
9472 hbreak_command (const char *arg, int from_tty)
9473 {
9474 break_command_1 (arg, BP_HARDWAREFLAG, from_tty);
9475 }
9476
9477 static void
9478 thbreak_command (const char *arg, int from_tty)
9479 {
9480 break_command_1 (arg, (BP_TEMPFLAG | BP_HARDWAREFLAG), from_tty);
9481 }
9482
9483 static void
9484 stop_command (const char *arg, int from_tty)
9485 {
9486 printf_filtered (_("Specify the type of breakpoint to set.\n\
9487 Usage: stop in <function | address>\n\
9488 stop at <line>\n"));
9489 }
9490
9491 static void
9492 stopin_command (const char *arg, int from_tty)
9493 {
9494 int badInput = 0;
9495
9496 if (arg == (char *) NULL)
9497 badInput = 1;
9498 else if (*arg != '*')
9499 {
9500 const char *argptr = arg;
9501 int hasColon = 0;
9502
9503 /* Look for a ':'. If this is a line number specification, then
9504 say it is bad, otherwise, it should be an address or
9505 function/method name. */
9506 while (*argptr && !hasColon)
9507 {
9508 hasColon = (*argptr == ':');
9509 argptr++;
9510 }
9511
9512 if (hasColon)
9513 badInput = (*argptr != ':'); /* Not a class::method */
9514 else
9515 badInput = isdigit (*arg); /* a simple line number */
9516 }
9517
9518 if (badInput)
9519 printf_filtered (_("Usage: stop in <function | address>\n"));
9520 else
9521 break_command_1 (arg, 0, from_tty);
9522 }
9523
9524 static void
9525 stopat_command (const char *arg, int from_tty)
9526 {
9527 int badInput = 0;
9528
9529 if (arg == (char *) NULL || *arg == '*') /* no line number */
9530 badInput = 1;
9531 else
9532 {
9533 const char *argptr = arg;
9534 int hasColon = 0;
9535
9536 /* Look for a ':'. If there is a '::' then get out, otherwise
9537 it is probably a line number. */
9538 while (*argptr && !hasColon)
9539 {
9540 hasColon = (*argptr == ':');
9541 argptr++;
9542 }
9543
9544 if (hasColon)
9545 badInput = (*argptr == ':'); /* we have class::method */
9546 else
9547 badInput = !isdigit (*arg); /* not a line number */
9548 }
9549
9550 if (badInput)
9551 printf_filtered (_("Usage: stop at LINE\n"));
9552 else
9553 break_command_1 (arg, 0, from_tty);
9554 }
9555
9556 /* The dynamic printf command is mostly like a regular breakpoint, but
9557 with a prewired command list consisting of a single output command,
9558 built from extra arguments supplied on the dprintf command
9559 line. */
9560
9561 static void
9562 dprintf_command (const char *arg, int from_tty)
9563 {
9564 event_location_up location = string_to_event_location (&arg, current_language);
9565
9566 /* If non-NULL, ARG should have been advanced past the location;
9567 the next character must be ','. */
9568 if (arg != NULL)
9569 {
9570 if (arg[0] != ',' || arg[1] == '\0')
9571 error (_("Format string required"));
9572 else
9573 {
9574 /* Skip the comma. */
9575 ++arg;
9576 }
9577 }
9578
9579 create_breakpoint (get_current_arch (),
9580 location.get (),
9581 NULL, 0, arg, 1 /* parse arg */,
9582 0, bp_dprintf,
9583 0 /* Ignore count */,
9584 pending_break_support,
9585 &dprintf_breakpoint_ops,
9586 from_tty,
9587 1 /* enabled */,
9588 0 /* internal */,
9589 0);
9590 }
9591
9592 static void
9593 agent_printf_command (const char *arg, int from_tty)
9594 {
9595 error (_("May only run agent-printf on the target"));
9596 }
9597
9598 /* Implement the "breakpoint_hit" breakpoint_ops method for
9599 ranged breakpoints. */
9600
9601 static int
9602 breakpoint_hit_ranged_breakpoint (const struct bp_location *bl,
9603 const address_space *aspace,
9604 CORE_ADDR bp_addr,
9605 const struct target_waitstatus *ws)
9606 {
9607 if (ws->kind != TARGET_WAITKIND_STOPPED
9608 || ws->value.sig != GDB_SIGNAL_TRAP)
9609 return 0;
9610
9611 return breakpoint_address_match_range (bl->pspace->aspace, bl->address,
9612 bl->length, aspace, bp_addr);
9613 }
9614
9615 /* Implement the "resources_needed" breakpoint_ops method for
9616 ranged breakpoints. */
9617
9618 static int
9619 resources_needed_ranged_breakpoint (const struct bp_location *bl)
9620 {
9621 return target_ranged_break_num_registers ();
9622 }
9623
9624 /* Implement the "print_it" breakpoint_ops method for
9625 ranged breakpoints. */
9626
9627 static enum print_stop_action
9628 print_it_ranged_breakpoint (bpstat bs)
9629 {
9630 struct breakpoint *b = bs->breakpoint_at;
9631 struct bp_location *bl = b->loc;
9632 struct ui_out *uiout = current_uiout;
9633
9634 gdb_assert (b->type == bp_hardware_breakpoint);
9635
9636 /* Ranged breakpoints have only one location. */
9637 gdb_assert (bl && bl->next == NULL);
9638
9639 annotate_breakpoint (b->number);
9640
9641 maybe_print_thread_hit_breakpoint (uiout);
9642
9643 if (b->disposition == disp_del)
9644 uiout->text ("Temporary ranged breakpoint ");
9645 else
9646 uiout->text ("Ranged breakpoint ");
9647 if (uiout->is_mi_like_p ())
9648 {
9649 uiout->field_string ("reason",
9650 async_reason_lookup (EXEC_ASYNC_BREAKPOINT_HIT));
9651 uiout->field_string ("disp", bpdisp_text (b->disposition));
9652 }
9653 uiout->field_int ("bkptno", b->number);
9654 uiout->text (", ");
9655
9656 return PRINT_SRC_AND_LOC;
9657 }
9658
9659 /* Implement the "print_one" breakpoint_ops method for
9660 ranged breakpoints. */
9661
9662 static void
9663 print_one_ranged_breakpoint (struct breakpoint *b,
9664 struct bp_location **last_loc)
9665 {
9666 struct bp_location *bl = b->loc;
9667 struct value_print_options opts;
9668 struct ui_out *uiout = current_uiout;
9669
9670 /* Ranged breakpoints have only one location. */
9671 gdb_assert (bl && bl->next == NULL);
9672
9673 get_user_print_options (&opts);
9674
9675 if (opts.addressprint)
9676 /* We don't print the address range here, it will be printed later
9677 by print_one_detail_ranged_breakpoint. */
9678 uiout->field_skip ("addr");
9679 annotate_field (5);
9680 print_breakpoint_location (b, bl);
9681 *last_loc = bl;
9682 }
9683
9684 /* Implement the "print_one_detail" breakpoint_ops method for
9685 ranged breakpoints. */
9686
9687 static void
9688 print_one_detail_ranged_breakpoint (const struct breakpoint *b,
9689 struct ui_out *uiout)
9690 {
9691 CORE_ADDR address_start, address_end;
9692 struct bp_location *bl = b->loc;
9693 string_file stb;
9694
9695 gdb_assert (bl);
9696
9697 address_start = bl->address;
9698 address_end = address_start + bl->length - 1;
9699
9700 uiout->text ("\taddress range: ");
9701 stb.printf ("[%s, %s]",
9702 print_core_address (bl->gdbarch, address_start),
9703 print_core_address (bl->gdbarch, address_end));
9704 uiout->field_stream ("addr", stb);
9705 uiout->text ("\n");
9706 }
9707
9708 /* Implement the "print_mention" breakpoint_ops method for
9709 ranged breakpoints. */
9710
9711 static void
9712 print_mention_ranged_breakpoint (struct breakpoint *b)
9713 {
9714 struct bp_location *bl = b->loc;
9715 struct ui_out *uiout = current_uiout;
9716
9717 gdb_assert (bl);
9718 gdb_assert (b->type == bp_hardware_breakpoint);
9719
9720 uiout->message (_("Hardware assisted ranged breakpoint %d from %s to %s."),
9721 b->number, paddress (bl->gdbarch, bl->address),
9722 paddress (bl->gdbarch, bl->address + bl->length - 1));
9723 }
9724
9725 /* Implement the "print_recreate" breakpoint_ops method for
9726 ranged breakpoints. */
9727
9728 static void
9729 print_recreate_ranged_breakpoint (struct breakpoint *b, struct ui_file *fp)
9730 {
9731 fprintf_unfiltered (fp, "break-range %s, %s",
9732 event_location_to_string (b->location.get ()),
9733 event_location_to_string (b->location_range_end.get ()));
9734 print_recreate_thread (b, fp);
9735 }
9736
9737 /* The breakpoint_ops structure to be used in ranged breakpoints. */
9738
9739 static struct breakpoint_ops ranged_breakpoint_ops;
9740
9741 /* Find the address where the end of the breakpoint range should be
9742 placed, given the SAL of the end of the range. This is so that if
9743 the user provides a line number, the end of the range is set to the
9744 last instruction of the given line. */
9745
9746 static CORE_ADDR
9747 find_breakpoint_range_end (struct symtab_and_line sal)
9748 {
9749 CORE_ADDR end;
9750
9751 /* If the user provided a PC value, use it. Otherwise,
9752 find the address of the end of the given location. */
9753 if (sal.explicit_pc)
9754 end = sal.pc;
9755 else
9756 {
9757 int ret;
9758 CORE_ADDR start;
9759
9760 ret = find_line_pc_range (sal, &start, &end);
9761 if (!ret)
9762 error (_("Could not find location of the end of the range."));
9763
9764 /* find_line_pc_range returns the start of the next line. */
9765 end--;
9766 }
9767
9768 return end;
9769 }
9770
9771 /* Implement the "break-range" CLI command. */
9772
9773 static void
9774 break_range_command (const char *arg, int from_tty)
9775 {
9776 const char *arg_start;
9777 struct linespec_result canonical_start, canonical_end;
9778 int bp_count, can_use_bp, length;
9779 CORE_ADDR end;
9780 struct breakpoint *b;
9781
9782 /* We don't support software ranged breakpoints. */
9783 if (target_ranged_break_num_registers () < 0)
9784 error (_("This target does not support hardware ranged breakpoints."));
9785
9786 bp_count = hw_breakpoint_used_count ();
9787 bp_count += target_ranged_break_num_registers ();
9788 can_use_bp = target_can_use_hardware_watchpoint (bp_hardware_breakpoint,
9789 bp_count, 0);
9790 if (can_use_bp < 0)
9791 error (_("Hardware breakpoints used exceeds limit."));
9792
9793 arg = skip_spaces (arg);
9794 if (arg == NULL || arg[0] == '\0')
9795 error(_("No address range specified."));
9796
9797 arg_start = arg;
9798 event_location_up start_location = string_to_event_location (&arg,
9799 current_language);
9800 parse_breakpoint_sals (start_location.get (), &canonical_start);
9801
9802 if (arg[0] != ',')
9803 error (_("Too few arguments."));
9804 else if (canonical_start.lsals.empty ())
9805 error (_("Could not find location of the beginning of the range."));
9806
9807 const linespec_sals &lsal_start = canonical_start.lsals[0];
9808
9809 if (canonical_start.lsals.size () > 1
9810 || lsal_start.sals.size () != 1)
9811 error (_("Cannot create a ranged breakpoint with multiple locations."));
9812
9813 const symtab_and_line &sal_start = lsal_start.sals[0];
9814 std::string addr_string_start (arg_start, arg - arg_start);
9815
9816 arg++; /* Skip the comma. */
9817 arg = skip_spaces (arg);
9818
9819 /* Parse the end location. */
9820
9821 arg_start = arg;
9822
9823 /* We call decode_line_full directly here instead of using
9824 parse_breakpoint_sals because we need to specify the start location's
9825 symtab and line as the default symtab and line for the end of the
9826 range. This makes it possible to have ranges like "foo.c:27, +14",
9827 where +14 means 14 lines from the start location. */
9828 event_location_up end_location = string_to_event_location (&arg,
9829 current_language);
9830 decode_line_full (end_location.get (), DECODE_LINE_FUNFIRSTLINE, NULL,
9831 sal_start.symtab, sal_start.line,
9832 &canonical_end, NULL, NULL);
9833
9834 if (canonical_end.lsals.empty ())
9835 error (_("Could not find location of the end of the range."));
9836
9837 const linespec_sals &lsal_end = canonical_end.lsals[0];
9838 if (canonical_end.lsals.size () > 1
9839 || lsal_end.sals.size () != 1)
9840 error (_("Cannot create a ranged breakpoint with multiple locations."));
9841
9842 const symtab_and_line &sal_end = lsal_end.sals[0];
9843
9844 end = find_breakpoint_range_end (sal_end);
9845 if (sal_start.pc > end)
9846 error (_("Invalid address range, end precedes start."));
9847
9848 length = end - sal_start.pc + 1;
9849 if (length < 0)
9850 /* Length overflowed. */
9851 error (_("Address range too large."));
9852 else if (length == 1)
9853 {
9854 /* This range is simple enough to be handled by
9855 the `hbreak' command. */
9856 hbreak_command (&addr_string_start[0], 1);
9857
9858 return;
9859 }
9860
9861 /* Now set up the breakpoint. */
9862 b = set_raw_breakpoint (get_current_arch (), sal_start,
9863 bp_hardware_breakpoint, &ranged_breakpoint_ops);
9864 set_breakpoint_count (breakpoint_count + 1);
9865 b->number = breakpoint_count;
9866 b->disposition = disp_donttouch;
9867 b->location = std::move (start_location);
9868 b->location_range_end = std::move (end_location);
9869 b->loc->length = length;
9870
9871 mention (b);
9872 gdb::observers::breakpoint_created.notify (b);
9873 update_global_location_list (UGLL_MAY_INSERT);
9874 }
9875
9876 /* Return non-zero if EXP is verified as constant. Returned zero
9877 means EXP is variable. Also the constant detection may fail for
9878 some constant expressions and in such case still falsely return
9879 zero. */
9880
9881 static int
9882 watchpoint_exp_is_const (const struct expression *exp)
9883 {
9884 int i = exp->nelts;
9885
9886 while (i > 0)
9887 {
9888 int oplenp, argsp;
9889
9890 /* We are only interested in the descriptor of each element. */
9891 operator_length (exp, i, &oplenp, &argsp);
9892 i -= oplenp;
9893
9894 switch (exp->elts[i].opcode)
9895 {
9896 case BINOP_ADD:
9897 case BINOP_SUB:
9898 case BINOP_MUL:
9899 case BINOP_DIV:
9900 case BINOP_REM:
9901 case BINOP_MOD:
9902 case BINOP_LSH:
9903 case BINOP_RSH:
9904 case BINOP_LOGICAL_AND:
9905 case BINOP_LOGICAL_OR:
9906 case BINOP_BITWISE_AND:
9907 case BINOP_BITWISE_IOR:
9908 case BINOP_BITWISE_XOR:
9909 case BINOP_EQUAL:
9910 case BINOP_NOTEQUAL:
9911 case BINOP_LESS:
9912 case BINOP_GTR:
9913 case BINOP_LEQ:
9914 case BINOP_GEQ:
9915 case BINOP_REPEAT:
9916 case BINOP_COMMA:
9917 case BINOP_EXP:
9918 case BINOP_MIN:
9919 case BINOP_MAX:
9920 case BINOP_INTDIV:
9921 case BINOP_CONCAT:
9922 case TERNOP_COND:
9923 case TERNOP_SLICE:
9924
9925 case OP_LONG:
9926 case OP_FLOAT:
9927 case OP_LAST:
9928 case OP_COMPLEX:
9929 case OP_STRING:
9930 case OP_ARRAY:
9931 case OP_TYPE:
9932 case OP_TYPEOF:
9933 case OP_DECLTYPE:
9934 case OP_TYPEID:
9935 case OP_NAME:
9936 case OP_OBJC_NSSTRING:
9937
9938 case UNOP_NEG:
9939 case UNOP_LOGICAL_NOT:
9940 case UNOP_COMPLEMENT:
9941 case UNOP_ADDR:
9942 case UNOP_HIGH:
9943 case UNOP_CAST:
9944
9945 case UNOP_CAST_TYPE:
9946 case UNOP_REINTERPRET_CAST:
9947 case UNOP_DYNAMIC_CAST:
9948 /* Unary, binary and ternary operators: We have to check
9949 their operands. If they are constant, then so is the
9950 result of that operation. For instance, if A and B are
9951 determined to be constants, then so is "A + B".
9952
9953 UNOP_IND is one exception to the rule above, because the
9954 value of *ADDR is not necessarily a constant, even when
9955 ADDR is. */
9956 break;
9957
9958 case OP_VAR_VALUE:
9959 /* Check whether the associated symbol is a constant.
9960
9961 We use SYMBOL_CLASS rather than TYPE_CONST because it's
9962 possible that a buggy compiler could mark a variable as
9963 constant even when it is not, and TYPE_CONST would return
9964 true in this case, while SYMBOL_CLASS wouldn't.
9965
9966 We also have to check for function symbols because they
9967 are always constant. */
9968 {
9969 struct symbol *s = exp->elts[i + 2].symbol;
9970
9971 if (SYMBOL_CLASS (s) != LOC_BLOCK
9972 && SYMBOL_CLASS (s) != LOC_CONST
9973 && SYMBOL_CLASS (s) != LOC_CONST_BYTES)
9974 return 0;
9975 break;
9976 }
9977
9978 /* The default action is to return 0 because we are using
9979 the optimistic approach here: If we don't know something,
9980 then it is not a constant. */
9981 default:
9982 return 0;
9983 }
9984 }
9985
9986 return 1;
9987 }
9988
9989 /* Watchpoint destructor. */
9990
9991 watchpoint::~watchpoint ()
9992 {
9993 xfree (this->exp_string);
9994 xfree (this->exp_string_reparse);
9995 }
9996
9997 /* Implement the "re_set" breakpoint_ops method for watchpoints. */
9998
9999 static void
10000 re_set_watchpoint (struct breakpoint *b)
10001 {
10002 struct watchpoint *w = (struct watchpoint *) b;
10003
10004 /* Watchpoint can be either on expression using entirely global
10005 variables, or it can be on local variables.
10006
10007 Watchpoints of the first kind are never auto-deleted, and even
10008 persist across program restarts. Since they can use variables
10009 from shared libraries, we need to reparse expression as libraries
10010 are loaded and unloaded.
10011
10012 Watchpoints on local variables can also change meaning as result
10013 of solib event. For example, if a watchpoint uses both a local
10014 and a global variables in expression, it's a local watchpoint,
10015 but unloading of a shared library will make the expression
10016 invalid. This is not a very common use case, but we still
10017 re-evaluate expression, to avoid surprises to the user.
10018
10019 Note that for local watchpoints, we re-evaluate it only if
10020 watchpoints frame id is still valid. If it's not, it means the
10021 watchpoint is out of scope and will be deleted soon. In fact,
10022 I'm not sure we'll ever be called in this case.
10023
10024 If a local watchpoint's frame id is still valid, then
10025 w->exp_valid_block is likewise valid, and we can safely use it.
10026
10027 Don't do anything about disabled watchpoints, since they will be
10028 reevaluated again when enabled. */
10029 update_watchpoint (w, 1 /* reparse */);
10030 }
10031
10032 /* Implement the "insert" breakpoint_ops method for hardware watchpoints. */
10033
10034 static int
10035 insert_watchpoint (struct bp_location *bl)
10036 {
10037 struct watchpoint *w = (struct watchpoint *) bl->owner;
10038 int length = w->exact ? 1 : bl->length;
10039
10040 return target_insert_watchpoint (bl->address, length, bl->watchpoint_type,
10041 w->cond_exp.get ());
10042 }
10043
10044 /* Implement the "remove" breakpoint_ops method for hardware watchpoints. */
10045
10046 static int
10047 remove_watchpoint (struct bp_location *bl, enum remove_bp_reason reason)
10048 {
10049 struct watchpoint *w = (struct watchpoint *) bl->owner;
10050 int length = w->exact ? 1 : bl->length;
10051
10052 return target_remove_watchpoint (bl->address, length, bl->watchpoint_type,
10053 w->cond_exp.get ());
10054 }
10055
10056 static int
10057 breakpoint_hit_watchpoint (const struct bp_location *bl,
10058 const address_space *aspace, CORE_ADDR bp_addr,
10059 const struct target_waitstatus *ws)
10060 {
10061 struct breakpoint *b = bl->owner;
10062 struct watchpoint *w = (struct watchpoint *) b;
10063
10064 /* Continuable hardware watchpoints are treated as non-existent if the
10065 reason we stopped wasn't a hardware watchpoint (we didn't stop on
10066 some data address). Otherwise gdb won't stop on a break instruction
10067 in the code (not from a breakpoint) when a hardware watchpoint has
10068 been defined. Also skip watchpoints which we know did not trigger
10069 (did not match the data address). */
10070 if (is_hardware_watchpoint (b)
10071 && w->watchpoint_triggered == watch_triggered_no)
10072 return 0;
10073
10074 return 1;
10075 }
10076
10077 static void
10078 check_status_watchpoint (bpstat bs)
10079 {
10080 gdb_assert (is_watchpoint (bs->breakpoint_at));
10081
10082 bpstat_check_watchpoint (bs);
10083 }
10084
10085 /* Implement the "resources_needed" breakpoint_ops method for
10086 hardware watchpoints. */
10087
10088 static int
10089 resources_needed_watchpoint (const struct bp_location *bl)
10090 {
10091 struct watchpoint *w = (struct watchpoint *) bl->owner;
10092 int length = w->exact? 1 : bl->length;
10093
10094 return target_region_ok_for_hw_watchpoint (bl->address, length);
10095 }
10096
10097 /* Implement the "works_in_software_mode" breakpoint_ops method for
10098 hardware watchpoints. */
10099
10100 static int
10101 works_in_software_mode_watchpoint (const struct breakpoint *b)
10102 {
10103 /* Read and access watchpoints only work with hardware support. */
10104 return b->type == bp_watchpoint || b->type == bp_hardware_watchpoint;
10105 }
10106
10107 static enum print_stop_action
10108 print_it_watchpoint (bpstat bs)
10109 {
10110 struct breakpoint *b;
10111 enum print_stop_action result;
10112 struct watchpoint *w;
10113 struct ui_out *uiout = current_uiout;
10114
10115 gdb_assert (bs->bp_location_at != NULL);
10116
10117 b = bs->breakpoint_at;
10118 w = (struct watchpoint *) b;
10119
10120 annotate_watchpoint (b->number);
10121 maybe_print_thread_hit_breakpoint (uiout);
10122
10123 string_file stb;
10124
10125 gdb::optional<ui_out_emit_tuple> tuple_emitter;
10126 switch (b->type)
10127 {
10128 case bp_watchpoint:
10129 case bp_hardware_watchpoint:
10130 if (uiout->is_mi_like_p ())
10131 uiout->field_string
10132 ("reason", async_reason_lookup (EXEC_ASYNC_WATCHPOINT_TRIGGER));
10133 mention (b);
10134 tuple_emitter.emplace (uiout, "value");
10135 uiout->text ("\nOld value = ");
10136 watchpoint_value_print (bs->old_val.get (), &stb);
10137 uiout->field_stream ("old", stb);
10138 uiout->text ("\nNew value = ");
10139 watchpoint_value_print (w->val.get (), &stb);
10140 uiout->field_stream ("new", stb);
10141 uiout->text ("\n");
10142 /* More than one watchpoint may have been triggered. */
10143 result = PRINT_UNKNOWN;
10144 break;
10145
10146 case bp_read_watchpoint:
10147 if (uiout->is_mi_like_p ())
10148 uiout->field_string
10149 ("reason", async_reason_lookup (EXEC_ASYNC_READ_WATCHPOINT_TRIGGER));
10150 mention (b);
10151 tuple_emitter.emplace (uiout, "value");
10152 uiout->text ("\nValue = ");
10153 watchpoint_value_print (w->val.get (), &stb);
10154 uiout->field_stream ("value", stb);
10155 uiout->text ("\n");
10156 result = PRINT_UNKNOWN;
10157 break;
10158
10159 case bp_access_watchpoint:
10160 if (bs->old_val != NULL)
10161 {
10162 if (uiout->is_mi_like_p ())
10163 uiout->field_string
10164 ("reason",
10165 async_reason_lookup (EXEC_ASYNC_ACCESS_WATCHPOINT_TRIGGER));
10166 mention (b);
10167 tuple_emitter.emplace (uiout, "value");
10168 uiout->text ("\nOld value = ");
10169 watchpoint_value_print (bs->old_val.get (), &stb);
10170 uiout->field_stream ("old", stb);
10171 uiout->text ("\nNew value = ");
10172 }
10173 else
10174 {
10175 mention (b);
10176 if (uiout->is_mi_like_p ())
10177 uiout->field_string
10178 ("reason",
10179 async_reason_lookup (EXEC_ASYNC_ACCESS_WATCHPOINT_TRIGGER));
10180 tuple_emitter.emplace (uiout, "value");
10181 uiout->text ("\nValue = ");
10182 }
10183 watchpoint_value_print (w->val.get (), &stb);
10184 uiout->field_stream ("new", stb);
10185 uiout->text ("\n");
10186 result = PRINT_UNKNOWN;
10187 break;
10188 default:
10189 result = PRINT_UNKNOWN;
10190 }
10191
10192 return result;
10193 }
10194
10195 /* Implement the "print_mention" breakpoint_ops method for hardware
10196 watchpoints. */
10197
10198 static void
10199 print_mention_watchpoint (struct breakpoint *b)
10200 {
10201 struct watchpoint *w = (struct watchpoint *) b;
10202 struct ui_out *uiout = current_uiout;
10203 const char *tuple_name;
10204
10205 switch (b->type)
10206 {
10207 case bp_watchpoint:
10208 uiout->text ("Watchpoint ");
10209 tuple_name = "wpt";
10210 break;
10211 case bp_hardware_watchpoint:
10212 uiout->text ("Hardware watchpoint ");
10213 tuple_name = "wpt";
10214 break;
10215 case bp_read_watchpoint:
10216 uiout->text ("Hardware read watchpoint ");
10217 tuple_name = "hw-rwpt";
10218 break;
10219 case bp_access_watchpoint:
10220 uiout->text ("Hardware access (read/write) watchpoint ");
10221 tuple_name = "hw-awpt";
10222 break;
10223 default:
10224 internal_error (__FILE__, __LINE__,
10225 _("Invalid hardware watchpoint type."));
10226 }
10227
10228 ui_out_emit_tuple tuple_emitter (uiout, tuple_name);
10229 uiout->field_int ("number", b->number);
10230 uiout->text (": ");
10231 uiout->field_string ("exp", w->exp_string);
10232 }
10233
10234 /* Implement the "print_recreate" breakpoint_ops method for
10235 watchpoints. */
10236
10237 static void
10238 print_recreate_watchpoint (struct breakpoint *b, struct ui_file *fp)
10239 {
10240 struct watchpoint *w = (struct watchpoint *) b;
10241
10242 switch (b->type)
10243 {
10244 case bp_watchpoint:
10245 case bp_hardware_watchpoint:
10246 fprintf_unfiltered (fp, "watch");
10247 break;
10248 case bp_read_watchpoint:
10249 fprintf_unfiltered (fp, "rwatch");
10250 break;
10251 case bp_access_watchpoint:
10252 fprintf_unfiltered (fp, "awatch");
10253 break;
10254 default:
10255 internal_error (__FILE__, __LINE__,
10256 _("Invalid watchpoint type."));
10257 }
10258
10259 fprintf_unfiltered (fp, " %s", w->exp_string);
10260 print_recreate_thread (b, fp);
10261 }
10262
10263 /* Implement the "explains_signal" breakpoint_ops method for
10264 watchpoints. */
10265
10266 static int
10267 explains_signal_watchpoint (struct breakpoint *b, enum gdb_signal sig)
10268 {
10269 /* A software watchpoint cannot cause a signal other than
10270 GDB_SIGNAL_TRAP. */
10271 if (b->type == bp_watchpoint && sig != GDB_SIGNAL_TRAP)
10272 return 0;
10273
10274 return 1;
10275 }
10276
10277 /* The breakpoint_ops structure to be used in hardware watchpoints. */
10278
10279 static struct breakpoint_ops watchpoint_breakpoint_ops;
10280
10281 /* Implement the "insert" breakpoint_ops method for
10282 masked hardware watchpoints. */
10283
10284 static int
10285 insert_masked_watchpoint (struct bp_location *bl)
10286 {
10287 struct watchpoint *w = (struct watchpoint *) bl->owner;
10288
10289 return target_insert_mask_watchpoint (bl->address, w->hw_wp_mask,
10290 bl->watchpoint_type);
10291 }
10292
10293 /* Implement the "remove" breakpoint_ops method for
10294 masked hardware watchpoints. */
10295
10296 static int
10297 remove_masked_watchpoint (struct bp_location *bl, enum remove_bp_reason reason)
10298 {
10299 struct watchpoint *w = (struct watchpoint *) bl->owner;
10300
10301 return target_remove_mask_watchpoint (bl->address, w->hw_wp_mask,
10302 bl->watchpoint_type);
10303 }
10304
10305 /* Implement the "resources_needed" breakpoint_ops method for
10306 masked hardware watchpoints. */
10307
10308 static int
10309 resources_needed_masked_watchpoint (const struct bp_location *bl)
10310 {
10311 struct watchpoint *w = (struct watchpoint *) bl->owner;
10312
10313 return target_masked_watch_num_registers (bl->address, w->hw_wp_mask);
10314 }
10315
10316 /* Implement the "works_in_software_mode" breakpoint_ops method for
10317 masked hardware watchpoints. */
10318
10319 static int
10320 works_in_software_mode_masked_watchpoint (const struct breakpoint *b)
10321 {
10322 return 0;
10323 }
10324
10325 /* Implement the "print_it" breakpoint_ops method for
10326 masked hardware watchpoints. */
10327
10328 static enum print_stop_action
10329 print_it_masked_watchpoint (bpstat bs)
10330 {
10331 struct breakpoint *b = bs->breakpoint_at;
10332 struct ui_out *uiout = current_uiout;
10333
10334 /* Masked watchpoints have only one location. */
10335 gdb_assert (b->loc && b->loc->next == NULL);
10336
10337 annotate_watchpoint (b->number);
10338 maybe_print_thread_hit_breakpoint (uiout);
10339
10340 switch (b->type)
10341 {
10342 case bp_hardware_watchpoint:
10343 if (uiout->is_mi_like_p ())
10344 uiout->field_string
10345 ("reason", async_reason_lookup (EXEC_ASYNC_WATCHPOINT_TRIGGER));
10346 break;
10347
10348 case bp_read_watchpoint:
10349 if (uiout->is_mi_like_p ())
10350 uiout->field_string
10351 ("reason", async_reason_lookup (EXEC_ASYNC_READ_WATCHPOINT_TRIGGER));
10352 break;
10353
10354 case bp_access_watchpoint:
10355 if (uiout->is_mi_like_p ())
10356 uiout->field_string
10357 ("reason",
10358 async_reason_lookup (EXEC_ASYNC_ACCESS_WATCHPOINT_TRIGGER));
10359 break;
10360 default:
10361 internal_error (__FILE__, __LINE__,
10362 _("Invalid hardware watchpoint type."));
10363 }
10364
10365 mention (b);
10366 uiout->text (_("\n\
10367 Check the underlying instruction at PC for the memory\n\
10368 address and value which triggered this watchpoint.\n"));
10369 uiout->text ("\n");
10370
10371 /* More than one watchpoint may have been triggered. */
10372 return PRINT_UNKNOWN;
10373 }
10374
10375 /* Implement the "print_one_detail" breakpoint_ops method for
10376 masked hardware watchpoints. */
10377
10378 static void
10379 print_one_detail_masked_watchpoint (const struct breakpoint *b,
10380 struct ui_out *uiout)
10381 {
10382 struct watchpoint *w = (struct watchpoint *) b;
10383
10384 /* Masked watchpoints have only one location. */
10385 gdb_assert (b->loc && b->loc->next == NULL);
10386
10387 uiout->text ("\tmask ");
10388 uiout->field_core_addr ("mask", b->loc->gdbarch, w->hw_wp_mask);
10389 uiout->text ("\n");
10390 }
10391
10392 /* Implement the "print_mention" breakpoint_ops method for
10393 masked hardware watchpoints. */
10394
10395 static void
10396 print_mention_masked_watchpoint (struct breakpoint *b)
10397 {
10398 struct watchpoint *w = (struct watchpoint *) b;
10399 struct ui_out *uiout = current_uiout;
10400 const char *tuple_name;
10401
10402 switch (b->type)
10403 {
10404 case bp_hardware_watchpoint:
10405 uiout->text ("Masked hardware watchpoint ");
10406 tuple_name = "wpt";
10407 break;
10408 case bp_read_watchpoint:
10409 uiout->text ("Masked hardware read watchpoint ");
10410 tuple_name = "hw-rwpt";
10411 break;
10412 case bp_access_watchpoint:
10413 uiout->text ("Masked hardware access (read/write) watchpoint ");
10414 tuple_name = "hw-awpt";
10415 break;
10416 default:
10417 internal_error (__FILE__, __LINE__,
10418 _("Invalid hardware watchpoint type."));
10419 }
10420
10421 ui_out_emit_tuple tuple_emitter (uiout, tuple_name);
10422 uiout->field_int ("number", b->number);
10423 uiout->text (": ");
10424 uiout->field_string ("exp", w->exp_string);
10425 }
10426
10427 /* Implement the "print_recreate" breakpoint_ops method for
10428 masked hardware watchpoints. */
10429
10430 static void
10431 print_recreate_masked_watchpoint (struct breakpoint *b, struct ui_file *fp)
10432 {
10433 struct watchpoint *w = (struct watchpoint *) b;
10434 char tmp[40];
10435
10436 switch (b->type)
10437 {
10438 case bp_hardware_watchpoint:
10439 fprintf_unfiltered (fp, "watch");
10440 break;
10441 case bp_read_watchpoint:
10442 fprintf_unfiltered (fp, "rwatch");
10443 break;
10444 case bp_access_watchpoint:
10445 fprintf_unfiltered (fp, "awatch");
10446 break;
10447 default:
10448 internal_error (__FILE__, __LINE__,
10449 _("Invalid hardware watchpoint type."));
10450 }
10451
10452 sprintf_vma (tmp, w->hw_wp_mask);
10453 fprintf_unfiltered (fp, " %s mask 0x%s", w->exp_string, tmp);
10454 print_recreate_thread (b, fp);
10455 }
10456
10457 /* The breakpoint_ops structure to be used in masked hardware watchpoints. */
10458
10459 static struct breakpoint_ops masked_watchpoint_breakpoint_ops;
10460
10461 /* Tell whether the given watchpoint is a masked hardware watchpoint. */
10462
10463 static int
10464 is_masked_watchpoint (const struct breakpoint *b)
10465 {
10466 return b->ops == &masked_watchpoint_breakpoint_ops;
10467 }
10468
10469 /* accessflag: hw_write: watch write,
10470 hw_read: watch read,
10471 hw_access: watch access (read or write) */
10472 static void
10473 watch_command_1 (const char *arg, int accessflag, int from_tty,
10474 int just_location, int internal)
10475 {
10476 struct breakpoint *scope_breakpoint = NULL;
10477 const struct block *exp_valid_block = NULL, *cond_exp_valid_block = NULL;
10478 struct value *result;
10479 int saved_bitpos = 0, saved_bitsize = 0;
10480 const char *exp_start = NULL;
10481 const char *exp_end = NULL;
10482 const char *tok, *end_tok;
10483 int toklen = -1;
10484 const char *cond_start = NULL;
10485 const char *cond_end = NULL;
10486 enum bptype bp_type;
10487 int thread = -1;
10488 int pc = 0;
10489 /* Flag to indicate whether we are going to use masks for
10490 the hardware watchpoint. */
10491 int use_mask = 0;
10492 CORE_ADDR mask = 0;
10493
10494 /* Make sure that we actually have parameters to parse. */
10495 if (arg != NULL && arg[0] != '\0')
10496 {
10497 const char *value_start;
10498
10499 exp_end = arg + strlen (arg);
10500
10501 /* Look for "parameter value" pairs at the end
10502 of the arguments string. */
10503 for (tok = exp_end - 1; tok > arg; tok--)
10504 {
10505 /* Skip whitespace at the end of the argument list. */
10506 while (tok > arg && (*tok == ' ' || *tok == '\t'))
10507 tok--;
10508
10509 /* Find the beginning of the last token.
10510 This is the value of the parameter. */
10511 while (tok > arg && (*tok != ' ' && *tok != '\t'))
10512 tok--;
10513 value_start = tok + 1;
10514
10515 /* Skip whitespace. */
10516 while (tok > arg && (*tok == ' ' || *tok == '\t'))
10517 tok--;
10518
10519 end_tok = tok;
10520
10521 /* Find the beginning of the second to last token.
10522 This is the parameter itself. */
10523 while (tok > arg && (*tok != ' ' && *tok != '\t'))
10524 tok--;
10525 tok++;
10526 toklen = end_tok - tok + 1;
10527
10528 if (toklen == 6 && startswith (tok, "thread"))
10529 {
10530 struct thread_info *thr;
10531 /* At this point we've found a "thread" token, which means
10532 the user is trying to set a watchpoint that triggers
10533 only in a specific thread. */
10534 const char *endp;
10535
10536 if (thread != -1)
10537 error(_("You can specify only one thread."));
10538
10539 /* Extract the thread ID from the next token. */
10540 thr = parse_thread_id (value_start, &endp);
10541
10542 /* Check if the user provided a valid thread ID. */
10543 if (*endp != ' ' && *endp != '\t' && *endp != '\0')
10544 invalid_thread_id_error (value_start);
10545
10546 thread = thr->global_num;
10547 }
10548 else if (toklen == 4 && startswith (tok, "mask"))
10549 {
10550 /* We've found a "mask" token, which means the user wants to
10551 create a hardware watchpoint that is going to have the mask
10552 facility. */
10553 struct value *mask_value, *mark;
10554
10555 if (use_mask)
10556 error(_("You can specify only one mask."));
10557
10558 use_mask = just_location = 1;
10559
10560 mark = value_mark ();
10561 mask_value = parse_to_comma_and_eval (&value_start);
10562 mask = value_as_address (mask_value);
10563 value_free_to_mark (mark);
10564 }
10565 else
10566 /* We didn't recognize what we found. We should stop here. */
10567 break;
10568
10569 /* Truncate the string and get rid of the "parameter value" pair before
10570 the arguments string is parsed by the parse_exp_1 function. */
10571 exp_end = tok;
10572 }
10573 }
10574 else
10575 exp_end = arg;
10576
10577 /* Parse the rest of the arguments. From here on out, everything
10578 is in terms of a newly allocated string instead of the original
10579 ARG. */
10580 std::string expression (arg, exp_end - arg);
10581 exp_start = arg = expression.c_str ();
10582 innermost_block_tracker tracker;
10583 expression_up exp = parse_exp_1 (&arg, 0, 0, 0, &tracker);
10584 exp_end = arg;
10585 /* Remove trailing whitespace from the expression before saving it.
10586 This makes the eventual display of the expression string a bit
10587 prettier. */
10588 while (exp_end > exp_start && (exp_end[-1] == ' ' || exp_end[-1] == '\t'))
10589 --exp_end;
10590
10591 /* Checking if the expression is not constant. */
10592 if (watchpoint_exp_is_const (exp.get ()))
10593 {
10594 int len;
10595
10596 len = exp_end - exp_start;
10597 while (len > 0 && isspace (exp_start[len - 1]))
10598 len--;
10599 error (_("Cannot watch constant value `%.*s'."), len, exp_start);
10600 }
10601
10602 exp_valid_block = tracker.block ();
10603 struct value *mark = value_mark ();
10604 struct value *val_as_value = nullptr;
10605 fetch_subexp_value (exp.get (), &pc, &val_as_value, &result, NULL,
10606 just_location);
10607
10608 if (val_as_value != NULL && just_location)
10609 {
10610 saved_bitpos = value_bitpos (val_as_value);
10611 saved_bitsize = value_bitsize (val_as_value);
10612 }
10613
10614 value_ref_ptr val;
10615 if (just_location)
10616 {
10617 int ret;
10618
10619 exp_valid_block = NULL;
10620 val = release_value (value_addr (result));
10621 value_free_to_mark (mark);
10622
10623 if (use_mask)
10624 {
10625 ret = target_masked_watch_num_registers (value_as_address (val.get ()),
10626 mask);
10627 if (ret == -1)
10628 error (_("This target does not support masked watchpoints."));
10629 else if (ret == -2)
10630 error (_("Invalid mask or memory region."));
10631 }
10632 }
10633 else if (val_as_value != NULL)
10634 val = release_value (val_as_value);
10635
10636 tok = skip_spaces (arg);
10637 end_tok = skip_to_space (tok);
10638
10639 toklen = end_tok - tok;
10640 if (toklen >= 1 && strncmp (tok, "if", toklen) == 0)
10641 {
10642 tok = cond_start = end_tok + 1;
10643 innermost_block_tracker if_tracker;
10644 parse_exp_1 (&tok, 0, 0, 0, &if_tracker);
10645
10646 /* The watchpoint expression may not be local, but the condition
10647 may still be. E.g.: `watch global if local > 0'. */
10648 cond_exp_valid_block = if_tracker.block ();
10649
10650 cond_end = tok;
10651 }
10652 if (*tok)
10653 error (_("Junk at end of command."));
10654
10655 frame_info *wp_frame = block_innermost_frame (exp_valid_block);
10656
10657 /* Save this because create_internal_breakpoint below invalidates
10658 'wp_frame'. */
10659 frame_id watchpoint_frame = get_frame_id (wp_frame);
10660
10661 /* If the expression is "local", then set up a "watchpoint scope"
10662 breakpoint at the point where we've left the scope of the watchpoint
10663 expression. Create the scope breakpoint before the watchpoint, so
10664 that we will encounter it first in bpstat_stop_status. */
10665 if (exp_valid_block != NULL && wp_frame != NULL)
10666 {
10667 frame_id caller_frame_id = frame_unwind_caller_id (wp_frame);
10668
10669 if (frame_id_p (caller_frame_id))
10670 {
10671 gdbarch *caller_arch = frame_unwind_caller_arch (wp_frame);
10672 CORE_ADDR caller_pc = frame_unwind_caller_pc (wp_frame);
10673
10674 scope_breakpoint
10675 = create_internal_breakpoint (caller_arch, caller_pc,
10676 bp_watchpoint_scope,
10677 &momentary_breakpoint_ops);
10678
10679 /* create_internal_breakpoint could invalidate WP_FRAME. */
10680 wp_frame = NULL;
10681
10682 scope_breakpoint->enable_state = bp_enabled;
10683
10684 /* Automatically delete the breakpoint when it hits. */
10685 scope_breakpoint->disposition = disp_del;
10686
10687 /* Only break in the proper frame (help with recursion). */
10688 scope_breakpoint->frame_id = caller_frame_id;
10689
10690 /* Set the address at which we will stop. */
10691 scope_breakpoint->loc->gdbarch = caller_arch;
10692 scope_breakpoint->loc->requested_address = caller_pc;
10693 scope_breakpoint->loc->address
10694 = adjust_breakpoint_address (scope_breakpoint->loc->gdbarch,
10695 scope_breakpoint->loc->requested_address,
10696 scope_breakpoint->type);
10697 }
10698 }
10699
10700 /* Now set up the breakpoint. We create all watchpoints as hardware
10701 watchpoints here even if hardware watchpoints are turned off, a call
10702 to update_watchpoint later in this function will cause the type to
10703 drop back to bp_watchpoint (software watchpoint) if required. */
10704
10705 if (accessflag == hw_read)
10706 bp_type = bp_read_watchpoint;
10707 else if (accessflag == hw_access)
10708 bp_type = bp_access_watchpoint;
10709 else
10710 bp_type = bp_hardware_watchpoint;
10711
10712 std::unique_ptr<watchpoint> w (new watchpoint ());
10713
10714 if (use_mask)
10715 init_raw_breakpoint_without_location (w.get (), NULL, bp_type,
10716 &masked_watchpoint_breakpoint_ops);
10717 else
10718 init_raw_breakpoint_without_location (w.get (), NULL, bp_type,
10719 &watchpoint_breakpoint_ops);
10720 w->thread = thread;
10721 w->disposition = disp_donttouch;
10722 w->pspace = current_program_space;
10723 w->exp = std::move (exp);
10724 w->exp_valid_block = exp_valid_block;
10725 w->cond_exp_valid_block = cond_exp_valid_block;
10726 if (just_location)
10727 {
10728 struct type *t = value_type (val.get ());
10729 CORE_ADDR addr = value_as_address (val.get ());
10730
10731 w->exp_string_reparse
10732 = current_language->la_watch_location_expression (t, addr).release ();
10733
10734 w->exp_string = xstrprintf ("-location %.*s",
10735 (int) (exp_end - exp_start), exp_start);
10736 }
10737 else
10738 w->exp_string = savestring (exp_start, exp_end - exp_start);
10739
10740 if (use_mask)
10741 {
10742 w->hw_wp_mask = mask;
10743 }
10744 else
10745 {
10746 w->val = val;
10747 w->val_bitpos = saved_bitpos;
10748 w->val_bitsize = saved_bitsize;
10749 w->val_valid = 1;
10750 }
10751
10752 if (cond_start)
10753 w->cond_string = savestring (cond_start, cond_end - cond_start);
10754 else
10755 w->cond_string = 0;
10756
10757 if (frame_id_p (watchpoint_frame))
10758 {
10759 w->watchpoint_frame = watchpoint_frame;
10760 w->watchpoint_thread = inferior_ptid;
10761 }
10762 else
10763 {
10764 w->watchpoint_frame = null_frame_id;
10765 w->watchpoint_thread = null_ptid;
10766 }
10767
10768 if (scope_breakpoint != NULL)
10769 {
10770 /* The scope breakpoint is related to the watchpoint. We will
10771 need to act on them together. */
10772 w->related_breakpoint = scope_breakpoint;
10773 scope_breakpoint->related_breakpoint = w.get ();
10774 }
10775
10776 if (!just_location)
10777 value_free_to_mark (mark);
10778
10779 /* Finally update the new watchpoint. This creates the locations
10780 that should be inserted. */
10781 update_watchpoint (w.get (), 1);
10782
10783 install_breakpoint (internal, std::move (w), 1);
10784 }
10785
10786 /* Return count of debug registers needed to watch the given expression.
10787 If the watchpoint cannot be handled in hardware return zero. */
10788
10789 static int
10790 can_use_hardware_watchpoint (const std::vector<value_ref_ptr> &vals)
10791 {
10792 int found_memory_cnt = 0;
10793
10794 /* Did the user specifically forbid us to use hardware watchpoints? */
10795 if (!can_use_hw_watchpoints)
10796 return 0;
10797
10798 gdb_assert (!vals.empty ());
10799 struct value *head = vals[0].get ();
10800
10801 /* Make sure that the value of the expression depends only upon
10802 memory contents, and values computed from them within GDB. If we
10803 find any register references or function calls, we can't use a
10804 hardware watchpoint.
10805
10806 The idea here is that evaluating an expression generates a series
10807 of values, one holding the value of every subexpression. (The
10808 expression a*b+c has five subexpressions: a, b, a*b, c, and
10809 a*b+c.) GDB's values hold almost enough information to establish
10810 the criteria given above --- they identify memory lvalues,
10811 register lvalues, computed values, etcetera. So we can evaluate
10812 the expression, and then scan the chain of values that leaves
10813 behind to decide whether we can detect any possible change to the
10814 expression's final value using only hardware watchpoints.
10815
10816 However, I don't think that the values returned by inferior
10817 function calls are special in any way. So this function may not
10818 notice that an expression involving an inferior function call
10819 can't be watched with hardware watchpoints. FIXME. */
10820 for (const value_ref_ptr &iter : vals)
10821 {
10822 struct value *v = iter.get ();
10823
10824 if (VALUE_LVAL (v) == lval_memory)
10825 {
10826 if (v != head && value_lazy (v))
10827 /* A lazy memory lvalue in the chain is one that GDB never
10828 needed to fetch; we either just used its address (e.g.,
10829 `a' in `a.b') or we never needed it at all (e.g., `a'
10830 in `a,b'). This doesn't apply to HEAD; if that is
10831 lazy then it was not readable, but watch it anyway. */
10832 ;
10833 else
10834 {
10835 /* Ahh, memory we actually used! Check if we can cover
10836 it with hardware watchpoints. */
10837 struct type *vtype = check_typedef (value_type (v));
10838
10839 /* We only watch structs and arrays if user asked for it
10840 explicitly, never if they just happen to appear in a
10841 middle of some value chain. */
10842 if (v == head
10843 || (TYPE_CODE (vtype) != TYPE_CODE_STRUCT
10844 && TYPE_CODE (vtype) != TYPE_CODE_ARRAY))
10845 {
10846 CORE_ADDR vaddr = value_address (v);
10847 int len;
10848 int num_regs;
10849
10850 len = (target_exact_watchpoints
10851 && is_scalar_type_recursive (vtype))?
10852 1 : TYPE_LENGTH (value_type (v));
10853
10854 num_regs = target_region_ok_for_hw_watchpoint (vaddr, len);
10855 if (!num_regs)
10856 return 0;
10857 else
10858 found_memory_cnt += num_regs;
10859 }
10860 }
10861 }
10862 else if (VALUE_LVAL (v) != not_lval
10863 && deprecated_value_modifiable (v) == 0)
10864 return 0; /* These are values from the history (e.g., $1). */
10865 else if (VALUE_LVAL (v) == lval_register)
10866 return 0; /* Cannot watch a register with a HW watchpoint. */
10867 }
10868
10869 /* The expression itself looks suitable for using a hardware
10870 watchpoint, but give the target machine a chance to reject it. */
10871 return found_memory_cnt;
10872 }
10873
10874 void
10875 watch_command_wrapper (const char *arg, int from_tty, int internal)
10876 {
10877 watch_command_1 (arg, hw_write, from_tty, 0, internal);
10878 }
10879
10880 /* A helper function that looks for the "-location" argument and then
10881 calls watch_command_1. */
10882
10883 static void
10884 watch_maybe_just_location (const char *arg, int accessflag, int from_tty)
10885 {
10886 int just_location = 0;
10887
10888 if (arg
10889 && (check_for_argument (&arg, "-location", sizeof ("-location") - 1)
10890 || check_for_argument (&arg, "-l", sizeof ("-l") - 1)))
10891 just_location = 1;
10892
10893 watch_command_1 (arg, accessflag, from_tty, just_location, 0);
10894 }
10895
10896 static void
10897 watch_command (const char *arg, int from_tty)
10898 {
10899 watch_maybe_just_location (arg, hw_write, from_tty);
10900 }
10901
10902 void
10903 rwatch_command_wrapper (const char *arg, int from_tty, int internal)
10904 {
10905 watch_command_1 (arg, hw_read, from_tty, 0, internal);
10906 }
10907
10908 static void
10909 rwatch_command (const char *arg, int from_tty)
10910 {
10911 watch_maybe_just_location (arg, hw_read, from_tty);
10912 }
10913
10914 void
10915 awatch_command_wrapper (const char *arg, int from_tty, int internal)
10916 {
10917 watch_command_1 (arg, hw_access, from_tty, 0, internal);
10918 }
10919
10920 static void
10921 awatch_command (const char *arg, int from_tty)
10922 {
10923 watch_maybe_just_location (arg, hw_access, from_tty);
10924 }
10925 \f
10926
10927 /* Data for the FSM that manages the until(location)/advance commands
10928 in infcmd.c. Here because it uses the mechanisms of
10929 breakpoints. */
10930
10931 struct until_break_fsm : public thread_fsm
10932 {
10933 /* The thread that was current when the command was executed. */
10934 int thread;
10935
10936 /* The breakpoint set at the destination location. */
10937 breakpoint_up location_breakpoint;
10938
10939 /* Breakpoint set at the return address in the caller frame. May be
10940 NULL. */
10941 breakpoint_up caller_breakpoint;
10942
10943 until_break_fsm (struct interp *cmd_interp, int thread,
10944 breakpoint_up &&location_breakpoint,
10945 breakpoint_up &&caller_breakpoint)
10946 : thread_fsm (cmd_interp),
10947 thread (thread),
10948 location_breakpoint (std::move (location_breakpoint)),
10949 caller_breakpoint (std::move (caller_breakpoint))
10950 {
10951 }
10952
10953 void clean_up (struct thread_info *thread) override;
10954 bool should_stop (struct thread_info *thread) override;
10955 enum async_reply_reason do_async_reply_reason () override;
10956 };
10957
10958 /* Implementation of the 'should_stop' FSM method for the
10959 until(location)/advance commands. */
10960
10961 bool
10962 until_break_fsm::should_stop (struct thread_info *tp)
10963 {
10964 if (bpstat_find_breakpoint (tp->control.stop_bpstat,
10965 location_breakpoint.get ()) != NULL
10966 || (caller_breakpoint != NULL
10967 && bpstat_find_breakpoint (tp->control.stop_bpstat,
10968 caller_breakpoint.get ()) != NULL))
10969 set_finished ();
10970
10971 return true;
10972 }
10973
10974 /* Implementation of the 'clean_up' FSM method for the
10975 until(location)/advance commands. */
10976
10977 void
10978 until_break_fsm::clean_up (struct thread_info *)
10979 {
10980 /* Clean up our temporary breakpoints. */
10981 location_breakpoint.reset ();
10982 caller_breakpoint.reset ();
10983 delete_longjmp_breakpoint (thread);
10984 }
10985
10986 /* Implementation of the 'async_reply_reason' FSM method for the
10987 until(location)/advance commands. */
10988
10989 enum async_reply_reason
10990 until_break_fsm::do_async_reply_reason ()
10991 {
10992 return EXEC_ASYNC_LOCATION_REACHED;
10993 }
10994
10995 void
10996 until_break_command (const char *arg, int from_tty, int anywhere)
10997 {
10998 struct frame_info *frame;
10999 struct gdbarch *frame_gdbarch;
11000 struct frame_id stack_frame_id;
11001 struct frame_id caller_frame_id;
11002 int thread;
11003 struct thread_info *tp;
11004
11005 clear_proceed_status (0);
11006
11007 /* Set a breakpoint where the user wants it and at return from
11008 this function. */
11009
11010 event_location_up location = string_to_event_location (&arg, current_language);
11011
11012 std::vector<symtab_and_line> sals
11013 = (last_displayed_sal_is_valid ()
11014 ? decode_line_1 (location.get (), DECODE_LINE_FUNFIRSTLINE, NULL,
11015 get_last_displayed_symtab (),
11016 get_last_displayed_line ())
11017 : decode_line_1 (location.get (), DECODE_LINE_FUNFIRSTLINE,
11018 NULL, (struct symtab *) NULL, 0));
11019
11020 if (sals.size () != 1)
11021 error (_("Couldn't get information on specified line."));
11022
11023 symtab_and_line &sal = sals[0];
11024
11025 if (*arg)
11026 error (_("Junk at end of arguments."));
11027
11028 resolve_sal_pc (&sal);
11029
11030 tp = inferior_thread ();
11031 thread = tp->global_num;
11032
11033 /* Note linespec handling above invalidates the frame chain.
11034 Installing a breakpoint also invalidates the frame chain (as it
11035 may need to switch threads), so do any frame handling before
11036 that. */
11037
11038 frame = get_selected_frame (NULL);
11039 frame_gdbarch = get_frame_arch (frame);
11040 stack_frame_id = get_stack_frame_id (frame);
11041 caller_frame_id = frame_unwind_caller_id (frame);
11042
11043 /* Keep within the current frame, or in frames called by the current
11044 one. */
11045
11046 breakpoint_up caller_breakpoint;
11047
11048 gdb::optional<delete_longjmp_breakpoint_cleanup> lj_deleter;
11049
11050 if (frame_id_p (caller_frame_id))
11051 {
11052 struct symtab_and_line sal2;
11053 struct gdbarch *caller_gdbarch;
11054
11055 sal2 = find_pc_line (frame_unwind_caller_pc (frame), 0);
11056 sal2.pc = frame_unwind_caller_pc (frame);
11057 caller_gdbarch = frame_unwind_caller_arch (frame);
11058 caller_breakpoint = set_momentary_breakpoint (caller_gdbarch,
11059 sal2,
11060 caller_frame_id,
11061 bp_until);
11062
11063 set_longjmp_breakpoint (tp, caller_frame_id);
11064 lj_deleter.emplace (thread);
11065 }
11066
11067 /* set_momentary_breakpoint could invalidate FRAME. */
11068 frame = NULL;
11069
11070 breakpoint_up location_breakpoint;
11071 if (anywhere)
11072 /* If the user told us to continue until a specified location,
11073 we don't specify a frame at which we need to stop. */
11074 location_breakpoint = set_momentary_breakpoint (frame_gdbarch, sal,
11075 null_frame_id, bp_until);
11076 else
11077 /* Otherwise, specify the selected frame, because we want to stop
11078 only at the very same frame. */
11079 location_breakpoint = set_momentary_breakpoint (frame_gdbarch, sal,
11080 stack_frame_id, bp_until);
11081
11082 tp->thread_fsm = new until_break_fsm (command_interp (), tp->global_num,
11083 std::move (location_breakpoint),
11084 std::move (caller_breakpoint));
11085
11086 if (lj_deleter)
11087 lj_deleter->release ();
11088
11089 proceed (-1, GDB_SIGNAL_DEFAULT);
11090 }
11091
11092 /* This function attempts to parse an optional "if <cond>" clause
11093 from the arg string. If one is not found, it returns NULL.
11094
11095 Else, it returns a pointer to the condition string. (It does not
11096 attempt to evaluate the string against a particular block.) And,
11097 it updates arg to point to the first character following the parsed
11098 if clause in the arg string. */
11099
11100 const char *
11101 ep_parse_optional_if_clause (const char **arg)
11102 {
11103 const char *cond_string;
11104
11105 if (((*arg)[0] != 'i') || ((*arg)[1] != 'f') || !isspace ((*arg)[2]))
11106 return NULL;
11107
11108 /* Skip the "if" keyword. */
11109 (*arg) += 2;
11110
11111 /* Skip any extra leading whitespace, and record the start of the
11112 condition string. */
11113 *arg = skip_spaces (*arg);
11114 cond_string = *arg;
11115
11116 /* Assume that the condition occupies the remainder of the arg
11117 string. */
11118 (*arg) += strlen (cond_string);
11119
11120 return cond_string;
11121 }
11122
11123 /* Commands to deal with catching events, such as signals, exceptions,
11124 process start/exit, etc. */
11125
11126 typedef enum
11127 {
11128 catch_fork_temporary, catch_vfork_temporary,
11129 catch_fork_permanent, catch_vfork_permanent
11130 }
11131 catch_fork_kind;
11132
11133 static void
11134 catch_fork_command_1 (const char *arg, int from_tty,
11135 struct cmd_list_element *command)
11136 {
11137 struct gdbarch *gdbarch = get_current_arch ();
11138 const char *cond_string = NULL;
11139 catch_fork_kind fork_kind;
11140 int tempflag;
11141
11142 fork_kind = (catch_fork_kind) (uintptr_t) get_cmd_context (command);
11143 tempflag = (fork_kind == catch_fork_temporary
11144 || fork_kind == catch_vfork_temporary);
11145
11146 if (!arg)
11147 arg = "";
11148 arg = skip_spaces (arg);
11149
11150 /* The allowed syntax is:
11151 catch [v]fork
11152 catch [v]fork if <cond>
11153
11154 First, check if there's an if clause. */
11155 cond_string = ep_parse_optional_if_clause (&arg);
11156
11157 if ((*arg != '\0') && !isspace (*arg))
11158 error (_("Junk at end of arguments."));
11159
11160 /* If this target supports it, create a fork or vfork catchpoint
11161 and enable reporting of such events. */
11162 switch (fork_kind)
11163 {
11164 case catch_fork_temporary:
11165 case catch_fork_permanent:
11166 create_fork_vfork_event_catchpoint (gdbarch, tempflag, cond_string,
11167 &catch_fork_breakpoint_ops);
11168 break;
11169 case catch_vfork_temporary:
11170 case catch_vfork_permanent:
11171 create_fork_vfork_event_catchpoint (gdbarch, tempflag, cond_string,
11172 &catch_vfork_breakpoint_ops);
11173 break;
11174 default:
11175 error (_("unsupported or unknown fork kind; cannot catch it"));
11176 break;
11177 }
11178 }
11179
11180 static void
11181 catch_exec_command_1 (const char *arg, int from_tty,
11182 struct cmd_list_element *command)
11183 {
11184 struct gdbarch *gdbarch = get_current_arch ();
11185 int tempflag;
11186 const char *cond_string = NULL;
11187
11188 tempflag = get_cmd_context (command) == CATCH_TEMPORARY;
11189
11190 if (!arg)
11191 arg = "";
11192 arg = skip_spaces (arg);
11193
11194 /* The allowed syntax is:
11195 catch exec
11196 catch exec if <cond>
11197
11198 First, check if there's an if clause. */
11199 cond_string = ep_parse_optional_if_clause (&arg);
11200
11201 if ((*arg != '\0') && !isspace (*arg))
11202 error (_("Junk at end of arguments."));
11203
11204 std::unique_ptr<exec_catchpoint> c (new exec_catchpoint ());
11205 init_catchpoint (c.get (), gdbarch, tempflag, cond_string,
11206 &catch_exec_breakpoint_ops);
11207 c->exec_pathname = NULL;
11208
11209 install_breakpoint (0, std::move (c), 1);
11210 }
11211
11212 void
11213 init_ada_exception_breakpoint (struct breakpoint *b,
11214 struct gdbarch *gdbarch,
11215 struct symtab_and_line sal,
11216 const char *addr_string,
11217 const struct breakpoint_ops *ops,
11218 int tempflag,
11219 int enabled,
11220 int from_tty)
11221 {
11222 if (from_tty)
11223 {
11224 struct gdbarch *loc_gdbarch = get_sal_arch (sal);
11225 if (!loc_gdbarch)
11226 loc_gdbarch = gdbarch;
11227
11228 describe_other_breakpoints (loc_gdbarch,
11229 sal.pspace, sal.pc, sal.section, -1);
11230 /* FIXME: brobecker/2006-12-28: Actually, re-implement a special
11231 version for exception catchpoints, because two catchpoints
11232 used for different exception names will use the same address.
11233 In this case, a "breakpoint ... also set at..." warning is
11234 unproductive. Besides, the warning phrasing is also a bit
11235 inappropriate, we should use the word catchpoint, and tell
11236 the user what type of catchpoint it is. The above is good
11237 enough for now, though. */
11238 }
11239
11240 init_raw_breakpoint (b, gdbarch, sal, bp_breakpoint, ops);
11241
11242 b->enable_state = enabled ? bp_enabled : bp_disabled;
11243 b->disposition = tempflag ? disp_del : disp_donttouch;
11244 b->location = string_to_event_location (&addr_string,
11245 language_def (language_ada));
11246 b->language = language_ada;
11247 }
11248
11249 static void
11250 catch_command (const char *arg, int from_tty)
11251 {
11252 error (_("Catch requires an event name."));
11253 }
11254 \f
11255
11256 static void
11257 tcatch_command (const char *arg, int from_tty)
11258 {
11259 error (_("Catch requires an event name."));
11260 }
11261
11262 /* Compare two breakpoints and return a strcmp-like result. */
11263
11264 static int
11265 compare_breakpoints (const breakpoint *a, const breakpoint *b)
11266 {
11267 uintptr_t ua = (uintptr_t) a;
11268 uintptr_t ub = (uintptr_t) b;
11269
11270 if (a->number < b->number)
11271 return -1;
11272 else if (a->number > b->number)
11273 return 1;
11274
11275 /* Now sort by address, in case we see, e..g, two breakpoints with
11276 the number 0. */
11277 if (ua < ub)
11278 return -1;
11279 return ua > ub ? 1 : 0;
11280 }
11281
11282 /* Delete breakpoints by address or line. */
11283
11284 static void
11285 clear_command (const char *arg, int from_tty)
11286 {
11287 struct breakpoint *b;
11288 int default_match;
11289
11290 std::vector<symtab_and_line> decoded_sals;
11291 symtab_and_line last_sal;
11292 gdb::array_view<symtab_and_line> sals;
11293 if (arg)
11294 {
11295 decoded_sals
11296 = decode_line_with_current_source (arg,
11297 (DECODE_LINE_FUNFIRSTLINE
11298 | DECODE_LINE_LIST_MODE));
11299 default_match = 0;
11300 sals = decoded_sals;
11301 }
11302 else
11303 {
11304 /* Set sal's line, symtab, pc, and pspace to the values
11305 corresponding to the last call to print_frame_info. If the
11306 codepoint is not valid, this will set all the fields to 0. */
11307 last_sal = get_last_displayed_sal ();
11308 if (last_sal.symtab == 0)
11309 error (_("No source file specified."));
11310
11311 default_match = 1;
11312 sals = last_sal;
11313 }
11314
11315 /* We don't call resolve_sal_pc here. That's not as bad as it
11316 seems, because all existing breakpoints typically have both
11317 file/line and pc set. So, if clear is given file/line, we can
11318 match this to existing breakpoint without obtaining pc at all.
11319
11320 We only support clearing given the address explicitly
11321 present in breakpoint table. Say, we've set breakpoint
11322 at file:line. There were several PC values for that file:line,
11323 due to optimization, all in one block.
11324
11325 We've picked one PC value. If "clear" is issued with another
11326 PC corresponding to the same file:line, the breakpoint won't
11327 be cleared. We probably can still clear the breakpoint, but
11328 since the other PC value is never presented to user, user
11329 can only find it by guessing, and it does not seem important
11330 to support that. */
11331
11332 /* For each line spec given, delete bps which correspond to it. Do
11333 it in two passes, solely to preserve the current behavior that
11334 from_tty is forced true if we delete more than one
11335 breakpoint. */
11336
11337 std::vector<struct breakpoint *> found;
11338 for (const auto &sal : sals)
11339 {
11340 const char *sal_fullname;
11341
11342 /* If exact pc given, clear bpts at that pc.
11343 If line given (pc == 0), clear all bpts on specified line.
11344 If defaulting, clear all bpts on default line
11345 or at default pc.
11346
11347 defaulting sal.pc != 0 tests to do
11348
11349 0 1 pc
11350 1 1 pc _and_ line
11351 0 0 line
11352 1 0 <can't happen> */
11353
11354 sal_fullname = (sal.symtab == NULL
11355 ? NULL : symtab_to_fullname (sal.symtab));
11356
11357 /* Find all matching breakpoints and add them to 'found'. */
11358 ALL_BREAKPOINTS (b)
11359 {
11360 int match = 0;
11361 /* Are we going to delete b? */
11362 if (b->type != bp_none && !is_watchpoint (b))
11363 {
11364 struct bp_location *loc = b->loc;
11365 for (; loc; loc = loc->next)
11366 {
11367 /* If the user specified file:line, don't allow a PC
11368 match. This matches historical gdb behavior. */
11369 int pc_match = (!sal.explicit_line
11370 && sal.pc
11371 && (loc->pspace == sal.pspace)
11372 && (loc->address == sal.pc)
11373 && (!section_is_overlay (loc->section)
11374 || loc->section == sal.section));
11375 int line_match = 0;
11376
11377 if ((default_match || sal.explicit_line)
11378 && loc->symtab != NULL
11379 && sal_fullname != NULL
11380 && sal.pspace == loc->pspace
11381 && loc->line_number == sal.line
11382 && filename_cmp (symtab_to_fullname (loc->symtab),
11383 sal_fullname) == 0)
11384 line_match = 1;
11385
11386 if (pc_match || line_match)
11387 {
11388 match = 1;
11389 break;
11390 }
11391 }
11392 }
11393
11394 if (match)
11395 found.push_back (b);
11396 }
11397 }
11398
11399 /* Now go thru the 'found' chain and delete them. */
11400 if (found.empty ())
11401 {
11402 if (arg)
11403 error (_("No breakpoint at %s."), arg);
11404 else
11405 error (_("No breakpoint at this line."));
11406 }
11407
11408 /* Remove duplicates from the vec. */
11409 std::sort (found.begin (), found.end (),
11410 [] (const breakpoint *bp_a, const breakpoint *bp_b)
11411 {
11412 return compare_breakpoints (bp_a, bp_b) < 0;
11413 });
11414 found.erase (std::unique (found.begin (), found.end (),
11415 [] (const breakpoint *bp_a, const breakpoint *bp_b)
11416 {
11417 return compare_breakpoints (bp_a, bp_b) == 0;
11418 }),
11419 found.end ());
11420
11421 if (found.size () > 1)
11422 from_tty = 1; /* Always report if deleted more than one. */
11423 if (from_tty)
11424 {
11425 if (found.size () == 1)
11426 printf_unfiltered (_("Deleted breakpoint "));
11427 else
11428 printf_unfiltered (_("Deleted breakpoints "));
11429 }
11430
11431 for (breakpoint *iter : found)
11432 {
11433 if (from_tty)
11434 printf_unfiltered ("%d ", iter->number);
11435 delete_breakpoint (iter);
11436 }
11437 if (from_tty)
11438 putchar_unfiltered ('\n');
11439 }
11440 \f
11441 /* Delete breakpoint in BS if they are `delete' breakpoints and
11442 all breakpoints that are marked for deletion, whether hit or not.
11443 This is called after any breakpoint is hit, or after errors. */
11444
11445 void
11446 breakpoint_auto_delete (bpstat bs)
11447 {
11448 struct breakpoint *b, *b_tmp;
11449
11450 for (; bs; bs = bs->next)
11451 if (bs->breakpoint_at
11452 && bs->breakpoint_at->disposition == disp_del
11453 && bs->stop)
11454 delete_breakpoint (bs->breakpoint_at);
11455
11456 ALL_BREAKPOINTS_SAFE (b, b_tmp)
11457 {
11458 if (b->disposition == disp_del_at_next_stop)
11459 delete_breakpoint (b);
11460 }
11461 }
11462
11463 /* A comparison function for bp_location AP and BP being interfaced to
11464 qsort. Sort elements primarily by their ADDRESS (no matter what
11465 does breakpoint_address_is_meaningful say for its OWNER),
11466 secondarily by ordering first permanent elements and
11467 terciarily just ensuring the array is sorted stable way despite
11468 qsort being an unstable algorithm. */
11469
11470 static int
11471 bp_locations_compare (const void *ap, const void *bp)
11472 {
11473 const struct bp_location *a = *(const struct bp_location **) ap;
11474 const struct bp_location *b = *(const struct bp_location **) bp;
11475
11476 if (a->address != b->address)
11477 return (a->address > b->address) - (a->address < b->address);
11478
11479 /* Sort locations at the same address by their pspace number, keeping
11480 locations of the same inferior (in a multi-inferior environment)
11481 grouped. */
11482
11483 if (a->pspace->num != b->pspace->num)
11484 return ((a->pspace->num > b->pspace->num)
11485 - (a->pspace->num < b->pspace->num));
11486
11487 /* Sort permanent breakpoints first. */
11488 if (a->permanent != b->permanent)
11489 return (a->permanent < b->permanent) - (a->permanent > b->permanent);
11490
11491 /* Make the internal GDB representation stable across GDB runs
11492 where A and B memory inside GDB can differ. Breakpoint locations of
11493 the same type at the same address can be sorted in arbitrary order. */
11494
11495 if (a->owner->number != b->owner->number)
11496 return ((a->owner->number > b->owner->number)
11497 - (a->owner->number < b->owner->number));
11498
11499 return (a > b) - (a < b);
11500 }
11501
11502 /* Set bp_locations_placed_address_before_address_max and
11503 bp_locations_shadow_len_after_address_max according to the current
11504 content of the bp_locations array. */
11505
11506 static void
11507 bp_locations_target_extensions_update (void)
11508 {
11509 struct bp_location *bl, **blp_tmp;
11510
11511 bp_locations_placed_address_before_address_max = 0;
11512 bp_locations_shadow_len_after_address_max = 0;
11513
11514 ALL_BP_LOCATIONS (bl, blp_tmp)
11515 {
11516 CORE_ADDR start, end, addr;
11517
11518 if (!bp_location_has_shadow (bl))
11519 continue;
11520
11521 start = bl->target_info.placed_address;
11522 end = start + bl->target_info.shadow_len;
11523
11524 gdb_assert (bl->address >= start);
11525 addr = bl->address - start;
11526 if (addr > bp_locations_placed_address_before_address_max)
11527 bp_locations_placed_address_before_address_max = addr;
11528
11529 /* Zero SHADOW_LEN would not pass bp_location_has_shadow. */
11530
11531 gdb_assert (bl->address < end);
11532 addr = end - bl->address;
11533 if (addr > bp_locations_shadow_len_after_address_max)
11534 bp_locations_shadow_len_after_address_max = addr;
11535 }
11536 }
11537
11538 /* Download tracepoint locations if they haven't been. */
11539
11540 static void
11541 download_tracepoint_locations (void)
11542 {
11543 struct breakpoint *b;
11544 enum tribool can_download_tracepoint = TRIBOOL_UNKNOWN;
11545
11546 scoped_restore_current_pspace_and_thread restore_pspace_thread;
11547
11548 ALL_TRACEPOINTS (b)
11549 {
11550 struct bp_location *bl;
11551 struct tracepoint *t;
11552 int bp_location_downloaded = 0;
11553
11554 if ((b->type == bp_fast_tracepoint
11555 ? !may_insert_fast_tracepoints
11556 : !may_insert_tracepoints))
11557 continue;
11558
11559 if (can_download_tracepoint == TRIBOOL_UNKNOWN)
11560 {
11561 if (target_can_download_tracepoint ())
11562 can_download_tracepoint = TRIBOOL_TRUE;
11563 else
11564 can_download_tracepoint = TRIBOOL_FALSE;
11565 }
11566
11567 if (can_download_tracepoint == TRIBOOL_FALSE)
11568 break;
11569
11570 for (bl = b->loc; bl; bl = bl->next)
11571 {
11572 /* In tracepoint, locations are _never_ duplicated, so
11573 should_be_inserted is equivalent to
11574 unduplicated_should_be_inserted. */
11575 if (!should_be_inserted (bl) || bl->inserted)
11576 continue;
11577
11578 switch_to_program_space_and_thread (bl->pspace);
11579
11580 target_download_tracepoint (bl);
11581
11582 bl->inserted = 1;
11583 bp_location_downloaded = 1;
11584 }
11585 t = (struct tracepoint *) b;
11586 t->number_on_target = b->number;
11587 if (bp_location_downloaded)
11588 gdb::observers::breakpoint_modified.notify (b);
11589 }
11590 }
11591
11592 /* Swap the insertion/duplication state between two locations. */
11593
11594 static void
11595 swap_insertion (struct bp_location *left, struct bp_location *right)
11596 {
11597 const int left_inserted = left->inserted;
11598 const int left_duplicate = left->duplicate;
11599 const int left_needs_update = left->needs_update;
11600 const struct bp_target_info left_target_info = left->target_info;
11601
11602 /* Locations of tracepoints can never be duplicated. */
11603 if (is_tracepoint (left->owner))
11604 gdb_assert (!left->duplicate);
11605 if (is_tracepoint (right->owner))
11606 gdb_assert (!right->duplicate);
11607
11608 left->inserted = right->inserted;
11609 left->duplicate = right->duplicate;
11610 left->needs_update = right->needs_update;
11611 left->target_info = right->target_info;
11612 right->inserted = left_inserted;
11613 right->duplicate = left_duplicate;
11614 right->needs_update = left_needs_update;
11615 right->target_info = left_target_info;
11616 }
11617
11618 /* Force the re-insertion of the locations at ADDRESS. This is called
11619 once a new/deleted/modified duplicate location is found and we are evaluating
11620 conditions on the target's side. Such conditions need to be updated on
11621 the target. */
11622
11623 static void
11624 force_breakpoint_reinsertion (struct bp_location *bl)
11625 {
11626 struct bp_location **locp = NULL, **loc2p;
11627 struct bp_location *loc;
11628 CORE_ADDR address = 0;
11629 int pspace_num;
11630
11631 address = bl->address;
11632 pspace_num = bl->pspace->num;
11633
11634 /* This is only meaningful if the target is
11635 evaluating conditions and if the user has
11636 opted for condition evaluation on the target's
11637 side. */
11638 if (gdb_evaluates_breakpoint_condition_p ()
11639 || !target_supports_evaluation_of_breakpoint_conditions ())
11640 return;
11641
11642 /* Flag all breakpoint locations with this address and
11643 the same program space as the location
11644 as "its condition has changed". We need to
11645 update the conditions on the target's side. */
11646 ALL_BP_LOCATIONS_AT_ADDR (loc2p, locp, address)
11647 {
11648 loc = *loc2p;
11649
11650 if (!is_breakpoint (loc->owner)
11651 || pspace_num != loc->pspace->num)
11652 continue;
11653
11654 /* Flag the location appropriately. We use a different state to
11655 let everyone know that we already updated the set of locations
11656 with addr bl->address and program space bl->pspace. This is so
11657 we don't have to keep calling these functions just to mark locations
11658 that have already been marked. */
11659 loc->condition_changed = condition_updated;
11660
11661 /* Free the agent expression bytecode as well. We will compute
11662 it later on. */
11663 loc->cond_bytecode.reset ();
11664 }
11665 }
11666 /* Called whether new breakpoints are created, or existing breakpoints
11667 deleted, to update the global location list and recompute which
11668 locations are duplicate of which.
11669
11670 The INSERT_MODE flag determines whether locations may not, may, or
11671 shall be inserted now. See 'enum ugll_insert_mode' for more
11672 info. */
11673
11674 static void
11675 update_global_location_list (enum ugll_insert_mode insert_mode)
11676 {
11677 struct breakpoint *b;
11678 struct bp_location **locp, *loc;
11679 /* Last breakpoint location address that was marked for update. */
11680 CORE_ADDR last_addr = 0;
11681 /* Last breakpoint location program space that was marked for update. */
11682 int last_pspace_num = -1;
11683
11684 /* Used in the duplicates detection below. When iterating over all
11685 bp_locations, points to the first bp_location of a given address.
11686 Breakpoints and watchpoints of different types are never
11687 duplicates of each other. Keep one pointer for each type of
11688 breakpoint/watchpoint, so we only need to loop over all locations
11689 once. */
11690 struct bp_location *bp_loc_first; /* breakpoint */
11691 struct bp_location *wp_loc_first; /* hardware watchpoint */
11692 struct bp_location *awp_loc_first; /* access watchpoint */
11693 struct bp_location *rwp_loc_first; /* read watchpoint */
11694
11695 /* Saved former bp_locations array which we compare against the newly
11696 built bp_locations from the current state of ALL_BREAKPOINTS. */
11697 struct bp_location **old_locp;
11698 unsigned old_locations_count;
11699 gdb::unique_xmalloc_ptr<struct bp_location *> old_locations (bp_locations);
11700
11701 old_locations_count = bp_locations_count;
11702 bp_locations = NULL;
11703 bp_locations_count = 0;
11704
11705 ALL_BREAKPOINTS (b)
11706 for (loc = b->loc; loc; loc = loc->next)
11707 bp_locations_count++;
11708
11709 bp_locations = XNEWVEC (struct bp_location *, bp_locations_count);
11710 locp = bp_locations;
11711 ALL_BREAKPOINTS (b)
11712 for (loc = b->loc; loc; loc = loc->next)
11713 *locp++ = loc;
11714 qsort (bp_locations, bp_locations_count, sizeof (*bp_locations),
11715 bp_locations_compare);
11716
11717 bp_locations_target_extensions_update ();
11718
11719 /* Identify bp_location instances that are no longer present in the
11720 new list, and therefore should be freed. Note that it's not
11721 necessary that those locations should be removed from inferior --
11722 if there's another location at the same address (previously
11723 marked as duplicate), we don't need to remove/insert the
11724 location.
11725
11726 LOCP is kept in sync with OLD_LOCP, each pointing to the current
11727 and former bp_location array state respectively. */
11728
11729 locp = bp_locations;
11730 for (old_locp = old_locations.get ();
11731 old_locp < old_locations.get () + old_locations_count;
11732 old_locp++)
11733 {
11734 struct bp_location *old_loc = *old_locp;
11735 struct bp_location **loc2p;
11736
11737 /* Tells if 'old_loc' is found among the new locations. If
11738 not, we have to free it. */
11739 int found_object = 0;
11740 /* Tells if the location should remain inserted in the target. */
11741 int keep_in_target = 0;
11742 int removed = 0;
11743
11744 /* Skip LOCP entries which will definitely never be needed.
11745 Stop either at or being the one matching OLD_LOC. */
11746 while (locp < bp_locations + bp_locations_count
11747 && (*locp)->address < old_loc->address)
11748 locp++;
11749
11750 for (loc2p = locp;
11751 (loc2p < bp_locations + bp_locations_count
11752 && (*loc2p)->address == old_loc->address);
11753 loc2p++)
11754 {
11755 /* Check if this is a new/duplicated location or a duplicated
11756 location that had its condition modified. If so, we want to send
11757 its condition to the target if evaluation of conditions is taking
11758 place there. */
11759 if ((*loc2p)->condition_changed == condition_modified
11760 && (last_addr != old_loc->address
11761 || last_pspace_num != old_loc->pspace->num))
11762 {
11763 force_breakpoint_reinsertion (*loc2p);
11764 last_pspace_num = old_loc->pspace->num;
11765 }
11766
11767 if (*loc2p == old_loc)
11768 found_object = 1;
11769 }
11770
11771 /* We have already handled this address, update it so that we don't
11772 have to go through updates again. */
11773 last_addr = old_loc->address;
11774
11775 /* Target-side condition evaluation: Handle deleted locations. */
11776 if (!found_object)
11777 force_breakpoint_reinsertion (old_loc);
11778
11779 /* If this location is no longer present, and inserted, look if
11780 there's maybe a new location at the same address. If so,
11781 mark that one inserted, and don't remove this one. This is
11782 needed so that we don't have a time window where a breakpoint
11783 at certain location is not inserted. */
11784
11785 if (old_loc->inserted)
11786 {
11787 /* If the location is inserted now, we might have to remove
11788 it. */
11789
11790 if (found_object && should_be_inserted (old_loc))
11791 {
11792 /* The location is still present in the location list,
11793 and still should be inserted. Don't do anything. */
11794 keep_in_target = 1;
11795 }
11796 else
11797 {
11798 /* This location still exists, but it won't be kept in the
11799 target since it may have been disabled. We proceed to
11800 remove its target-side condition. */
11801
11802 /* The location is either no longer present, or got
11803 disabled. See if there's another location at the
11804 same address, in which case we don't need to remove
11805 this one from the target. */
11806
11807 /* OLD_LOC comes from existing struct breakpoint. */
11808 if (breakpoint_address_is_meaningful (old_loc->owner))
11809 {
11810 for (loc2p = locp;
11811 (loc2p < bp_locations + bp_locations_count
11812 && (*loc2p)->address == old_loc->address);
11813 loc2p++)
11814 {
11815 struct bp_location *loc2 = *loc2p;
11816
11817 if (breakpoint_locations_match (loc2, old_loc))
11818 {
11819 /* Read watchpoint locations are switched to
11820 access watchpoints, if the former are not
11821 supported, but the latter are. */
11822 if (is_hardware_watchpoint (old_loc->owner))
11823 {
11824 gdb_assert (is_hardware_watchpoint (loc2->owner));
11825 loc2->watchpoint_type = old_loc->watchpoint_type;
11826 }
11827
11828 /* loc2 is a duplicated location. We need to check
11829 if it should be inserted in case it will be
11830 unduplicated. */
11831 if (loc2 != old_loc
11832 && unduplicated_should_be_inserted (loc2))
11833 {
11834 swap_insertion (old_loc, loc2);
11835 keep_in_target = 1;
11836 break;
11837 }
11838 }
11839 }
11840 }
11841 }
11842
11843 if (!keep_in_target)
11844 {
11845 if (remove_breakpoint (old_loc))
11846 {
11847 /* This is just about all we can do. We could keep
11848 this location on the global list, and try to
11849 remove it next time, but there's no particular
11850 reason why we will succeed next time.
11851
11852 Note that at this point, old_loc->owner is still
11853 valid, as delete_breakpoint frees the breakpoint
11854 only after calling us. */
11855 printf_filtered (_("warning: Error removing "
11856 "breakpoint %d\n"),
11857 old_loc->owner->number);
11858 }
11859 removed = 1;
11860 }
11861 }
11862
11863 if (!found_object)
11864 {
11865 if (removed && target_is_non_stop_p ()
11866 && need_moribund_for_location_type (old_loc))
11867 {
11868 /* This location was removed from the target. In
11869 non-stop mode, a race condition is possible where
11870 we've removed a breakpoint, but stop events for that
11871 breakpoint are already queued and will arrive later.
11872 We apply an heuristic to be able to distinguish such
11873 SIGTRAPs from other random SIGTRAPs: we keep this
11874 breakpoint location for a bit, and will retire it
11875 after we see some number of events. The theory here
11876 is that reporting of events should, "on the average",
11877 be fair, so after a while we'll see events from all
11878 threads that have anything of interest, and no longer
11879 need to keep this breakpoint location around. We
11880 don't hold locations forever so to reduce chances of
11881 mistaking a non-breakpoint SIGTRAP for a breakpoint
11882 SIGTRAP.
11883
11884 The heuristic failing can be disastrous on
11885 decr_pc_after_break targets.
11886
11887 On decr_pc_after_break targets, like e.g., x86-linux,
11888 if we fail to recognize a late breakpoint SIGTRAP,
11889 because events_till_retirement has reached 0 too
11890 soon, we'll fail to do the PC adjustment, and report
11891 a random SIGTRAP to the user. When the user resumes
11892 the inferior, it will most likely immediately crash
11893 with SIGILL/SIGBUS/SIGSEGV, or worse, get silently
11894 corrupted, because of being resumed e.g., in the
11895 middle of a multi-byte instruction, or skipped a
11896 one-byte instruction. This was actually seen happen
11897 on native x86-linux, and should be less rare on
11898 targets that do not support new thread events, like
11899 remote, due to the heuristic depending on
11900 thread_count.
11901
11902 Mistaking a random SIGTRAP for a breakpoint trap
11903 causes similar symptoms (PC adjustment applied when
11904 it shouldn't), but then again, playing with SIGTRAPs
11905 behind the debugger's back is asking for trouble.
11906
11907 Since hardware watchpoint traps are always
11908 distinguishable from other traps, so we don't need to
11909 apply keep hardware watchpoint moribund locations
11910 around. We simply always ignore hardware watchpoint
11911 traps we can no longer explain. */
11912
11913 old_loc->events_till_retirement = 3 * (thread_count () + 1);
11914 old_loc->owner = NULL;
11915
11916 moribund_locations.push_back (old_loc);
11917 }
11918 else
11919 {
11920 old_loc->owner = NULL;
11921 decref_bp_location (&old_loc);
11922 }
11923 }
11924 }
11925
11926 /* Rescan breakpoints at the same address and section, marking the
11927 first one as "first" and any others as "duplicates". This is so
11928 that the bpt instruction is only inserted once. If we have a
11929 permanent breakpoint at the same place as BPT, make that one the
11930 official one, and the rest as duplicates. Permanent breakpoints
11931 are sorted first for the same address.
11932
11933 Do the same for hardware watchpoints, but also considering the
11934 watchpoint's type (regular/access/read) and length. */
11935
11936 bp_loc_first = NULL;
11937 wp_loc_first = NULL;
11938 awp_loc_first = NULL;
11939 rwp_loc_first = NULL;
11940 ALL_BP_LOCATIONS (loc, locp)
11941 {
11942 /* ALL_BP_LOCATIONS bp_location has LOC->OWNER always
11943 non-NULL. */
11944 struct bp_location **loc_first_p;
11945 b = loc->owner;
11946
11947 if (!unduplicated_should_be_inserted (loc)
11948 || !breakpoint_address_is_meaningful (b)
11949 /* Don't detect duplicate for tracepoint locations because they are
11950 never duplicated. See the comments in field `duplicate' of
11951 `struct bp_location'. */
11952 || is_tracepoint (b))
11953 {
11954 /* Clear the condition modification flag. */
11955 loc->condition_changed = condition_unchanged;
11956 continue;
11957 }
11958
11959 if (b->type == bp_hardware_watchpoint)
11960 loc_first_p = &wp_loc_first;
11961 else if (b->type == bp_read_watchpoint)
11962 loc_first_p = &rwp_loc_first;
11963 else if (b->type == bp_access_watchpoint)
11964 loc_first_p = &awp_loc_first;
11965 else
11966 loc_first_p = &bp_loc_first;
11967
11968 if (*loc_first_p == NULL
11969 || (overlay_debugging && loc->section != (*loc_first_p)->section)
11970 || !breakpoint_locations_match (loc, *loc_first_p))
11971 {
11972 *loc_first_p = loc;
11973 loc->duplicate = 0;
11974
11975 if (is_breakpoint (loc->owner) && loc->condition_changed)
11976 {
11977 loc->needs_update = 1;
11978 /* Clear the condition modification flag. */
11979 loc->condition_changed = condition_unchanged;
11980 }
11981 continue;
11982 }
11983
11984
11985 /* This and the above ensure the invariant that the first location
11986 is not duplicated, and is the inserted one.
11987 All following are marked as duplicated, and are not inserted. */
11988 if (loc->inserted)
11989 swap_insertion (loc, *loc_first_p);
11990 loc->duplicate = 1;
11991
11992 /* Clear the condition modification flag. */
11993 loc->condition_changed = condition_unchanged;
11994 }
11995
11996 if (insert_mode == UGLL_INSERT || breakpoints_should_be_inserted_now ())
11997 {
11998 if (insert_mode != UGLL_DONT_INSERT)
11999 insert_breakpoint_locations ();
12000 else
12001 {
12002 /* Even though the caller told us to not insert new
12003 locations, we may still need to update conditions on the
12004 target's side of breakpoints that were already inserted
12005 if the target is evaluating breakpoint conditions. We
12006 only update conditions for locations that are marked
12007 "needs_update". */
12008 update_inserted_breakpoint_locations ();
12009 }
12010 }
12011
12012 if (insert_mode != UGLL_DONT_INSERT)
12013 download_tracepoint_locations ();
12014 }
12015
12016 void
12017 breakpoint_retire_moribund (void)
12018 {
12019 for (int ix = 0; ix < moribund_locations.size (); ++ix)
12020 {
12021 struct bp_location *loc = moribund_locations[ix];
12022 if (--(loc->events_till_retirement) == 0)
12023 {
12024 decref_bp_location (&loc);
12025 unordered_remove (moribund_locations, ix);
12026 --ix;
12027 }
12028 }
12029 }
12030
12031 static void
12032 update_global_location_list_nothrow (enum ugll_insert_mode insert_mode)
12033 {
12034
12035 try
12036 {
12037 update_global_location_list (insert_mode);
12038 }
12039 catch (const gdb_exception_error &e)
12040 {
12041 }
12042 }
12043
12044 /* Clear BKP from a BPS. */
12045
12046 static void
12047 bpstat_remove_bp_location (bpstat bps, struct breakpoint *bpt)
12048 {
12049 bpstat bs;
12050
12051 for (bs = bps; bs; bs = bs->next)
12052 if (bs->breakpoint_at == bpt)
12053 {
12054 bs->breakpoint_at = NULL;
12055 bs->old_val = NULL;
12056 /* bs->commands will be freed later. */
12057 }
12058 }
12059
12060 /* Callback for iterate_over_threads. */
12061 static int
12062 bpstat_remove_breakpoint_callback (struct thread_info *th, void *data)
12063 {
12064 struct breakpoint *bpt = (struct breakpoint *) data;
12065
12066 bpstat_remove_bp_location (th->control.stop_bpstat, bpt);
12067 return 0;
12068 }
12069
12070 /* Helper for breakpoint and tracepoint breakpoint_ops->mention
12071 callbacks. */
12072
12073 static void
12074 say_where (struct breakpoint *b)
12075 {
12076 struct value_print_options opts;
12077
12078 get_user_print_options (&opts);
12079
12080 /* i18n: cagney/2005-02-11: Below needs to be merged into a
12081 single string. */
12082 if (b->loc == NULL)
12083 {
12084 /* For pending locations, the output differs slightly based
12085 on b->extra_string. If this is non-NULL, it contains either
12086 a condition or dprintf arguments. */
12087 if (b->extra_string == NULL)
12088 {
12089 printf_filtered (_(" (%s) pending."),
12090 event_location_to_string (b->location.get ()));
12091 }
12092 else if (b->type == bp_dprintf)
12093 {
12094 printf_filtered (_(" (%s,%s) pending."),
12095 event_location_to_string (b->location.get ()),
12096 b->extra_string);
12097 }
12098 else
12099 {
12100 printf_filtered (_(" (%s %s) pending."),
12101 event_location_to_string (b->location.get ()),
12102 b->extra_string);
12103 }
12104 }
12105 else
12106 {
12107 if (opts.addressprint || b->loc->symtab == NULL)
12108 {
12109 printf_filtered (" at ");
12110 fputs_styled (paddress (b->loc->gdbarch, b->loc->address),
12111 address_style.style (),
12112 gdb_stdout);
12113 }
12114 if (b->loc->symtab != NULL)
12115 {
12116 /* If there is a single location, we can print the location
12117 more nicely. */
12118 if (b->loc->next == NULL)
12119 {
12120 puts_filtered (": file ");
12121 fputs_styled (symtab_to_filename_for_display (b->loc->symtab),
12122 file_name_style.style (),
12123 gdb_stdout);
12124 printf_filtered (", line %d.",
12125 b->loc->line_number);
12126 }
12127 else
12128 /* This is not ideal, but each location may have a
12129 different file name, and this at least reflects the
12130 real situation somewhat. */
12131 printf_filtered (": %s.",
12132 event_location_to_string (b->location.get ()));
12133 }
12134
12135 if (b->loc->next)
12136 {
12137 struct bp_location *loc = b->loc;
12138 int n = 0;
12139 for (; loc; loc = loc->next)
12140 ++n;
12141 printf_filtered (" (%d locations)", n);
12142 }
12143 }
12144 }
12145
12146 bp_location::~bp_location ()
12147 {
12148 xfree (function_name);
12149 }
12150
12151 /* Destructor for the breakpoint base class. */
12152
12153 breakpoint::~breakpoint ()
12154 {
12155 xfree (this->cond_string);
12156 xfree (this->extra_string);
12157 xfree (this->filter);
12158 }
12159
12160 static struct bp_location *
12161 base_breakpoint_allocate_location (struct breakpoint *self)
12162 {
12163 return new bp_location (self);
12164 }
12165
12166 static void
12167 base_breakpoint_re_set (struct breakpoint *b)
12168 {
12169 /* Nothing to re-set. */
12170 }
12171
12172 #define internal_error_pure_virtual_called() \
12173 gdb_assert_not_reached ("pure virtual function called")
12174
12175 static int
12176 base_breakpoint_insert_location (struct bp_location *bl)
12177 {
12178 internal_error_pure_virtual_called ();
12179 }
12180
12181 static int
12182 base_breakpoint_remove_location (struct bp_location *bl,
12183 enum remove_bp_reason reason)
12184 {
12185 internal_error_pure_virtual_called ();
12186 }
12187
12188 static int
12189 base_breakpoint_breakpoint_hit (const struct bp_location *bl,
12190 const address_space *aspace,
12191 CORE_ADDR bp_addr,
12192 const struct target_waitstatus *ws)
12193 {
12194 internal_error_pure_virtual_called ();
12195 }
12196
12197 static void
12198 base_breakpoint_check_status (bpstat bs)
12199 {
12200 /* Always stop. */
12201 }
12202
12203 /* A "works_in_software_mode" breakpoint_ops method that just internal
12204 errors. */
12205
12206 static int
12207 base_breakpoint_works_in_software_mode (const struct breakpoint *b)
12208 {
12209 internal_error_pure_virtual_called ();
12210 }
12211
12212 /* A "resources_needed" breakpoint_ops method that just internal
12213 errors. */
12214
12215 static int
12216 base_breakpoint_resources_needed (const struct bp_location *bl)
12217 {
12218 internal_error_pure_virtual_called ();
12219 }
12220
12221 static enum print_stop_action
12222 base_breakpoint_print_it (bpstat bs)
12223 {
12224 internal_error_pure_virtual_called ();
12225 }
12226
12227 static void
12228 base_breakpoint_print_one_detail (const struct breakpoint *self,
12229 struct ui_out *uiout)
12230 {
12231 /* nothing */
12232 }
12233
12234 static void
12235 base_breakpoint_print_mention (struct breakpoint *b)
12236 {
12237 internal_error_pure_virtual_called ();
12238 }
12239
12240 static void
12241 base_breakpoint_print_recreate (struct breakpoint *b, struct ui_file *fp)
12242 {
12243 internal_error_pure_virtual_called ();
12244 }
12245
12246 static void
12247 base_breakpoint_create_sals_from_location
12248 (const struct event_location *location,
12249 struct linespec_result *canonical,
12250 enum bptype type_wanted)
12251 {
12252 internal_error_pure_virtual_called ();
12253 }
12254
12255 static void
12256 base_breakpoint_create_breakpoints_sal (struct gdbarch *gdbarch,
12257 struct linespec_result *c,
12258 gdb::unique_xmalloc_ptr<char> cond_string,
12259 gdb::unique_xmalloc_ptr<char> extra_string,
12260 enum bptype type_wanted,
12261 enum bpdisp disposition,
12262 int thread,
12263 int task, int ignore_count,
12264 const struct breakpoint_ops *o,
12265 int from_tty, int enabled,
12266 int internal, unsigned flags)
12267 {
12268 internal_error_pure_virtual_called ();
12269 }
12270
12271 static std::vector<symtab_and_line>
12272 base_breakpoint_decode_location (struct breakpoint *b,
12273 const struct event_location *location,
12274 struct program_space *search_pspace)
12275 {
12276 internal_error_pure_virtual_called ();
12277 }
12278
12279 /* The default 'explains_signal' method. */
12280
12281 static int
12282 base_breakpoint_explains_signal (struct breakpoint *b, enum gdb_signal sig)
12283 {
12284 return 1;
12285 }
12286
12287 /* The default "after_condition_true" method. */
12288
12289 static void
12290 base_breakpoint_after_condition_true (struct bpstats *bs)
12291 {
12292 /* Nothing to do. */
12293 }
12294
12295 struct breakpoint_ops base_breakpoint_ops =
12296 {
12297 base_breakpoint_allocate_location,
12298 base_breakpoint_re_set,
12299 base_breakpoint_insert_location,
12300 base_breakpoint_remove_location,
12301 base_breakpoint_breakpoint_hit,
12302 base_breakpoint_check_status,
12303 base_breakpoint_resources_needed,
12304 base_breakpoint_works_in_software_mode,
12305 base_breakpoint_print_it,
12306 NULL,
12307 base_breakpoint_print_one_detail,
12308 base_breakpoint_print_mention,
12309 base_breakpoint_print_recreate,
12310 base_breakpoint_create_sals_from_location,
12311 base_breakpoint_create_breakpoints_sal,
12312 base_breakpoint_decode_location,
12313 base_breakpoint_explains_signal,
12314 base_breakpoint_after_condition_true,
12315 };
12316
12317 /* Default breakpoint_ops methods. */
12318
12319 static void
12320 bkpt_re_set (struct breakpoint *b)
12321 {
12322 /* FIXME: is this still reachable? */
12323 if (breakpoint_event_location_empty_p (b))
12324 {
12325 /* Anything without a location can't be re-set. */
12326 delete_breakpoint (b);
12327 return;
12328 }
12329
12330 breakpoint_re_set_default (b);
12331 }
12332
12333 static int
12334 bkpt_insert_location (struct bp_location *bl)
12335 {
12336 CORE_ADDR addr = bl->target_info.reqstd_address;
12337
12338 bl->target_info.kind = breakpoint_kind (bl, &addr);
12339 bl->target_info.placed_address = addr;
12340
12341 if (bl->loc_type == bp_loc_hardware_breakpoint)
12342 return target_insert_hw_breakpoint (bl->gdbarch, &bl->target_info);
12343 else
12344 return target_insert_breakpoint (bl->gdbarch, &bl->target_info);
12345 }
12346
12347 static int
12348 bkpt_remove_location (struct bp_location *bl, enum remove_bp_reason reason)
12349 {
12350 if (bl->loc_type == bp_loc_hardware_breakpoint)
12351 return target_remove_hw_breakpoint (bl->gdbarch, &bl->target_info);
12352 else
12353 return target_remove_breakpoint (bl->gdbarch, &bl->target_info, reason);
12354 }
12355
12356 static int
12357 bkpt_breakpoint_hit (const struct bp_location *bl,
12358 const address_space *aspace, CORE_ADDR bp_addr,
12359 const struct target_waitstatus *ws)
12360 {
12361 if (ws->kind != TARGET_WAITKIND_STOPPED
12362 || ws->value.sig != GDB_SIGNAL_TRAP)
12363 return 0;
12364
12365 if (!breakpoint_address_match (bl->pspace->aspace, bl->address,
12366 aspace, bp_addr))
12367 return 0;
12368
12369 if (overlay_debugging /* unmapped overlay section */
12370 && section_is_overlay (bl->section)
12371 && !section_is_mapped (bl->section))
12372 return 0;
12373
12374 return 1;
12375 }
12376
12377 static int
12378 dprintf_breakpoint_hit (const struct bp_location *bl,
12379 const address_space *aspace, CORE_ADDR bp_addr,
12380 const struct target_waitstatus *ws)
12381 {
12382 if (dprintf_style == dprintf_style_agent
12383 && target_can_run_breakpoint_commands ())
12384 {
12385 /* An agent-style dprintf never causes a stop. If we see a trap
12386 for this address it must be for a breakpoint that happens to
12387 be set at the same address. */
12388 return 0;
12389 }
12390
12391 return bkpt_breakpoint_hit (bl, aspace, bp_addr, ws);
12392 }
12393
12394 static int
12395 bkpt_resources_needed (const struct bp_location *bl)
12396 {
12397 gdb_assert (bl->owner->type == bp_hardware_breakpoint);
12398
12399 return 1;
12400 }
12401
12402 static enum print_stop_action
12403 bkpt_print_it (bpstat bs)
12404 {
12405 struct breakpoint *b;
12406 const struct bp_location *bl;
12407 int bp_temp;
12408 struct ui_out *uiout = current_uiout;
12409
12410 gdb_assert (bs->bp_location_at != NULL);
12411
12412 bl = bs->bp_location_at;
12413 b = bs->breakpoint_at;
12414
12415 bp_temp = b->disposition == disp_del;
12416 if (bl->address != bl->requested_address)
12417 breakpoint_adjustment_warning (bl->requested_address,
12418 bl->address,
12419 b->number, 1);
12420 annotate_breakpoint (b->number);
12421 maybe_print_thread_hit_breakpoint (uiout);
12422
12423 if (bp_temp)
12424 uiout->text ("Temporary breakpoint ");
12425 else
12426 uiout->text ("Breakpoint ");
12427 if (uiout->is_mi_like_p ())
12428 {
12429 uiout->field_string ("reason",
12430 async_reason_lookup (EXEC_ASYNC_BREAKPOINT_HIT));
12431 uiout->field_string ("disp", bpdisp_text (b->disposition));
12432 }
12433 uiout->field_int ("bkptno", b->number);
12434 uiout->text (", ");
12435
12436 return PRINT_SRC_AND_LOC;
12437 }
12438
12439 static void
12440 bkpt_print_mention (struct breakpoint *b)
12441 {
12442 if (current_uiout->is_mi_like_p ())
12443 return;
12444
12445 switch (b->type)
12446 {
12447 case bp_breakpoint:
12448 case bp_gnu_ifunc_resolver:
12449 if (b->disposition == disp_del)
12450 printf_filtered (_("Temporary breakpoint"));
12451 else
12452 printf_filtered (_("Breakpoint"));
12453 printf_filtered (_(" %d"), b->number);
12454 if (b->type == bp_gnu_ifunc_resolver)
12455 printf_filtered (_(" at gnu-indirect-function resolver"));
12456 break;
12457 case bp_hardware_breakpoint:
12458 printf_filtered (_("Hardware assisted breakpoint %d"), b->number);
12459 break;
12460 case bp_dprintf:
12461 printf_filtered (_("Dprintf %d"), b->number);
12462 break;
12463 }
12464
12465 say_where (b);
12466 }
12467
12468 static void
12469 bkpt_print_recreate (struct breakpoint *tp, struct ui_file *fp)
12470 {
12471 if (tp->type == bp_breakpoint && tp->disposition == disp_del)
12472 fprintf_unfiltered (fp, "tbreak");
12473 else if (tp->type == bp_breakpoint)
12474 fprintf_unfiltered (fp, "break");
12475 else if (tp->type == bp_hardware_breakpoint
12476 && tp->disposition == disp_del)
12477 fprintf_unfiltered (fp, "thbreak");
12478 else if (tp->type == bp_hardware_breakpoint)
12479 fprintf_unfiltered (fp, "hbreak");
12480 else
12481 internal_error (__FILE__, __LINE__,
12482 _("unhandled breakpoint type %d"), (int) tp->type);
12483
12484 fprintf_unfiltered (fp, " %s",
12485 event_location_to_string (tp->location.get ()));
12486
12487 /* Print out extra_string if this breakpoint is pending. It might
12488 contain, for example, conditions that were set by the user. */
12489 if (tp->loc == NULL && tp->extra_string != NULL)
12490 fprintf_unfiltered (fp, " %s", tp->extra_string);
12491
12492 print_recreate_thread (tp, fp);
12493 }
12494
12495 static void
12496 bkpt_create_sals_from_location (const struct event_location *location,
12497 struct linespec_result *canonical,
12498 enum bptype type_wanted)
12499 {
12500 create_sals_from_location_default (location, canonical, type_wanted);
12501 }
12502
12503 static void
12504 bkpt_create_breakpoints_sal (struct gdbarch *gdbarch,
12505 struct linespec_result *canonical,
12506 gdb::unique_xmalloc_ptr<char> cond_string,
12507 gdb::unique_xmalloc_ptr<char> extra_string,
12508 enum bptype type_wanted,
12509 enum bpdisp disposition,
12510 int thread,
12511 int task, int ignore_count,
12512 const struct breakpoint_ops *ops,
12513 int from_tty, int enabled,
12514 int internal, unsigned flags)
12515 {
12516 create_breakpoints_sal_default (gdbarch, canonical,
12517 std::move (cond_string),
12518 std::move (extra_string),
12519 type_wanted,
12520 disposition, thread, task,
12521 ignore_count, ops, from_tty,
12522 enabled, internal, flags);
12523 }
12524
12525 static std::vector<symtab_and_line>
12526 bkpt_decode_location (struct breakpoint *b,
12527 const struct event_location *location,
12528 struct program_space *search_pspace)
12529 {
12530 return decode_location_default (b, location, search_pspace);
12531 }
12532
12533 /* Virtual table for internal breakpoints. */
12534
12535 static void
12536 internal_bkpt_re_set (struct breakpoint *b)
12537 {
12538 switch (b->type)
12539 {
12540 /* Delete overlay event and longjmp master breakpoints; they
12541 will be reset later by breakpoint_re_set. */
12542 case bp_overlay_event:
12543 case bp_longjmp_master:
12544 case bp_std_terminate_master:
12545 case bp_exception_master:
12546 delete_breakpoint (b);
12547 break;
12548
12549 /* This breakpoint is special, it's set up when the inferior
12550 starts and we really don't want to touch it. */
12551 case bp_shlib_event:
12552
12553 /* Like bp_shlib_event, this breakpoint type is special. Once
12554 it is set up, we do not want to touch it. */
12555 case bp_thread_event:
12556 break;
12557 }
12558 }
12559
12560 static void
12561 internal_bkpt_check_status (bpstat bs)
12562 {
12563 if (bs->breakpoint_at->type == bp_shlib_event)
12564 {
12565 /* If requested, stop when the dynamic linker notifies GDB of
12566 events. This allows the user to get control and place
12567 breakpoints in initializer routines for dynamically loaded
12568 objects (among other things). */
12569 bs->stop = stop_on_solib_events;
12570 bs->print = stop_on_solib_events;
12571 }
12572 else
12573 bs->stop = 0;
12574 }
12575
12576 static enum print_stop_action
12577 internal_bkpt_print_it (bpstat bs)
12578 {
12579 struct breakpoint *b;
12580
12581 b = bs->breakpoint_at;
12582
12583 switch (b->type)
12584 {
12585 case bp_shlib_event:
12586 /* Did we stop because the user set the stop_on_solib_events
12587 variable? (If so, we report this as a generic, "Stopped due
12588 to shlib event" message.) */
12589 print_solib_event (0);
12590 break;
12591
12592 case bp_thread_event:
12593 /* Not sure how we will get here.
12594 GDB should not stop for these breakpoints. */
12595 printf_filtered (_("Thread Event Breakpoint: gdb should not stop!\n"));
12596 break;
12597
12598 case bp_overlay_event:
12599 /* By analogy with the thread event, GDB should not stop for these. */
12600 printf_filtered (_("Overlay Event Breakpoint: gdb should not stop!\n"));
12601 break;
12602
12603 case bp_longjmp_master:
12604 /* These should never be enabled. */
12605 printf_filtered (_("Longjmp Master Breakpoint: gdb should not stop!\n"));
12606 break;
12607
12608 case bp_std_terminate_master:
12609 /* These should never be enabled. */
12610 printf_filtered (_("std::terminate Master Breakpoint: "
12611 "gdb should not stop!\n"));
12612 break;
12613
12614 case bp_exception_master:
12615 /* These should never be enabled. */
12616 printf_filtered (_("Exception Master Breakpoint: "
12617 "gdb should not stop!\n"));
12618 break;
12619 }
12620
12621 return PRINT_NOTHING;
12622 }
12623
12624 static void
12625 internal_bkpt_print_mention (struct breakpoint *b)
12626 {
12627 /* Nothing to mention. These breakpoints are internal. */
12628 }
12629
12630 /* Virtual table for momentary breakpoints */
12631
12632 static void
12633 momentary_bkpt_re_set (struct breakpoint *b)
12634 {
12635 /* Keep temporary breakpoints, which can be encountered when we step
12636 over a dlopen call and solib_add is resetting the breakpoints.
12637 Otherwise these should have been blown away via the cleanup chain
12638 or by breakpoint_init_inferior when we rerun the executable. */
12639 }
12640
12641 static void
12642 momentary_bkpt_check_status (bpstat bs)
12643 {
12644 /* Nothing. The point of these breakpoints is causing a stop. */
12645 }
12646
12647 static enum print_stop_action
12648 momentary_bkpt_print_it (bpstat bs)
12649 {
12650 return PRINT_UNKNOWN;
12651 }
12652
12653 static void
12654 momentary_bkpt_print_mention (struct breakpoint *b)
12655 {
12656 /* Nothing to mention. These breakpoints are internal. */
12657 }
12658
12659 /* Ensure INITIATING_FRAME is cleared when no such breakpoint exists.
12660
12661 It gets cleared already on the removal of the first one of such placed
12662 breakpoints. This is OK as they get all removed altogether. */
12663
12664 longjmp_breakpoint::~longjmp_breakpoint ()
12665 {
12666 thread_info *tp = find_thread_global_id (this->thread);
12667
12668 if (tp != NULL)
12669 tp->initiating_frame = null_frame_id;
12670 }
12671
12672 /* Specific methods for probe breakpoints. */
12673
12674 static int
12675 bkpt_probe_insert_location (struct bp_location *bl)
12676 {
12677 int v = bkpt_insert_location (bl);
12678
12679 if (v == 0)
12680 {
12681 /* The insertion was successful, now let's set the probe's semaphore
12682 if needed. */
12683 bl->probe.prob->set_semaphore (bl->probe.objfile, bl->gdbarch);
12684 }
12685
12686 return v;
12687 }
12688
12689 static int
12690 bkpt_probe_remove_location (struct bp_location *bl,
12691 enum remove_bp_reason reason)
12692 {
12693 /* Let's clear the semaphore before removing the location. */
12694 bl->probe.prob->clear_semaphore (bl->probe.objfile, bl->gdbarch);
12695
12696 return bkpt_remove_location (bl, reason);
12697 }
12698
12699 static void
12700 bkpt_probe_create_sals_from_location (const struct event_location *location,
12701 struct linespec_result *canonical,
12702 enum bptype type_wanted)
12703 {
12704 struct linespec_sals lsal;
12705
12706 lsal.sals = parse_probes (location, NULL, canonical);
12707 lsal.canonical
12708 = xstrdup (event_location_to_string (canonical->location.get ()));
12709 canonical->lsals.push_back (std::move (lsal));
12710 }
12711
12712 static std::vector<symtab_and_line>
12713 bkpt_probe_decode_location (struct breakpoint *b,
12714 const struct event_location *location,
12715 struct program_space *search_pspace)
12716 {
12717 std::vector<symtab_and_line> sals = parse_probes (location, search_pspace, NULL);
12718 if (sals.empty ())
12719 error (_("probe not found"));
12720 return sals;
12721 }
12722
12723 /* The breakpoint_ops structure to be used in tracepoints. */
12724
12725 static void
12726 tracepoint_re_set (struct breakpoint *b)
12727 {
12728 breakpoint_re_set_default (b);
12729 }
12730
12731 static int
12732 tracepoint_breakpoint_hit (const struct bp_location *bl,
12733 const address_space *aspace, CORE_ADDR bp_addr,
12734 const struct target_waitstatus *ws)
12735 {
12736 /* By definition, the inferior does not report stops at
12737 tracepoints. */
12738 return 0;
12739 }
12740
12741 static void
12742 tracepoint_print_one_detail (const struct breakpoint *self,
12743 struct ui_out *uiout)
12744 {
12745 struct tracepoint *tp = (struct tracepoint *) self;
12746 if (!tp->static_trace_marker_id.empty ())
12747 {
12748 gdb_assert (self->type == bp_static_tracepoint);
12749
12750 uiout->text ("\tmarker id is ");
12751 uiout->field_string ("static-tracepoint-marker-string-id",
12752 tp->static_trace_marker_id);
12753 uiout->text ("\n");
12754 }
12755 }
12756
12757 static void
12758 tracepoint_print_mention (struct breakpoint *b)
12759 {
12760 if (current_uiout->is_mi_like_p ())
12761 return;
12762
12763 switch (b->type)
12764 {
12765 case bp_tracepoint:
12766 printf_filtered (_("Tracepoint"));
12767 printf_filtered (_(" %d"), b->number);
12768 break;
12769 case bp_fast_tracepoint:
12770 printf_filtered (_("Fast tracepoint"));
12771 printf_filtered (_(" %d"), b->number);
12772 break;
12773 case bp_static_tracepoint:
12774 printf_filtered (_("Static tracepoint"));
12775 printf_filtered (_(" %d"), b->number);
12776 break;
12777 default:
12778 internal_error (__FILE__, __LINE__,
12779 _("unhandled tracepoint type %d"), (int) b->type);
12780 }
12781
12782 say_where (b);
12783 }
12784
12785 static void
12786 tracepoint_print_recreate (struct breakpoint *self, struct ui_file *fp)
12787 {
12788 struct tracepoint *tp = (struct tracepoint *) self;
12789
12790 if (self->type == bp_fast_tracepoint)
12791 fprintf_unfiltered (fp, "ftrace");
12792 else if (self->type == bp_static_tracepoint)
12793 fprintf_unfiltered (fp, "strace");
12794 else if (self->type == bp_tracepoint)
12795 fprintf_unfiltered (fp, "trace");
12796 else
12797 internal_error (__FILE__, __LINE__,
12798 _("unhandled tracepoint type %d"), (int) self->type);
12799
12800 fprintf_unfiltered (fp, " %s",
12801 event_location_to_string (self->location.get ()));
12802 print_recreate_thread (self, fp);
12803
12804 if (tp->pass_count)
12805 fprintf_unfiltered (fp, " passcount %d\n", tp->pass_count);
12806 }
12807
12808 static void
12809 tracepoint_create_sals_from_location (const struct event_location *location,
12810 struct linespec_result *canonical,
12811 enum bptype type_wanted)
12812 {
12813 create_sals_from_location_default (location, canonical, type_wanted);
12814 }
12815
12816 static void
12817 tracepoint_create_breakpoints_sal (struct gdbarch *gdbarch,
12818 struct linespec_result *canonical,
12819 gdb::unique_xmalloc_ptr<char> cond_string,
12820 gdb::unique_xmalloc_ptr<char> extra_string,
12821 enum bptype type_wanted,
12822 enum bpdisp disposition,
12823 int thread,
12824 int task, int ignore_count,
12825 const struct breakpoint_ops *ops,
12826 int from_tty, int enabled,
12827 int internal, unsigned flags)
12828 {
12829 create_breakpoints_sal_default (gdbarch, canonical,
12830 std::move (cond_string),
12831 std::move (extra_string),
12832 type_wanted,
12833 disposition, thread, task,
12834 ignore_count, ops, from_tty,
12835 enabled, internal, flags);
12836 }
12837
12838 static std::vector<symtab_and_line>
12839 tracepoint_decode_location (struct breakpoint *b,
12840 const struct event_location *location,
12841 struct program_space *search_pspace)
12842 {
12843 return decode_location_default (b, location, search_pspace);
12844 }
12845
12846 struct breakpoint_ops tracepoint_breakpoint_ops;
12847
12848 /* The breakpoint_ops structure to be use on tracepoints placed in a
12849 static probe. */
12850
12851 static void
12852 tracepoint_probe_create_sals_from_location
12853 (const struct event_location *location,
12854 struct linespec_result *canonical,
12855 enum bptype type_wanted)
12856 {
12857 /* We use the same method for breakpoint on probes. */
12858 bkpt_probe_create_sals_from_location (location, canonical, type_wanted);
12859 }
12860
12861 static std::vector<symtab_and_line>
12862 tracepoint_probe_decode_location (struct breakpoint *b,
12863 const struct event_location *location,
12864 struct program_space *search_pspace)
12865 {
12866 /* We use the same method for breakpoint on probes. */
12867 return bkpt_probe_decode_location (b, location, search_pspace);
12868 }
12869
12870 static struct breakpoint_ops tracepoint_probe_breakpoint_ops;
12871
12872 /* Dprintf breakpoint_ops methods. */
12873
12874 static void
12875 dprintf_re_set (struct breakpoint *b)
12876 {
12877 breakpoint_re_set_default (b);
12878
12879 /* extra_string should never be non-NULL for dprintf. */
12880 gdb_assert (b->extra_string != NULL);
12881
12882 /* 1 - connect to target 1, that can run breakpoint commands.
12883 2 - create a dprintf, which resolves fine.
12884 3 - disconnect from target 1
12885 4 - connect to target 2, that can NOT run breakpoint commands.
12886
12887 After steps #3/#4, you'll want the dprintf command list to
12888 be updated, because target 1 and 2 may well return different
12889 answers for target_can_run_breakpoint_commands().
12890 Given absence of finer grained resetting, we get to do
12891 it all the time. */
12892 if (b->extra_string != NULL)
12893 update_dprintf_command_list (b);
12894 }
12895
12896 /* Implement the "print_recreate" breakpoint_ops method for dprintf. */
12897
12898 static void
12899 dprintf_print_recreate (struct breakpoint *tp, struct ui_file *fp)
12900 {
12901 fprintf_unfiltered (fp, "dprintf %s,%s",
12902 event_location_to_string (tp->location.get ()),
12903 tp->extra_string);
12904 print_recreate_thread (tp, fp);
12905 }
12906
12907 /* Implement the "after_condition_true" breakpoint_ops method for
12908 dprintf.
12909
12910 dprintf's are implemented with regular commands in their command
12911 list, but we run the commands here instead of before presenting the
12912 stop to the user, as dprintf's don't actually cause a stop. This
12913 also makes it so that the commands of multiple dprintfs at the same
12914 address are all handled. */
12915
12916 static void
12917 dprintf_after_condition_true (struct bpstats *bs)
12918 {
12919 struct bpstats tmp_bs;
12920 struct bpstats *tmp_bs_p = &tmp_bs;
12921
12922 /* dprintf's never cause a stop. This wasn't set in the
12923 check_status hook instead because that would make the dprintf's
12924 condition not be evaluated. */
12925 bs->stop = 0;
12926
12927 /* Run the command list here. Take ownership of it instead of
12928 copying. We never want these commands to run later in
12929 bpstat_do_actions, if a breakpoint that causes a stop happens to
12930 be set at same address as this dprintf, or even if running the
12931 commands here throws. */
12932 tmp_bs.commands = bs->commands;
12933 bs->commands = NULL;
12934
12935 bpstat_do_actions_1 (&tmp_bs_p);
12936
12937 /* 'tmp_bs.commands' will usually be NULL by now, but
12938 bpstat_do_actions_1 may return early without processing the whole
12939 list. */
12940 }
12941
12942 /* The breakpoint_ops structure to be used on static tracepoints with
12943 markers (`-m'). */
12944
12945 static void
12946 strace_marker_create_sals_from_location (const struct event_location *location,
12947 struct linespec_result *canonical,
12948 enum bptype type_wanted)
12949 {
12950 struct linespec_sals lsal;
12951 const char *arg_start, *arg;
12952
12953 arg = arg_start = get_linespec_location (location)->spec_string;
12954 lsal.sals = decode_static_tracepoint_spec (&arg);
12955
12956 std::string str (arg_start, arg - arg_start);
12957 const char *ptr = str.c_str ();
12958 canonical->location
12959 = new_linespec_location (&ptr, symbol_name_match_type::FULL);
12960
12961 lsal.canonical
12962 = xstrdup (event_location_to_string (canonical->location.get ()));
12963 canonical->lsals.push_back (std::move (lsal));
12964 }
12965
12966 static void
12967 strace_marker_create_breakpoints_sal (struct gdbarch *gdbarch,
12968 struct linespec_result *canonical,
12969 gdb::unique_xmalloc_ptr<char> cond_string,
12970 gdb::unique_xmalloc_ptr<char> extra_string,
12971 enum bptype type_wanted,
12972 enum bpdisp disposition,
12973 int thread,
12974 int task, int ignore_count,
12975 const struct breakpoint_ops *ops,
12976 int from_tty, int enabled,
12977 int internal, unsigned flags)
12978 {
12979 const linespec_sals &lsal = canonical->lsals[0];
12980
12981 /* If the user is creating a static tracepoint by marker id
12982 (strace -m MARKER_ID), then store the sals index, so that
12983 breakpoint_re_set can try to match up which of the newly
12984 found markers corresponds to this one, and, don't try to
12985 expand multiple locations for each sal, given than SALS
12986 already should contain all sals for MARKER_ID. */
12987
12988 for (size_t i = 0; i < lsal.sals.size (); i++)
12989 {
12990 event_location_up location
12991 = copy_event_location (canonical->location.get ());
12992
12993 std::unique_ptr<tracepoint> tp (new tracepoint ());
12994 init_breakpoint_sal (tp.get (), gdbarch, lsal.sals[i],
12995 std::move (location), NULL,
12996 std::move (cond_string),
12997 std::move (extra_string),
12998 type_wanted, disposition,
12999 thread, task, ignore_count, ops,
13000 from_tty, enabled, internal, flags,
13001 canonical->special_display);
13002 /* Given that its possible to have multiple markers with
13003 the same string id, if the user is creating a static
13004 tracepoint by marker id ("strace -m MARKER_ID"), then
13005 store the sals index, so that breakpoint_re_set can
13006 try to match up which of the newly found markers
13007 corresponds to this one */
13008 tp->static_trace_marker_id_idx = i;
13009
13010 install_breakpoint (internal, std::move (tp), 0);
13011 }
13012 }
13013
13014 static std::vector<symtab_and_line>
13015 strace_marker_decode_location (struct breakpoint *b,
13016 const struct event_location *location,
13017 struct program_space *search_pspace)
13018 {
13019 struct tracepoint *tp = (struct tracepoint *) b;
13020 const char *s = get_linespec_location (location)->spec_string;
13021
13022 std::vector<symtab_and_line> sals = decode_static_tracepoint_spec (&s);
13023 if (sals.size () > tp->static_trace_marker_id_idx)
13024 {
13025 sals[0] = sals[tp->static_trace_marker_id_idx];
13026 sals.resize (1);
13027 return sals;
13028 }
13029 else
13030 error (_("marker %s not found"), tp->static_trace_marker_id.c_str ());
13031 }
13032
13033 static struct breakpoint_ops strace_marker_breakpoint_ops;
13034
13035 static int
13036 strace_marker_p (struct breakpoint *b)
13037 {
13038 return b->ops == &strace_marker_breakpoint_ops;
13039 }
13040
13041 /* Delete a breakpoint and clean up all traces of it in the data
13042 structures. */
13043
13044 void
13045 delete_breakpoint (struct breakpoint *bpt)
13046 {
13047 struct breakpoint *b;
13048
13049 gdb_assert (bpt != NULL);
13050
13051 /* Has this bp already been deleted? This can happen because
13052 multiple lists can hold pointers to bp's. bpstat lists are
13053 especial culprits.
13054
13055 One example of this happening is a watchpoint's scope bp. When
13056 the scope bp triggers, we notice that the watchpoint is out of
13057 scope, and delete it. We also delete its scope bp. But the
13058 scope bp is marked "auto-deleting", and is already on a bpstat.
13059 That bpstat is then checked for auto-deleting bp's, which are
13060 deleted.
13061
13062 A real solution to this problem might involve reference counts in
13063 bp's, and/or giving them pointers back to their referencing
13064 bpstat's, and teaching delete_breakpoint to only free a bp's
13065 storage when no more references were extent. A cheaper bandaid
13066 was chosen. */
13067 if (bpt->type == bp_none)
13068 return;
13069
13070 /* At least avoid this stale reference until the reference counting
13071 of breakpoints gets resolved. */
13072 if (bpt->related_breakpoint != bpt)
13073 {
13074 struct breakpoint *related;
13075 struct watchpoint *w;
13076
13077 if (bpt->type == bp_watchpoint_scope)
13078 w = (struct watchpoint *) bpt->related_breakpoint;
13079 else if (bpt->related_breakpoint->type == bp_watchpoint_scope)
13080 w = (struct watchpoint *) bpt;
13081 else
13082 w = NULL;
13083 if (w != NULL)
13084 watchpoint_del_at_next_stop (w);
13085
13086 /* Unlink bpt from the bpt->related_breakpoint ring. */
13087 for (related = bpt; related->related_breakpoint != bpt;
13088 related = related->related_breakpoint);
13089 related->related_breakpoint = bpt->related_breakpoint;
13090 bpt->related_breakpoint = bpt;
13091 }
13092
13093 /* watch_command_1 creates a watchpoint but only sets its number if
13094 update_watchpoint succeeds in creating its bp_locations. If there's
13095 a problem in that process, we'll be asked to delete the half-created
13096 watchpoint. In that case, don't announce the deletion. */
13097 if (bpt->number)
13098 gdb::observers::breakpoint_deleted.notify (bpt);
13099
13100 if (breakpoint_chain == bpt)
13101 breakpoint_chain = bpt->next;
13102
13103 ALL_BREAKPOINTS (b)
13104 if (b->next == bpt)
13105 {
13106 b->next = bpt->next;
13107 break;
13108 }
13109
13110 /* Be sure no bpstat's are pointing at the breakpoint after it's
13111 been freed. */
13112 /* FIXME, how can we find all bpstat's? We just check stop_bpstat
13113 in all threads for now. Note that we cannot just remove bpstats
13114 pointing at bpt from the stop_bpstat list entirely, as breakpoint
13115 commands are associated with the bpstat; if we remove it here,
13116 then the later call to bpstat_do_actions (&stop_bpstat); in
13117 event-top.c won't do anything, and temporary breakpoints with
13118 commands won't work. */
13119
13120 iterate_over_threads (bpstat_remove_breakpoint_callback, bpt);
13121
13122 /* Now that breakpoint is removed from breakpoint list, update the
13123 global location list. This will remove locations that used to
13124 belong to this breakpoint. Do this before freeing the breakpoint
13125 itself, since remove_breakpoint looks at location's owner. It
13126 might be better design to have location completely
13127 self-contained, but it's not the case now. */
13128 update_global_location_list (UGLL_DONT_INSERT);
13129
13130 /* On the chance that someone will soon try again to delete this
13131 same bp, we mark it as deleted before freeing its storage. */
13132 bpt->type = bp_none;
13133 delete bpt;
13134 }
13135
13136 /* Iterator function to call a user-provided callback function once
13137 for each of B and its related breakpoints. */
13138
13139 static void
13140 iterate_over_related_breakpoints (struct breakpoint *b,
13141 gdb::function_view<void (breakpoint *)> function)
13142 {
13143 struct breakpoint *related;
13144
13145 related = b;
13146 do
13147 {
13148 struct breakpoint *next;
13149
13150 /* FUNCTION may delete RELATED. */
13151 next = related->related_breakpoint;
13152
13153 if (next == related)
13154 {
13155 /* RELATED is the last ring entry. */
13156 function (related);
13157
13158 /* FUNCTION may have deleted it, so we'd never reach back to
13159 B. There's nothing left to do anyway, so just break
13160 out. */
13161 break;
13162 }
13163 else
13164 function (related);
13165
13166 related = next;
13167 }
13168 while (related != b);
13169 }
13170
13171 static void
13172 delete_command (const char *arg, int from_tty)
13173 {
13174 struct breakpoint *b, *b_tmp;
13175
13176 dont_repeat ();
13177
13178 if (arg == 0)
13179 {
13180 int breaks_to_delete = 0;
13181
13182 /* Delete all breakpoints if no argument. Do not delete
13183 internal breakpoints, these have to be deleted with an
13184 explicit breakpoint number argument. */
13185 ALL_BREAKPOINTS (b)
13186 if (user_breakpoint_p (b))
13187 {
13188 breaks_to_delete = 1;
13189 break;
13190 }
13191
13192 /* Ask user only if there are some breakpoints to delete. */
13193 if (!from_tty
13194 || (breaks_to_delete && query (_("Delete all breakpoints? "))))
13195 {
13196 ALL_BREAKPOINTS_SAFE (b, b_tmp)
13197 if (user_breakpoint_p (b))
13198 delete_breakpoint (b);
13199 }
13200 }
13201 else
13202 map_breakpoint_numbers
13203 (arg, [&] (breakpoint *br)
13204 {
13205 iterate_over_related_breakpoints (br, delete_breakpoint);
13206 });
13207 }
13208
13209 /* Return true if all locations of B bound to PSPACE are pending. If
13210 PSPACE is NULL, all locations of all program spaces are
13211 considered. */
13212
13213 static int
13214 all_locations_are_pending (struct breakpoint *b, struct program_space *pspace)
13215 {
13216 struct bp_location *loc;
13217
13218 for (loc = b->loc; loc != NULL; loc = loc->next)
13219 if ((pspace == NULL
13220 || loc->pspace == pspace)
13221 && !loc->shlib_disabled
13222 && !loc->pspace->executing_startup)
13223 return 0;
13224 return 1;
13225 }
13226
13227 /* Subroutine of update_breakpoint_locations to simplify it.
13228 Return non-zero if multiple fns in list LOC have the same name.
13229 Null names are ignored. */
13230
13231 static int
13232 ambiguous_names_p (struct bp_location *loc)
13233 {
13234 struct bp_location *l;
13235 htab_t htab = htab_create_alloc (13, htab_hash_string, streq_hash, NULL,
13236 xcalloc, xfree);
13237
13238 for (l = loc; l != NULL; l = l->next)
13239 {
13240 const char **slot;
13241 const char *name = l->function_name;
13242
13243 /* Allow for some names to be NULL, ignore them. */
13244 if (name == NULL)
13245 continue;
13246
13247 slot = (const char **) htab_find_slot (htab, (const void *) name,
13248 INSERT);
13249 /* NOTE: We can assume slot != NULL here because xcalloc never
13250 returns NULL. */
13251 if (*slot != NULL)
13252 {
13253 htab_delete (htab);
13254 return 1;
13255 }
13256 *slot = name;
13257 }
13258
13259 htab_delete (htab);
13260 return 0;
13261 }
13262
13263 /* When symbols change, it probably means the sources changed as well,
13264 and it might mean the static tracepoint markers are no longer at
13265 the same address or line numbers they used to be at last we
13266 checked. Losing your static tracepoints whenever you rebuild is
13267 undesirable. This function tries to resync/rematch gdb static
13268 tracepoints with the markers on the target, for static tracepoints
13269 that have not been set by marker id. Static tracepoint that have
13270 been set by marker id are reset by marker id in breakpoint_re_set.
13271 The heuristic is:
13272
13273 1) For a tracepoint set at a specific address, look for a marker at
13274 the old PC. If one is found there, assume to be the same marker.
13275 If the name / string id of the marker found is different from the
13276 previous known name, assume that means the user renamed the marker
13277 in the sources, and output a warning.
13278
13279 2) For a tracepoint set at a given line number, look for a marker
13280 at the new address of the old line number. If one is found there,
13281 assume to be the same marker. If the name / string id of the
13282 marker found is different from the previous known name, assume that
13283 means the user renamed the marker in the sources, and output a
13284 warning.
13285
13286 3) If a marker is no longer found at the same address or line, it
13287 may mean the marker no longer exists. But it may also just mean
13288 the code changed a bit. Maybe the user added a few lines of code
13289 that made the marker move up or down (in line number terms). Ask
13290 the target for info about the marker with the string id as we knew
13291 it. If found, update line number and address in the matching
13292 static tracepoint. This will get confused if there's more than one
13293 marker with the same ID (possible in UST, although unadvised
13294 precisely because it confuses tools). */
13295
13296 static struct symtab_and_line
13297 update_static_tracepoint (struct breakpoint *b, struct symtab_and_line sal)
13298 {
13299 struct tracepoint *tp = (struct tracepoint *) b;
13300 struct static_tracepoint_marker marker;
13301 CORE_ADDR pc;
13302
13303 pc = sal.pc;
13304 if (sal.line)
13305 find_line_pc (sal.symtab, sal.line, &pc);
13306
13307 if (target_static_tracepoint_marker_at (pc, &marker))
13308 {
13309 if (tp->static_trace_marker_id != marker.str_id)
13310 warning (_("static tracepoint %d changed probed marker from %s to %s"),
13311 b->number, tp->static_trace_marker_id.c_str (),
13312 marker.str_id.c_str ());
13313
13314 tp->static_trace_marker_id = std::move (marker.str_id);
13315
13316 return sal;
13317 }
13318
13319 /* Old marker wasn't found on target at lineno. Try looking it up
13320 by string ID. */
13321 if (!sal.explicit_pc
13322 && sal.line != 0
13323 && sal.symtab != NULL
13324 && !tp->static_trace_marker_id.empty ())
13325 {
13326 std::vector<static_tracepoint_marker> markers
13327 = target_static_tracepoint_markers_by_strid
13328 (tp->static_trace_marker_id.c_str ());
13329
13330 if (!markers.empty ())
13331 {
13332 struct symbol *sym;
13333 struct static_tracepoint_marker *tpmarker;
13334 struct ui_out *uiout = current_uiout;
13335 struct explicit_location explicit_loc;
13336
13337 tpmarker = &markers[0];
13338
13339 tp->static_trace_marker_id = std::move (tpmarker->str_id);
13340
13341 warning (_("marker for static tracepoint %d (%s) not "
13342 "found at previous line number"),
13343 b->number, tp->static_trace_marker_id.c_str ());
13344
13345 symtab_and_line sal2 = find_pc_line (tpmarker->address, 0);
13346 sym = find_pc_sect_function (tpmarker->address, NULL);
13347 uiout->text ("Now in ");
13348 if (sym)
13349 {
13350 uiout->field_string ("func", SYMBOL_PRINT_NAME (sym),
13351 ui_out_style_kind::FUNCTION);
13352 uiout->text (" at ");
13353 }
13354 uiout->field_string ("file",
13355 symtab_to_filename_for_display (sal2.symtab),
13356 ui_out_style_kind::FILE);
13357 uiout->text (":");
13358
13359 if (uiout->is_mi_like_p ())
13360 {
13361 const char *fullname = symtab_to_fullname (sal2.symtab);
13362
13363 uiout->field_string ("fullname", fullname);
13364 }
13365
13366 uiout->field_int ("line", sal2.line);
13367 uiout->text ("\n");
13368
13369 b->loc->line_number = sal2.line;
13370 b->loc->symtab = sym != NULL ? sal2.symtab : NULL;
13371
13372 b->location.reset (NULL);
13373 initialize_explicit_location (&explicit_loc);
13374 explicit_loc.source_filename
13375 = ASTRDUP (symtab_to_filename_for_display (sal2.symtab));
13376 explicit_loc.line_offset.offset = b->loc->line_number;
13377 explicit_loc.line_offset.sign = LINE_OFFSET_NONE;
13378 b->location = new_explicit_location (&explicit_loc);
13379
13380 /* Might be nice to check if function changed, and warn if
13381 so. */
13382 }
13383 }
13384 return sal;
13385 }
13386
13387 /* Returns 1 iff locations A and B are sufficiently same that
13388 we don't need to report breakpoint as changed. */
13389
13390 static int
13391 locations_are_equal (struct bp_location *a, struct bp_location *b)
13392 {
13393 while (a && b)
13394 {
13395 if (a->address != b->address)
13396 return 0;
13397
13398 if (a->shlib_disabled != b->shlib_disabled)
13399 return 0;
13400
13401 if (a->enabled != b->enabled)
13402 return 0;
13403
13404 a = a->next;
13405 b = b->next;
13406 }
13407
13408 if ((a == NULL) != (b == NULL))
13409 return 0;
13410
13411 return 1;
13412 }
13413
13414 /* Split all locations of B that are bound to PSPACE out of B's
13415 location list to a separate list and return that list's head. If
13416 PSPACE is NULL, hoist out all locations of B. */
13417
13418 static struct bp_location *
13419 hoist_existing_locations (struct breakpoint *b, struct program_space *pspace)
13420 {
13421 struct bp_location head;
13422 struct bp_location *i = b->loc;
13423 struct bp_location **i_link = &b->loc;
13424 struct bp_location *hoisted = &head;
13425
13426 if (pspace == NULL)
13427 {
13428 i = b->loc;
13429 b->loc = NULL;
13430 return i;
13431 }
13432
13433 head.next = NULL;
13434
13435 while (i != NULL)
13436 {
13437 if (i->pspace == pspace)
13438 {
13439 *i_link = i->next;
13440 i->next = NULL;
13441 hoisted->next = i;
13442 hoisted = i;
13443 }
13444 else
13445 i_link = &i->next;
13446 i = *i_link;
13447 }
13448
13449 return head.next;
13450 }
13451
13452 /* Create new breakpoint locations for B (a hardware or software
13453 breakpoint) based on SALS and SALS_END. If SALS_END.NELTS is not
13454 zero, then B is a ranged breakpoint. Only recreates locations for
13455 FILTER_PSPACE. Locations of other program spaces are left
13456 untouched. */
13457
13458 void
13459 update_breakpoint_locations (struct breakpoint *b,
13460 struct program_space *filter_pspace,
13461 gdb::array_view<const symtab_and_line> sals,
13462 gdb::array_view<const symtab_and_line> sals_end)
13463 {
13464 struct bp_location *existing_locations;
13465
13466 if (!sals_end.empty () && (sals.size () != 1 || sals_end.size () != 1))
13467 {
13468 /* Ranged breakpoints have only one start location and one end
13469 location. */
13470 b->enable_state = bp_disabled;
13471 printf_unfiltered (_("Could not reset ranged breakpoint %d: "
13472 "multiple locations found\n"),
13473 b->number);
13474 return;
13475 }
13476
13477 /* If there's no new locations, and all existing locations are
13478 pending, don't do anything. This optimizes the common case where
13479 all locations are in the same shared library, that was unloaded.
13480 We'd like to retain the location, so that when the library is
13481 loaded again, we don't loose the enabled/disabled status of the
13482 individual locations. */
13483 if (all_locations_are_pending (b, filter_pspace) && sals.empty ())
13484 return;
13485
13486 existing_locations = hoist_existing_locations (b, filter_pspace);
13487
13488 for (const auto &sal : sals)
13489 {
13490 struct bp_location *new_loc;
13491
13492 switch_to_program_space_and_thread (sal.pspace);
13493
13494 new_loc = add_location_to_breakpoint (b, &sal);
13495
13496 /* Reparse conditions, they might contain references to the
13497 old symtab. */
13498 if (b->cond_string != NULL)
13499 {
13500 const char *s;
13501
13502 s = b->cond_string;
13503 try
13504 {
13505 new_loc->cond = parse_exp_1 (&s, sal.pc,
13506 block_for_pc (sal.pc),
13507 0);
13508 }
13509 catch (const gdb_exception_error &e)
13510 {
13511 warning (_("failed to reevaluate condition "
13512 "for breakpoint %d: %s"),
13513 b->number, e.what ());
13514 new_loc->enabled = 0;
13515 }
13516 }
13517
13518 if (!sals_end.empty ())
13519 {
13520 CORE_ADDR end = find_breakpoint_range_end (sals_end[0]);
13521
13522 new_loc->length = end - sals[0].pc + 1;
13523 }
13524 }
13525
13526 /* If possible, carry over 'disable' status from existing
13527 breakpoints. */
13528 {
13529 struct bp_location *e = existing_locations;
13530 /* If there are multiple breakpoints with the same function name,
13531 e.g. for inline functions, comparing function names won't work.
13532 Instead compare pc addresses; this is just a heuristic as things
13533 may have moved, but in practice it gives the correct answer
13534 often enough until a better solution is found. */
13535 int have_ambiguous_names = ambiguous_names_p (b->loc);
13536
13537 for (; e; e = e->next)
13538 {
13539 if (!e->enabled && e->function_name)
13540 {
13541 struct bp_location *l = b->loc;
13542 if (have_ambiguous_names)
13543 {
13544 for (; l; l = l->next)
13545 if (breakpoint_locations_match (e, l))
13546 {
13547 l->enabled = 0;
13548 break;
13549 }
13550 }
13551 else
13552 {
13553 for (; l; l = l->next)
13554 if (l->function_name
13555 && strcmp (e->function_name, l->function_name) == 0)
13556 {
13557 l->enabled = 0;
13558 break;
13559 }
13560 }
13561 }
13562 }
13563 }
13564
13565 if (!locations_are_equal (existing_locations, b->loc))
13566 gdb::observers::breakpoint_modified.notify (b);
13567 }
13568
13569 /* Find the SaL locations corresponding to the given LOCATION.
13570 On return, FOUND will be 1 if any SaL was found, zero otherwise. */
13571
13572 static std::vector<symtab_and_line>
13573 location_to_sals (struct breakpoint *b, struct event_location *location,
13574 struct program_space *search_pspace, int *found)
13575 {
13576 struct gdb_exception exception;
13577
13578 gdb_assert (b->ops != NULL);
13579
13580 std::vector<symtab_and_line> sals;
13581
13582 try
13583 {
13584 sals = b->ops->decode_location (b, location, search_pspace);
13585 }
13586 catch (gdb_exception_error &e)
13587 {
13588 int not_found_and_ok = 0;
13589
13590 /* For pending breakpoints, it's expected that parsing will
13591 fail until the right shared library is loaded. User has
13592 already told to create pending breakpoints and don't need
13593 extra messages. If breakpoint is in bp_shlib_disabled
13594 state, then user already saw the message about that
13595 breakpoint being disabled, and don't want to see more
13596 errors. */
13597 if (e.error == NOT_FOUND_ERROR
13598 && (b->condition_not_parsed
13599 || (b->loc != NULL
13600 && search_pspace != NULL
13601 && b->loc->pspace != search_pspace)
13602 || (b->loc && b->loc->shlib_disabled)
13603 || (b->loc && b->loc->pspace->executing_startup)
13604 || b->enable_state == bp_disabled))
13605 not_found_and_ok = 1;
13606
13607 if (!not_found_and_ok)
13608 {
13609 /* We surely don't want to warn about the same breakpoint
13610 10 times. One solution, implemented here, is disable
13611 the breakpoint on error. Another solution would be to
13612 have separate 'warning emitted' flag. Since this
13613 happens only when a binary has changed, I don't know
13614 which approach is better. */
13615 b->enable_state = bp_disabled;
13616 throw;
13617 }
13618
13619 exception = std::move (e);
13620 }
13621
13622 if (exception.reason == 0 || exception.error != NOT_FOUND_ERROR)
13623 {
13624 for (auto &sal : sals)
13625 resolve_sal_pc (&sal);
13626 if (b->condition_not_parsed && b->extra_string != NULL)
13627 {
13628 char *cond_string, *extra_string;
13629 int thread, task;
13630
13631 find_condition_and_thread (b->extra_string, sals[0].pc,
13632 &cond_string, &thread, &task,
13633 &extra_string);
13634 gdb_assert (b->cond_string == NULL);
13635 if (cond_string)
13636 b->cond_string = cond_string;
13637 b->thread = thread;
13638 b->task = task;
13639 if (extra_string)
13640 {
13641 xfree (b->extra_string);
13642 b->extra_string = extra_string;
13643 }
13644 b->condition_not_parsed = 0;
13645 }
13646
13647 if (b->type == bp_static_tracepoint && !strace_marker_p (b))
13648 sals[0] = update_static_tracepoint (b, sals[0]);
13649
13650 *found = 1;
13651 }
13652 else
13653 *found = 0;
13654
13655 return sals;
13656 }
13657
13658 /* The default re_set method, for typical hardware or software
13659 breakpoints. Reevaluate the breakpoint and recreate its
13660 locations. */
13661
13662 static void
13663 breakpoint_re_set_default (struct breakpoint *b)
13664 {
13665 struct program_space *filter_pspace = current_program_space;
13666 std::vector<symtab_and_line> expanded, expanded_end;
13667
13668 int found;
13669 std::vector<symtab_and_line> sals = location_to_sals (b, b->location.get (),
13670 filter_pspace, &found);
13671 if (found)
13672 expanded = std::move (sals);
13673
13674 if (b->location_range_end != NULL)
13675 {
13676 std::vector<symtab_and_line> sals_end
13677 = location_to_sals (b, b->location_range_end.get (),
13678 filter_pspace, &found);
13679 if (found)
13680 expanded_end = std::move (sals_end);
13681 }
13682
13683 update_breakpoint_locations (b, filter_pspace, expanded, expanded_end);
13684 }
13685
13686 /* Default method for creating SALs from an address string. It basically
13687 calls parse_breakpoint_sals. Return 1 for success, zero for failure. */
13688
13689 static void
13690 create_sals_from_location_default (const struct event_location *location,
13691 struct linespec_result *canonical,
13692 enum bptype type_wanted)
13693 {
13694 parse_breakpoint_sals (location, canonical);
13695 }
13696
13697 /* Call create_breakpoints_sal for the given arguments. This is the default
13698 function for the `create_breakpoints_sal' method of
13699 breakpoint_ops. */
13700
13701 static void
13702 create_breakpoints_sal_default (struct gdbarch *gdbarch,
13703 struct linespec_result *canonical,
13704 gdb::unique_xmalloc_ptr<char> cond_string,
13705 gdb::unique_xmalloc_ptr<char> extra_string,
13706 enum bptype type_wanted,
13707 enum bpdisp disposition,
13708 int thread,
13709 int task, int ignore_count,
13710 const struct breakpoint_ops *ops,
13711 int from_tty, int enabled,
13712 int internal, unsigned flags)
13713 {
13714 create_breakpoints_sal (gdbarch, canonical,
13715 std::move (cond_string),
13716 std::move (extra_string),
13717 type_wanted, disposition,
13718 thread, task, ignore_count, ops, from_tty,
13719 enabled, internal, flags);
13720 }
13721
13722 /* Decode the line represented by S by calling decode_line_full. This is the
13723 default function for the `decode_location' method of breakpoint_ops. */
13724
13725 static std::vector<symtab_and_line>
13726 decode_location_default (struct breakpoint *b,
13727 const struct event_location *location,
13728 struct program_space *search_pspace)
13729 {
13730 struct linespec_result canonical;
13731
13732 decode_line_full (location, DECODE_LINE_FUNFIRSTLINE, search_pspace,
13733 (struct symtab *) NULL, 0,
13734 &canonical, multiple_symbols_all,
13735 b->filter);
13736
13737 /* We should get 0 or 1 resulting SALs. */
13738 gdb_assert (canonical.lsals.size () < 2);
13739
13740 if (!canonical.lsals.empty ())
13741 {
13742 const linespec_sals &lsal = canonical.lsals[0];
13743 return std::move (lsal.sals);
13744 }
13745 return {};
13746 }
13747
13748 /* Reset a breakpoint. */
13749
13750 static void
13751 breakpoint_re_set_one (breakpoint *b)
13752 {
13753 input_radix = b->input_radix;
13754 set_language (b->language);
13755
13756 b->ops->re_set (b);
13757 }
13758
13759 /* Re-set breakpoint locations for the current program space.
13760 Locations bound to other program spaces are left untouched. */
13761
13762 void
13763 breakpoint_re_set (void)
13764 {
13765 struct breakpoint *b, *b_tmp;
13766
13767 {
13768 scoped_restore_current_language save_language;
13769 scoped_restore save_input_radix = make_scoped_restore (&input_radix);
13770 scoped_restore_current_pspace_and_thread restore_pspace_thread;
13771
13772 /* breakpoint_re_set_one sets the current_language to the language
13773 of the breakpoint it is resetting (see prepare_re_set_context)
13774 before re-evaluating the breakpoint's location. This change can
13775 unfortunately get undone by accident if the language_mode is set
13776 to auto, and we either switch frames, or more likely in this context,
13777 we select the current frame.
13778
13779 We prevent this by temporarily turning the language_mode to
13780 language_mode_manual. We restore it once all breakpoints
13781 have been reset. */
13782 scoped_restore save_language_mode = make_scoped_restore (&language_mode);
13783 language_mode = language_mode_manual;
13784
13785 /* Note: we must not try to insert locations until after all
13786 breakpoints have been re-set. Otherwise, e.g., when re-setting
13787 breakpoint 1, we'd insert the locations of breakpoint 2, which
13788 hadn't been re-set yet, and thus may have stale locations. */
13789
13790 ALL_BREAKPOINTS_SAFE (b, b_tmp)
13791 {
13792 try
13793 {
13794 breakpoint_re_set_one (b);
13795 }
13796 catch (const gdb_exception &ex)
13797 {
13798 exception_fprintf (gdb_stderr, ex,
13799 "Error in re-setting breakpoint %d: ",
13800 b->number);
13801 }
13802 }
13803
13804 jit_breakpoint_re_set ();
13805 }
13806
13807 create_overlay_event_breakpoint ();
13808 create_longjmp_master_breakpoint ();
13809 create_std_terminate_master_breakpoint ();
13810 create_exception_master_breakpoint ();
13811
13812 /* Now we can insert. */
13813 update_global_location_list (UGLL_MAY_INSERT);
13814 }
13815 \f
13816 /* Reset the thread number of this breakpoint:
13817
13818 - If the breakpoint is for all threads, leave it as-is.
13819 - Else, reset it to the current thread for inferior_ptid. */
13820 void
13821 breakpoint_re_set_thread (struct breakpoint *b)
13822 {
13823 if (b->thread != -1)
13824 {
13825 b->thread = inferior_thread ()->global_num;
13826
13827 /* We're being called after following a fork. The new fork is
13828 selected as current, and unless this was a vfork will have a
13829 different program space from the original thread. Reset that
13830 as well. */
13831 b->loc->pspace = current_program_space;
13832 }
13833 }
13834
13835 /* Set ignore-count of breakpoint number BPTNUM to COUNT.
13836 If from_tty is nonzero, it prints a message to that effect,
13837 which ends with a period (no newline). */
13838
13839 void
13840 set_ignore_count (int bptnum, int count, int from_tty)
13841 {
13842 struct breakpoint *b;
13843
13844 if (count < 0)
13845 count = 0;
13846
13847 ALL_BREAKPOINTS (b)
13848 if (b->number == bptnum)
13849 {
13850 if (is_tracepoint (b))
13851 {
13852 if (from_tty && count != 0)
13853 printf_filtered (_("Ignore count ignored for tracepoint %d."),
13854 bptnum);
13855 return;
13856 }
13857
13858 b->ignore_count = count;
13859 if (from_tty)
13860 {
13861 if (count == 0)
13862 printf_filtered (_("Will stop next time "
13863 "breakpoint %d is reached."),
13864 bptnum);
13865 else if (count == 1)
13866 printf_filtered (_("Will ignore next crossing of breakpoint %d."),
13867 bptnum);
13868 else
13869 printf_filtered (_("Will ignore next %d "
13870 "crossings of breakpoint %d."),
13871 count, bptnum);
13872 }
13873 gdb::observers::breakpoint_modified.notify (b);
13874 return;
13875 }
13876
13877 error (_("No breakpoint number %d."), bptnum);
13878 }
13879
13880 /* Command to set ignore-count of breakpoint N to COUNT. */
13881
13882 static void
13883 ignore_command (const char *args, int from_tty)
13884 {
13885 const char *p = args;
13886 int num;
13887
13888 if (p == 0)
13889 error_no_arg (_("a breakpoint number"));
13890
13891 num = get_number (&p);
13892 if (num == 0)
13893 error (_("bad breakpoint number: '%s'"), args);
13894 if (*p == 0)
13895 error (_("Second argument (specified ignore-count) is missing."));
13896
13897 set_ignore_count (num,
13898 longest_to_int (value_as_long (parse_and_eval (p))),
13899 from_tty);
13900 if (from_tty)
13901 printf_filtered ("\n");
13902 }
13903 \f
13904
13905 /* Call FUNCTION on each of the breakpoints with numbers in the range
13906 defined by BP_NUM_RANGE (an inclusive range). */
13907
13908 static void
13909 map_breakpoint_number_range (std::pair<int, int> bp_num_range,
13910 gdb::function_view<void (breakpoint *)> function)
13911 {
13912 if (bp_num_range.first == 0)
13913 {
13914 warning (_("bad breakpoint number at or near '%d'"),
13915 bp_num_range.first);
13916 }
13917 else
13918 {
13919 struct breakpoint *b, *tmp;
13920
13921 for (int i = bp_num_range.first; i <= bp_num_range.second; i++)
13922 {
13923 bool match = false;
13924
13925 ALL_BREAKPOINTS_SAFE (b, tmp)
13926 if (b->number == i)
13927 {
13928 match = true;
13929 function (b);
13930 break;
13931 }
13932 if (!match)
13933 printf_unfiltered (_("No breakpoint number %d.\n"), i);
13934 }
13935 }
13936 }
13937
13938 /* Call FUNCTION on each of the breakpoints whose numbers are given in
13939 ARGS. */
13940
13941 static void
13942 map_breakpoint_numbers (const char *args,
13943 gdb::function_view<void (breakpoint *)> function)
13944 {
13945 if (args == NULL || *args == '\0')
13946 error_no_arg (_("one or more breakpoint numbers"));
13947
13948 number_or_range_parser parser (args);
13949
13950 while (!parser.finished ())
13951 {
13952 int num = parser.get_number ();
13953 map_breakpoint_number_range (std::make_pair (num, num), function);
13954 }
13955 }
13956
13957 /* Return the breakpoint location structure corresponding to the
13958 BP_NUM and LOC_NUM values. */
13959
13960 static struct bp_location *
13961 find_location_by_number (int bp_num, int loc_num)
13962 {
13963 struct breakpoint *b;
13964
13965 ALL_BREAKPOINTS (b)
13966 if (b->number == bp_num)
13967 {
13968 break;
13969 }
13970
13971 if (!b || b->number != bp_num)
13972 error (_("Bad breakpoint number '%d'"), bp_num);
13973
13974 if (loc_num == 0)
13975 error (_("Bad breakpoint location number '%d'"), loc_num);
13976
13977 int n = 0;
13978 for (bp_location *loc = b->loc; loc != NULL; loc = loc->next)
13979 if (++n == loc_num)
13980 return loc;
13981
13982 error (_("Bad breakpoint location number '%d'"), loc_num);
13983 }
13984
13985 /* Modes of operation for extract_bp_num. */
13986 enum class extract_bp_kind
13987 {
13988 /* Extracting a breakpoint number. */
13989 bp,
13990
13991 /* Extracting a location number. */
13992 loc,
13993 };
13994
13995 /* Extract a breakpoint or location number (as determined by KIND)
13996 from the string starting at START. TRAILER is a character which
13997 can be found after the number. If you don't want a trailer, use
13998 '\0'. If END_OUT is not NULL, it is set to point after the parsed
13999 string. This always returns a positive integer. */
14000
14001 static int
14002 extract_bp_num (extract_bp_kind kind, const char *start,
14003 int trailer, const char **end_out = NULL)
14004 {
14005 const char *end = start;
14006 int num = get_number_trailer (&end, trailer);
14007 if (num < 0)
14008 error (kind == extract_bp_kind::bp
14009 ? _("Negative breakpoint number '%.*s'")
14010 : _("Negative breakpoint location number '%.*s'"),
14011 int (end - start), start);
14012 if (num == 0)
14013 error (kind == extract_bp_kind::bp
14014 ? _("Bad breakpoint number '%.*s'")
14015 : _("Bad breakpoint location number '%.*s'"),
14016 int (end - start), start);
14017
14018 if (end_out != NULL)
14019 *end_out = end;
14020 return num;
14021 }
14022
14023 /* Extract a breakpoint or location range (as determined by KIND) in
14024 the form NUM1-NUM2 stored at &ARG[arg_offset]. Returns a std::pair
14025 representing the (inclusive) range. The returned pair's elements
14026 are always positive integers. */
14027
14028 static std::pair<int, int>
14029 extract_bp_or_bp_range (extract_bp_kind kind,
14030 const std::string &arg,
14031 std::string::size_type arg_offset)
14032 {
14033 std::pair<int, int> range;
14034 const char *bp_loc = &arg[arg_offset];
14035 std::string::size_type dash = arg.find ('-', arg_offset);
14036 if (dash != std::string::npos)
14037 {
14038 /* bp_loc is a range (x-z). */
14039 if (arg.length () == dash + 1)
14040 error (kind == extract_bp_kind::bp
14041 ? _("Bad breakpoint number at or near: '%s'")
14042 : _("Bad breakpoint location number at or near: '%s'"),
14043 bp_loc);
14044
14045 const char *end;
14046 const char *start_first = bp_loc;
14047 const char *start_second = &arg[dash + 1];
14048 range.first = extract_bp_num (kind, start_first, '-');
14049 range.second = extract_bp_num (kind, start_second, '\0', &end);
14050
14051 if (range.first > range.second)
14052 error (kind == extract_bp_kind::bp
14053 ? _("Inverted breakpoint range at '%.*s'")
14054 : _("Inverted breakpoint location range at '%.*s'"),
14055 int (end - start_first), start_first);
14056 }
14057 else
14058 {
14059 /* bp_loc is a single value. */
14060 range.first = extract_bp_num (kind, bp_loc, '\0');
14061 range.second = range.first;
14062 }
14063 return range;
14064 }
14065
14066 /* Extract the breakpoint/location range specified by ARG. Returns
14067 the breakpoint range in BP_NUM_RANGE, and the location range in
14068 BP_LOC_RANGE.
14069
14070 ARG may be in any of the following forms:
14071
14072 x where 'x' is a breakpoint number.
14073 x-y where 'x' and 'y' specify a breakpoint numbers range.
14074 x.y where 'x' is a breakpoint number and 'y' a location number.
14075 x.y-z where 'x' is a breakpoint number and 'y' and 'z' specify a
14076 location number range.
14077 */
14078
14079 static void
14080 extract_bp_number_and_location (const std::string &arg,
14081 std::pair<int, int> &bp_num_range,
14082 std::pair<int, int> &bp_loc_range)
14083 {
14084 std::string::size_type dot = arg.find ('.');
14085
14086 if (dot != std::string::npos)
14087 {
14088 /* Handle 'x.y' and 'x.y-z' cases. */
14089
14090 if (arg.length () == dot + 1 || dot == 0)
14091 error (_("Bad breakpoint number at or near: '%s'"), arg.c_str ());
14092
14093 bp_num_range.first
14094 = extract_bp_num (extract_bp_kind::bp, arg.c_str (), '.');
14095 bp_num_range.second = bp_num_range.first;
14096
14097 bp_loc_range = extract_bp_or_bp_range (extract_bp_kind::loc,
14098 arg, dot + 1);
14099 }
14100 else
14101 {
14102 /* Handle x and x-y cases. */
14103
14104 bp_num_range = extract_bp_or_bp_range (extract_bp_kind::bp, arg, 0);
14105 bp_loc_range.first = 0;
14106 bp_loc_range.second = 0;
14107 }
14108 }
14109
14110 /* Enable or disable a breakpoint location BP_NUM.LOC_NUM. ENABLE
14111 specifies whether to enable or disable. */
14112
14113 static void
14114 enable_disable_bp_num_loc (int bp_num, int loc_num, bool enable)
14115 {
14116 struct bp_location *loc = find_location_by_number (bp_num, loc_num);
14117 if (loc != NULL)
14118 {
14119 if (loc->enabled != enable)
14120 {
14121 loc->enabled = enable;
14122 mark_breakpoint_location_modified (loc);
14123 }
14124 if (target_supports_enable_disable_tracepoint ()
14125 && current_trace_status ()->running && loc->owner
14126 && is_tracepoint (loc->owner))
14127 target_disable_tracepoint (loc);
14128 }
14129 update_global_location_list (UGLL_DONT_INSERT);
14130
14131 gdb::observers::breakpoint_modified.notify (loc->owner);
14132 }
14133
14134 /* Enable or disable a range of breakpoint locations. BP_NUM is the
14135 number of the breakpoint, and BP_LOC_RANGE specifies the
14136 (inclusive) range of location numbers of that breakpoint to
14137 enable/disable. ENABLE specifies whether to enable or disable the
14138 location. */
14139
14140 static void
14141 enable_disable_breakpoint_location_range (int bp_num,
14142 std::pair<int, int> &bp_loc_range,
14143 bool enable)
14144 {
14145 for (int i = bp_loc_range.first; i <= bp_loc_range.second; i++)
14146 enable_disable_bp_num_loc (bp_num, i, enable);
14147 }
14148
14149 /* Set ignore-count of breakpoint number BPTNUM to COUNT.
14150 If from_tty is nonzero, it prints a message to that effect,
14151 which ends with a period (no newline). */
14152
14153 void
14154 disable_breakpoint (struct breakpoint *bpt)
14155 {
14156 /* Never disable a watchpoint scope breakpoint; we want to
14157 hit them when we leave scope so we can delete both the
14158 watchpoint and its scope breakpoint at that time. */
14159 if (bpt->type == bp_watchpoint_scope)
14160 return;
14161
14162 bpt->enable_state = bp_disabled;
14163
14164 /* Mark breakpoint locations modified. */
14165 mark_breakpoint_modified (bpt);
14166
14167 if (target_supports_enable_disable_tracepoint ()
14168 && current_trace_status ()->running && is_tracepoint (bpt))
14169 {
14170 struct bp_location *location;
14171
14172 for (location = bpt->loc; location; location = location->next)
14173 target_disable_tracepoint (location);
14174 }
14175
14176 update_global_location_list (UGLL_DONT_INSERT);
14177
14178 gdb::observers::breakpoint_modified.notify (bpt);
14179 }
14180
14181 /* Enable or disable the breakpoint(s) or breakpoint location(s)
14182 specified in ARGS. ARGS may be in any of the formats handled by
14183 extract_bp_number_and_location. ENABLE specifies whether to enable
14184 or disable the breakpoints/locations. */
14185
14186 static void
14187 enable_disable_command (const char *args, int from_tty, bool enable)
14188 {
14189 if (args == 0)
14190 {
14191 struct breakpoint *bpt;
14192
14193 ALL_BREAKPOINTS (bpt)
14194 if (user_breakpoint_p (bpt))
14195 {
14196 if (enable)
14197 enable_breakpoint (bpt);
14198 else
14199 disable_breakpoint (bpt);
14200 }
14201 }
14202 else
14203 {
14204 std::string num = extract_arg (&args);
14205
14206 while (!num.empty ())
14207 {
14208 std::pair<int, int> bp_num_range, bp_loc_range;
14209
14210 extract_bp_number_and_location (num, bp_num_range, bp_loc_range);
14211
14212 if (bp_loc_range.first == bp_loc_range.second
14213 && bp_loc_range.first == 0)
14214 {
14215 /* Handle breakpoint ids with formats 'x' or 'x-z'. */
14216 map_breakpoint_number_range (bp_num_range,
14217 enable
14218 ? enable_breakpoint
14219 : disable_breakpoint);
14220 }
14221 else
14222 {
14223 /* Handle breakpoint ids with formats 'x.y' or
14224 'x.y-z'. */
14225 enable_disable_breakpoint_location_range
14226 (bp_num_range.first, bp_loc_range, enable);
14227 }
14228 num = extract_arg (&args);
14229 }
14230 }
14231 }
14232
14233 /* The disable command disables the specified breakpoints/locations
14234 (or all defined breakpoints) so they're no longer effective in
14235 stopping the inferior. ARGS may be in any of the forms defined in
14236 extract_bp_number_and_location. */
14237
14238 static void
14239 disable_command (const char *args, int from_tty)
14240 {
14241 enable_disable_command (args, from_tty, false);
14242 }
14243
14244 static void
14245 enable_breakpoint_disp (struct breakpoint *bpt, enum bpdisp disposition,
14246 int count)
14247 {
14248 int target_resources_ok;
14249
14250 if (bpt->type == bp_hardware_breakpoint)
14251 {
14252 int i;
14253 i = hw_breakpoint_used_count ();
14254 target_resources_ok =
14255 target_can_use_hardware_watchpoint (bp_hardware_breakpoint,
14256 i + 1, 0);
14257 if (target_resources_ok == 0)
14258 error (_("No hardware breakpoint support in the target."));
14259 else if (target_resources_ok < 0)
14260 error (_("Hardware breakpoints used exceeds limit."));
14261 }
14262
14263 if (is_watchpoint (bpt))
14264 {
14265 /* Initialize it just to avoid a GCC false warning. */
14266 enum enable_state orig_enable_state = bp_disabled;
14267
14268 try
14269 {
14270 struct watchpoint *w = (struct watchpoint *) bpt;
14271
14272 orig_enable_state = bpt->enable_state;
14273 bpt->enable_state = bp_enabled;
14274 update_watchpoint (w, 1 /* reparse */);
14275 }
14276 catch (const gdb_exception &e)
14277 {
14278 bpt->enable_state = orig_enable_state;
14279 exception_fprintf (gdb_stderr, e, _("Cannot enable watchpoint %d: "),
14280 bpt->number);
14281 return;
14282 }
14283 }
14284
14285 bpt->enable_state = bp_enabled;
14286
14287 /* Mark breakpoint locations modified. */
14288 mark_breakpoint_modified (bpt);
14289
14290 if (target_supports_enable_disable_tracepoint ()
14291 && current_trace_status ()->running && is_tracepoint (bpt))
14292 {
14293 struct bp_location *location;
14294
14295 for (location = bpt->loc; location; location = location->next)
14296 target_enable_tracepoint (location);
14297 }
14298
14299 bpt->disposition = disposition;
14300 bpt->enable_count = count;
14301 update_global_location_list (UGLL_MAY_INSERT);
14302
14303 gdb::observers::breakpoint_modified.notify (bpt);
14304 }
14305
14306
14307 void
14308 enable_breakpoint (struct breakpoint *bpt)
14309 {
14310 enable_breakpoint_disp (bpt, bpt->disposition, 0);
14311 }
14312
14313 /* The enable command enables the specified breakpoints/locations (or
14314 all defined breakpoints) so they once again become (or continue to
14315 be) effective in stopping the inferior. ARGS may be in any of the
14316 forms defined in extract_bp_number_and_location. */
14317
14318 static void
14319 enable_command (const char *args, int from_tty)
14320 {
14321 enable_disable_command (args, from_tty, true);
14322 }
14323
14324 static void
14325 enable_once_command (const char *args, int from_tty)
14326 {
14327 map_breakpoint_numbers
14328 (args, [&] (breakpoint *b)
14329 {
14330 iterate_over_related_breakpoints
14331 (b, [&] (breakpoint *bpt)
14332 {
14333 enable_breakpoint_disp (bpt, disp_disable, 1);
14334 });
14335 });
14336 }
14337
14338 static void
14339 enable_count_command (const char *args, int from_tty)
14340 {
14341 int count;
14342
14343 if (args == NULL)
14344 error_no_arg (_("hit count"));
14345
14346 count = get_number (&args);
14347
14348 map_breakpoint_numbers
14349 (args, [&] (breakpoint *b)
14350 {
14351 iterate_over_related_breakpoints
14352 (b, [&] (breakpoint *bpt)
14353 {
14354 enable_breakpoint_disp (bpt, disp_disable, count);
14355 });
14356 });
14357 }
14358
14359 static void
14360 enable_delete_command (const char *args, int from_tty)
14361 {
14362 map_breakpoint_numbers
14363 (args, [&] (breakpoint *b)
14364 {
14365 iterate_over_related_breakpoints
14366 (b, [&] (breakpoint *bpt)
14367 {
14368 enable_breakpoint_disp (bpt, disp_del, 1);
14369 });
14370 });
14371 }
14372 \f
14373 static void
14374 set_breakpoint_cmd (const char *args, int from_tty)
14375 {
14376 }
14377
14378 static void
14379 show_breakpoint_cmd (const char *args, int from_tty)
14380 {
14381 }
14382
14383 /* Invalidate last known value of any hardware watchpoint if
14384 the memory which that value represents has been written to by
14385 GDB itself. */
14386
14387 static void
14388 invalidate_bp_value_on_memory_change (struct inferior *inferior,
14389 CORE_ADDR addr, ssize_t len,
14390 const bfd_byte *data)
14391 {
14392 struct breakpoint *bp;
14393
14394 ALL_BREAKPOINTS (bp)
14395 if (bp->enable_state == bp_enabled
14396 && bp->type == bp_hardware_watchpoint)
14397 {
14398 struct watchpoint *wp = (struct watchpoint *) bp;
14399
14400 if (wp->val_valid && wp->val != nullptr)
14401 {
14402 struct bp_location *loc;
14403
14404 for (loc = bp->loc; loc != NULL; loc = loc->next)
14405 if (loc->loc_type == bp_loc_hardware_watchpoint
14406 && loc->address + loc->length > addr
14407 && addr + len > loc->address)
14408 {
14409 wp->val = NULL;
14410 wp->val_valid = 0;
14411 }
14412 }
14413 }
14414 }
14415
14416 /* Create and insert a breakpoint for software single step. */
14417
14418 void
14419 insert_single_step_breakpoint (struct gdbarch *gdbarch,
14420 const address_space *aspace,
14421 CORE_ADDR next_pc)
14422 {
14423 struct thread_info *tp = inferior_thread ();
14424 struct symtab_and_line sal;
14425 CORE_ADDR pc = next_pc;
14426
14427 if (tp->control.single_step_breakpoints == NULL)
14428 {
14429 tp->control.single_step_breakpoints
14430 = new_single_step_breakpoint (tp->global_num, gdbarch);
14431 }
14432
14433 sal = find_pc_line (pc, 0);
14434 sal.pc = pc;
14435 sal.section = find_pc_overlay (pc);
14436 sal.explicit_pc = 1;
14437 add_location_to_breakpoint (tp->control.single_step_breakpoints, &sal);
14438
14439 update_global_location_list (UGLL_INSERT);
14440 }
14441
14442 /* Insert single step breakpoints according to the current state. */
14443
14444 int
14445 insert_single_step_breakpoints (struct gdbarch *gdbarch)
14446 {
14447 struct regcache *regcache = get_current_regcache ();
14448 std::vector<CORE_ADDR> next_pcs;
14449
14450 next_pcs = gdbarch_software_single_step (gdbarch, regcache);
14451
14452 if (!next_pcs.empty ())
14453 {
14454 struct frame_info *frame = get_current_frame ();
14455 const address_space *aspace = get_frame_address_space (frame);
14456
14457 for (CORE_ADDR pc : next_pcs)
14458 insert_single_step_breakpoint (gdbarch, aspace, pc);
14459
14460 return 1;
14461 }
14462 else
14463 return 0;
14464 }
14465
14466 /* See breakpoint.h. */
14467
14468 int
14469 breakpoint_has_location_inserted_here (struct breakpoint *bp,
14470 const address_space *aspace,
14471 CORE_ADDR pc)
14472 {
14473 struct bp_location *loc;
14474
14475 for (loc = bp->loc; loc != NULL; loc = loc->next)
14476 if (loc->inserted
14477 && breakpoint_location_address_match (loc, aspace, pc))
14478 return 1;
14479
14480 return 0;
14481 }
14482
14483 /* Check whether a software single-step breakpoint is inserted at
14484 PC. */
14485
14486 int
14487 single_step_breakpoint_inserted_here_p (const address_space *aspace,
14488 CORE_ADDR pc)
14489 {
14490 struct breakpoint *bpt;
14491
14492 ALL_BREAKPOINTS (bpt)
14493 {
14494 if (bpt->type == bp_single_step
14495 && breakpoint_has_location_inserted_here (bpt, aspace, pc))
14496 return 1;
14497 }
14498 return 0;
14499 }
14500
14501 /* Tracepoint-specific operations. */
14502
14503 /* Set tracepoint count to NUM. */
14504 static void
14505 set_tracepoint_count (int num)
14506 {
14507 tracepoint_count = num;
14508 set_internalvar_integer (lookup_internalvar ("tpnum"), num);
14509 }
14510
14511 static void
14512 trace_command (const char *arg, int from_tty)
14513 {
14514 struct breakpoint_ops *ops;
14515
14516 event_location_up location = string_to_event_location (&arg,
14517 current_language);
14518 if (location != NULL
14519 && event_location_type (location.get ()) == PROBE_LOCATION)
14520 ops = &tracepoint_probe_breakpoint_ops;
14521 else
14522 ops = &tracepoint_breakpoint_ops;
14523
14524 create_breakpoint (get_current_arch (),
14525 location.get (),
14526 NULL, 0, arg, 1 /* parse arg */,
14527 0 /* tempflag */,
14528 bp_tracepoint /* type_wanted */,
14529 0 /* Ignore count */,
14530 pending_break_support,
14531 ops,
14532 from_tty,
14533 1 /* enabled */,
14534 0 /* internal */, 0);
14535 }
14536
14537 static void
14538 ftrace_command (const char *arg, int from_tty)
14539 {
14540 event_location_up location = string_to_event_location (&arg,
14541 current_language);
14542 create_breakpoint (get_current_arch (),
14543 location.get (),
14544 NULL, 0, arg, 1 /* parse arg */,
14545 0 /* tempflag */,
14546 bp_fast_tracepoint /* type_wanted */,
14547 0 /* Ignore count */,
14548 pending_break_support,
14549 &tracepoint_breakpoint_ops,
14550 from_tty,
14551 1 /* enabled */,
14552 0 /* internal */, 0);
14553 }
14554
14555 /* strace command implementation. Creates a static tracepoint. */
14556
14557 static void
14558 strace_command (const char *arg, int from_tty)
14559 {
14560 struct breakpoint_ops *ops;
14561 event_location_up location;
14562
14563 /* Decide if we are dealing with a static tracepoint marker (`-m'),
14564 or with a normal static tracepoint. */
14565 if (arg && startswith (arg, "-m") && isspace (arg[2]))
14566 {
14567 ops = &strace_marker_breakpoint_ops;
14568 location = new_linespec_location (&arg, symbol_name_match_type::FULL);
14569 }
14570 else
14571 {
14572 ops = &tracepoint_breakpoint_ops;
14573 location = string_to_event_location (&arg, current_language);
14574 }
14575
14576 create_breakpoint (get_current_arch (),
14577 location.get (),
14578 NULL, 0, arg, 1 /* parse arg */,
14579 0 /* tempflag */,
14580 bp_static_tracepoint /* type_wanted */,
14581 0 /* Ignore count */,
14582 pending_break_support,
14583 ops,
14584 from_tty,
14585 1 /* enabled */,
14586 0 /* internal */, 0);
14587 }
14588
14589 /* Set up a fake reader function that gets command lines from a linked
14590 list that was acquired during tracepoint uploading. */
14591
14592 static struct uploaded_tp *this_utp;
14593 static int next_cmd;
14594
14595 static char *
14596 read_uploaded_action (void)
14597 {
14598 char *rslt = nullptr;
14599
14600 if (next_cmd < this_utp->cmd_strings.size ())
14601 {
14602 rslt = this_utp->cmd_strings[next_cmd].get ();
14603 next_cmd++;
14604 }
14605
14606 return rslt;
14607 }
14608
14609 /* Given information about a tracepoint as recorded on a target (which
14610 can be either a live system or a trace file), attempt to create an
14611 equivalent GDB tracepoint. This is not a reliable process, since
14612 the target does not necessarily have all the information used when
14613 the tracepoint was originally defined. */
14614
14615 struct tracepoint *
14616 create_tracepoint_from_upload (struct uploaded_tp *utp)
14617 {
14618 const char *addr_str;
14619 char small_buf[100];
14620 struct tracepoint *tp;
14621
14622 if (utp->at_string)
14623 addr_str = utp->at_string.get ();
14624 else
14625 {
14626 /* In the absence of a source location, fall back to raw
14627 address. Since there is no way to confirm that the address
14628 means the same thing as when the trace was started, warn the
14629 user. */
14630 warning (_("Uploaded tracepoint %d has no "
14631 "source location, using raw address"),
14632 utp->number);
14633 xsnprintf (small_buf, sizeof (small_buf), "*%s", hex_string (utp->addr));
14634 addr_str = small_buf;
14635 }
14636
14637 /* There's not much we can do with a sequence of bytecodes. */
14638 if (utp->cond && !utp->cond_string)
14639 warning (_("Uploaded tracepoint %d condition "
14640 "has no source form, ignoring it"),
14641 utp->number);
14642
14643 event_location_up location = string_to_event_location (&addr_str,
14644 current_language);
14645 if (!create_breakpoint (get_current_arch (),
14646 location.get (),
14647 utp->cond_string.get (), -1, addr_str,
14648 0 /* parse cond/thread */,
14649 0 /* tempflag */,
14650 utp->type /* type_wanted */,
14651 0 /* Ignore count */,
14652 pending_break_support,
14653 &tracepoint_breakpoint_ops,
14654 0 /* from_tty */,
14655 utp->enabled /* enabled */,
14656 0 /* internal */,
14657 CREATE_BREAKPOINT_FLAGS_INSERTED))
14658 return NULL;
14659
14660 /* Get the tracepoint we just created. */
14661 tp = get_tracepoint (tracepoint_count);
14662 gdb_assert (tp != NULL);
14663
14664 if (utp->pass > 0)
14665 {
14666 xsnprintf (small_buf, sizeof (small_buf), "%d %d", utp->pass,
14667 tp->number);
14668
14669 trace_pass_command (small_buf, 0);
14670 }
14671
14672 /* If we have uploaded versions of the original commands, set up a
14673 special-purpose "reader" function and call the usual command line
14674 reader, then pass the result to the breakpoint command-setting
14675 function. */
14676 if (!utp->cmd_strings.empty ())
14677 {
14678 counted_command_line cmd_list;
14679
14680 this_utp = utp;
14681 next_cmd = 0;
14682
14683 cmd_list = read_command_lines_1 (read_uploaded_action, 1, NULL);
14684
14685 breakpoint_set_commands (tp, std::move (cmd_list));
14686 }
14687 else if (!utp->actions.empty ()
14688 || !utp->step_actions.empty ())
14689 warning (_("Uploaded tracepoint %d actions "
14690 "have no source form, ignoring them"),
14691 utp->number);
14692
14693 /* Copy any status information that might be available. */
14694 tp->hit_count = utp->hit_count;
14695 tp->traceframe_usage = utp->traceframe_usage;
14696
14697 return tp;
14698 }
14699
14700 /* Print information on tracepoint number TPNUM_EXP, or all if
14701 omitted. */
14702
14703 static void
14704 info_tracepoints_command (const char *args, int from_tty)
14705 {
14706 struct ui_out *uiout = current_uiout;
14707 int num_printed;
14708
14709 num_printed = breakpoint_1 (args, 0, is_tracepoint);
14710
14711 if (num_printed == 0)
14712 {
14713 if (args == NULL || *args == '\0')
14714 uiout->message ("No tracepoints.\n");
14715 else
14716 uiout->message ("No tracepoint matching '%s'.\n", args);
14717 }
14718
14719 default_collect_info ();
14720 }
14721
14722 /* The 'enable trace' command enables tracepoints.
14723 Not supported by all targets. */
14724 static void
14725 enable_trace_command (const char *args, int from_tty)
14726 {
14727 enable_command (args, from_tty);
14728 }
14729
14730 /* The 'disable trace' command disables tracepoints.
14731 Not supported by all targets. */
14732 static void
14733 disable_trace_command (const char *args, int from_tty)
14734 {
14735 disable_command (args, from_tty);
14736 }
14737
14738 /* Remove a tracepoint (or all if no argument). */
14739 static void
14740 delete_trace_command (const char *arg, int from_tty)
14741 {
14742 struct breakpoint *b, *b_tmp;
14743
14744 dont_repeat ();
14745
14746 if (arg == 0)
14747 {
14748 int breaks_to_delete = 0;
14749
14750 /* Delete all breakpoints if no argument.
14751 Do not delete internal or call-dummy breakpoints, these
14752 have to be deleted with an explicit breakpoint number
14753 argument. */
14754 ALL_TRACEPOINTS (b)
14755 if (is_tracepoint (b) && user_breakpoint_p (b))
14756 {
14757 breaks_to_delete = 1;
14758 break;
14759 }
14760
14761 /* Ask user only if there are some breakpoints to delete. */
14762 if (!from_tty
14763 || (breaks_to_delete && query (_("Delete all tracepoints? "))))
14764 {
14765 ALL_BREAKPOINTS_SAFE (b, b_tmp)
14766 if (is_tracepoint (b) && user_breakpoint_p (b))
14767 delete_breakpoint (b);
14768 }
14769 }
14770 else
14771 map_breakpoint_numbers
14772 (arg, [&] (breakpoint *br)
14773 {
14774 iterate_over_related_breakpoints (br, delete_breakpoint);
14775 });
14776 }
14777
14778 /* Helper function for trace_pass_command. */
14779
14780 static void
14781 trace_pass_set_count (struct tracepoint *tp, int count, int from_tty)
14782 {
14783 tp->pass_count = count;
14784 gdb::observers::breakpoint_modified.notify (tp);
14785 if (from_tty)
14786 printf_filtered (_("Setting tracepoint %d's passcount to %d\n"),
14787 tp->number, count);
14788 }
14789
14790 /* Set passcount for tracepoint.
14791
14792 First command argument is passcount, second is tracepoint number.
14793 If tracepoint number omitted, apply to most recently defined.
14794 Also accepts special argument "all". */
14795
14796 static void
14797 trace_pass_command (const char *args, int from_tty)
14798 {
14799 struct tracepoint *t1;
14800 ULONGEST count;
14801
14802 if (args == 0 || *args == 0)
14803 error (_("passcount command requires an "
14804 "argument (count + optional TP num)"));
14805
14806 count = strtoulst (args, &args, 10); /* Count comes first, then TP num. */
14807
14808 args = skip_spaces (args);
14809 if (*args && strncasecmp (args, "all", 3) == 0)
14810 {
14811 struct breakpoint *b;
14812
14813 args += 3; /* Skip special argument "all". */
14814 if (*args)
14815 error (_("Junk at end of arguments."));
14816
14817 ALL_TRACEPOINTS (b)
14818 {
14819 t1 = (struct tracepoint *) b;
14820 trace_pass_set_count (t1, count, from_tty);
14821 }
14822 }
14823 else if (*args == '\0')
14824 {
14825 t1 = get_tracepoint_by_number (&args, NULL);
14826 if (t1)
14827 trace_pass_set_count (t1, count, from_tty);
14828 }
14829 else
14830 {
14831 number_or_range_parser parser (args);
14832 while (!parser.finished ())
14833 {
14834 t1 = get_tracepoint_by_number (&args, &parser);
14835 if (t1)
14836 trace_pass_set_count (t1, count, from_tty);
14837 }
14838 }
14839 }
14840
14841 struct tracepoint *
14842 get_tracepoint (int num)
14843 {
14844 struct breakpoint *t;
14845
14846 ALL_TRACEPOINTS (t)
14847 if (t->number == num)
14848 return (struct tracepoint *) t;
14849
14850 return NULL;
14851 }
14852
14853 /* Find the tracepoint with the given target-side number (which may be
14854 different from the tracepoint number after disconnecting and
14855 reconnecting). */
14856
14857 struct tracepoint *
14858 get_tracepoint_by_number_on_target (int num)
14859 {
14860 struct breakpoint *b;
14861
14862 ALL_TRACEPOINTS (b)
14863 {
14864 struct tracepoint *t = (struct tracepoint *) b;
14865
14866 if (t->number_on_target == num)
14867 return t;
14868 }
14869
14870 return NULL;
14871 }
14872
14873 /* Utility: parse a tracepoint number and look it up in the list.
14874 If STATE is not NULL, use, get_number_or_range_state and ignore ARG.
14875 If the argument is missing, the most recent tracepoint
14876 (tracepoint_count) is returned. */
14877
14878 struct tracepoint *
14879 get_tracepoint_by_number (const char **arg,
14880 number_or_range_parser *parser)
14881 {
14882 struct breakpoint *t;
14883 int tpnum;
14884 const char *instring = arg == NULL ? NULL : *arg;
14885
14886 if (parser != NULL)
14887 {
14888 gdb_assert (!parser->finished ());
14889 tpnum = parser->get_number ();
14890 }
14891 else if (arg == NULL || *arg == NULL || ! **arg)
14892 tpnum = tracepoint_count;
14893 else
14894 tpnum = get_number (arg);
14895
14896 if (tpnum <= 0)
14897 {
14898 if (instring && *instring)
14899 printf_filtered (_("bad tracepoint number at or near '%s'\n"),
14900 instring);
14901 else
14902 printf_filtered (_("No previous tracepoint\n"));
14903 return NULL;
14904 }
14905
14906 ALL_TRACEPOINTS (t)
14907 if (t->number == tpnum)
14908 {
14909 return (struct tracepoint *) t;
14910 }
14911
14912 printf_unfiltered ("No tracepoint number %d.\n", tpnum);
14913 return NULL;
14914 }
14915
14916 void
14917 print_recreate_thread (struct breakpoint *b, struct ui_file *fp)
14918 {
14919 if (b->thread != -1)
14920 fprintf_unfiltered (fp, " thread %d", b->thread);
14921
14922 if (b->task != 0)
14923 fprintf_unfiltered (fp, " task %d", b->task);
14924
14925 fprintf_unfiltered (fp, "\n");
14926 }
14927
14928 /* Save information on user settable breakpoints (watchpoints, etc) to
14929 a new script file named FILENAME. If FILTER is non-NULL, call it
14930 on each breakpoint and only include the ones for which it returns
14931 non-zero. */
14932
14933 static void
14934 save_breakpoints (const char *filename, int from_tty,
14935 int (*filter) (const struct breakpoint *))
14936 {
14937 struct breakpoint *tp;
14938 int any = 0;
14939 int extra_trace_bits = 0;
14940
14941 if (filename == 0 || *filename == 0)
14942 error (_("Argument required (file name in which to save)"));
14943
14944 /* See if we have anything to save. */
14945 ALL_BREAKPOINTS (tp)
14946 {
14947 /* Skip internal and momentary breakpoints. */
14948 if (!user_breakpoint_p (tp))
14949 continue;
14950
14951 /* If we have a filter, only save the breakpoints it accepts. */
14952 if (filter && !filter (tp))
14953 continue;
14954
14955 any = 1;
14956
14957 if (is_tracepoint (tp))
14958 {
14959 extra_trace_bits = 1;
14960
14961 /* We can stop searching. */
14962 break;
14963 }
14964 }
14965
14966 if (!any)
14967 {
14968 warning (_("Nothing to save."));
14969 return;
14970 }
14971
14972 gdb::unique_xmalloc_ptr<char> expanded_filename (tilde_expand (filename));
14973
14974 stdio_file fp;
14975
14976 if (!fp.open (expanded_filename.get (), "w"))
14977 error (_("Unable to open file '%s' for saving (%s)"),
14978 expanded_filename.get (), safe_strerror (errno));
14979
14980 if (extra_trace_bits)
14981 save_trace_state_variables (&fp);
14982
14983 ALL_BREAKPOINTS (tp)
14984 {
14985 /* Skip internal and momentary breakpoints. */
14986 if (!user_breakpoint_p (tp))
14987 continue;
14988
14989 /* If we have a filter, only save the breakpoints it accepts. */
14990 if (filter && !filter (tp))
14991 continue;
14992
14993 tp->ops->print_recreate (tp, &fp);
14994
14995 /* Note, we can't rely on tp->number for anything, as we can't
14996 assume the recreated breakpoint numbers will match. Use $bpnum
14997 instead. */
14998
14999 if (tp->cond_string)
15000 fp.printf (" condition $bpnum %s\n", tp->cond_string);
15001
15002 if (tp->ignore_count)
15003 fp.printf (" ignore $bpnum %d\n", tp->ignore_count);
15004
15005 if (tp->type != bp_dprintf && tp->commands)
15006 {
15007 fp.puts (" commands\n");
15008
15009 current_uiout->redirect (&fp);
15010 try
15011 {
15012 print_command_lines (current_uiout, tp->commands.get (), 2);
15013 }
15014 catch (const gdb_exception &ex)
15015 {
15016 current_uiout->redirect (NULL);
15017 throw;
15018 }
15019
15020 current_uiout->redirect (NULL);
15021 fp.puts (" end\n");
15022 }
15023
15024 if (tp->enable_state == bp_disabled)
15025 fp.puts ("disable $bpnum\n");
15026
15027 /* If this is a multi-location breakpoint, check if the locations
15028 should be individually disabled. Watchpoint locations are
15029 special, and not user visible. */
15030 if (!is_watchpoint (tp) && tp->loc && tp->loc->next)
15031 {
15032 struct bp_location *loc;
15033 int n = 1;
15034
15035 for (loc = tp->loc; loc != NULL; loc = loc->next, n++)
15036 if (!loc->enabled)
15037 fp.printf ("disable $bpnum.%d\n", n);
15038 }
15039 }
15040
15041 if (extra_trace_bits && *default_collect)
15042 fp.printf ("set default-collect %s\n", default_collect);
15043
15044 if (from_tty)
15045 printf_filtered (_("Saved to file '%s'.\n"), expanded_filename.get ());
15046 }
15047
15048 /* The `save breakpoints' command. */
15049
15050 static void
15051 save_breakpoints_command (const char *args, int from_tty)
15052 {
15053 save_breakpoints (args, from_tty, NULL);
15054 }
15055
15056 /* The `save tracepoints' command. */
15057
15058 static void
15059 save_tracepoints_command (const char *args, int from_tty)
15060 {
15061 save_breakpoints (args, from_tty, is_tracepoint);
15062 }
15063
15064 /* Create a vector of all tracepoints. */
15065
15066 std::vector<breakpoint *>
15067 all_tracepoints (void)
15068 {
15069 std::vector<breakpoint *> tp_vec;
15070 struct breakpoint *tp;
15071
15072 ALL_TRACEPOINTS (tp)
15073 {
15074 tp_vec.push_back (tp);
15075 }
15076
15077 return tp_vec;
15078 }
15079
15080 \f
15081 /* This help string is used to consolidate all the help string for specifying
15082 locations used by several commands. */
15083
15084 #define LOCATION_HELP_STRING \
15085 "Linespecs are colon-separated lists of location parameters, such as\n\
15086 source filename, function name, label name, and line number.\n\
15087 Example: To specify the start of a label named \"the_top\" in the\n\
15088 function \"fact\" in the file \"factorial.c\", use\n\
15089 \"factorial.c:fact:the_top\".\n\
15090 \n\
15091 Address locations begin with \"*\" and specify an exact address in the\n\
15092 program. Example: To specify the fourth byte past the start function\n\
15093 \"main\", use \"*main + 4\".\n\
15094 \n\
15095 Explicit locations are similar to linespecs but use an option/argument\n\
15096 syntax to specify location parameters.\n\
15097 Example: To specify the start of the label named \"the_top\" in the\n\
15098 function \"fact\" in the file \"factorial.c\", use \"-source factorial.c\n\
15099 -function fact -label the_top\".\n\
15100 \n\
15101 By default, a specified function is matched against the program's\n\
15102 functions in all scopes. For C++, this means in all namespaces and\n\
15103 classes. For Ada, this means in all packages. E.g., in C++,\n\
15104 \"func()\" matches \"A::func()\", \"A::B::func()\", etc. The\n\
15105 \"-qualified\" flag overrides this behavior, making GDB interpret the\n\
15106 specified name as a complete fully-qualified name instead."
15107
15108 /* This help string is used for the break, hbreak, tbreak and thbreak
15109 commands. It is defined as a macro to prevent duplication.
15110 COMMAND should be a string constant containing the name of the
15111 command. */
15112
15113 #define BREAK_ARGS_HELP(command) \
15114 command" [PROBE_MODIFIER] [LOCATION] [thread THREADNUM] [if CONDITION]\n\
15115 PROBE_MODIFIER shall be present if the command is to be placed in a\n\
15116 probe point. Accepted values are `-probe' (for a generic, automatically\n\
15117 guessed probe type), `-probe-stap' (for a SystemTap probe) or \n\
15118 `-probe-dtrace' (for a DTrace probe).\n\
15119 LOCATION may be a linespec, address, or explicit location as described\n\
15120 below.\n\
15121 \n\
15122 With no LOCATION, uses current execution address of the selected\n\
15123 stack frame. This is useful for breaking on return to a stack frame.\n\
15124 \n\
15125 THREADNUM is the number from \"info threads\".\n\
15126 CONDITION is a boolean expression.\n\
15127 \n" LOCATION_HELP_STRING "\n\n\
15128 Multiple breakpoints at one place are permitted, and useful if their\n\
15129 conditions are different.\n\
15130 \n\
15131 Do \"help breakpoints\" for info on other commands dealing with breakpoints."
15132
15133 /* List of subcommands for "catch". */
15134 static struct cmd_list_element *catch_cmdlist;
15135
15136 /* List of subcommands for "tcatch". */
15137 static struct cmd_list_element *tcatch_cmdlist;
15138
15139 void
15140 add_catch_command (const char *name, const char *docstring,
15141 cmd_const_sfunc_ftype *sfunc,
15142 completer_ftype *completer,
15143 void *user_data_catch,
15144 void *user_data_tcatch)
15145 {
15146 struct cmd_list_element *command;
15147
15148 command = add_cmd (name, class_breakpoint, docstring,
15149 &catch_cmdlist);
15150 set_cmd_sfunc (command, sfunc);
15151 set_cmd_context (command, user_data_catch);
15152 set_cmd_completer (command, completer);
15153
15154 command = add_cmd (name, class_breakpoint, docstring,
15155 &tcatch_cmdlist);
15156 set_cmd_sfunc (command, sfunc);
15157 set_cmd_context (command, user_data_tcatch);
15158 set_cmd_completer (command, completer);
15159 }
15160
15161 static void
15162 save_command (const char *arg, int from_tty)
15163 {
15164 printf_unfiltered (_("\"save\" must be followed by "
15165 "the name of a save subcommand.\n"));
15166 help_list (save_cmdlist, "save ", all_commands, gdb_stdout);
15167 }
15168
15169 struct breakpoint *
15170 iterate_over_breakpoints (int (*callback) (struct breakpoint *, void *),
15171 void *data)
15172 {
15173 struct breakpoint *b, *b_tmp;
15174
15175 ALL_BREAKPOINTS_SAFE (b, b_tmp)
15176 {
15177 if ((*callback) (b, data))
15178 return b;
15179 }
15180
15181 return NULL;
15182 }
15183
15184 /* Zero if any of the breakpoint's locations could be a location where
15185 functions have been inlined, nonzero otherwise. */
15186
15187 static int
15188 is_non_inline_function (struct breakpoint *b)
15189 {
15190 /* The shared library event breakpoint is set on the address of a
15191 non-inline function. */
15192 if (b->type == bp_shlib_event)
15193 return 1;
15194
15195 return 0;
15196 }
15197
15198 /* Nonzero if the specified PC cannot be a location where functions
15199 have been inlined. */
15200
15201 int
15202 pc_at_non_inline_function (const address_space *aspace, CORE_ADDR pc,
15203 const struct target_waitstatus *ws)
15204 {
15205 struct breakpoint *b;
15206 struct bp_location *bl;
15207
15208 ALL_BREAKPOINTS (b)
15209 {
15210 if (!is_non_inline_function (b))
15211 continue;
15212
15213 for (bl = b->loc; bl != NULL; bl = bl->next)
15214 {
15215 if (!bl->shlib_disabled
15216 && bpstat_check_location (bl, aspace, pc, ws))
15217 return 1;
15218 }
15219 }
15220
15221 return 0;
15222 }
15223
15224 /* Remove any references to OBJFILE which is going to be freed. */
15225
15226 void
15227 breakpoint_free_objfile (struct objfile *objfile)
15228 {
15229 struct bp_location **locp, *loc;
15230
15231 ALL_BP_LOCATIONS (loc, locp)
15232 if (loc->symtab != NULL && SYMTAB_OBJFILE (loc->symtab) == objfile)
15233 loc->symtab = NULL;
15234 }
15235
15236 void
15237 initialize_breakpoint_ops (void)
15238 {
15239 static int initialized = 0;
15240
15241 struct breakpoint_ops *ops;
15242
15243 if (initialized)
15244 return;
15245 initialized = 1;
15246
15247 /* The breakpoint_ops structure to be inherit by all kinds of
15248 breakpoints (real breakpoints, i.e., user "break" breakpoints,
15249 internal and momentary breakpoints, etc.). */
15250 ops = &bkpt_base_breakpoint_ops;
15251 *ops = base_breakpoint_ops;
15252 ops->re_set = bkpt_re_set;
15253 ops->insert_location = bkpt_insert_location;
15254 ops->remove_location = bkpt_remove_location;
15255 ops->breakpoint_hit = bkpt_breakpoint_hit;
15256 ops->create_sals_from_location = bkpt_create_sals_from_location;
15257 ops->create_breakpoints_sal = bkpt_create_breakpoints_sal;
15258 ops->decode_location = bkpt_decode_location;
15259
15260 /* The breakpoint_ops structure to be used in regular breakpoints. */
15261 ops = &bkpt_breakpoint_ops;
15262 *ops = bkpt_base_breakpoint_ops;
15263 ops->re_set = bkpt_re_set;
15264 ops->resources_needed = bkpt_resources_needed;
15265 ops->print_it = bkpt_print_it;
15266 ops->print_mention = bkpt_print_mention;
15267 ops->print_recreate = bkpt_print_recreate;
15268
15269 /* Ranged breakpoints. */
15270 ops = &ranged_breakpoint_ops;
15271 *ops = bkpt_breakpoint_ops;
15272 ops->breakpoint_hit = breakpoint_hit_ranged_breakpoint;
15273 ops->resources_needed = resources_needed_ranged_breakpoint;
15274 ops->print_it = print_it_ranged_breakpoint;
15275 ops->print_one = print_one_ranged_breakpoint;
15276 ops->print_one_detail = print_one_detail_ranged_breakpoint;
15277 ops->print_mention = print_mention_ranged_breakpoint;
15278 ops->print_recreate = print_recreate_ranged_breakpoint;
15279
15280 /* Internal breakpoints. */
15281 ops = &internal_breakpoint_ops;
15282 *ops = bkpt_base_breakpoint_ops;
15283 ops->re_set = internal_bkpt_re_set;
15284 ops->check_status = internal_bkpt_check_status;
15285 ops->print_it = internal_bkpt_print_it;
15286 ops->print_mention = internal_bkpt_print_mention;
15287
15288 /* Momentary breakpoints. */
15289 ops = &momentary_breakpoint_ops;
15290 *ops = bkpt_base_breakpoint_ops;
15291 ops->re_set = momentary_bkpt_re_set;
15292 ops->check_status = momentary_bkpt_check_status;
15293 ops->print_it = momentary_bkpt_print_it;
15294 ops->print_mention = momentary_bkpt_print_mention;
15295
15296 /* Probe breakpoints. */
15297 ops = &bkpt_probe_breakpoint_ops;
15298 *ops = bkpt_breakpoint_ops;
15299 ops->insert_location = bkpt_probe_insert_location;
15300 ops->remove_location = bkpt_probe_remove_location;
15301 ops->create_sals_from_location = bkpt_probe_create_sals_from_location;
15302 ops->decode_location = bkpt_probe_decode_location;
15303
15304 /* Watchpoints. */
15305 ops = &watchpoint_breakpoint_ops;
15306 *ops = base_breakpoint_ops;
15307 ops->re_set = re_set_watchpoint;
15308 ops->insert_location = insert_watchpoint;
15309 ops->remove_location = remove_watchpoint;
15310 ops->breakpoint_hit = breakpoint_hit_watchpoint;
15311 ops->check_status = check_status_watchpoint;
15312 ops->resources_needed = resources_needed_watchpoint;
15313 ops->works_in_software_mode = works_in_software_mode_watchpoint;
15314 ops->print_it = print_it_watchpoint;
15315 ops->print_mention = print_mention_watchpoint;
15316 ops->print_recreate = print_recreate_watchpoint;
15317 ops->explains_signal = explains_signal_watchpoint;
15318
15319 /* Masked watchpoints. */
15320 ops = &masked_watchpoint_breakpoint_ops;
15321 *ops = watchpoint_breakpoint_ops;
15322 ops->insert_location = insert_masked_watchpoint;
15323 ops->remove_location = remove_masked_watchpoint;
15324 ops->resources_needed = resources_needed_masked_watchpoint;
15325 ops->works_in_software_mode = works_in_software_mode_masked_watchpoint;
15326 ops->print_it = print_it_masked_watchpoint;
15327 ops->print_one_detail = print_one_detail_masked_watchpoint;
15328 ops->print_mention = print_mention_masked_watchpoint;
15329 ops->print_recreate = print_recreate_masked_watchpoint;
15330
15331 /* Tracepoints. */
15332 ops = &tracepoint_breakpoint_ops;
15333 *ops = base_breakpoint_ops;
15334 ops->re_set = tracepoint_re_set;
15335 ops->breakpoint_hit = tracepoint_breakpoint_hit;
15336 ops->print_one_detail = tracepoint_print_one_detail;
15337 ops->print_mention = tracepoint_print_mention;
15338 ops->print_recreate = tracepoint_print_recreate;
15339 ops->create_sals_from_location = tracepoint_create_sals_from_location;
15340 ops->create_breakpoints_sal = tracepoint_create_breakpoints_sal;
15341 ops->decode_location = tracepoint_decode_location;
15342
15343 /* Probe tracepoints. */
15344 ops = &tracepoint_probe_breakpoint_ops;
15345 *ops = tracepoint_breakpoint_ops;
15346 ops->create_sals_from_location = tracepoint_probe_create_sals_from_location;
15347 ops->decode_location = tracepoint_probe_decode_location;
15348
15349 /* Static tracepoints with marker (`-m'). */
15350 ops = &strace_marker_breakpoint_ops;
15351 *ops = tracepoint_breakpoint_ops;
15352 ops->create_sals_from_location = strace_marker_create_sals_from_location;
15353 ops->create_breakpoints_sal = strace_marker_create_breakpoints_sal;
15354 ops->decode_location = strace_marker_decode_location;
15355
15356 /* Fork catchpoints. */
15357 ops = &catch_fork_breakpoint_ops;
15358 *ops = base_breakpoint_ops;
15359 ops->insert_location = insert_catch_fork;
15360 ops->remove_location = remove_catch_fork;
15361 ops->breakpoint_hit = breakpoint_hit_catch_fork;
15362 ops->print_it = print_it_catch_fork;
15363 ops->print_one = print_one_catch_fork;
15364 ops->print_mention = print_mention_catch_fork;
15365 ops->print_recreate = print_recreate_catch_fork;
15366
15367 /* Vfork catchpoints. */
15368 ops = &catch_vfork_breakpoint_ops;
15369 *ops = base_breakpoint_ops;
15370 ops->insert_location = insert_catch_vfork;
15371 ops->remove_location = remove_catch_vfork;
15372 ops->breakpoint_hit = breakpoint_hit_catch_vfork;
15373 ops->print_it = print_it_catch_vfork;
15374 ops->print_one = print_one_catch_vfork;
15375 ops->print_mention = print_mention_catch_vfork;
15376 ops->print_recreate = print_recreate_catch_vfork;
15377
15378 /* Exec catchpoints. */
15379 ops = &catch_exec_breakpoint_ops;
15380 *ops = base_breakpoint_ops;
15381 ops->insert_location = insert_catch_exec;
15382 ops->remove_location = remove_catch_exec;
15383 ops->breakpoint_hit = breakpoint_hit_catch_exec;
15384 ops->print_it = print_it_catch_exec;
15385 ops->print_one = print_one_catch_exec;
15386 ops->print_mention = print_mention_catch_exec;
15387 ops->print_recreate = print_recreate_catch_exec;
15388
15389 /* Solib-related catchpoints. */
15390 ops = &catch_solib_breakpoint_ops;
15391 *ops = base_breakpoint_ops;
15392 ops->insert_location = insert_catch_solib;
15393 ops->remove_location = remove_catch_solib;
15394 ops->breakpoint_hit = breakpoint_hit_catch_solib;
15395 ops->check_status = check_status_catch_solib;
15396 ops->print_it = print_it_catch_solib;
15397 ops->print_one = print_one_catch_solib;
15398 ops->print_mention = print_mention_catch_solib;
15399 ops->print_recreate = print_recreate_catch_solib;
15400
15401 ops = &dprintf_breakpoint_ops;
15402 *ops = bkpt_base_breakpoint_ops;
15403 ops->re_set = dprintf_re_set;
15404 ops->resources_needed = bkpt_resources_needed;
15405 ops->print_it = bkpt_print_it;
15406 ops->print_mention = bkpt_print_mention;
15407 ops->print_recreate = dprintf_print_recreate;
15408 ops->after_condition_true = dprintf_after_condition_true;
15409 ops->breakpoint_hit = dprintf_breakpoint_hit;
15410 }
15411
15412 /* Chain containing all defined "enable breakpoint" subcommands. */
15413
15414 static struct cmd_list_element *enablebreaklist = NULL;
15415
15416 /* See breakpoint.h. */
15417
15418 cmd_list_element *commands_cmd_element = nullptr;
15419
15420 void
15421 _initialize_breakpoint (void)
15422 {
15423 struct cmd_list_element *c;
15424
15425 initialize_breakpoint_ops ();
15426
15427 gdb::observers::solib_unloaded.attach (disable_breakpoints_in_unloaded_shlib);
15428 gdb::observers::free_objfile.attach (disable_breakpoints_in_freed_objfile);
15429 gdb::observers::memory_changed.attach (invalidate_bp_value_on_memory_change);
15430
15431 breakpoint_chain = 0;
15432 /* Don't bother to call set_breakpoint_count. $bpnum isn't useful
15433 before a breakpoint is set. */
15434 breakpoint_count = 0;
15435
15436 tracepoint_count = 0;
15437
15438 add_com ("ignore", class_breakpoint, ignore_command, _("\
15439 Set ignore-count of breakpoint number N to COUNT.\n\
15440 Usage is `ignore N COUNT'."));
15441
15442 commands_cmd_element = add_com ("commands", class_breakpoint,
15443 commands_command, _("\
15444 Set commands to be executed when the given breakpoints are hit.\n\
15445 Give a space-separated breakpoint list as argument after \"commands\".\n\
15446 A list element can be a breakpoint number (e.g. `5') or a range of numbers\n\
15447 (e.g. `5-7').\n\
15448 With no argument, the targeted breakpoint is the last one set.\n\
15449 The commands themselves follow starting on the next line.\n\
15450 Type a line containing \"end\" to indicate the end of them.\n\
15451 Give \"silent\" as the first line to make the breakpoint silent;\n\
15452 then no output is printed when it is hit, except what the commands print."));
15453
15454 c = add_com ("condition", class_breakpoint, condition_command, _("\
15455 Specify breakpoint number N to break only if COND is true.\n\
15456 Usage is `condition N COND', where N is an integer and COND is an\n\
15457 expression to be evaluated whenever breakpoint N is reached."));
15458 set_cmd_completer (c, condition_completer);
15459
15460 c = add_com ("tbreak", class_breakpoint, tbreak_command, _("\
15461 Set a temporary breakpoint.\n\
15462 Like \"break\" except the breakpoint is only temporary,\n\
15463 so it will be deleted when hit. Equivalent to \"break\" followed\n\
15464 by using \"enable delete\" on the breakpoint number.\n\
15465 \n"
15466 BREAK_ARGS_HELP ("tbreak")));
15467 set_cmd_completer (c, location_completer);
15468
15469 c = add_com ("hbreak", class_breakpoint, hbreak_command, _("\
15470 Set a hardware assisted breakpoint.\n\
15471 Like \"break\" except the breakpoint requires hardware support,\n\
15472 some target hardware may not have this support.\n\
15473 \n"
15474 BREAK_ARGS_HELP ("hbreak")));
15475 set_cmd_completer (c, location_completer);
15476
15477 c = add_com ("thbreak", class_breakpoint, thbreak_command, _("\
15478 Set a temporary hardware assisted breakpoint.\n\
15479 Like \"hbreak\" except the breakpoint is only temporary,\n\
15480 so it will be deleted when hit.\n\
15481 \n"
15482 BREAK_ARGS_HELP ("thbreak")));
15483 set_cmd_completer (c, location_completer);
15484
15485 add_prefix_cmd ("enable", class_breakpoint, enable_command, _("\
15486 Enable some breakpoints.\n\
15487 Give breakpoint numbers (separated by spaces) as arguments.\n\
15488 With no subcommand, breakpoints are enabled until you command otherwise.\n\
15489 This is used to cancel the effect of the \"disable\" command.\n\
15490 With a subcommand you can enable temporarily."),
15491 &enablelist, "enable ", 1, &cmdlist);
15492
15493 add_com_alias ("en", "enable", class_breakpoint, 1);
15494
15495 add_prefix_cmd ("breakpoints", class_breakpoint, enable_command, _("\
15496 Enable some breakpoints.\n\
15497 Give breakpoint numbers (separated by spaces) as arguments.\n\
15498 This is used to cancel the effect of the \"disable\" command.\n\
15499 May be abbreviated to simply \"enable\"."),
15500 &enablebreaklist, "enable breakpoints ", 1, &enablelist);
15501
15502 add_cmd ("once", no_class, enable_once_command, _("\
15503 Enable breakpoints for one hit. Give breakpoint numbers.\n\
15504 If a breakpoint is hit while enabled in this fashion, it becomes disabled."),
15505 &enablebreaklist);
15506
15507 add_cmd ("delete", no_class, enable_delete_command, _("\
15508 Enable breakpoints and delete when hit. Give breakpoint numbers.\n\
15509 If a breakpoint is hit while enabled in this fashion, it is deleted."),
15510 &enablebreaklist);
15511
15512 add_cmd ("count", no_class, enable_count_command, _("\
15513 Enable breakpoints for COUNT hits. Give count and then breakpoint numbers.\n\
15514 If a breakpoint is hit while enabled in this fashion,\n\
15515 the count is decremented; when it reaches zero, the breakpoint is disabled."),
15516 &enablebreaklist);
15517
15518 add_cmd ("delete", no_class, enable_delete_command, _("\
15519 Enable breakpoints and delete when hit. Give breakpoint numbers.\n\
15520 If a breakpoint is hit while enabled in this fashion, it is deleted."),
15521 &enablelist);
15522
15523 add_cmd ("once", no_class, enable_once_command, _("\
15524 Enable breakpoints for one hit. Give breakpoint numbers.\n\
15525 If a breakpoint is hit while enabled in this fashion, it becomes disabled."),
15526 &enablelist);
15527
15528 add_cmd ("count", no_class, enable_count_command, _("\
15529 Enable breakpoints for COUNT hits. Give count and then breakpoint numbers.\n\
15530 If a breakpoint is hit while enabled in this fashion,\n\
15531 the count is decremented; when it reaches zero, the breakpoint is disabled."),
15532 &enablelist);
15533
15534 add_prefix_cmd ("disable", class_breakpoint, disable_command, _("\
15535 Disable some breakpoints.\n\
15536 Arguments are breakpoint numbers with spaces in between.\n\
15537 To disable all breakpoints, give no argument.\n\
15538 A disabled breakpoint is not forgotten, but has no effect until re-enabled."),
15539 &disablelist, "disable ", 1, &cmdlist);
15540 add_com_alias ("dis", "disable", class_breakpoint, 1);
15541 add_com_alias ("disa", "disable", class_breakpoint, 1);
15542
15543 add_cmd ("breakpoints", class_alias, disable_command, _("\
15544 Disable some breakpoints.\n\
15545 Arguments are breakpoint numbers with spaces in between.\n\
15546 To disable all breakpoints, give no argument.\n\
15547 A disabled breakpoint is not forgotten, but has no effect until re-enabled.\n\
15548 This command may be abbreviated \"disable\"."),
15549 &disablelist);
15550
15551 add_prefix_cmd ("delete", class_breakpoint, delete_command, _("\
15552 Delete some breakpoints or auto-display expressions.\n\
15553 Arguments are breakpoint numbers with spaces in between.\n\
15554 To delete all breakpoints, give no argument.\n\
15555 \n\
15556 Also a prefix command for deletion of other GDB objects.\n\
15557 The \"unset\" command is also an alias for \"delete\"."),
15558 &deletelist, "delete ", 1, &cmdlist);
15559 add_com_alias ("d", "delete", class_breakpoint, 1);
15560 add_com_alias ("del", "delete", class_breakpoint, 1);
15561
15562 add_cmd ("breakpoints", class_alias, delete_command, _("\
15563 Delete some breakpoints or auto-display expressions.\n\
15564 Arguments are breakpoint numbers with spaces in between.\n\
15565 To delete all breakpoints, give no argument.\n\
15566 This command may be abbreviated \"delete\"."),
15567 &deletelist);
15568
15569 add_com ("clear", class_breakpoint, clear_command, _("\
15570 Clear breakpoint at specified location.\n\
15571 Argument may be a linespec, explicit, or address location as described below.\n\
15572 \n\
15573 With no argument, clears all breakpoints in the line that the selected frame\n\
15574 is executing in.\n"
15575 "\n" LOCATION_HELP_STRING "\n\n\
15576 See also the \"delete\" command which clears breakpoints by number."));
15577 add_com_alias ("cl", "clear", class_breakpoint, 1);
15578
15579 c = add_com ("break", class_breakpoint, break_command, _("\
15580 Set breakpoint at specified location.\n"
15581 BREAK_ARGS_HELP ("break")));
15582 set_cmd_completer (c, location_completer);
15583
15584 add_com_alias ("b", "break", class_run, 1);
15585 add_com_alias ("br", "break", class_run, 1);
15586 add_com_alias ("bre", "break", class_run, 1);
15587 add_com_alias ("brea", "break", class_run, 1);
15588
15589 if (dbx_commands)
15590 {
15591 add_abbrev_prefix_cmd ("stop", class_breakpoint, stop_command, _("\
15592 Break in function/address or break at a line in the current file."),
15593 &stoplist, "stop ", 1, &cmdlist);
15594 add_cmd ("in", class_breakpoint, stopin_command,
15595 _("Break in function or address."), &stoplist);
15596 add_cmd ("at", class_breakpoint, stopat_command,
15597 _("Break at a line in the current file."), &stoplist);
15598 add_com ("status", class_info, info_breakpoints_command, _("\
15599 Status of user-settable breakpoints, or breakpoint number NUMBER.\n\
15600 The \"Type\" column indicates one of:\n\
15601 \tbreakpoint - normal breakpoint\n\
15602 \twatchpoint - watchpoint\n\
15603 The \"Disp\" column contains one of \"keep\", \"del\", or \"dis\" to indicate\n\
15604 the disposition of the breakpoint after it gets hit. \"dis\" means that the\n\
15605 breakpoint will be disabled. The \"Address\" and \"What\" columns indicate the\n\
15606 address and file/line number respectively.\n\
15607 \n\
15608 Convenience variable \"$_\" and default examine address for \"x\"\n\
15609 are set to the address of the last breakpoint listed unless the command\n\
15610 is prefixed with \"server \".\n\n\
15611 Convenience variable \"$bpnum\" contains the number of the last\n\
15612 breakpoint set."));
15613 }
15614
15615 add_info ("breakpoints", info_breakpoints_command, _("\
15616 Status of specified breakpoints (all user-settable breakpoints if no argument).\n\
15617 The \"Type\" column indicates one of:\n\
15618 \tbreakpoint - normal breakpoint\n\
15619 \twatchpoint - watchpoint\n\
15620 The \"Disp\" column contains one of \"keep\", \"del\", or \"dis\" to indicate\n\
15621 the disposition of the breakpoint after it gets hit. \"dis\" means that the\n\
15622 breakpoint will be disabled. The \"Address\" and \"What\" columns indicate the\n\
15623 address and file/line number respectively.\n\
15624 \n\
15625 Convenience variable \"$_\" and default examine address for \"x\"\n\
15626 are set to the address of the last breakpoint listed unless the command\n\
15627 is prefixed with \"server \".\n\n\
15628 Convenience variable \"$bpnum\" contains the number of the last\n\
15629 breakpoint set."));
15630
15631 add_info_alias ("b", "breakpoints", 1);
15632
15633 add_cmd ("breakpoints", class_maintenance, maintenance_info_breakpoints, _("\
15634 Status of all breakpoints, or breakpoint number NUMBER.\n\
15635 The \"Type\" column indicates one of:\n\
15636 \tbreakpoint - normal breakpoint\n\
15637 \twatchpoint - watchpoint\n\
15638 \tlongjmp - internal breakpoint used to step through longjmp()\n\
15639 \tlongjmp resume - internal breakpoint at the target of longjmp()\n\
15640 \tuntil - internal breakpoint used by the \"until\" command\n\
15641 \tfinish - internal breakpoint used by the \"finish\" command\n\
15642 The \"Disp\" column contains one of \"keep\", \"del\", or \"dis\" to indicate\n\
15643 the disposition of the breakpoint after it gets hit. \"dis\" means that the\n\
15644 breakpoint will be disabled. The \"Address\" and \"What\" columns indicate the\n\
15645 address and file/line number respectively.\n\
15646 \n\
15647 Convenience variable \"$_\" and default examine address for \"x\"\n\
15648 are set to the address of the last breakpoint listed unless the command\n\
15649 is prefixed with \"server \".\n\n\
15650 Convenience variable \"$bpnum\" contains the number of the last\n\
15651 breakpoint set."),
15652 &maintenanceinfolist);
15653
15654 add_prefix_cmd ("catch", class_breakpoint, catch_command, _("\
15655 Set catchpoints to catch events."),
15656 &catch_cmdlist, "catch ",
15657 0/*allow-unknown*/, &cmdlist);
15658
15659 add_prefix_cmd ("tcatch", class_breakpoint, tcatch_command, _("\
15660 Set temporary catchpoints to catch events."),
15661 &tcatch_cmdlist, "tcatch ",
15662 0/*allow-unknown*/, &cmdlist);
15663
15664 add_catch_command ("fork", _("Catch calls to fork."),
15665 catch_fork_command_1,
15666 NULL,
15667 (void *) (uintptr_t) catch_fork_permanent,
15668 (void *) (uintptr_t) catch_fork_temporary);
15669 add_catch_command ("vfork", _("Catch calls to vfork."),
15670 catch_fork_command_1,
15671 NULL,
15672 (void *) (uintptr_t) catch_vfork_permanent,
15673 (void *) (uintptr_t) catch_vfork_temporary);
15674 add_catch_command ("exec", _("Catch calls to exec."),
15675 catch_exec_command_1,
15676 NULL,
15677 CATCH_PERMANENT,
15678 CATCH_TEMPORARY);
15679 add_catch_command ("load", _("Catch loads of shared libraries.\n\
15680 Usage: catch load [REGEX]\n\
15681 If REGEX is given, only stop for libraries matching the regular expression."),
15682 catch_load_command_1,
15683 NULL,
15684 CATCH_PERMANENT,
15685 CATCH_TEMPORARY);
15686 add_catch_command ("unload", _("Catch unloads of shared libraries.\n\
15687 Usage: catch unload [REGEX]\n\
15688 If REGEX is given, only stop for libraries matching the regular expression."),
15689 catch_unload_command_1,
15690 NULL,
15691 CATCH_PERMANENT,
15692 CATCH_TEMPORARY);
15693
15694 c = add_com ("watch", class_breakpoint, watch_command, _("\
15695 Set a watchpoint for an expression.\n\
15696 Usage: watch [-l|-location] EXPRESSION\n\
15697 A watchpoint stops execution of your program whenever the value of\n\
15698 an expression changes.\n\
15699 If -l or -location is given, this evaluates EXPRESSION and watches\n\
15700 the memory to which it refers."));
15701 set_cmd_completer (c, expression_completer);
15702
15703 c = add_com ("rwatch", class_breakpoint, rwatch_command, _("\
15704 Set a read watchpoint for an expression.\n\
15705 Usage: rwatch [-l|-location] EXPRESSION\n\
15706 A watchpoint stops execution of your program whenever the value of\n\
15707 an expression is read.\n\
15708 If -l or -location is given, this evaluates EXPRESSION and watches\n\
15709 the memory to which it refers."));
15710 set_cmd_completer (c, expression_completer);
15711
15712 c = add_com ("awatch", class_breakpoint, awatch_command, _("\
15713 Set a watchpoint for an expression.\n\
15714 Usage: awatch [-l|-location] EXPRESSION\n\
15715 A watchpoint stops execution of your program whenever the value of\n\
15716 an expression is either read or written.\n\
15717 If -l or -location is given, this evaluates EXPRESSION and watches\n\
15718 the memory to which it refers."));
15719 set_cmd_completer (c, expression_completer);
15720
15721 add_info ("watchpoints", info_watchpoints_command, _("\
15722 Status of specified watchpoints (all watchpoints if no argument)."));
15723
15724 /* XXX: cagney/2005-02-23: This should be a boolean, and should
15725 respond to changes - contrary to the description. */
15726 add_setshow_zinteger_cmd ("can-use-hw-watchpoints", class_support,
15727 &can_use_hw_watchpoints, _("\
15728 Set debugger's willingness to use watchpoint hardware."), _("\
15729 Show debugger's willingness to use watchpoint hardware."), _("\
15730 If zero, gdb will not use hardware for new watchpoints, even if\n\
15731 such is available. (However, any hardware watchpoints that were\n\
15732 created before setting this to nonzero, will continue to use watchpoint\n\
15733 hardware.)"),
15734 NULL,
15735 show_can_use_hw_watchpoints,
15736 &setlist, &showlist);
15737
15738 can_use_hw_watchpoints = 1;
15739
15740 /* Tracepoint manipulation commands. */
15741
15742 c = add_com ("trace", class_breakpoint, trace_command, _("\
15743 Set a tracepoint at specified location.\n\
15744 \n"
15745 BREAK_ARGS_HELP ("trace") "\n\
15746 Do \"help tracepoints\" for info on other tracepoint commands."));
15747 set_cmd_completer (c, location_completer);
15748
15749 add_com_alias ("tp", "trace", class_alias, 0);
15750 add_com_alias ("tr", "trace", class_alias, 1);
15751 add_com_alias ("tra", "trace", class_alias, 1);
15752 add_com_alias ("trac", "trace", class_alias, 1);
15753
15754 c = add_com ("ftrace", class_breakpoint, ftrace_command, _("\
15755 Set a fast tracepoint at specified location.\n\
15756 \n"
15757 BREAK_ARGS_HELP ("ftrace") "\n\
15758 Do \"help tracepoints\" for info on other tracepoint commands."));
15759 set_cmd_completer (c, location_completer);
15760
15761 c = add_com ("strace", class_breakpoint, strace_command, _("\
15762 Set a static tracepoint at location or marker.\n\
15763 \n\
15764 strace [LOCATION] [if CONDITION]\n\
15765 LOCATION may be a linespec, explicit, or address location (described below) \n\
15766 or -m MARKER_ID.\n\n\
15767 If a marker id is specified, probe the marker with that name. With\n\
15768 no LOCATION, uses current execution address of the selected stack frame.\n\
15769 Static tracepoints accept an extra collect action -- ``collect $_sdata''.\n\
15770 This collects arbitrary user data passed in the probe point call to the\n\
15771 tracing library. You can inspect it when analyzing the trace buffer,\n\
15772 by printing the $_sdata variable like any other convenience variable.\n\
15773 \n\
15774 CONDITION is a boolean expression.\n\
15775 \n" LOCATION_HELP_STRING "\n\n\
15776 Multiple tracepoints at one place are permitted, and useful if their\n\
15777 conditions are different.\n\
15778 \n\
15779 Do \"help breakpoints\" for info on other commands dealing with breakpoints.\n\
15780 Do \"help tracepoints\" for info on other tracepoint commands."));
15781 set_cmd_completer (c, location_completer);
15782
15783 add_info ("tracepoints", info_tracepoints_command, _("\
15784 Status of specified tracepoints (all tracepoints if no argument).\n\
15785 Convenience variable \"$tpnum\" contains the number of the\n\
15786 last tracepoint set."));
15787
15788 add_info_alias ("tp", "tracepoints", 1);
15789
15790 add_cmd ("tracepoints", class_trace, delete_trace_command, _("\
15791 Delete specified tracepoints.\n\
15792 Arguments are tracepoint numbers, separated by spaces.\n\
15793 No argument means delete all tracepoints."),
15794 &deletelist);
15795 add_alias_cmd ("tr", "tracepoints", class_trace, 1, &deletelist);
15796
15797 c = add_cmd ("tracepoints", class_trace, disable_trace_command, _("\
15798 Disable specified tracepoints.\n\
15799 Arguments are tracepoint numbers, separated by spaces.\n\
15800 No argument means disable all tracepoints."),
15801 &disablelist);
15802 deprecate_cmd (c, "disable");
15803
15804 c = add_cmd ("tracepoints", class_trace, enable_trace_command, _("\
15805 Enable specified tracepoints.\n\
15806 Arguments are tracepoint numbers, separated by spaces.\n\
15807 No argument means enable all tracepoints."),
15808 &enablelist);
15809 deprecate_cmd (c, "enable");
15810
15811 add_com ("passcount", class_trace, trace_pass_command, _("\
15812 Set the passcount for a tracepoint.\n\
15813 The trace will end when the tracepoint has been passed 'count' times.\n\
15814 Usage: passcount COUNT TPNUM, where TPNUM may also be \"all\";\n\
15815 if TPNUM is omitted, passcount refers to the last tracepoint defined."));
15816
15817 add_prefix_cmd ("save", class_breakpoint, save_command,
15818 _("Save breakpoint definitions as a script."),
15819 &save_cmdlist, "save ",
15820 0/*allow-unknown*/, &cmdlist);
15821
15822 c = add_cmd ("breakpoints", class_breakpoint, save_breakpoints_command, _("\
15823 Save current breakpoint definitions as a script.\n\
15824 This includes all types of breakpoints (breakpoints, watchpoints,\n\
15825 catchpoints, tracepoints). Use the 'source' command in another debug\n\
15826 session to restore them."),
15827 &save_cmdlist);
15828 set_cmd_completer (c, filename_completer);
15829
15830 c = add_cmd ("tracepoints", class_trace, save_tracepoints_command, _("\
15831 Save current tracepoint definitions as a script.\n\
15832 Use the 'source' command in another debug session to restore them."),
15833 &save_cmdlist);
15834 set_cmd_completer (c, filename_completer);
15835
15836 c = add_com_alias ("save-tracepoints", "save tracepoints", class_trace, 0);
15837 deprecate_cmd (c, "save tracepoints");
15838
15839 add_prefix_cmd ("breakpoint", class_maintenance, set_breakpoint_cmd, _("\
15840 Breakpoint specific settings\n\
15841 Configure various breakpoint-specific variables such as\n\
15842 pending breakpoint behavior"),
15843 &breakpoint_set_cmdlist, "set breakpoint ",
15844 0/*allow-unknown*/, &setlist);
15845 add_prefix_cmd ("breakpoint", class_maintenance, show_breakpoint_cmd, _("\
15846 Breakpoint specific settings\n\
15847 Configure various breakpoint-specific variables such as\n\
15848 pending breakpoint behavior"),
15849 &breakpoint_show_cmdlist, "show breakpoint ",
15850 0/*allow-unknown*/, &showlist);
15851
15852 add_setshow_auto_boolean_cmd ("pending", no_class,
15853 &pending_break_support, _("\
15854 Set debugger's behavior regarding pending breakpoints."), _("\
15855 Show debugger's behavior regarding pending breakpoints."), _("\
15856 If on, an unrecognized breakpoint location will cause gdb to create a\n\
15857 pending breakpoint. If off, an unrecognized breakpoint location results in\n\
15858 an error. If auto, an unrecognized breakpoint location results in a\n\
15859 user-query to see if a pending breakpoint should be created."),
15860 NULL,
15861 show_pending_break_support,
15862 &breakpoint_set_cmdlist,
15863 &breakpoint_show_cmdlist);
15864
15865 pending_break_support = AUTO_BOOLEAN_AUTO;
15866
15867 add_setshow_boolean_cmd ("auto-hw", no_class,
15868 &automatic_hardware_breakpoints, _("\
15869 Set automatic usage of hardware breakpoints."), _("\
15870 Show automatic usage of hardware breakpoints."), _("\
15871 If set, the debugger will automatically use hardware breakpoints for\n\
15872 breakpoints set with \"break\" but falling in read-only memory. If not set,\n\
15873 a warning will be emitted for such breakpoints."),
15874 NULL,
15875 show_automatic_hardware_breakpoints,
15876 &breakpoint_set_cmdlist,
15877 &breakpoint_show_cmdlist);
15878
15879 add_setshow_boolean_cmd ("always-inserted", class_support,
15880 &always_inserted_mode, _("\
15881 Set mode for inserting breakpoints."), _("\
15882 Show mode for inserting breakpoints."), _("\
15883 When this mode is on, breakpoints are inserted immediately as soon as\n\
15884 they're created, kept inserted even when execution stops, and removed\n\
15885 only when the user deletes them. When this mode is off (the default),\n\
15886 breakpoints are inserted only when execution continues, and removed\n\
15887 when execution stops."),
15888 NULL,
15889 &show_always_inserted_mode,
15890 &breakpoint_set_cmdlist,
15891 &breakpoint_show_cmdlist);
15892
15893 add_setshow_enum_cmd ("condition-evaluation", class_breakpoint,
15894 condition_evaluation_enums,
15895 &condition_evaluation_mode_1, _("\
15896 Set mode of breakpoint condition evaluation."), _("\
15897 Show mode of breakpoint condition evaluation."), _("\
15898 When this is set to \"host\", breakpoint conditions will be\n\
15899 evaluated on the host's side by GDB. When it is set to \"target\",\n\
15900 breakpoint conditions will be downloaded to the target (if the target\n\
15901 supports such feature) and conditions will be evaluated on the target's side.\n\
15902 If this is set to \"auto\" (default), this will be automatically set to\n\
15903 \"target\" if it supports condition evaluation, otherwise it will\n\
15904 be set to \"gdb\""),
15905 &set_condition_evaluation_mode,
15906 &show_condition_evaluation_mode,
15907 &breakpoint_set_cmdlist,
15908 &breakpoint_show_cmdlist);
15909
15910 add_com ("break-range", class_breakpoint, break_range_command, _("\
15911 Set a breakpoint for an address range.\n\
15912 break-range START-LOCATION, END-LOCATION\n\
15913 where START-LOCATION and END-LOCATION can be one of the following:\n\
15914 LINENUM, for that line in the current file,\n\
15915 FILE:LINENUM, for that line in that file,\n\
15916 +OFFSET, for that number of lines after the current line\n\
15917 or the start of the range\n\
15918 FUNCTION, for the first line in that function,\n\
15919 FILE:FUNCTION, to distinguish among like-named static functions.\n\
15920 *ADDRESS, for the instruction at that address.\n\
15921 \n\
15922 The breakpoint will stop execution of the inferior whenever it executes\n\
15923 an instruction at any address within the [START-LOCATION, END-LOCATION]\n\
15924 range (including START-LOCATION and END-LOCATION)."));
15925
15926 c = add_com ("dprintf", class_breakpoint, dprintf_command, _("\
15927 Set a dynamic printf at specified location.\n\
15928 dprintf location,format string,arg1,arg2,...\n\
15929 location may be a linespec, explicit, or address location.\n"
15930 "\n" LOCATION_HELP_STRING));
15931 set_cmd_completer (c, location_completer);
15932
15933 add_setshow_enum_cmd ("dprintf-style", class_support,
15934 dprintf_style_enums, &dprintf_style, _("\
15935 Set the style of usage for dynamic printf."), _("\
15936 Show the style of usage for dynamic printf."), _("\
15937 This setting chooses how GDB will do a dynamic printf.\n\
15938 If the value is \"gdb\", then the printing is done by GDB to its own\n\
15939 console, as with the \"printf\" command.\n\
15940 If the value is \"call\", the print is done by calling a function in your\n\
15941 program; by default printf(), but you can choose a different function or\n\
15942 output stream by setting dprintf-function and dprintf-channel."),
15943 update_dprintf_commands, NULL,
15944 &setlist, &showlist);
15945
15946 dprintf_function = xstrdup ("printf");
15947 add_setshow_string_cmd ("dprintf-function", class_support,
15948 &dprintf_function, _("\
15949 Set the function to use for dynamic printf"), _("\
15950 Show the function to use for dynamic printf"), NULL,
15951 update_dprintf_commands, NULL,
15952 &setlist, &showlist);
15953
15954 dprintf_channel = xstrdup ("");
15955 add_setshow_string_cmd ("dprintf-channel", class_support,
15956 &dprintf_channel, _("\
15957 Set the channel to use for dynamic printf"), _("\
15958 Show the channel to use for dynamic printf"), NULL,
15959 update_dprintf_commands, NULL,
15960 &setlist, &showlist);
15961
15962 add_setshow_boolean_cmd ("disconnected-dprintf", no_class,
15963 &disconnected_dprintf, _("\
15964 Set whether dprintf continues after GDB disconnects."), _("\
15965 Show whether dprintf continues after GDB disconnects."), _("\
15966 Use this to let dprintf commands continue to hit and produce output\n\
15967 even if GDB disconnects or detaches from the target."),
15968 NULL,
15969 NULL,
15970 &setlist, &showlist);
15971
15972 add_com ("agent-printf", class_vars, agent_printf_command, _("\
15973 agent-printf \"printf format string\", arg1, arg2, arg3, ..., argn\n\
15974 (target agent only) This is useful for formatted output in user-defined commands."));
15975
15976 automatic_hardware_breakpoints = 1;
15977
15978 gdb::observers::about_to_proceed.attach (breakpoint_about_to_proceed);
15979 gdb::observers::thread_exit.attach (remove_threaded_breakpoints);
15980 }
This page took 0.446311 seconds and 5 git commands to generate.