]> git.ipfire.org Git - thirdparty/binutils-gdb.git/blob - gdb/breakpoint.c
Add R_AARCH64_P32_MOVW_PREL_* ELF32 relocs
[thirdparty/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 /* Enums for exception-handling support. */
89 enum exception_event_kind
90 {
91 EX_EVENT_THROW,
92 EX_EVENT_RETHROW,
93 EX_EVENT_CATCH
94 };
95
96 /* Prototypes for local functions. */
97
98 static void map_breakpoint_numbers (const char *,
99 gdb::function_view<void (breakpoint *)>);
100
101 static void breakpoint_re_set_default (struct breakpoint *);
102
103 static void
104 create_sals_from_location_default (const struct event_location *location,
105 struct linespec_result *canonical,
106 enum bptype type_wanted);
107
108 static void create_breakpoints_sal_default (struct gdbarch *,
109 struct linespec_result *,
110 gdb::unique_xmalloc_ptr<char>,
111 gdb::unique_xmalloc_ptr<char>,
112 enum bptype,
113 enum bpdisp, int, int,
114 int,
115 const struct breakpoint_ops *,
116 int, int, int, unsigned);
117
118 static std::vector<symtab_and_line> decode_location_default
119 (struct breakpoint *b, const struct event_location *location,
120 struct program_space *search_pspace);
121
122 static int can_use_hardware_watchpoint
123 (const std::vector<value_ref_ptr> &vals);
124
125 static void mention (struct breakpoint *);
126
127 static struct breakpoint *set_raw_breakpoint_without_location (struct gdbarch *,
128 enum bptype,
129 const struct breakpoint_ops *);
130 static struct bp_location *add_location_to_breakpoint (struct breakpoint *,
131 const struct symtab_and_line *);
132
133 /* This function is used in gdbtk sources and thus can not be made
134 static. */
135 struct breakpoint *set_raw_breakpoint (struct gdbarch *gdbarch,
136 struct symtab_and_line,
137 enum bptype,
138 const struct breakpoint_ops *);
139
140 static struct breakpoint *
141 momentary_breakpoint_from_master (struct breakpoint *orig,
142 enum bptype type,
143 const struct breakpoint_ops *ops,
144 int loc_enabled);
145
146 static void breakpoint_adjustment_warning (CORE_ADDR, CORE_ADDR, int, int);
147
148 static CORE_ADDR adjust_breakpoint_address (struct gdbarch *gdbarch,
149 CORE_ADDR bpaddr,
150 enum bptype bptype);
151
152 static void describe_other_breakpoints (struct gdbarch *,
153 struct program_space *, CORE_ADDR,
154 struct obj_section *, int);
155
156 static int watchpoint_locations_match (struct bp_location *loc1,
157 struct bp_location *loc2);
158
159 static int breakpoint_location_address_match (struct bp_location *bl,
160 const struct address_space *aspace,
161 CORE_ADDR addr);
162
163 static int breakpoint_location_address_range_overlap (struct bp_location *,
164 const address_space *,
165 CORE_ADDR, int);
166
167 static int remove_breakpoint (struct bp_location *);
168 static int remove_breakpoint_1 (struct bp_location *, enum remove_bp_reason);
169
170 static enum print_stop_action print_bp_stop_message (bpstat bs);
171
172 static int hw_breakpoint_used_count (void);
173
174 static int hw_watchpoint_use_count (struct breakpoint *);
175
176 static int hw_watchpoint_used_count_others (struct breakpoint *except,
177 enum bptype type,
178 int *other_type_used);
179
180 static void enable_breakpoint_disp (struct breakpoint *, enum bpdisp,
181 int count);
182
183 static void free_bp_location (struct bp_location *loc);
184 static void incref_bp_location (struct bp_location *loc);
185 static void decref_bp_location (struct bp_location **loc);
186
187 static struct bp_location *allocate_bp_location (struct breakpoint *bpt);
188
189 /* update_global_location_list's modes of operation wrt to whether to
190 insert locations now. */
191 enum ugll_insert_mode
192 {
193 /* Don't insert any breakpoint locations into the inferior, only
194 remove already-inserted locations that no longer should be
195 inserted. Functions that delete a breakpoint or breakpoints
196 should specify this mode, so that deleting a breakpoint doesn't
197 have the side effect of inserting the locations of other
198 breakpoints that are marked not-inserted, but should_be_inserted
199 returns true on them.
200
201 This behavior is useful is situations close to tear-down -- e.g.,
202 after an exec, while the target still has execution, but
203 breakpoint shadows of the previous executable image should *NOT*
204 be restored to the new image; or before detaching, where the
205 target still has execution and wants to delete breakpoints from
206 GDB's lists, and all breakpoints had already been removed from
207 the inferior. */
208 UGLL_DONT_INSERT,
209
210 /* May insert breakpoints iff breakpoints_should_be_inserted_now
211 claims breakpoints should be inserted now. */
212 UGLL_MAY_INSERT,
213
214 /* Insert locations now, irrespective of
215 breakpoints_should_be_inserted_now. E.g., say all threads are
216 stopped right now, and the user did "continue". We need to
217 insert breakpoints _before_ resuming the target, but
218 UGLL_MAY_INSERT wouldn't insert them, because
219 breakpoints_should_be_inserted_now returns false at that point,
220 as no thread is running yet. */
221 UGLL_INSERT
222 };
223
224 static void update_global_location_list (enum ugll_insert_mode);
225
226 static void update_global_location_list_nothrow (enum ugll_insert_mode);
227
228 static int is_hardware_watchpoint (const struct breakpoint *bpt);
229
230 static void insert_breakpoint_locations (void);
231
232 static void trace_pass_command (const char *, int);
233
234 static void set_tracepoint_count (int num);
235
236 static int is_masked_watchpoint (const struct breakpoint *b);
237
238 static struct bp_location **get_first_locp_gte_addr (CORE_ADDR address);
239
240 /* Return 1 if B refers to a static tracepoint set by marker ("-m"), zero
241 otherwise. */
242
243 static int strace_marker_p (struct breakpoint *b);
244
245 /* The breakpoint_ops structure to be inherited by all breakpoint_ops
246 that are implemented on top of software or hardware breakpoints
247 (user breakpoints, internal and momentary breakpoints, etc.). */
248 static struct breakpoint_ops bkpt_base_breakpoint_ops;
249
250 /* Internal breakpoints class type. */
251 static struct breakpoint_ops internal_breakpoint_ops;
252
253 /* Momentary breakpoints class type. */
254 static struct breakpoint_ops momentary_breakpoint_ops;
255
256 /* The breakpoint_ops structure to be used in regular user created
257 breakpoints. */
258 struct breakpoint_ops bkpt_breakpoint_ops;
259
260 /* Breakpoints set on probes. */
261 static struct breakpoint_ops bkpt_probe_breakpoint_ops;
262
263 /* Dynamic printf class type. */
264 struct breakpoint_ops dprintf_breakpoint_ops;
265
266 /* The style in which to perform a dynamic printf. This is a user
267 option because different output options have different tradeoffs;
268 if GDB does the printing, there is better error handling if there
269 is a problem with any of the arguments, but using an inferior
270 function lets you have special-purpose printers and sending of
271 output to the same place as compiled-in print functions. */
272
273 static const char dprintf_style_gdb[] = "gdb";
274 static const char dprintf_style_call[] = "call";
275 static const char dprintf_style_agent[] = "agent";
276 static const char *const dprintf_style_enums[] = {
277 dprintf_style_gdb,
278 dprintf_style_call,
279 dprintf_style_agent,
280 NULL
281 };
282 static const char *dprintf_style = dprintf_style_gdb;
283
284 /* The function to use for dynamic printf if the preferred style is to
285 call into the inferior. The value is simply a string that is
286 copied into the command, so it can be anything that GDB can
287 evaluate to a callable address, not necessarily a function name. */
288
289 static char *dprintf_function;
290
291 /* The channel to use for dynamic printf if the preferred style is to
292 call into the inferior; if a nonempty string, it will be passed to
293 the call as the first argument, with the format string as the
294 second. As with the dprintf function, this can be anything that
295 GDB knows how to evaluate, so in addition to common choices like
296 "stderr", this could be an app-specific expression like
297 "mystreams[curlogger]". */
298
299 static char *dprintf_channel;
300
301 /* True if dprintf commands should continue to operate even if GDB
302 has disconnected. */
303 static int disconnected_dprintf = 1;
304
305 struct command_line *
306 breakpoint_commands (struct breakpoint *b)
307 {
308 return b->commands ? b->commands.get () : NULL;
309 }
310
311 /* Flag indicating that a command has proceeded the inferior past the
312 current breakpoint. */
313
314 static int breakpoint_proceeded;
315
316 const char *
317 bpdisp_text (enum bpdisp disp)
318 {
319 /* NOTE: the following values are a part of MI protocol and
320 represent values of 'disp' field returned when inferior stops at
321 a breakpoint. */
322 static const char * const bpdisps[] = {"del", "dstp", "dis", "keep"};
323
324 return bpdisps[(int) disp];
325 }
326
327 /* Prototypes for exported functions. */
328 /* If FALSE, gdb will not use hardware support for watchpoints, even
329 if such is available. */
330 static int can_use_hw_watchpoints;
331
332 static void
333 show_can_use_hw_watchpoints (struct ui_file *file, int from_tty,
334 struct cmd_list_element *c,
335 const char *value)
336 {
337 fprintf_filtered (file,
338 _("Debugger's willingness to use "
339 "watchpoint hardware is %s.\n"),
340 value);
341 }
342
343 /* If AUTO_BOOLEAN_FALSE, gdb will not attempt to create pending breakpoints.
344 If AUTO_BOOLEAN_TRUE, gdb will automatically create pending breakpoints
345 for unrecognized breakpoint locations.
346 If AUTO_BOOLEAN_AUTO, gdb will query when breakpoints are unrecognized. */
347 static enum auto_boolean pending_break_support;
348 static void
349 show_pending_break_support (struct ui_file *file, int from_tty,
350 struct cmd_list_element *c,
351 const char *value)
352 {
353 fprintf_filtered (file,
354 _("Debugger's behavior regarding "
355 "pending breakpoints is %s.\n"),
356 value);
357 }
358
359 /* If 1, gdb will automatically use hardware breakpoints for breakpoints
360 set with "break" but falling in read-only memory.
361 If 0, gdb will warn about such breakpoints, but won't automatically
362 use hardware breakpoints. */
363 static int automatic_hardware_breakpoints;
364 static void
365 show_automatic_hardware_breakpoints (struct ui_file *file, int from_tty,
366 struct cmd_list_element *c,
367 const char *value)
368 {
369 fprintf_filtered (file,
370 _("Automatic usage of hardware breakpoints is %s.\n"),
371 value);
372 }
373
374 /* If on, GDB keeps breakpoints inserted even if the inferior is
375 stopped, and immediately inserts any new breakpoints as soon as
376 they're created. If off (default), GDB keeps breakpoints off of
377 the target as long as possible. That is, it delays inserting
378 breakpoints until the next resume, and removes them again when the
379 target fully stops. This is a bit safer in case GDB crashes while
380 processing user input. */
381 static int always_inserted_mode = 0;
382
383 static void
384 show_always_inserted_mode (struct ui_file *file, int from_tty,
385 struct cmd_list_element *c, const char *value)
386 {
387 fprintf_filtered (file, _("Always inserted breakpoint mode is %s.\n"),
388 value);
389 }
390
391 /* See breakpoint.h. */
392
393 int
394 breakpoints_should_be_inserted_now (void)
395 {
396 if (gdbarch_has_global_breakpoints (target_gdbarch ()))
397 {
398 /* If breakpoints are global, they should be inserted even if no
399 thread under gdb's control is running, or even if there are
400 no threads under GDB's control yet. */
401 return 1;
402 }
403 else if (target_has_execution)
404 {
405 if (always_inserted_mode)
406 {
407 /* The user wants breakpoints inserted even if all threads
408 are stopped. */
409 return 1;
410 }
411
412 if (threads_are_executing ())
413 return 1;
414
415 /* Don't remove breakpoints yet if, even though all threads are
416 stopped, we still have events to process. */
417 for (thread_info *tp : all_non_exited_threads ())
418 if (tp->resumed
419 && tp->suspend.waitstatus_pending_p)
420 return 1;
421 }
422 return 0;
423 }
424
425 static const char condition_evaluation_both[] = "host or target";
426
427 /* Modes for breakpoint condition evaluation. */
428 static const char condition_evaluation_auto[] = "auto";
429 static const char condition_evaluation_host[] = "host";
430 static const char condition_evaluation_target[] = "target";
431 static const char *const condition_evaluation_enums[] = {
432 condition_evaluation_auto,
433 condition_evaluation_host,
434 condition_evaluation_target,
435 NULL
436 };
437
438 /* Global that holds the current mode for breakpoint condition evaluation. */
439 static const char *condition_evaluation_mode_1 = condition_evaluation_auto;
440
441 /* Global that we use to display information to the user (gets its value from
442 condition_evaluation_mode_1. */
443 static const char *condition_evaluation_mode = condition_evaluation_auto;
444
445 /* Translate a condition evaluation mode MODE into either "host"
446 or "target". This is used mostly to translate from "auto" to the
447 real setting that is being used. It returns the translated
448 evaluation mode. */
449
450 static const char *
451 translate_condition_evaluation_mode (const char *mode)
452 {
453 if (mode == condition_evaluation_auto)
454 {
455 if (target_supports_evaluation_of_breakpoint_conditions ())
456 return condition_evaluation_target;
457 else
458 return condition_evaluation_host;
459 }
460 else
461 return mode;
462 }
463
464 /* Discovers what condition_evaluation_auto translates to. */
465
466 static const char *
467 breakpoint_condition_evaluation_mode (void)
468 {
469 return translate_condition_evaluation_mode (condition_evaluation_mode);
470 }
471
472 /* Return true if GDB should evaluate breakpoint conditions or false
473 otherwise. */
474
475 static int
476 gdb_evaluates_breakpoint_condition_p (void)
477 {
478 const char *mode = breakpoint_condition_evaluation_mode ();
479
480 return (mode == condition_evaluation_host);
481 }
482
483 /* Are we executing breakpoint commands? */
484 static int executing_breakpoint_commands;
485
486 /* Are overlay event breakpoints enabled? */
487 static int overlay_events_enabled;
488
489 /* See description in breakpoint.h. */
490 int target_exact_watchpoints = 0;
491
492 /* Walk the following statement or block through all breakpoints.
493 ALL_BREAKPOINTS_SAFE does so even if the statement deletes the
494 current breakpoint. */
495
496 #define ALL_BREAKPOINTS(B) for (B = breakpoint_chain; B; B = B->next)
497
498 #define ALL_BREAKPOINTS_SAFE(B,TMP) \
499 for (B = breakpoint_chain; \
500 B ? (TMP=B->next, 1): 0; \
501 B = TMP)
502
503 /* Similar iterator for the low-level breakpoints. SAFE variant is
504 not provided so update_global_location_list must not be called
505 while executing the block of ALL_BP_LOCATIONS. */
506
507 #define ALL_BP_LOCATIONS(B,BP_TMP) \
508 for (BP_TMP = bp_locations; \
509 BP_TMP < bp_locations + bp_locations_count && (B = *BP_TMP);\
510 BP_TMP++)
511
512 /* Iterates through locations with address ADDRESS for the currently selected
513 program space. BP_LOCP_TMP points to each object. BP_LOCP_START points
514 to where the loop should start from.
515 If BP_LOCP_START is a NULL pointer, the macro automatically seeks the
516 appropriate location to start with. */
517
518 #define ALL_BP_LOCATIONS_AT_ADDR(BP_LOCP_TMP, BP_LOCP_START, ADDRESS) \
519 for (BP_LOCP_START = BP_LOCP_START == NULL ? get_first_locp_gte_addr (ADDRESS) : BP_LOCP_START, \
520 BP_LOCP_TMP = BP_LOCP_START; \
521 BP_LOCP_START \
522 && (BP_LOCP_TMP < bp_locations + bp_locations_count \
523 && (*BP_LOCP_TMP)->address == ADDRESS); \
524 BP_LOCP_TMP++)
525
526 /* Iterator for tracepoints only. */
527
528 #define ALL_TRACEPOINTS(B) \
529 for (B = breakpoint_chain; B; B = B->next) \
530 if (is_tracepoint (B))
531
532 /* Chains of all breakpoints defined. */
533
534 struct breakpoint *breakpoint_chain;
535
536 /* Array is sorted by bp_locations_compare - primarily by the ADDRESS. */
537
538 static struct bp_location **bp_locations;
539
540 /* Number of elements of BP_LOCATIONS. */
541
542 static unsigned bp_locations_count;
543
544 /* Maximum alignment offset between bp_target_info.PLACED_ADDRESS and
545 ADDRESS for the current elements of BP_LOCATIONS which get a valid
546 result from bp_location_has_shadow. You can use it for roughly
547 limiting the subrange of BP_LOCATIONS to scan for shadow bytes for
548 an address you need to read. */
549
550 static CORE_ADDR bp_locations_placed_address_before_address_max;
551
552 /* Maximum offset plus alignment between bp_target_info.PLACED_ADDRESS
553 + bp_target_info.SHADOW_LEN and ADDRESS for the current elements of
554 BP_LOCATIONS which get a valid result from bp_location_has_shadow.
555 You can use it for roughly limiting the subrange of BP_LOCATIONS to
556 scan for shadow bytes for an address you need to read. */
557
558 static CORE_ADDR bp_locations_shadow_len_after_address_max;
559
560 /* The locations that no longer correspond to any breakpoint, unlinked
561 from the bp_locations array, but for which a hit may still be
562 reported by a target. */
563 static std::vector<bp_location *> moribund_locations;
564
565 /* Number of last breakpoint made. */
566
567 static int breakpoint_count;
568
569 /* The value of `breakpoint_count' before the last command that
570 created breakpoints. If the last (break-like) command created more
571 than one breakpoint, then the difference between BREAKPOINT_COUNT
572 and PREV_BREAKPOINT_COUNT is more than one. */
573 static int prev_breakpoint_count;
574
575 /* Number of last tracepoint made. */
576
577 static int tracepoint_count;
578
579 static struct cmd_list_element *breakpoint_set_cmdlist;
580 static struct cmd_list_element *breakpoint_show_cmdlist;
581 struct cmd_list_element *save_cmdlist;
582
583 /* See declaration at breakpoint.h. */
584
585 struct breakpoint *
586 breakpoint_find_if (int (*func) (struct breakpoint *b, void *d),
587 void *user_data)
588 {
589 struct breakpoint *b = NULL;
590
591 ALL_BREAKPOINTS (b)
592 {
593 if (func (b, user_data) != 0)
594 break;
595 }
596
597 return b;
598 }
599
600 /* Return whether a breakpoint is an active enabled breakpoint. */
601 static int
602 breakpoint_enabled (struct breakpoint *b)
603 {
604 return (b->enable_state == bp_enabled);
605 }
606
607 /* Set breakpoint count to NUM. */
608
609 static void
610 set_breakpoint_count (int num)
611 {
612 prev_breakpoint_count = breakpoint_count;
613 breakpoint_count = num;
614 set_internalvar_integer (lookup_internalvar ("bpnum"), num);
615 }
616
617 /* Used by `start_rbreak_breakpoints' below, to record the current
618 breakpoint count before "rbreak" creates any breakpoint. */
619 static int rbreak_start_breakpoint_count;
620
621 /* Called at the start an "rbreak" command to record the first
622 breakpoint made. */
623
624 scoped_rbreak_breakpoints::scoped_rbreak_breakpoints ()
625 {
626 rbreak_start_breakpoint_count = breakpoint_count;
627 }
628
629 /* Called at the end of an "rbreak" command to record the last
630 breakpoint made. */
631
632 scoped_rbreak_breakpoints::~scoped_rbreak_breakpoints ()
633 {
634 prev_breakpoint_count = rbreak_start_breakpoint_count;
635 }
636
637 /* Used in run_command to zero the hit count when a new run starts. */
638
639 void
640 clear_breakpoint_hit_counts (void)
641 {
642 struct breakpoint *b;
643
644 ALL_BREAKPOINTS (b)
645 b->hit_count = 0;
646 }
647
648 \f
649 /* Return the breakpoint with the specified number, or NULL
650 if the number does not refer to an existing breakpoint. */
651
652 struct breakpoint *
653 get_breakpoint (int num)
654 {
655 struct breakpoint *b;
656
657 ALL_BREAKPOINTS (b)
658 if (b->number == num)
659 return b;
660
661 return NULL;
662 }
663
664 \f
665
666 /* Mark locations as "conditions have changed" in case the target supports
667 evaluating conditions on its side. */
668
669 static void
670 mark_breakpoint_modified (struct breakpoint *b)
671 {
672 struct bp_location *loc;
673
674 /* This is only meaningful if the target is
675 evaluating conditions and if the user has
676 opted for condition evaluation on the target's
677 side. */
678 if (gdb_evaluates_breakpoint_condition_p ()
679 || !target_supports_evaluation_of_breakpoint_conditions ())
680 return;
681
682 if (!is_breakpoint (b))
683 return;
684
685 for (loc = b->loc; loc; loc = loc->next)
686 loc->condition_changed = condition_modified;
687 }
688
689 /* Mark location as "conditions have changed" in case the target supports
690 evaluating conditions on its side. */
691
692 static void
693 mark_breakpoint_location_modified (struct bp_location *loc)
694 {
695 /* This is only meaningful if the target is
696 evaluating conditions and if the user has
697 opted for condition evaluation on the target's
698 side. */
699 if (gdb_evaluates_breakpoint_condition_p ()
700 || !target_supports_evaluation_of_breakpoint_conditions ())
701
702 return;
703
704 if (!is_breakpoint (loc->owner))
705 return;
706
707 loc->condition_changed = condition_modified;
708 }
709
710 /* Sets the condition-evaluation mode using the static global
711 condition_evaluation_mode. */
712
713 static void
714 set_condition_evaluation_mode (const char *args, int from_tty,
715 struct cmd_list_element *c)
716 {
717 const char *old_mode, *new_mode;
718
719 if ((condition_evaluation_mode_1 == condition_evaluation_target)
720 && !target_supports_evaluation_of_breakpoint_conditions ())
721 {
722 condition_evaluation_mode_1 = condition_evaluation_mode;
723 warning (_("Target does not support breakpoint condition evaluation.\n"
724 "Using host evaluation mode instead."));
725 return;
726 }
727
728 new_mode = translate_condition_evaluation_mode (condition_evaluation_mode_1);
729 old_mode = translate_condition_evaluation_mode (condition_evaluation_mode);
730
731 /* Flip the switch. Flip it even if OLD_MODE == NEW_MODE as one of the
732 settings was "auto". */
733 condition_evaluation_mode = condition_evaluation_mode_1;
734
735 /* Only update the mode if the user picked a different one. */
736 if (new_mode != old_mode)
737 {
738 struct bp_location *loc, **loc_tmp;
739 /* If the user switched to a different evaluation mode, we
740 need to synch the changes with the target as follows:
741
742 "host" -> "target": Send all (valid) conditions to the target.
743 "target" -> "host": Remove all the conditions from the target.
744 */
745
746 if (new_mode == condition_evaluation_target)
747 {
748 /* Mark everything modified and synch conditions with the
749 target. */
750 ALL_BP_LOCATIONS (loc, loc_tmp)
751 mark_breakpoint_location_modified (loc);
752 }
753 else
754 {
755 /* Manually mark non-duplicate locations to synch conditions
756 with the target. We do this to remove all the conditions the
757 target knows about. */
758 ALL_BP_LOCATIONS (loc, loc_tmp)
759 if (is_breakpoint (loc->owner) && loc->inserted)
760 loc->needs_update = 1;
761 }
762
763 /* Do the update. */
764 update_global_location_list (UGLL_MAY_INSERT);
765 }
766
767 return;
768 }
769
770 /* Shows the current mode of breakpoint condition evaluation. Explicitly shows
771 what "auto" is translating to. */
772
773 static void
774 show_condition_evaluation_mode (struct ui_file *file, int from_tty,
775 struct cmd_list_element *c, const char *value)
776 {
777 if (condition_evaluation_mode == condition_evaluation_auto)
778 fprintf_filtered (file,
779 _("Breakpoint condition evaluation "
780 "mode is %s (currently %s).\n"),
781 value,
782 breakpoint_condition_evaluation_mode ());
783 else
784 fprintf_filtered (file, _("Breakpoint condition evaluation mode is %s.\n"),
785 value);
786 }
787
788 /* A comparison function for bp_location AP and BP that is used by
789 bsearch. This comparison function only cares about addresses, unlike
790 the more general bp_locations_compare function. */
791
792 static int
793 bp_locations_compare_addrs (const void *ap, const void *bp)
794 {
795 const struct bp_location *a = *(const struct bp_location **) ap;
796 const struct bp_location *b = *(const struct bp_location **) bp;
797
798 if (a->address == b->address)
799 return 0;
800 else
801 return ((a->address > b->address) - (a->address < b->address));
802 }
803
804 /* Helper function to skip all bp_locations with addresses
805 less than ADDRESS. It returns the first bp_location that
806 is greater than or equal to ADDRESS. If none is found, just
807 return NULL. */
808
809 static struct bp_location **
810 get_first_locp_gte_addr (CORE_ADDR address)
811 {
812 struct bp_location dummy_loc;
813 struct bp_location *dummy_locp = &dummy_loc;
814 struct bp_location **locp_found = NULL;
815
816 /* Initialize the dummy location's address field. */
817 dummy_loc.address = address;
818
819 /* Find a close match to the first location at ADDRESS. */
820 locp_found = ((struct bp_location **)
821 bsearch (&dummy_locp, bp_locations, bp_locations_count,
822 sizeof (struct bp_location **),
823 bp_locations_compare_addrs));
824
825 /* Nothing was found, nothing left to do. */
826 if (locp_found == NULL)
827 return NULL;
828
829 /* We may have found a location that is at ADDRESS but is not the first in the
830 location's list. Go backwards (if possible) and locate the first one. */
831 while ((locp_found - 1) >= bp_locations
832 && (*(locp_found - 1))->address == address)
833 locp_found--;
834
835 return locp_found;
836 }
837
838 void
839 set_breakpoint_condition (struct breakpoint *b, const char *exp,
840 int from_tty)
841 {
842 xfree (b->cond_string);
843 b->cond_string = NULL;
844
845 if (is_watchpoint (b))
846 {
847 struct watchpoint *w = (struct watchpoint *) b;
848
849 w->cond_exp.reset ();
850 }
851 else
852 {
853 struct bp_location *loc;
854
855 for (loc = b->loc; loc; loc = loc->next)
856 {
857 loc->cond.reset ();
858
859 /* No need to free the condition agent expression
860 bytecode (if we have one). We will handle this
861 when we go through update_global_location_list. */
862 }
863 }
864
865 if (*exp == 0)
866 {
867 if (from_tty)
868 printf_filtered (_("Breakpoint %d now unconditional.\n"), b->number);
869 }
870 else
871 {
872 const char *arg = exp;
873
874 /* I don't know if it matters whether this is the string the user
875 typed in or the decompiled expression. */
876 b->cond_string = xstrdup (arg);
877 b->condition_not_parsed = 0;
878
879 if (is_watchpoint (b))
880 {
881 struct watchpoint *w = (struct watchpoint *) b;
882
883 innermost_block_tracker tracker;
884 arg = exp;
885 w->cond_exp = parse_exp_1 (&arg, 0, 0, 0, &tracker);
886 if (*arg)
887 error (_("Junk at end of expression"));
888 w->cond_exp_valid_block = tracker.block ();
889 }
890 else
891 {
892 struct bp_location *loc;
893
894 for (loc = b->loc; loc; loc = loc->next)
895 {
896 arg = exp;
897 loc->cond =
898 parse_exp_1 (&arg, loc->address,
899 block_for_pc (loc->address), 0);
900 if (*arg)
901 error (_("Junk at end of expression"));
902 }
903 }
904 }
905 mark_breakpoint_modified (b);
906
907 gdb::observers::breakpoint_modified.notify (b);
908 }
909
910 /* Completion for the "condition" command. */
911
912 static void
913 condition_completer (struct cmd_list_element *cmd,
914 completion_tracker &tracker,
915 const char *text, const char *word)
916 {
917 const char *space;
918
919 text = skip_spaces (text);
920 space = skip_to_space (text);
921 if (*space == '\0')
922 {
923 int len;
924 struct breakpoint *b;
925
926 if (text[0] == '$')
927 {
928 /* We don't support completion of history indices. */
929 if (!isdigit (text[1]))
930 complete_internalvar (tracker, &text[1]);
931 return;
932 }
933
934 /* We're completing the breakpoint number. */
935 len = strlen (text);
936
937 ALL_BREAKPOINTS (b)
938 {
939 char number[50];
940
941 xsnprintf (number, sizeof (number), "%d", b->number);
942
943 if (strncmp (number, text, len) == 0)
944 tracker.add_completion (make_unique_xstrdup (number));
945 }
946
947 return;
948 }
949
950 /* We're completing the expression part. */
951 text = skip_spaces (space);
952 expression_completer (cmd, tracker, text, word);
953 }
954
955 /* condition N EXP -- set break condition of breakpoint N to EXP. */
956
957 static void
958 condition_command (const char *arg, int from_tty)
959 {
960 struct breakpoint *b;
961 const char *p;
962 int bnum;
963
964 if (arg == 0)
965 error_no_arg (_("breakpoint number"));
966
967 p = arg;
968 bnum = get_number (&p);
969 if (bnum == 0)
970 error (_("Bad breakpoint argument: '%s'"), arg);
971
972 ALL_BREAKPOINTS (b)
973 if (b->number == bnum)
974 {
975 /* Check if this breakpoint has a "stop" method implemented in an
976 extension language. This method and conditions entered into GDB
977 from the CLI are mutually exclusive. */
978 const struct extension_language_defn *extlang
979 = get_breakpoint_cond_ext_lang (b, EXT_LANG_NONE);
980
981 if (extlang != NULL)
982 {
983 error (_("Only one stop condition allowed. There is currently"
984 " a %s stop condition defined for this breakpoint."),
985 ext_lang_capitalized_name (extlang));
986 }
987 set_breakpoint_condition (b, p, from_tty);
988
989 if (is_breakpoint (b))
990 update_global_location_list (UGLL_MAY_INSERT);
991
992 return;
993 }
994
995 error (_("No breakpoint number %d."), bnum);
996 }
997
998 /* Check that COMMAND do not contain commands that are suitable
999 only for tracepoints and not suitable for ordinary breakpoints.
1000 Throw if any such commands is found. */
1001
1002 static void
1003 check_no_tracepoint_commands (struct command_line *commands)
1004 {
1005 struct command_line *c;
1006
1007 for (c = commands; c; c = c->next)
1008 {
1009 if (c->control_type == while_stepping_control)
1010 error (_("The 'while-stepping' command can "
1011 "only be used for tracepoints"));
1012
1013 check_no_tracepoint_commands (c->body_list_0.get ());
1014 check_no_tracepoint_commands (c->body_list_1.get ());
1015
1016 /* Not that command parsing removes leading whitespace and comment
1017 lines and also empty lines. So, we only need to check for
1018 command directly. */
1019 if (strstr (c->line, "collect ") == c->line)
1020 error (_("The 'collect' command can only be used for tracepoints"));
1021
1022 if (strstr (c->line, "teval ") == c->line)
1023 error (_("The 'teval' command can only be used for tracepoints"));
1024 }
1025 }
1026
1027 struct longjmp_breakpoint : public breakpoint
1028 {
1029 ~longjmp_breakpoint () override;
1030 };
1031
1032 /* Encapsulate tests for different types of tracepoints. */
1033
1034 static bool
1035 is_tracepoint_type (bptype type)
1036 {
1037 return (type == bp_tracepoint
1038 || type == bp_fast_tracepoint
1039 || type == bp_static_tracepoint);
1040 }
1041
1042 static bool
1043 is_longjmp_type (bptype type)
1044 {
1045 return type == bp_longjmp || type == bp_exception;
1046 }
1047
1048 int
1049 is_tracepoint (const struct breakpoint *b)
1050 {
1051 return is_tracepoint_type (b->type);
1052 }
1053
1054 /* Factory function to create an appropriate instance of breakpoint given
1055 TYPE. */
1056
1057 static std::unique_ptr<breakpoint>
1058 new_breakpoint_from_type (bptype type)
1059 {
1060 breakpoint *b;
1061
1062 if (is_tracepoint_type (type))
1063 b = new tracepoint ();
1064 else if (is_longjmp_type (type))
1065 b = new longjmp_breakpoint ();
1066 else
1067 b = new breakpoint ();
1068
1069 return std::unique_ptr<breakpoint> (b);
1070 }
1071
1072 /* A helper function that validates that COMMANDS are valid for a
1073 breakpoint. This function will throw an exception if a problem is
1074 found. */
1075
1076 static void
1077 validate_commands_for_breakpoint (struct breakpoint *b,
1078 struct command_line *commands)
1079 {
1080 if (is_tracepoint (b))
1081 {
1082 struct tracepoint *t = (struct tracepoint *) b;
1083 struct command_line *c;
1084 struct command_line *while_stepping = 0;
1085
1086 /* Reset the while-stepping step count. The previous commands
1087 might have included a while-stepping action, while the new
1088 ones might not. */
1089 t->step_count = 0;
1090
1091 /* We need to verify that each top-level element of commands is
1092 valid for tracepoints, that there's at most one
1093 while-stepping element, and that the while-stepping's body
1094 has valid tracing commands excluding nested while-stepping.
1095 We also need to validate the tracepoint action line in the
1096 context of the tracepoint --- validate_actionline actually
1097 has side effects, like setting the tracepoint's
1098 while-stepping STEP_COUNT, in addition to checking if the
1099 collect/teval actions parse and make sense in the
1100 tracepoint's context. */
1101 for (c = commands; c; c = c->next)
1102 {
1103 if (c->control_type == while_stepping_control)
1104 {
1105 if (b->type == bp_fast_tracepoint)
1106 error (_("The 'while-stepping' command "
1107 "cannot be used for fast tracepoint"));
1108 else if (b->type == bp_static_tracepoint)
1109 error (_("The 'while-stepping' command "
1110 "cannot be used for static tracepoint"));
1111
1112 if (while_stepping)
1113 error (_("The 'while-stepping' command "
1114 "can be used only once"));
1115 else
1116 while_stepping = c;
1117 }
1118
1119 validate_actionline (c->line, b);
1120 }
1121 if (while_stepping)
1122 {
1123 struct command_line *c2;
1124
1125 gdb_assert (while_stepping->body_list_1 == nullptr);
1126 c2 = while_stepping->body_list_0.get ();
1127 for (; c2; c2 = c2->next)
1128 {
1129 if (c2->control_type == while_stepping_control)
1130 error (_("The 'while-stepping' command cannot be nested"));
1131 }
1132 }
1133 }
1134 else
1135 {
1136 check_no_tracepoint_commands (commands);
1137 }
1138 }
1139
1140 /* Return a vector of all the static tracepoints set at ADDR. The
1141 caller is responsible for releasing the vector. */
1142
1143 std::vector<breakpoint *>
1144 static_tracepoints_here (CORE_ADDR addr)
1145 {
1146 struct breakpoint *b;
1147 std::vector<breakpoint *> found;
1148 struct bp_location *loc;
1149
1150 ALL_BREAKPOINTS (b)
1151 if (b->type == bp_static_tracepoint)
1152 {
1153 for (loc = b->loc; loc; loc = loc->next)
1154 if (loc->address == addr)
1155 found.push_back (b);
1156 }
1157
1158 return found;
1159 }
1160
1161 /* Set the command list of B to COMMANDS. If breakpoint is tracepoint,
1162 validate that only allowed commands are included. */
1163
1164 void
1165 breakpoint_set_commands (struct breakpoint *b,
1166 counted_command_line &&commands)
1167 {
1168 validate_commands_for_breakpoint (b, commands.get ());
1169
1170 b->commands = std::move (commands);
1171 gdb::observers::breakpoint_modified.notify (b);
1172 }
1173
1174 /* Set the internal `silent' flag on the breakpoint. Note that this
1175 is not the same as the "silent" that may appear in the breakpoint's
1176 commands. */
1177
1178 void
1179 breakpoint_set_silent (struct breakpoint *b, int silent)
1180 {
1181 int old_silent = b->silent;
1182
1183 b->silent = silent;
1184 if (old_silent != silent)
1185 gdb::observers::breakpoint_modified.notify (b);
1186 }
1187
1188 /* Set the thread for this breakpoint. If THREAD is -1, make the
1189 breakpoint work for any thread. */
1190
1191 void
1192 breakpoint_set_thread (struct breakpoint *b, int thread)
1193 {
1194 int old_thread = b->thread;
1195
1196 b->thread = thread;
1197 if (old_thread != thread)
1198 gdb::observers::breakpoint_modified.notify (b);
1199 }
1200
1201 /* Set the task for this breakpoint. If TASK is 0, make the
1202 breakpoint work for any task. */
1203
1204 void
1205 breakpoint_set_task (struct breakpoint *b, int task)
1206 {
1207 int old_task = b->task;
1208
1209 b->task = task;
1210 if (old_task != task)
1211 gdb::observers::breakpoint_modified.notify (b);
1212 }
1213
1214 static void
1215 commands_command_1 (const char *arg, int from_tty,
1216 struct command_line *control)
1217 {
1218 counted_command_line cmd;
1219 /* cmd_read will be true once we have read cmd. Note that cmd might still be
1220 NULL after the call to read_command_lines if the user provides an empty
1221 list of command by just typing "end". */
1222 bool cmd_read = false;
1223
1224 std::string new_arg;
1225
1226 if (arg == NULL || !*arg)
1227 {
1228 if (breakpoint_count - prev_breakpoint_count > 1)
1229 new_arg = string_printf ("%d-%d", prev_breakpoint_count + 1,
1230 breakpoint_count);
1231 else if (breakpoint_count > 0)
1232 new_arg = string_printf ("%d", breakpoint_count);
1233 arg = new_arg.c_str ();
1234 }
1235
1236 map_breakpoint_numbers
1237 (arg, [&] (breakpoint *b)
1238 {
1239 if (!cmd_read)
1240 {
1241 gdb_assert (cmd == NULL);
1242 if (control != NULL)
1243 cmd = control->body_list_0;
1244 else
1245 {
1246 std::string str
1247 = string_printf (_("Type commands for breakpoint(s) "
1248 "%s, one per line."),
1249 arg);
1250
1251 auto do_validate = [=] (const char *line)
1252 {
1253 validate_actionline (line, b);
1254 };
1255 gdb::function_view<void (const char *)> validator;
1256 if (is_tracepoint (b))
1257 validator = do_validate;
1258
1259 cmd = read_command_lines (str.c_str (), from_tty, 1, validator);
1260 }
1261 cmd_read = true;
1262 }
1263
1264 /* If a breakpoint was on the list more than once, we don't need to
1265 do anything. */
1266 if (b->commands != cmd)
1267 {
1268 validate_commands_for_breakpoint (b, cmd.get ());
1269 b->commands = cmd;
1270 gdb::observers::breakpoint_modified.notify (b);
1271 }
1272 });
1273 }
1274
1275 static void
1276 commands_command (const char *arg, int from_tty)
1277 {
1278 commands_command_1 (arg, from_tty, NULL);
1279 }
1280
1281 /* Like commands_command, but instead of reading the commands from
1282 input stream, takes them from an already parsed command structure.
1283
1284 This is used by cli-script.c to DTRT with breakpoint commands
1285 that are part of if and while bodies. */
1286 enum command_control_type
1287 commands_from_control_command (const char *arg, struct command_line *cmd)
1288 {
1289 commands_command_1 (arg, 0, cmd);
1290 return simple_control;
1291 }
1292
1293 /* Return non-zero if BL->TARGET_INFO contains valid information. */
1294
1295 static int
1296 bp_location_has_shadow (struct bp_location *bl)
1297 {
1298 if (bl->loc_type != bp_loc_software_breakpoint)
1299 return 0;
1300 if (!bl->inserted)
1301 return 0;
1302 if (bl->target_info.shadow_len == 0)
1303 /* BL isn't valid, or doesn't shadow memory. */
1304 return 0;
1305 return 1;
1306 }
1307
1308 /* Update BUF, which is LEN bytes read from the target address
1309 MEMADDR, by replacing a memory breakpoint with its shadowed
1310 contents.
1311
1312 If READBUF is not NULL, this buffer must not overlap with the of
1313 the breakpoint location's shadow_contents buffer. Otherwise, a
1314 failed assertion internal error will be raised. */
1315
1316 static void
1317 one_breakpoint_xfer_memory (gdb_byte *readbuf, gdb_byte *writebuf,
1318 const gdb_byte *writebuf_org,
1319 ULONGEST memaddr, LONGEST len,
1320 struct bp_target_info *target_info,
1321 struct gdbarch *gdbarch)
1322 {
1323 /* Now do full processing of the found relevant range of elements. */
1324 CORE_ADDR bp_addr = 0;
1325 int bp_size = 0;
1326 int bptoffset = 0;
1327
1328 if (!breakpoint_address_match (target_info->placed_address_space, 0,
1329 current_program_space->aspace, 0))
1330 {
1331 /* The breakpoint is inserted in a different address space. */
1332 return;
1333 }
1334
1335 /* Addresses and length of the part of the breakpoint that
1336 we need to copy. */
1337 bp_addr = target_info->placed_address;
1338 bp_size = target_info->shadow_len;
1339
1340 if (bp_addr + bp_size <= memaddr)
1341 {
1342 /* The breakpoint is entirely before the chunk of memory we are
1343 reading. */
1344 return;
1345 }
1346
1347 if (bp_addr >= memaddr + len)
1348 {
1349 /* The breakpoint is entirely after the chunk of memory we are
1350 reading. */
1351 return;
1352 }
1353
1354 /* Offset within shadow_contents. */
1355 if (bp_addr < memaddr)
1356 {
1357 /* Only copy the second part of the breakpoint. */
1358 bp_size -= memaddr - bp_addr;
1359 bptoffset = memaddr - bp_addr;
1360 bp_addr = memaddr;
1361 }
1362
1363 if (bp_addr + bp_size > memaddr + len)
1364 {
1365 /* Only copy the first part of the breakpoint. */
1366 bp_size -= (bp_addr + bp_size) - (memaddr + len);
1367 }
1368
1369 if (readbuf != NULL)
1370 {
1371 /* Verify that the readbuf buffer does not overlap with the
1372 shadow_contents buffer. */
1373 gdb_assert (target_info->shadow_contents >= readbuf + len
1374 || readbuf >= (target_info->shadow_contents
1375 + target_info->shadow_len));
1376
1377 /* Update the read buffer with this inserted breakpoint's
1378 shadow. */
1379 memcpy (readbuf + bp_addr - memaddr,
1380 target_info->shadow_contents + bptoffset, bp_size);
1381 }
1382 else
1383 {
1384 const unsigned char *bp;
1385 CORE_ADDR addr = target_info->reqstd_address;
1386 int placed_size;
1387
1388 /* Update the shadow with what we want to write to memory. */
1389 memcpy (target_info->shadow_contents + bptoffset,
1390 writebuf_org + bp_addr - memaddr, bp_size);
1391
1392 /* Determine appropriate breakpoint contents and size for this
1393 address. */
1394 bp = gdbarch_breakpoint_from_pc (gdbarch, &addr, &placed_size);
1395
1396 /* Update the final write buffer with this inserted
1397 breakpoint's INSN. */
1398 memcpy (writebuf + bp_addr - memaddr, bp + bptoffset, bp_size);
1399 }
1400 }
1401
1402 /* Update BUF, which is LEN bytes read from the target address MEMADDR,
1403 by replacing any memory breakpoints with their shadowed contents.
1404
1405 If READBUF is not NULL, this buffer must not overlap with any of
1406 the breakpoint location's shadow_contents buffers. Otherwise,
1407 a failed assertion internal error will be raised.
1408
1409 The range of shadowed area by each bp_location is:
1410 bl->address - bp_locations_placed_address_before_address_max
1411 up to bl->address + bp_locations_shadow_len_after_address_max
1412 The range we were requested to resolve shadows for is:
1413 memaddr ... memaddr + len
1414 Thus the safe cutoff boundaries for performance optimization are
1415 memaddr + len <= (bl->address
1416 - bp_locations_placed_address_before_address_max)
1417 and:
1418 bl->address + bp_locations_shadow_len_after_address_max <= memaddr */
1419
1420 void
1421 breakpoint_xfer_memory (gdb_byte *readbuf, gdb_byte *writebuf,
1422 const gdb_byte *writebuf_org,
1423 ULONGEST memaddr, LONGEST len)
1424 {
1425 /* Left boundary, right boundary and median element of our binary
1426 search. */
1427 unsigned bc_l, bc_r, bc;
1428
1429 /* Find BC_L which is a leftmost element which may affect BUF
1430 content. It is safe to report lower value but a failure to
1431 report higher one. */
1432
1433 bc_l = 0;
1434 bc_r = bp_locations_count;
1435 while (bc_l + 1 < bc_r)
1436 {
1437 struct bp_location *bl;
1438
1439 bc = (bc_l + bc_r) / 2;
1440 bl = bp_locations[bc];
1441
1442 /* Check first BL->ADDRESS will not overflow due to the added
1443 constant. Then advance the left boundary only if we are sure
1444 the BC element can in no way affect the BUF content (MEMADDR
1445 to MEMADDR + LEN range).
1446
1447 Use the BP_LOCATIONS_SHADOW_LEN_AFTER_ADDRESS_MAX safety
1448 offset so that we cannot miss a breakpoint with its shadow
1449 range tail still reaching MEMADDR. */
1450
1451 if ((bl->address + bp_locations_shadow_len_after_address_max
1452 >= bl->address)
1453 && (bl->address + bp_locations_shadow_len_after_address_max
1454 <= memaddr))
1455 bc_l = bc;
1456 else
1457 bc_r = bc;
1458 }
1459
1460 /* Due to the binary search above, we need to make sure we pick the
1461 first location that's at BC_L's address. E.g., if there are
1462 multiple locations at the same address, BC_L may end up pointing
1463 at a duplicate location, and miss the "master"/"inserted"
1464 location. Say, given locations L1, L2 and L3 at addresses A and
1465 B:
1466
1467 L1@A, L2@A, L3@B, ...
1468
1469 BC_L could end up pointing at location L2, while the "master"
1470 location could be L1. Since the `loc->inserted' flag is only set
1471 on "master" locations, we'd forget to restore the shadow of L1
1472 and L2. */
1473 while (bc_l > 0
1474 && bp_locations[bc_l]->address == bp_locations[bc_l - 1]->address)
1475 bc_l--;
1476
1477 /* Now do full processing of the found relevant range of elements. */
1478
1479 for (bc = bc_l; bc < bp_locations_count; bc++)
1480 {
1481 struct bp_location *bl = bp_locations[bc];
1482
1483 /* bp_location array has BL->OWNER always non-NULL. */
1484 if (bl->owner->type == bp_none)
1485 warning (_("reading through apparently deleted breakpoint #%d?"),
1486 bl->owner->number);
1487
1488 /* Performance optimization: any further element can no longer affect BUF
1489 content. */
1490
1491 if (bl->address >= bp_locations_placed_address_before_address_max
1492 && memaddr + len <= (bl->address
1493 - bp_locations_placed_address_before_address_max))
1494 break;
1495
1496 if (!bp_location_has_shadow (bl))
1497 continue;
1498
1499 one_breakpoint_xfer_memory (readbuf, writebuf, writebuf_org,
1500 memaddr, len, &bl->target_info, bl->gdbarch);
1501 }
1502 }
1503
1504 \f
1505
1506 /* Return true if BPT is either a software breakpoint or a hardware
1507 breakpoint. */
1508
1509 int
1510 is_breakpoint (const struct breakpoint *bpt)
1511 {
1512 return (bpt->type == bp_breakpoint
1513 || bpt->type == bp_hardware_breakpoint
1514 || bpt->type == bp_dprintf);
1515 }
1516
1517 /* Return true if BPT is of any hardware watchpoint kind. */
1518
1519 static int
1520 is_hardware_watchpoint (const struct breakpoint *bpt)
1521 {
1522 return (bpt->type == bp_hardware_watchpoint
1523 || bpt->type == bp_read_watchpoint
1524 || bpt->type == bp_access_watchpoint);
1525 }
1526
1527 /* Return true if BPT is of any watchpoint kind, hardware or
1528 software. */
1529
1530 int
1531 is_watchpoint (const struct breakpoint *bpt)
1532 {
1533 return (is_hardware_watchpoint (bpt)
1534 || bpt->type == bp_watchpoint);
1535 }
1536
1537 /* Returns true if the current thread and its running state are safe
1538 to evaluate or update watchpoint B. Watchpoints on local
1539 expressions need to be evaluated in the context of the thread that
1540 was current when the watchpoint was created, and, that thread needs
1541 to be stopped to be able to select the correct frame context.
1542 Watchpoints on global expressions can be evaluated on any thread,
1543 and in any state. It is presently left to the target allowing
1544 memory accesses when threads are running. */
1545
1546 static int
1547 watchpoint_in_thread_scope (struct watchpoint *b)
1548 {
1549 return (b->pspace == current_program_space
1550 && (b->watchpoint_thread == null_ptid
1551 || (inferior_ptid == b->watchpoint_thread
1552 && !inferior_thread ()->executing)));
1553 }
1554
1555 /* Set watchpoint B to disp_del_at_next_stop, even including its possible
1556 associated bp_watchpoint_scope breakpoint. */
1557
1558 static void
1559 watchpoint_del_at_next_stop (struct watchpoint *w)
1560 {
1561 if (w->related_breakpoint != w)
1562 {
1563 gdb_assert (w->related_breakpoint->type == bp_watchpoint_scope);
1564 gdb_assert (w->related_breakpoint->related_breakpoint == w);
1565 w->related_breakpoint->disposition = disp_del_at_next_stop;
1566 w->related_breakpoint->related_breakpoint = w->related_breakpoint;
1567 w->related_breakpoint = w;
1568 }
1569 w->disposition = disp_del_at_next_stop;
1570 }
1571
1572 /* Extract a bitfield value from value VAL using the bit parameters contained in
1573 watchpoint W. */
1574
1575 static struct value *
1576 extract_bitfield_from_watchpoint_value (struct watchpoint *w, struct value *val)
1577 {
1578 struct value *bit_val;
1579
1580 if (val == NULL)
1581 return NULL;
1582
1583 bit_val = allocate_value (value_type (val));
1584
1585 unpack_value_bitfield (bit_val,
1586 w->val_bitpos,
1587 w->val_bitsize,
1588 value_contents_for_printing (val),
1589 value_offset (val),
1590 val);
1591
1592 return bit_val;
1593 }
1594
1595 /* Allocate a dummy location and add it to B, which must be a software
1596 watchpoint. This is required because even if a software watchpoint
1597 is not watching any memory, bpstat_stop_status requires a location
1598 to be able to report stops. */
1599
1600 static void
1601 software_watchpoint_add_no_memory_location (struct breakpoint *b,
1602 struct program_space *pspace)
1603 {
1604 gdb_assert (b->type == bp_watchpoint && b->loc == NULL);
1605
1606 b->loc = allocate_bp_location (b);
1607 b->loc->pspace = pspace;
1608 b->loc->address = -1;
1609 b->loc->length = -1;
1610 }
1611
1612 /* Returns true if B is a software watchpoint that is not watching any
1613 memory (e.g., "watch $pc"). */
1614
1615 static int
1616 is_no_memory_software_watchpoint (struct breakpoint *b)
1617 {
1618 return (b->type == bp_watchpoint
1619 && b->loc != NULL
1620 && b->loc->next == NULL
1621 && b->loc->address == -1
1622 && b->loc->length == -1);
1623 }
1624
1625 /* Assuming that B is a watchpoint:
1626 - Reparse watchpoint expression, if REPARSE is non-zero
1627 - Evaluate expression and store the result in B->val
1628 - Evaluate the condition if there is one, and store the result
1629 in b->loc->cond.
1630 - Update the list of values that must be watched in B->loc.
1631
1632 If the watchpoint disposition is disp_del_at_next_stop, then do
1633 nothing. If this is local watchpoint that is out of scope, delete
1634 it.
1635
1636 Even with `set breakpoint always-inserted on' the watchpoints are
1637 removed + inserted on each stop here. Normal breakpoints must
1638 never be removed because they might be missed by a running thread
1639 when debugging in non-stop mode. On the other hand, hardware
1640 watchpoints (is_hardware_watchpoint; processed here) are specific
1641 to each LWP since they are stored in each LWP's hardware debug
1642 registers. Therefore, such LWP must be stopped first in order to
1643 be able to modify its hardware watchpoints.
1644
1645 Hardware watchpoints must be reset exactly once after being
1646 presented to the user. It cannot be done sooner, because it would
1647 reset the data used to present the watchpoint hit to the user. And
1648 it must not be done later because it could display the same single
1649 watchpoint hit during multiple GDB stops. Note that the latter is
1650 relevant only to the hardware watchpoint types bp_read_watchpoint
1651 and bp_access_watchpoint. False hit by bp_hardware_watchpoint is
1652 not user-visible - its hit is suppressed if the memory content has
1653 not changed.
1654
1655 The following constraints influence the location where we can reset
1656 hardware watchpoints:
1657
1658 * target_stopped_by_watchpoint and target_stopped_data_address are
1659 called several times when GDB stops.
1660
1661 [linux]
1662 * Multiple hardware watchpoints can be hit at the same time,
1663 causing GDB to stop. GDB only presents one hardware watchpoint
1664 hit at a time as the reason for stopping, and all the other hits
1665 are presented later, one after the other, each time the user
1666 requests the execution to be resumed. Execution is not resumed
1667 for the threads still having pending hit event stored in
1668 LWP_INFO->STATUS. While the watchpoint is already removed from
1669 the inferior on the first stop the thread hit event is kept being
1670 reported from its cached value by linux_nat_stopped_data_address
1671 until the real thread resume happens after the watchpoint gets
1672 presented and thus its LWP_INFO->STATUS gets reset.
1673
1674 Therefore the hardware watchpoint hit can get safely reset on the
1675 watchpoint removal from inferior. */
1676
1677 static void
1678 update_watchpoint (struct watchpoint *b, int reparse)
1679 {
1680 int within_current_scope;
1681 struct frame_id saved_frame_id;
1682 int frame_saved;
1683
1684 /* If this is a local watchpoint, we only want to check if the
1685 watchpoint frame is in scope if the current thread is the thread
1686 that was used to create the watchpoint. */
1687 if (!watchpoint_in_thread_scope (b))
1688 return;
1689
1690 if (b->disposition == disp_del_at_next_stop)
1691 return;
1692
1693 frame_saved = 0;
1694
1695 /* Determine if the watchpoint is within scope. */
1696 if (b->exp_valid_block == NULL)
1697 within_current_scope = 1;
1698 else
1699 {
1700 struct frame_info *fi = get_current_frame ();
1701 struct gdbarch *frame_arch = get_frame_arch (fi);
1702 CORE_ADDR frame_pc = get_frame_pc (fi);
1703
1704 /* If we're at a point where the stack has been destroyed
1705 (e.g. in a function epilogue), unwinding may not work
1706 properly. Do not attempt to recreate locations at this
1707 point. See similar comments in watchpoint_check. */
1708 if (gdbarch_stack_frame_destroyed_p (frame_arch, frame_pc))
1709 return;
1710
1711 /* Save the current frame's ID so we can restore it after
1712 evaluating the watchpoint expression on its own frame. */
1713 /* FIXME drow/2003-09-09: It would be nice if evaluate_expression
1714 took a frame parameter, so that we didn't have to change the
1715 selected frame. */
1716 frame_saved = 1;
1717 saved_frame_id = get_frame_id (get_selected_frame (NULL));
1718
1719 fi = frame_find_by_id (b->watchpoint_frame);
1720 within_current_scope = (fi != NULL);
1721 if (within_current_scope)
1722 select_frame (fi);
1723 }
1724
1725 /* We don't free locations. They are stored in the bp_location array
1726 and update_global_location_list will eventually delete them and
1727 remove breakpoints if needed. */
1728 b->loc = NULL;
1729
1730 if (within_current_scope && reparse)
1731 {
1732 const char *s;
1733
1734 b->exp.reset ();
1735 s = b->exp_string_reparse ? b->exp_string_reparse : b->exp_string;
1736 b->exp = parse_exp_1 (&s, 0, b->exp_valid_block, 0);
1737 /* If the meaning of expression itself changed, the old value is
1738 no longer relevant. We don't want to report a watchpoint hit
1739 to the user when the old value and the new value may actually
1740 be completely different objects. */
1741 b->val = NULL;
1742 b->val_valid = 0;
1743
1744 /* Note that unlike with breakpoints, the watchpoint's condition
1745 expression is stored in the breakpoint object, not in the
1746 locations (re)created below. */
1747 if (b->cond_string != NULL)
1748 {
1749 b->cond_exp.reset ();
1750
1751 s = b->cond_string;
1752 b->cond_exp = parse_exp_1 (&s, 0, b->cond_exp_valid_block, 0);
1753 }
1754 }
1755
1756 /* If we failed to parse the expression, for example because
1757 it refers to a global variable in a not-yet-loaded shared library,
1758 don't try to insert watchpoint. We don't automatically delete
1759 such watchpoint, though, since failure to parse expression
1760 is different from out-of-scope watchpoint. */
1761 if (!target_has_execution)
1762 {
1763 /* Without execution, memory can't change. No use to try and
1764 set watchpoint locations. The watchpoint will be reset when
1765 the target gains execution, through breakpoint_re_set. */
1766 if (!can_use_hw_watchpoints)
1767 {
1768 if (b->ops->works_in_software_mode (b))
1769 b->type = bp_watchpoint;
1770 else
1771 error (_("Can't set read/access watchpoint when "
1772 "hardware watchpoints are disabled."));
1773 }
1774 }
1775 else if (within_current_scope && b->exp)
1776 {
1777 int pc = 0;
1778 std::vector<value_ref_ptr> val_chain;
1779 struct value *v, *result;
1780 struct program_space *frame_pspace;
1781
1782 fetch_subexp_value (b->exp.get (), &pc, &v, &result, &val_chain, 0);
1783
1784 /* Avoid setting b->val if it's already set. The meaning of
1785 b->val is 'the last value' user saw, and we should update
1786 it only if we reported that last value to user. As it
1787 happens, the code that reports it updates b->val directly.
1788 We don't keep track of the memory value for masked
1789 watchpoints. */
1790 if (!b->val_valid && !is_masked_watchpoint (b))
1791 {
1792 if (b->val_bitsize != 0)
1793 v = extract_bitfield_from_watchpoint_value (b, v);
1794 b->val = release_value (v);
1795 b->val_valid = 1;
1796 }
1797
1798 frame_pspace = get_frame_program_space (get_selected_frame (NULL));
1799
1800 /* Look at each value on the value chain. */
1801 gdb_assert (!val_chain.empty ());
1802 for (const value_ref_ptr &iter : val_chain)
1803 {
1804 v = iter.get ();
1805
1806 /* If it's a memory location, and GDB actually needed
1807 its contents to evaluate the expression, then we
1808 must watch it. If the first value returned is
1809 still lazy, that means an error occurred reading it;
1810 watch it anyway in case it becomes readable. */
1811 if (VALUE_LVAL (v) == lval_memory
1812 && (v == val_chain[0] || ! value_lazy (v)))
1813 {
1814 struct type *vtype = check_typedef (value_type (v));
1815
1816 /* We only watch structs and arrays if user asked
1817 for it explicitly, never if they just happen to
1818 appear in the middle of some value chain. */
1819 if (v == result
1820 || (TYPE_CODE (vtype) != TYPE_CODE_STRUCT
1821 && TYPE_CODE (vtype) != TYPE_CODE_ARRAY))
1822 {
1823 CORE_ADDR addr;
1824 enum target_hw_bp_type type;
1825 struct bp_location *loc, **tmp;
1826 int bitpos = 0, bitsize = 0;
1827
1828 if (value_bitsize (v) != 0)
1829 {
1830 /* Extract the bit parameters out from the bitfield
1831 sub-expression. */
1832 bitpos = value_bitpos (v);
1833 bitsize = value_bitsize (v);
1834 }
1835 else if (v == result && b->val_bitsize != 0)
1836 {
1837 /* If VAL_BITSIZE != 0 then RESULT is actually a bitfield
1838 lvalue whose bit parameters are saved in the fields
1839 VAL_BITPOS and VAL_BITSIZE. */
1840 bitpos = b->val_bitpos;
1841 bitsize = b->val_bitsize;
1842 }
1843
1844 addr = value_address (v);
1845 if (bitsize != 0)
1846 {
1847 /* Skip the bytes that don't contain the bitfield. */
1848 addr += bitpos / 8;
1849 }
1850
1851 type = hw_write;
1852 if (b->type == bp_read_watchpoint)
1853 type = hw_read;
1854 else if (b->type == bp_access_watchpoint)
1855 type = hw_access;
1856
1857 loc = allocate_bp_location (b);
1858 for (tmp = &(b->loc); *tmp != NULL; tmp = &((*tmp)->next))
1859 ;
1860 *tmp = loc;
1861 loc->gdbarch = get_type_arch (value_type (v));
1862
1863 loc->pspace = frame_pspace;
1864 loc->address = address_significant (loc->gdbarch, addr);
1865
1866 if (bitsize != 0)
1867 {
1868 /* Just cover the bytes that make up the bitfield. */
1869 loc->length = ((bitpos % 8) + bitsize + 7) / 8;
1870 }
1871 else
1872 loc->length = TYPE_LENGTH (value_type (v));
1873
1874 loc->watchpoint_type = type;
1875 }
1876 }
1877 }
1878
1879 /* Change the type of breakpoint between hardware assisted or
1880 an ordinary watchpoint depending on the hardware support
1881 and free hardware slots. REPARSE is set when the inferior
1882 is started. */
1883 if (reparse)
1884 {
1885 int reg_cnt;
1886 enum bp_loc_type loc_type;
1887 struct bp_location *bl;
1888
1889 reg_cnt = can_use_hardware_watchpoint (val_chain);
1890
1891 if (reg_cnt)
1892 {
1893 int i, target_resources_ok, other_type_used;
1894 enum bptype type;
1895
1896 /* Use an exact watchpoint when there's only one memory region to be
1897 watched, and only one debug register is needed to watch it. */
1898 b->exact = target_exact_watchpoints && reg_cnt == 1;
1899
1900 /* We need to determine how many resources are already
1901 used for all other hardware watchpoints plus this one
1902 to see if we still have enough resources to also fit
1903 this watchpoint in as well. */
1904
1905 /* If this is a software watchpoint, we try to turn it
1906 to a hardware one -- count resources as if B was of
1907 hardware watchpoint type. */
1908 type = b->type;
1909 if (type == bp_watchpoint)
1910 type = bp_hardware_watchpoint;
1911
1912 /* This watchpoint may or may not have been placed on
1913 the list yet at this point (it won't be in the list
1914 if we're trying to create it for the first time,
1915 through watch_command), so always account for it
1916 manually. */
1917
1918 /* Count resources used by all watchpoints except B. */
1919 i = hw_watchpoint_used_count_others (b, type, &other_type_used);
1920
1921 /* Add in the resources needed for B. */
1922 i += hw_watchpoint_use_count (b);
1923
1924 target_resources_ok
1925 = target_can_use_hardware_watchpoint (type, i, other_type_used);
1926 if (target_resources_ok <= 0)
1927 {
1928 int sw_mode = b->ops->works_in_software_mode (b);
1929
1930 if (target_resources_ok == 0 && !sw_mode)
1931 error (_("Target does not support this type of "
1932 "hardware watchpoint."));
1933 else if (target_resources_ok < 0 && !sw_mode)
1934 error (_("There are not enough available hardware "
1935 "resources for this watchpoint."));
1936
1937 /* Downgrade to software watchpoint. */
1938 b->type = bp_watchpoint;
1939 }
1940 else
1941 {
1942 /* If this was a software watchpoint, we've just
1943 found we have enough resources to turn it to a
1944 hardware watchpoint. Otherwise, this is a
1945 nop. */
1946 b->type = type;
1947 }
1948 }
1949 else if (!b->ops->works_in_software_mode (b))
1950 {
1951 if (!can_use_hw_watchpoints)
1952 error (_("Can't set read/access watchpoint when "
1953 "hardware watchpoints are disabled."));
1954 else
1955 error (_("Expression cannot be implemented with "
1956 "read/access watchpoint."));
1957 }
1958 else
1959 b->type = bp_watchpoint;
1960
1961 loc_type = (b->type == bp_watchpoint? bp_loc_other
1962 : bp_loc_hardware_watchpoint);
1963 for (bl = b->loc; bl; bl = bl->next)
1964 bl->loc_type = loc_type;
1965 }
1966
1967 /* If a software watchpoint is not watching any memory, then the
1968 above left it without any location set up. But,
1969 bpstat_stop_status requires a location to be able to report
1970 stops, so make sure there's at least a dummy one. */
1971 if (b->type == bp_watchpoint && b->loc == NULL)
1972 software_watchpoint_add_no_memory_location (b, frame_pspace);
1973 }
1974 else if (!within_current_scope)
1975 {
1976 printf_filtered (_("\
1977 Watchpoint %d deleted because the program has left the block\n\
1978 in which its expression is valid.\n"),
1979 b->number);
1980 watchpoint_del_at_next_stop (b);
1981 }
1982
1983 /* Restore the selected frame. */
1984 if (frame_saved)
1985 select_frame (frame_find_by_id (saved_frame_id));
1986 }
1987
1988
1989 /* Returns 1 iff breakpoint location should be
1990 inserted in the inferior. We don't differentiate the type of BL's owner
1991 (breakpoint vs. tracepoint), although insert_location in tracepoint's
1992 breakpoint_ops is not defined, because in insert_bp_location,
1993 tracepoint's insert_location will not be called. */
1994 static int
1995 should_be_inserted (struct bp_location *bl)
1996 {
1997 if (bl->owner == NULL || !breakpoint_enabled (bl->owner))
1998 return 0;
1999
2000 if (bl->owner->disposition == disp_del_at_next_stop)
2001 return 0;
2002
2003 if (!bl->enabled || bl->shlib_disabled || bl->duplicate)
2004 return 0;
2005
2006 if (user_breakpoint_p (bl->owner) && bl->pspace->executing_startup)
2007 return 0;
2008
2009 /* This is set for example, when we're attached to the parent of a
2010 vfork, and have detached from the child. The child is running
2011 free, and we expect it to do an exec or exit, at which point the
2012 OS makes the parent schedulable again (and the target reports
2013 that the vfork is done). Until the child is done with the shared
2014 memory region, do not insert breakpoints in the parent, otherwise
2015 the child could still trip on the parent's breakpoints. Since
2016 the parent is blocked anyway, it won't miss any breakpoint. */
2017 if (bl->pspace->breakpoints_not_allowed)
2018 return 0;
2019
2020 /* Don't insert a breakpoint if we're trying to step past its
2021 location, except if the breakpoint is a single-step breakpoint,
2022 and the breakpoint's thread is the thread which is stepping past
2023 a breakpoint. */
2024 if ((bl->loc_type == bp_loc_software_breakpoint
2025 || bl->loc_type == bp_loc_hardware_breakpoint)
2026 && stepping_past_instruction_at (bl->pspace->aspace,
2027 bl->address)
2028 /* The single-step breakpoint may be inserted at the location
2029 we're trying to step if the instruction branches to itself.
2030 However, the instruction won't be executed at all and it may
2031 break the semantics of the instruction, for example, the
2032 instruction is a conditional branch or updates some flags.
2033 We can't fix it unless GDB is able to emulate the instruction
2034 or switch to displaced stepping. */
2035 && !(bl->owner->type == bp_single_step
2036 && thread_is_stepping_over_breakpoint (bl->owner->thread)))
2037 {
2038 if (debug_infrun)
2039 {
2040 fprintf_unfiltered (gdb_stdlog,
2041 "infrun: skipping breakpoint: "
2042 "stepping past insn at: %s\n",
2043 paddress (bl->gdbarch, bl->address));
2044 }
2045 return 0;
2046 }
2047
2048 /* Don't insert watchpoints if we're trying to step past the
2049 instruction that triggered one. */
2050 if ((bl->loc_type == bp_loc_hardware_watchpoint)
2051 && stepping_past_nonsteppable_watchpoint ())
2052 {
2053 if (debug_infrun)
2054 {
2055 fprintf_unfiltered (gdb_stdlog,
2056 "infrun: stepping past non-steppable watchpoint. "
2057 "skipping watchpoint at %s:%d\n",
2058 paddress (bl->gdbarch, bl->address),
2059 bl->length);
2060 }
2061 return 0;
2062 }
2063
2064 return 1;
2065 }
2066
2067 /* Same as should_be_inserted but does the check assuming
2068 that the location is not duplicated. */
2069
2070 static int
2071 unduplicated_should_be_inserted (struct bp_location *bl)
2072 {
2073 int result;
2074 const int save_duplicate = bl->duplicate;
2075
2076 bl->duplicate = 0;
2077 result = should_be_inserted (bl);
2078 bl->duplicate = save_duplicate;
2079 return result;
2080 }
2081
2082 /* Parses a conditional described by an expression COND into an
2083 agent expression bytecode suitable for evaluation
2084 by the bytecode interpreter. Return NULL if there was
2085 any error during parsing. */
2086
2087 static agent_expr_up
2088 parse_cond_to_aexpr (CORE_ADDR scope, struct expression *cond)
2089 {
2090 if (cond == NULL)
2091 return NULL;
2092
2093 agent_expr_up aexpr;
2094
2095 /* We don't want to stop processing, so catch any errors
2096 that may show up. */
2097 try
2098 {
2099 aexpr = gen_eval_for_expr (scope, cond);
2100 }
2101
2102 catch (const gdb_exception_error &ex)
2103 {
2104 /* If we got here, it means the condition could not be parsed to a valid
2105 bytecode expression and thus can't be evaluated on the target's side.
2106 It's no use iterating through the conditions. */
2107 }
2108
2109 /* We have a valid agent expression. */
2110 return aexpr;
2111 }
2112
2113 /* Based on location BL, create a list of breakpoint conditions to be
2114 passed on to the target. If we have duplicated locations with different
2115 conditions, we will add such conditions to the list. The idea is that the
2116 target will evaluate the list of conditions and will only notify GDB when
2117 one of them is true. */
2118
2119 static void
2120 build_target_condition_list (struct bp_location *bl)
2121 {
2122 struct bp_location **locp = NULL, **loc2p;
2123 int null_condition_or_parse_error = 0;
2124 int modified = bl->needs_update;
2125 struct bp_location *loc;
2126
2127 /* Release conditions left over from a previous insert. */
2128 bl->target_info.conditions.clear ();
2129
2130 /* This is only meaningful if the target is
2131 evaluating conditions and if the user has
2132 opted for condition evaluation on the target's
2133 side. */
2134 if (gdb_evaluates_breakpoint_condition_p ()
2135 || !target_supports_evaluation_of_breakpoint_conditions ())
2136 return;
2137
2138 /* Do a first pass to check for locations with no assigned
2139 conditions or conditions that fail to parse to a valid agent expression
2140 bytecode. If any of these happen, then it's no use to send conditions
2141 to the target since this location will always trigger and generate a
2142 response back to GDB. */
2143 ALL_BP_LOCATIONS_AT_ADDR (loc2p, locp, bl->address)
2144 {
2145 loc = (*loc2p);
2146 if (is_breakpoint (loc->owner) && loc->pspace->num == bl->pspace->num)
2147 {
2148 if (modified)
2149 {
2150 /* Re-parse the conditions since something changed. In that
2151 case we already freed the condition bytecodes (see
2152 force_breakpoint_reinsertion). We just
2153 need to parse the condition to bytecodes again. */
2154 loc->cond_bytecode = parse_cond_to_aexpr (bl->address,
2155 loc->cond.get ());
2156 }
2157
2158 /* If we have a NULL bytecode expression, it means something
2159 went wrong or we have a null condition expression. */
2160 if (!loc->cond_bytecode)
2161 {
2162 null_condition_or_parse_error = 1;
2163 break;
2164 }
2165 }
2166 }
2167
2168 /* If any of these happened, it means we will have to evaluate the conditions
2169 for the location's address on gdb's side. It is no use keeping bytecodes
2170 for all the other duplicate locations, thus we free all of them here.
2171
2172 This is so we have a finer control over which locations' conditions are
2173 being evaluated by GDB or the remote stub. */
2174 if (null_condition_or_parse_error)
2175 {
2176 ALL_BP_LOCATIONS_AT_ADDR (loc2p, locp, bl->address)
2177 {
2178 loc = (*loc2p);
2179 if (is_breakpoint (loc->owner) && loc->pspace->num == bl->pspace->num)
2180 {
2181 /* Only go as far as the first NULL bytecode is
2182 located. */
2183 if (!loc->cond_bytecode)
2184 return;
2185
2186 loc->cond_bytecode.reset ();
2187 }
2188 }
2189 }
2190
2191 /* No NULL conditions or failed bytecode generation. Build a condition list
2192 for this location's address. */
2193 ALL_BP_LOCATIONS_AT_ADDR (loc2p, locp, bl->address)
2194 {
2195 loc = (*loc2p);
2196 if (loc->cond
2197 && is_breakpoint (loc->owner)
2198 && loc->pspace->num == bl->pspace->num
2199 && loc->owner->enable_state == bp_enabled
2200 && loc->enabled)
2201 {
2202 /* Add the condition to the vector. This will be used later
2203 to send the conditions to the target. */
2204 bl->target_info.conditions.push_back (loc->cond_bytecode.get ());
2205 }
2206 }
2207
2208 return;
2209 }
2210
2211 /* Parses a command described by string CMD into an agent expression
2212 bytecode suitable for evaluation by the bytecode interpreter.
2213 Return NULL if there was any error during parsing. */
2214
2215 static agent_expr_up
2216 parse_cmd_to_aexpr (CORE_ADDR scope, char *cmd)
2217 {
2218 const char *cmdrest;
2219 const char *format_start, *format_end;
2220 struct gdbarch *gdbarch = get_current_arch ();
2221
2222 if (cmd == NULL)
2223 return NULL;
2224
2225 cmdrest = cmd;
2226
2227 if (*cmdrest == ',')
2228 ++cmdrest;
2229 cmdrest = skip_spaces (cmdrest);
2230
2231 if (*cmdrest++ != '"')
2232 error (_("No format string following the location"));
2233
2234 format_start = cmdrest;
2235
2236 format_pieces fpieces (&cmdrest);
2237
2238 format_end = cmdrest;
2239
2240 if (*cmdrest++ != '"')
2241 error (_("Bad format string, non-terminated '\"'."));
2242
2243 cmdrest = skip_spaces (cmdrest);
2244
2245 if (!(*cmdrest == ',' || *cmdrest == '\0'))
2246 error (_("Invalid argument syntax"));
2247
2248 if (*cmdrest == ',')
2249 cmdrest++;
2250 cmdrest = skip_spaces (cmdrest);
2251
2252 /* For each argument, make an expression. */
2253
2254 std::vector<struct expression *> argvec;
2255 while (*cmdrest != '\0')
2256 {
2257 const char *cmd1;
2258
2259 cmd1 = cmdrest;
2260 expression_up expr = parse_exp_1 (&cmd1, scope, block_for_pc (scope), 1);
2261 argvec.push_back (expr.release ());
2262 cmdrest = cmd1;
2263 if (*cmdrest == ',')
2264 ++cmdrest;
2265 }
2266
2267 agent_expr_up aexpr;
2268
2269 /* We don't want to stop processing, so catch any errors
2270 that may show up. */
2271 try
2272 {
2273 aexpr = gen_printf (scope, gdbarch, 0, 0,
2274 format_start, format_end - format_start,
2275 argvec.size (), argvec.data ());
2276 }
2277 catch (const gdb_exception_error &ex)
2278 {
2279 /* If we got here, it means the command could not be parsed to a valid
2280 bytecode expression and thus can't be evaluated on the target's side.
2281 It's no use iterating through the other commands. */
2282 }
2283
2284 /* We have a valid agent expression, return it. */
2285 return aexpr;
2286 }
2287
2288 /* Based on location BL, create a list of breakpoint commands to be
2289 passed on to the target. If we have duplicated locations with
2290 different commands, we will add any such to the list. */
2291
2292 static void
2293 build_target_command_list (struct bp_location *bl)
2294 {
2295 struct bp_location **locp = NULL, **loc2p;
2296 int null_command_or_parse_error = 0;
2297 int modified = bl->needs_update;
2298 struct bp_location *loc;
2299
2300 /* Clear commands left over from a previous insert. */
2301 bl->target_info.tcommands.clear ();
2302
2303 if (!target_can_run_breakpoint_commands ())
2304 return;
2305
2306 /* For now, limit to agent-style dprintf breakpoints. */
2307 if (dprintf_style != dprintf_style_agent)
2308 return;
2309
2310 /* For now, if we have any duplicate location that isn't a dprintf,
2311 don't install the target-side commands, as that would make the
2312 breakpoint not be reported to the core, and we'd lose
2313 control. */
2314 ALL_BP_LOCATIONS_AT_ADDR (loc2p, locp, bl->address)
2315 {
2316 loc = (*loc2p);
2317 if (is_breakpoint (loc->owner)
2318 && loc->pspace->num == bl->pspace->num
2319 && loc->owner->type != bp_dprintf)
2320 return;
2321 }
2322
2323 /* Do a first pass to check for locations with no assigned
2324 conditions or conditions that fail to parse to a valid agent expression
2325 bytecode. If any of these happen, then it's no use to send conditions
2326 to the target since this location will always trigger and generate a
2327 response back to GDB. */
2328 ALL_BP_LOCATIONS_AT_ADDR (loc2p, locp, bl->address)
2329 {
2330 loc = (*loc2p);
2331 if (is_breakpoint (loc->owner) && loc->pspace->num == bl->pspace->num)
2332 {
2333 if (modified)
2334 {
2335 /* Re-parse the commands since something changed. In that
2336 case we already freed the command bytecodes (see
2337 force_breakpoint_reinsertion). We just
2338 need to parse the command to bytecodes again. */
2339 loc->cmd_bytecode
2340 = parse_cmd_to_aexpr (bl->address,
2341 loc->owner->extra_string);
2342 }
2343
2344 /* If we have a NULL bytecode expression, it means something
2345 went wrong or we have a null command expression. */
2346 if (!loc->cmd_bytecode)
2347 {
2348 null_command_or_parse_error = 1;
2349 break;
2350 }
2351 }
2352 }
2353
2354 /* If anything failed, then we're not doing target-side commands,
2355 and so clean up. */
2356 if (null_command_or_parse_error)
2357 {
2358 ALL_BP_LOCATIONS_AT_ADDR (loc2p, locp, bl->address)
2359 {
2360 loc = (*loc2p);
2361 if (is_breakpoint (loc->owner)
2362 && loc->pspace->num == bl->pspace->num)
2363 {
2364 /* Only go as far as the first NULL bytecode is
2365 located. */
2366 if (loc->cmd_bytecode == NULL)
2367 return;
2368
2369 loc->cmd_bytecode.reset ();
2370 }
2371 }
2372 }
2373
2374 /* No NULL commands or failed bytecode generation. Build a command list
2375 for this location's address. */
2376 ALL_BP_LOCATIONS_AT_ADDR (loc2p, locp, bl->address)
2377 {
2378 loc = (*loc2p);
2379 if (loc->owner->extra_string
2380 && is_breakpoint (loc->owner)
2381 && loc->pspace->num == bl->pspace->num
2382 && loc->owner->enable_state == bp_enabled
2383 && loc->enabled)
2384 {
2385 /* Add the command to the vector. This will be used later
2386 to send the commands to the target. */
2387 bl->target_info.tcommands.push_back (loc->cmd_bytecode.get ());
2388 }
2389 }
2390
2391 bl->target_info.persist = 0;
2392 /* Maybe flag this location as persistent. */
2393 if (bl->owner->type == bp_dprintf && disconnected_dprintf)
2394 bl->target_info.persist = 1;
2395 }
2396
2397 /* Return the kind of breakpoint on address *ADDR. Get the kind
2398 of breakpoint according to ADDR except single-step breakpoint.
2399 Get the kind of single-step breakpoint according to the current
2400 registers state. */
2401
2402 static int
2403 breakpoint_kind (struct bp_location *bl, CORE_ADDR *addr)
2404 {
2405 if (bl->owner->type == bp_single_step)
2406 {
2407 struct thread_info *thr = find_thread_global_id (bl->owner->thread);
2408 struct regcache *regcache;
2409
2410 regcache = get_thread_regcache (thr);
2411
2412 return gdbarch_breakpoint_kind_from_current_state (bl->gdbarch,
2413 regcache, addr);
2414 }
2415 else
2416 return gdbarch_breakpoint_kind_from_pc (bl->gdbarch, addr);
2417 }
2418
2419 /* Insert a low-level "breakpoint" of some type. BL is the breakpoint
2420 location. Any error messages are printed to TMP_ERROR_STREAM; and
2421 DISABLED_BREAKS, and HW_BREAKPOINT_ERROR are used to report problems.
2422 Returns 0 for success, 1 if the bp_location type is not supported or
2423 -1 for failure.
2424
2425 NOTE drow/2003-09-09: This routine could be broken down to an
2426 object-style method for each breakpoint or catchpoint type. */
2427 static int
2428 insert_bp_location (struct bp_location *bl,
2429 struct ui_file *tmp_error_stream,
2430 int *disabled_breaks,
2431 int *hw_breakpoint_error,
2432 int *hw_bp_error_explained_already)
2433 {
2434 gdb_exception bp_excpt;
2435
2436 if (!should_be_inserted (bl) || (bl->inserted && !bl->needs_update))
2437 return 0;
2438
2439 /* Note we don't initialize bl->target_info, as that wipes out
2440 the breakpoint location's shadow_contents if the breakpoint
2441 is still inserted at that location. This in turn breaks
2442 target_read_memory which depends on these buffers when
2443 a memory read is requested at the breakpoint location:
2444 Once the target_info has been wiped, we fail to see that
2445 we have a breakpoint inserted at that address and thus
2446 read the breakpoint instead of returning the data saved in
2447 the breakpoint location's shadow contents. */
2448 bl->target_info.reqstd_address = bl->address;
2449 bl->target_info.placed_address_space = bl->pspace->aspace;
2450 bl->target_info.length = bl->length;
2451
2452 /* When working with target-side conditions, we must pass all the conditions
2453 for the same breakpoint address down to the target since GDB will not
2454 insert those locations. With a list of breakpoint conditions, the target
2455 can decide when to stop and notify GDB. */
2456
2457 if (is_breakpoint (bl->owner))
2458 {
2459 build_target_condition_list (bl);
2460 build_target_command_list (bl);
2461 /* Reset the modification marker. */
2462 bl->needs_update = 0;
2463 }
2464
2465 if (bl->loc_type == bp_loc_software_breakpoint
2466 || bl->loc_type == bp_loc_hardware_breakpoint)
2467 {
2468 if (bl->owner->type != bp_hardware_breakpoint)
2469 {
2470 /* If the explicitly specified breakpoint type
2471 is not hardware breakpoint, check the memory map to see
2472 if the breakpoint address is in read only memory or not.
2473
2474 Two important cases are:
2475 - location type is not hardware breakpoint, memory
2476 is readonly. We change the type of the location to
2477 hardware breakpoint.
2478 - location type is hardware breakpoint, memory is
2479 read-write. This means we've previously made the
2480 location hardware one, but then the memory map changed,
2481 so we undo.
2482
2483 When breakpoints are removed, remove_breakpoints will use
2484 location types we've just set here, the only possible
2485 problem is that memory map has changed during running
2486 program, but it's not going to work anyway with current
2487 gdb. */
2488 struct mem_region *mr
2489 = lookup_mem_region (bl->target_info.reqstd_address);
2490
2491 if (mr)
2492 {
2493 if (automatic_hardware_breakpoints)
2494 {
2495 enum bp_loc_type new_type;
2496
2497 if (mr->attrib.mode != MEM_RW)
2498 new_type = bp_loc_hardware_breakpoint;
2499 else
2500 new_type = bp_loc_software_breakpoint;
2501
2502 if (new_type != bl->loc_type)
2503 {
2504 static int said = 0;
2505
2506 bl->loc_type = new_type;
2507 if (!said)
2508 {
2509 fprintf_filtered (gdb_stdout,
2510 _("Note: automatically using "
2511 "hardware breakpoints for "
2512 "read-only addresses.\n"));
2513 said = 1;
2514 }
2515 }
2516 }
2517 else if (bl->loc_type == bp_loc_software_breakpoint
2518 && mr->attrib.mode != MEM_RW)
2519 {
2520 fprintf_unfiltered (tmp_error_stream,
2521 _("Cannot insert breakpoint %d.\n"
2522 "Cannot set software breakpoint "
2523 "at read-only address %s\n"),
2524 bl->owner->number,
2525 paddress (bl->gdbarch, bl->address));
2526 return 1;
2527 }
2528 }
2529 }
2530
2531 /* First check to see if we have to handle an overlay. */
2532 if (overlay_debugging == ovly_off
2533 || bl->section == NULL
2534 || !(section_is_overlay (bl->section)))
2535 {
2536 /* No overlay handling: just set the breakpoint. */
2537 try
2538 {
2539 int val;
2540
2541 val = bl->owner->ops->insert_location (bl);
2542 if (val)
2543 bp_excpt = gdb_exception {RETURN_ERROR, GENERIC_ERROR};
2544 }
2545 catch (gdb_exception &e)
2546 {
2547 bp_excpt = std::move (e);
2548 }
2549 }
2550 else
2551 {
2552 /* This breakpoint is in an overlay section.
2553 Shall we set a breakpoint at the LMA? */
2554 if (!overlay_events_enabled)
2555 {
2556 /* Yes -- overlay event support is not active,
2557 so we must try to set a breakpoint at the LMA.
2558 This will not work for a hardware breakpoint. */
2559 if (bl->loc_type == bp_loc_hardware_breakpoint)
2560 warning (_("hardware breakpoint %d not supported in overlay!"),
2561 bl->owner->number);
2562 else
2563 {
2564 CORE_ADDR addr = overlay_unmapped_address (bl->address,
2565 bl->section);
2566 /* Set a software (trap) breakpoint at the LMA. */
2567 bl->overlay_target_info = bl->target_info;
2568 bl->overlay_target_info.reqstd_address = addr;
2569
2570 /* No overlay handling: just set the breakpoint. */
2571 try
2572 {
2573 int val;
2574
2575 bl->overlay_target_info.kind
2576 = breakpoint_kind (bl, &addr);
2577 bl->overlay_target_info.placed_address = addr;
2578 val = target_insert_breakpoint (bl->gdbarch,
2579 &bl->overlay_target_info);
2580 if (val)
2581 bp_excpt
2582 = gdb_exception {RETURN_ERROR, GENERIC_ERROR};
2583 }
2584 catch (gdb_exception &e)
2585 {
2586 bp_excpt = std::move (e);
2587 }
2588
2589 if (bp_excpt.reason != 0)
2590 fprintf_unfiltered (tmp_error_stream,
2591 "Overlay breakpoint %d "
2592 "failed: in ROM?\n",
2593 bl->owner->number);
2594 }
2595 }
2596 /* Shall we set a breakpoint at the VMA? */
2597 if (section_is_mapped (bl->section))
2598 {
2599 /* Yes. This overlay section is mapped into memory. */
2600 try
2601 {
2602 int val;
2603
2604 val = bl->owner->ops->insert_location (bl);
2605 if (val)
2606 bp_excpt = gdb_exception {RETURN_ERROR, GENERIC_ERROR};
2607 }
2608 catch (gdb_exception &e)
2609 {
2610 bp_excpt = std::move (e);
2611 }
2612 }
2613 else
2614 {
2615 /* No. This breakpoint will not be inserted.
2616 No error, but do not mark the bp as 'inserted'. */
2617 return 0;
2618 }
2619 }
2620
2621 if (bp_excpt.reason != 0)
2622 {
2623 /* Can't set the breakpoint. */
2624
2625 /* In some cases, we might not be able to insert a
2626 breakpoint in a shared library that has already been
2627 removed, but we have not yet processed the shlib unload
2628 event. Unfortunately, some targets that implement
2629 breakpoint insertion themselves can't tell why the
2630 breakpoint insertion failed (e.g., the remote target
2631 doesn't define error codes), so we must treat generic
2632 errors as memory errors. */
2633 if (bp_excpt.reason == RETURN_ERROR
2634 && (bp_excpt.error == GENERIC_ERROR
2635 || bp_excpt.error == MEMORY_ERROR)
2636 && bl->loc_type == bp_loc_software_breakpoint
2637 && (solib_name_from_address (bl->pspace, bl->address)
2638 || shared_objfile_contains_address_p (bl->pspace,
2639 bl->address)))
2640 {
2641 /* See also: disable_breakpoints_in_shlibs. */
2642 bl->shlib_disabled = 1;
2643 gdb::observers::breakpoint_modified.notify (bl->owner);
2644 if (!*disabled_breaks)
2645 {
2646 fprintf_unfiltered (tmp_error_stream,
2647 "Cannot insert breakpoint %d.\n",
2648 bl->owner->number);
2649 fprintf_unfiltered (tmp_error_stream,
2650 "Temporarily disabling shared "
2651 "library breakpoints:\n");
2652 }
2653 *disabled_breaks = 1;
2654 fprintf_unfiltered (tmp_error_stream,
2655 "breakpoint #%d\n", bl->owner->number);
2656 return 0;
2657 }
2658 else
2659 {
2660 if (bl->loc_type == bp_loc_hardware_breakpoint)
2661 {
2662 *hw_breakpoint_error = 1;
2663 *hw_bp_error_explained_already = bp_excpt.message != NULL;
2664 fprintf_unfiltered (tmp_error_stream,
2665 "Cannot insert hardware breakpoint %d%s",
2666 bl->owner->number,
2667 bp_excpt.message ? ":" : ".\n");
2668 if (bp_excpt.message != NULL)
2669 fprintf_unfiltered (tmp_error_stream, "%s.\n",
2670 bp_excpt.what ());
2671 }
2672 else
2673 {
2674 if (bp_excpt.message == NULL)
2675 {
2676 std::string message
2677 = memory_error_message (TARGET_XFER_E_IO,
2678 bl->gdbarch, bl->address);
2679
2680 fprintf_unfiltered (tmp_error_stream,
2681 "Cannot insert breakpoint %d.\n"
2682 "%s\n",
2683 bl->owner->number, message.c_str ());
2684 }
2685 else
2686 {
2687 fprintf_unfiltered (tmp_error_stream,
2688 "Cannot insert breakpoint %d: %s\n",
2689 bl->owner->number,
2690 bp_excpt.what ());
2691 }
2692 }
2693 return 1;
2694
2695 }
2696 }
2697 else
2698 bl->inserted = 1;
2699
2700 return 0;
2701 }
2702
2703 else if (bl->loc_type == bp_loc_hardware_watchpoint
2704 /* NOTE drow/2003-09-08: This state only exists for removing
2705 watchpoints. It's not clear that it's necessary... */
2706 && bl->owner->disposition != disp_del_at_next_stop)
2707 {
2708 int val;
2709
2710 gdb_assert (bl->owner->ops != NULL
2711 && bl->owner->ops->insert_location != NULL);
2712
2713 val = bl->owner->ops->insert_location (bl);
2714
2715 /* If trying to set a read-watchpoint, and it turns out it's not
2716 supported, try emulating one with an access watchpoint. */
2717 if (val == 1 && bl->watchpoint_type == hw_read)
2718 {
2719 struct bp_location *loc, **loc_temp;
2720
2721 /* But don't try to insert it, if there's already another
2722 hw_access location that would be considered a duplicate
2723 of this one. */
2724 ALL_BP_LOCATIONS (loc, loc_temp)
2725 if (loc != bl
2726 && loc->watchpoint_type == hw_access
2727 && watchpoint_locations_match (bl, loc))
2728 {
2729 bl->duplicate = 1;
2730 bl->inserted = 1;
2731 bl->target_info = loc->target_info;
2732 bl->watchpoint_type = hw_access;
2733 val = 0;
2734 break;
2735 }
2736
2737 if (val == 1)
2738 {
2739 bl->watchpoint_type = hw_access;
2740 val = bl->owner->ops->insert_location (bl);
2741
2742 if (val)
2743 /* Back to the original value. */
2744 bl->watchpoint_type = hw_read;
2745 }
2746 }
2747
2748 bl->inserted = (val == 0);
2749 }
2750
2751 else if (bl->owner->type == bp_catchpoint)
2752 {
2753 int val;
2754
2755 gdb_assert (bl->owner->ops != NULL
2756 && bl->owner->ops->insert_location != NULL);
2757
2758 val = bl->owner->ops->insert_location (bl);
2759 if (val)
2760 {
2761 bl->owner->enable_state = bp_disabled;
2762
2763 if (val == 1)
2764 warning (_("\
2765 Error inserting catchpoint %d: Your system does not support this type\n\
2766 of catchpoint."), bl->owner->number);
2767 else
2768 warning (_("Error inserting catchpoint %d."), bl->owner->number);
2769 }
2770
2771 bl->inserted = (val == 0);
2772
2773 /* We've already printed an error message if there was a problem
2774 inserting this catchpoint, and we've disabled the catchpoint,
2775 so just return success. */
2776 return 0;
2777 }
2778
2779 return 0;
2780 }
2781
2782 /* This function is called when program space PSPACE is about to be
2783 deleted. It takes care of updating breakpoints to not reference
2784 PSPACE anymore. */
2785
2786 void
2787 breakpoint_program_space_exit (struct program_space *pspace)
2788 {
2789 struct breakpoint *b, *b_temp;
2790 struct bp_location *loc, **loc_temp;
2791
2792 /* Remove any breakpoint that was set through this program space. */
2793 ALL_BREAKPOINTS_SAFE (b, b_temp)
2794 {
2795 if (b->pspace == pspace)
2796 delete_breakpoint (b);
2797 }
2798
2799 /* Breakpoints set through other program spaces could have locations
2800 bound to PSPACE as well. Remove those. */
2801 ALL_BP_LOCATIONS (loc, loc_temp)
2802 {
2803 struct bp_location *tmp;
2804
2805 if (loc->pspace == pspace)
2806 {
2807 /* ALL_BP_LOCATIONS bp_location has LOC->OWNER always non-NULL. */
2808 if (loc->owner->loc == loc)
2809 loc->owner->loc = loc->next;
2810 else
2811 for (tmp = loc->owner->loc; tmp->next != NULL; tmp = tmp->next)
2812 if (tmp->next == loc)
2813 {
2814 tmp->next = loc->next;
2815 break;
2816 }
2817 }
2818 }
2819
2820 /* Now update the global location list to permanently delete the
2821 removed locations above. */
2822 update_global_location_list (UGLL_DONT_INSERT);
2823 }
2824
2825 /* Make sure all breakpoints are inserted in inferior.
2826 Throws exception on any error.
2827 A breakpoint that is already inserted won't be inserted
2828 again, so calling this function twice is safe. */
2829 void
2830 insert_breakpoints (void)
2831 {
2832 struct breakpoint *bpt;
2833
2834 ALL_BREAKPOINTS (bpt)
2835 if (is_hardware_watchpoint (bpt))
2836 {
2837 struct watchpoint *w = (struct watchpoint *) bpt;
2838
2839 update_watchpoint (w, 0 /* don't reparse. */);
2840 }
2841
2842 /* Updating watchpoints creates new locations, so update the global
2843 location list. Explicitly tell ugll to insert locations and
2844 ignore breakpoints_always_inserted_mode. */
2845 update_global_location_list (UGLL_INSERT);
2846 }
2847
2848 /* Invoke CALLBACK for each of bp_location. */
2849
2850 void
2851 iterate_over_bp_locations (walk_bp_location_callback callback)
2852 {
2853 struct bp_location *loc, **loc_tmp;
2854
2855 ALL_BP_LOCATIONS (loc, loc_tmp)
2856 {
2857 callback (loc, NULL);
2858 }
2859 }
2860
2861 /* This is used when we need to synch breakpoint conditions between GDB and the
2862 target. It is the case with deleting and disabling of breakpoints when using
2863 always-inserted mode. */
2864
2865 static void
2866 update_inserted_breakpoint_locations (void)
2867 {
2868 struct bp_location *bl, **blp_tmp;
2869 int error_flag = 0;
2870 int val = 0;
2871 int disabled_breaks = 0;
2872 int hw_breakpoint_error = 0;
2873 int hw_bp_details_reported = 0;
2874
2875 string_file tmp_error_stream;
2876
2877 /* Explicitly mark the warning -- this will only be printed if
2878 there was an error. */
2879 tmp_error_stream.puts ("Warning:\n");
2880
2881 scoped_restore_current_pspace_and_thread restore_pspace_thread;
2882
2883 ALL_BP_LOCATIONS (bl, blp_tmp)
2884 {
2885 /* We only want to update software breakpoints and hardware
2886 breakpoints. */
2887 if (!is_breakpoint (bl->owner))
2888 continue;
2889
2890 /* We only want to update locations that are already inserted
2891 and need updating. This is to avoid unwanted insertion during
2892 deletion of breakpoints. */
2893 if (!bl->inserted || !bl->needs_update)
2894 continue;
2895
2896 switch_to_program_space_and_thread (bl->pspace);
2897
2898 /* For targets that support global breakpoints, there's no need
2899 to select an inferior to insert breakpoint to. In fact, even
2900 if we aren't attached to any process yet, we should still
2901 insert breakpoints. */
2902 if (!gdbarch_has_global_breakpoints (target_gdbarch ())
2903 && inferior_ptid == null_ptid)
2904 continue;
2905
2906 val = insert_bp_location (bl, &tmp_error_stream, &disabled_breaks,
2907 &hw_breakpoint_error, &hw_bp_details_reported);
2908 if (val)
2909 error_flag = val;
2910 }
2911
2912 if (error_flag)
2913 {
2914 target_terminal::ours_for_output ();
2915 error_stream (tmp_error_stream);
2916 }
2917 }
2918
2919 /* Used when starting or continuing the program. */
2920
2921 static void
2922 insert_breakpoint_locations (void)
2923 {
2924 struct breakpoint *bpt;
2925 struct bp_location *bl, **blp_tmp;
2926 int error_flag = 0;
2927 int val = 0;
2928 int disabled_breaks = 0;
2929 int hw_breakpoint_error = 0;
2930 int hw_bp_error_explained_already = 0;
2931
2932 string_file tmp_error_stream;
2933
2934 /* Explicitly mark the warning -- this will only be printed if
2935 there was an error. */
2936 tmp_error_stream.puts ("Warning:\n");
2937
2938 scoped_restore_current_pspace_and_thread restore_pspace_thread;
2939
2940 ALL_BP_LOCATIONS (bl, blp_tmp)
2941 {
2942 if (!should_be_inserted (bl) || (bl->inserted && !bl->needs_update))
2943 continue;
2944
2945 /* There is no point inserting thread-specific breakpoints if
2946 the thread no longer exists. ALL_BP_LOCATIONS bp_location
2947 has BL->OWNER always non-NULL. */
2948 if (bl->owner->thread != -1
2949 && !valid_global_thread_id (bl->owner->thread))
2950 continue;
2951
2952 switch_to_program_space_and_thread (bl->pspace);
2953
2954 /* For targets that support global breakpoints, there's no need
2955 to select an inferior to insert breakpoint to. In fact, even
2956 if we aren't attached to any process yet, we should still
2957 insert breakpoints. */
2958 if (!gdbarch_has_global_breakpoints (target_gdbarch ())
2959 && inferior_ptid == null_ptid)
2960 continue;
2961
2962 val = insert_bp_location (bl, &tmp_error_stream, &disabled_breaks,
2963 &hw_breakpoint_error, &hw_bp_error_explained_already);
2964 if (val)
2965 error_flag = val;
2966 }
2967
2968 /* If we failed to insert all locations of a watchpoint, remove
2969 them, as half-inserted watchpoint is of limited use. */
2970 ALL_BREAKPOINTS (bpt)
2971 {
2972 int some_failed = 0;
2973 struct bp_location *loc;
2974
2975 if (!is_hardware_watchpoint (bpt))
2976 continue;
2977
2978 if (!breakpoint_enabled (bpt))
2979 continue;
2980
2981 if (bpt->disposition == disp_del_at_next_stop)
2982 continue;
2983
2984 for (loc = bpt->loc; loc; loc = loc->next)
2985 if (!loc->inserted && should_be_inserted (loc))
2986 {
2987 some_failed = 1;
2988 break;
2989 }
2990 if (some_failed)
2991 {
2992 for (loc = bpt->loc; loc; loc = loc->next)
2993 if (loc->inserted)
2994 remove_breakpoint (loc);
2995
2996 hw_breakpoint_error = 1;
2997 tmp_error_stream.printf ("Could not insert "
2998 "hardware watchpoint %d.\n",
2999 bpt->number);
3000 error_flag = -1;
3001 }
3002 }
3003
3004 if (error_flag)
3005 {
3006 /* If a hardware breakpoint or watchpoint was inserted, add a
3007 message about possibly exhausted resources. */
3008 if (hw_breakpoint_error && !hw_bp_error_explained_already)
3009 {
3010 tmp_error_stream.printf ("Could not insert hardware breakpoints:\n\
3011 You may have requested too many hardware breakpoints/watchpoints.\n");
3012 }
3013 target_terminal::ours_for_output ();
3014 error_stream (tmp_error_stream);
3015 }
3016 }
3017
3018 /* Used when the program stops.
3019 Returns zero if successful, or non-zero if there was a problem
3020 removing a breakpoint location. */
3021
3022 int
3023 remove_breakpoints (void)
3024 {
3025 struct bp_location *bl, **blp_tmp;
3026 int val = 0;
3027
3028 ALL_BP_LOCATIONS (bl, blp_tmp)
3029 {
3030 if (bl->inserted && !is_tracepoint (bl->owner))
3031 val |= remove_breakpoint (bl);
3032 }
3033 return val;
3034 }
3035
3036 /* When a thread exits, remove breakpoints that are related to
3037 that thread. */
3038
3039 static void
3040 remove_threaded_breakpoints (struct thread_info *tp, int silent)
3041 {
3042 struct breakpoint *b, *b_tmp;
3043
3044 ALL_BREAKPOINTS_SAFE (b, b_tmp)
3045 {
3046 if (b->thread == tp->global_num && user_breakpoint_p (b))
3047 {
3048 b->disposition = disp_del_at_next_stop;
3049
3050 printf_filtered (_("\
3051 Thread-specific breakpoint %d deleted - thread %s no longer in the thread list.\n"),
3052 b->number, print_thread_id (tp));
3053
3054 /* Hide it from the user. */
3055 b->number = 0;
3056 }
3057 }
3058 }
3059
3060 /* Remove breakpoints of inferior INF. */
3061
3062 int
3063 remove_breakpoints_inf (inferior *inf)
3064 {
3065 struct bp_location *bl, **blp_tmp;
3066 int val;
3067
3068 ALL_BP_LOCATIONS (bl, blp_tmp)
3069 {
3070 if (bl->pspace != inf->pspace)
3071 continue;
3072
3073 if (bl->inserted && !bl->target_info.persist)
3074 {
3075 val = remove_breakpoint (bl);
3076 if (val != 0)
3077 return val;
3078 }
3079 }
3080 return 0;
3081 }
3082
3083 static int internal_breakpoint_number = -1;
3084
3085 /* Set the breakpoint number of B, depending on the value of INTERNAL.
3086 If INTERNAL is non-zero, the breakpoint number will be populated
3087 from internal_breakpoint_number and that variable decremented.
3088 Otherwise the breakpoint number will be populated from
3089 breakpoint_count and that value incremented. Internal breakpoints
3090 do not set the internal var bpnum. */
3091 static void
3092 set_breakpoint_number (int internal, struct breakpoint *b)
3093 {
3094 if (internal)
3095 b->number = internal_breakpoint_number--;
3096 else
3097 {
3098 set_breakpoint_count (breakpoint_count + 1);
3099 b->number = breakpoint_count;
3100 }
3101 }
3102
3103 static struct breakpoint *
3104 create_internal_breakpoint (struct gdbarch *gdbarch,
3105 CORE_ADDR address, enum bptype type,
3106 const struct breakpoint_ops *ops)
3107 {
3108 symtab_and_line sal;
3109 sal.pc = address;
3110 sal.section = find_pc_overlay (sal.pc);
3111 sal.pspace = current_program_space;
3112
3113 breakpoint *b = set_raw_breakpoint (gdbarch, sal, type, ops);
3114 b->number = internal_breakpoint_number--;
3115 b->disposition = disp_donttouch;
3116
3117 return b;
3118 }
3119
3120 static const char *const longjmp_names[] =
3121 {
3122 "longjmp", "_longjmp", "siglongjmp", "_siglongjmp"
3123 };
3124 #define NUM_LONGJMP_NAMES ARRAY_SIZE(longjmp_names)
3125
3126 /* Per-objfile data private to breakpoint.c. */
3127 struct breakpoint_objfile_data
3128 {
3129 /* Minimal symbol for "_ovly_debug_event" (if any). */
3130 struct bound_minimal_symbol overlay_msym {};
3131
3132 /* Minimal symbol(s) for "longjmp", "siglongjmp", etc. (if any). */
3133 struct bound_minimal_symbol longjmp_msym[NUM_LONGJMP_NAMES] {};
3134
3135 /* True if we have looked for longjmp probes. */
3136 int longjmp_searched = 0;
3137
3138 /* SystemTap probe points for longjmp (if any). These are non-owning
3139 references. */
3140 std::vector<probe *> longjmp_probes;
3141
3142 /* Minimal symbol for "std::terminate()" (if any). */
3143 struct bound_minimal_symbol terminate_msym {};
3144
3145 /* Minimal symbol for "_Unwind_DebugHook" (if any). */
3146 struct bound_minimal_symbol exception_msym {};
3147
3148 /* True if we have looked for exception probes. */
3149 int exception_searched = 0;
3150
3151 /* SystemTap probe points for unwinding (if any). These are non-owning
3152 references. */
3153 std::vector<probe *> exception_probes;
3154 };
3155
3156 static const struct objfile_key<breakpoint_objfile_data>
3157 breakpoint_objfile_key;
3158
3159 /* Minimal symbol not found sentinel. */
3160 static struct minimal_symbol msym_not_found;
3161
3162 /* Returns TRUE if MSYM point to the "not found" sentinel. */
3163
3164 static int
3165 msym_not_found_p (const struct minimal_symbol *msym)
3166 {
3167 return msym == &msym_not_found;
3168 }
3169
3170 /* Return per-objfile data needed by breakpoint.c.
3171 Allocate the data if necessary. */
3172
3173 static struct breakpoint_objfile_data *
3174 get_breakpoint_objfile_data (struct objfile *objfile)
3175 {
3176 struct breakpoint_objfile_data *bp_objfile_data;
3177
3178 bp_objfile_data = breakpoint_objfile_key.get (objfile);
3179 if (bp_objfile_data == NULL)
3180 bp_objfile_data = breakpoint_objfile_key.emplace (objfile);
3181 return bp_objfile_data;
3182 }
3183
3184 static void
3185 create_overlay_event_breakpoint (void)
3186 {
3187 const char *const func_name = "_ovly_debug_event";
3188
3189 for (objfile *objfile : current_program_space->objfiles ())
3190 {
3191 struct breakpoint *b;
3192 struct breakpoint_objfile_data *bp_objfile_data;
3193 CORE_ADDR addr;
3194 struct explicit_location explicit_loc;
3195
3196 bp_objfile_data = get_breakpoint_objfile_data (objfile);
3197
3198 if (msym_not_found_p (bp_objfile_data->overlay_msym.minsym))
3199 continue;
3200
3201 if (bp_objfile_data->overlay_msym.minsym == NULL)
3202 {
3203 struct bound_minimal_symbol m;
3204
3205 m = lookup_minimal_symbol_text (func_name, objfile);
3206 if (m.minsym == NULL)
3207 {
3208 /* Avoid future lookups in this objfile. */
3209 bp_objfile_data->overlay_msym.minsym = &msym_not_found;
3210 continue;
3211 }
3212 bp_objfile_data->overlay_msym = m;
3213 }
3214
3215 addr = BMSYMBOL_VALUE_ADDRESS (bp_objfile_data->overlay_msym);
3216 b = create_internal_breakpoint (get_objfile_arch (objfile), addr,
3217 bp_overlay_event,
3218 &internal_breakpoint_ops);
3219 initialize_explicit_location (&explicit_loc);
3220 explicit_loc.function_name = ASTRDUP (func_name);
3221 b->location = new_explicit_location (&explicit_loc);
3222
3223 if (overlay_debugging == ovly_auto)
3224 {
3225 b->enable_state = bp_enabled;
3226 overlay_events_enabled = 1;
3227 }
3228 else
3229 {
3230 b->enable_state = bp_disabled;
3231 overlay_events_enabled = 0;
3232 }
3233 }
3234 }
3235
3236 static void
3237 create_longjmp_master_breakpoint (void)
3238 {
3239 struct program_space *pspace;
3240
3241 scoped_restore_current_program_space restore_pspace;
3242
3243 ALL_PSPACES (pspace)
3244 {
3245 set_current_program_space (pspace);
3246
3247 for (objfile *objfile : current_program_space->objfiles ())
3248 {
3249 int i;
3250 struct gdbarch *gdbarch;
3251 struct breakpoint_objfile_data *bp_objfile_data;
3252
3253 gdbarch = get_objfile_arch (objfile);
3254
3255 bp_objfile_data = get_breakpoint_objfile_data (objfile);
3256
3257 if (!bp_objfile_data->longjmp_searched)
3258 {
3259 std::vector<probe *> ret
3260 = find_probes_in_objfile (objfile, "libc", "longjmp");
3261
3262 if (!ret.empty ())
3263 {
3264 /* We are only interested in checking one element. */
3265 probe *p = ret[0];
3266
3267 if (!p->can_evaluate_arguments ())
3268 {
3269 /* We cannot use the probe interface here, because it does
3270 not know how to evaluate arguments. */
3271 ret.clear ();
3272 }
3273 }
3274 bp_objfile_data->longjmp_probes = ret;
3275 bp_objfile_data->longjmp_searched = 1;
3276 }
3277
3278 if (!bp_objfile_data->longjmp_probes.empty ())
3279 {
3280 for (probe *p : bp_objfile_data->longjmp_probes)
3281 {
3282 struct breakpoint *b;
3283
3284 b = create_internal_breakpoint (gdbarch,
3285 p->get_relocated_address (objfile),
3286 bp_longjmp_master,
3287 &internal_breakpoint_ops);
3288 b->location = new_probe_location ("-probe-stap libc:longjmp");
3289 b->enable_state = bp_disabled;
3290 }
3291
3292 continue;
3293 }
3294
3295 if (!gdbarch_get_longjmp_target_p (gdbarch))
3296 continue;
3297
3298 for (i = 0; i < NUM_LONGJMP_NAMES; i++)
3299 {
3300 struct breakpoint *b;
3301 const char *func_name;
3302 CORE_ADDR addr;
3303 struct explicit_location explicit_loc;
3304
3305 if (msym_not_found_p (bp_objfile_data->longjmp_msym[i].minsym))
3306 continue;
3307
3308 func_name = longjmp_names[i];
3309 if (bp_objfile_data->longjmp_msym[i].minsym == NULL)
3310 {
3311 struct bound_minimal_symbol m;
3312
3313 m = lookup_minimal_symbol_text (func_name, objfile);
3314 if (m.minsym == NULL)
3315 {
3316 /* Prevent future lookups in this objfile. */
3317 bp_objfile_data->longjmp_msym[i].minsym = &msym_not_found;
3318 continue;
3319 }
3320 bp_objfile_data->longjmp_msym[i] = m;
3321 }
3322
3323 addr = BMSYMBOL_VALUE_ADDRESS (bp_objfile_data->longjmp_msym[i]);
3324 b = create_internal_breakpoint (gdbarch, addr, bp_longjmp_master,
3325 &internal_breakpoint_ops);
3326 initialize_explicit_location (&explicit_loc);
3327 explicit_loc.function_name = ASTRDUP (func_name);
3328 b->location = new_explicit_location (&explicit_loc);
3329 b->enable_state = bp_disabled;
3330 }
3331 }
3332 }
3333 }
3334
3335 /* Create a master std::terminate breakpoint. */
3336 static void
3337 create_std_terminate_master_breakpoint (void)
3338 {
3339 struct program_space *pspace;
3340 const char *const func_name = "std::terminate()";
3341
3342 scoped_restore_current_program_space restore_pspace;
3343
3344 ALL_PSPACES (pspace)
3345 {
3346 CORE_ADDR addr;
3347
3348 set_current_program_space (pspace);
3349
3350 for (objfile *objfile : current_program_space->objfiles ())
3351 {
3352 struct breakpoint *b;
3353 struct breakpoint_objfile_data *bp_objfile_data;
3354 struct explicit_location explicit_loc;
3355
3356 bp_objfile_data = get_breakpoint_objfile_data (objfile);
3357
3358 if (msym_not_found_p (bp_objfile_data->terminate_msym.minsym))
3359 continue;
3360
3361 if (bp_objfile_data->terminate_msym.minsym == NULL)
3362 {
3363 struct bound_minimal_symbol m;
3364
3365 m = lookup_minimal_symbol (func_name, NULL, objfile);
3366 if (m.minsym == NULL || (MSYMBOL_TYPE (m.minsym) != mst_text
3367 && MSYMBOL_TYPE (m.minsym) != mst_file_text))
3368 {
3369 /* Prevent future lookups in this objfile. */
3370 bp_objfile_data->terminate_msym.minsym = &msym_not_found;
3371 continue;
3372 }
3373 bp_objfile_data->terminate_msym = m;
3374 }
3375
3376 addr = BMSYMBOL_VALUE_ADDRESS (bp_objfile_data->terminate_msym);
3377 b = create_internal_breakpoint (get_objfile_arch (objfile), addr,
3378 bp_std_terminate_master,
3379 &internal_breakpoint_ops);
3380 initialize_explicit_location (&explicit_loc);
3381 explicit_loc.function_name = ASTRDUP (func_name);
3382 b->location = new_explicit_location (&explicit_loc);
3383 b->enable_state = bp_disabled;
3384 }
3385 }
3386 }
3387
3388 /* Install a master breakpoint on the unwinder's debug hook. */
3389
3390 static void
3391 create_exception_master_breakpoint (void)
3392 {
3393 const char *const func_name = "_Unwind_DebugHook";
3394
3395 for (objfile *objfile : current_program_space->objfiles ())
3396 {
3397 struct breakpoint *b;
3398 struct gdbarch *gdbarch;
3399 struct breakpoint_objfile_data *bp_objfile_data;
3400 CORE_ADDR addr;
3401 struct explicit_location explicit_loc;
3402
3403 bp_objfile_data = get_breakpoint_objfile_data (objfile);
3404
3405 /* We prefer the SystemTap probe point if it exists. */
3406 if (!bp_objfile_data->exception_searched)
3407 {
3408 std::vector<probe *> ret
3409 = find_probes_in_objfile (objfile, "libgcc", "unwind");
3410
3411 if (!ret.empty ())
3412 {
3413 /* We are only interested in checking one element. */
3414 probe *p = ret[0];
3415
3416 if (!p->can_evaluate_arguments ())
3417 {
3418 /* We cannot use the probe interface here, because it does
3419 not know how to evaluate arguments. */
3420 ret.clear ();
3421 }
3422 }
3423 bp_objfile_data->exception_probes = ret;
3424 bp_objfile_data->exception_searched = 1;
3425 }
3426
3427 if (!bp_objfile_data->exception_probes.empty ())
3428 {
3429 gdbarch = get_objfile_arch (objfile);
3430
3431 for (probe *p : bp_objfile_data->exception_probes)
3432 {
3433 b = create_internal_breakpoint (gdbarch,
3434 p->get_relocated_address (objfile),
3435 bp_exception_master,
3436 &internal_breakpoint_ops);
3437 b->location = new_probe_location ("-probe-stap libgcc:unwind");
3438 b->enable_state = bp_disabled;
3439 }
3440
3441 continue;
3442 }
3443
3444 /* Otherwise, try the hook function. */
3445
3446 if (msym_not_found_p (bp_objfile_data->exception_msym.minsym))
3447 continue;
3448
3449 gdbarch = get_objfile_arch (objfile);
3450
3451 if (bp_objfile_data->exception_msym.minsym == NULL)
3452 {
3453 struct bound_minimal_symbol debug_hook;
3454
3455 debug_hook = lookup_minimal_symbol (func_name, NULL, objfile);
3456 if (debug_hook.minsym == NULL)
3457 {
3458 bp_objfile_data->exception_msym.minsym = &msym_not_found;
3459 continue;
3460 }
3461
3462 bp_objfile_data->exception_msym = debug_hook;
3463 }
3464
3465 addr = BMSYMBOL_VALUE_ADDRESS (bp_objfile_data->exception_msym);
3466 addr = gdbarch_convert_from_func_ptr_addr (gdbarch, addr,
3467 current_top_target ());
3468 b = create_internal_breakpoint (gdbarch, addr, bp_exception_master,
3469 &internal_breakpoint_ops);
3470 initialize_explicit_location (&explicit_loc);
3471 explicit_loc.function_name = ASTRDUP (func_name);
3472 b->location = new_explicit_location (&explicit_loc);
3473 b->enable_state = bp_disabled;
3474 }
3475 }
3476
3477 /* Does B have a location spec? */
3478
3479 static int
3480 breakpoint_event_location_empty_p (const struct breakpoint *b)
3481 {
3482 return b->location != NULL && event_location_empty_p (b->location.get ());
3483 }
3484
3485 void
3486 update_breakpoints_after_exec (void)
3487 {
3488 struct breakpoint *b, *b_tmp;
3489 struct bp_location *bploc, **bplocp_tmp;
3490
3491 /* We're about to delete breakpoints from GDB's lists. If the
3492 INSERTED flag is true, GDB will try to lift the breakpoints by
3493 writing the breakpoints' "shadow contents" back into memory. The
3494 "shadow contents" are NOT valid after an exec, so GDB should not
3495 do that. Instead, the target is responsible from marking
3496 breakpoints out as soon as it detects an exec. We don't do that
3497 here instead, because there may be other attempts to delete
3498 breakpoints after detecting an exec and before reaching here. */
3499 ALL_BP_LOCATIONS (bploc, bplocp_tmp)
3500 if (bploc->pspace == current_program_space)
3501 gdb_assert (!bploc->inserted);
3502
3503 ALL_BREAKPOINTS_SAFE (b, b_tmp)
3504 {
3505 if (b->pspace != current_program_space)
3506 continue;
3507
3508 /* Solib breakpoints must be explicitly reset after an exec(). */
3509 if (b->type == bp_shlib_event)
3510 {
3511 delete_breakpoint (b);
3512 continue;
3513 }
3514
3515 /* JIT breakpoints must be explicitly reset after an exec(). */
3516 if (b->type == bp_jit_event)
3517 {
3518 delete_breakpoint (b);
3519 continue;
3520 }
3521
3522 /* Thread event breakpoints must be set anew after an exec(),
3523 as must overlay event and longjmp master breakpoints. */
3524 if (b->type == bp_thread_event || b->type == bp_overlay_event
3525 || b->type == bp_longjmp_master || b->type == bp_std_terminate_master
3526 || b->type == bp_exception_master)
3527 {
3528 delete_breakpoint (b);
3529 continue;
3530 }
3531
3532 /* Step-resume breakpoints are meaningless after an exec(). */
3533 if (b->type == bp_step_resume || b->type == bp_hp_step_resume)
3534 {
3535 delete_breakpoint (b);
3536 continue;
3537 }
3538
3539 /* Just like single-step breakpoints. */
3540 if (b->type == bp_single_step)
3541 {
3542 delete_breakpoint (b);
3543 continue;
3544 }
3545
3546 /* Longjmp and longjmp-resume breakpoints are also meaningless
3547 after an exec. */
3548 if (b->type == bp_longjmp || b->type == bp_longjmp_resume
3549 || b->type == bp_longjmp_call_dummy
3550 || b->type == bp_exception || b->type == bp_exception_resume)
3551 {
3552 delete_breakpoint (b);
3553 continue;
3554 }
3555
3556 if (b->type == bp_catchpoint)
3557 {
3558 /* For now, none of the bp_catchpoint breakpoints need to
3559 do anything at this point. In the future, if some of
3560 the catchpoints need to something, we will need to add
3561 a new method, and call this method from here. */
3562 continue;
3563 }
3564
3565 /* bp_finish is a special case. The only way we ought to be able
3566 to see one of these when an exec() has happened, is if the user
3567 caught a vfork, and then said "finish". Ordinarily a finish just
3568 carries them to the call-site of the current callee, by setting
3569 a temporary bp there and resuming. But in this case, the finish
3570 will carry them entirely through the vfork & exec.
3571
3572 We don't want to allow a bp_finish to remain inserted now. But
3573 we can't safely delete it, 'cause finish_command has a handle to
3574 the bp on a bpstat, and will later want to delete it. There's a
3575 chance (and I've seen it happen) that if we delete the bp_finish
3576 here, that its storage will get reused by the time finish_command
3577 gets 'round to deleting the "use to be a bp_finish" breakpoint.
3578 We really must allow finish_command to delete a bp_finish.
3579
3580 In the absence of a general solution for the "how do we know
3581 it's safe to delete something others may have handles to?"
3582 problem, what we'll do here is just uninsert the bp_finish, and
3583 let finish_command delete it.
3584
3585 (We know the bp_finish is "doomed" in the sense that it's
3586 momentary, and will be deleted as soon as finish_command sees
3587 the inferior stopped. So it doesn't matter that the bp's
3588 address is probably bogus in the new a.out, unlike e.g., the
3589 solib breakpoints.) */
3590
3591 if (b->type == bp_finish)
3592 {
3593 continue;
3594 }
3595
3596 /* Without a symbolic address, we have little hope of the
3597 pre-exec() address meaning the same thing in the post-exec()
3598 a.out. */
3599 if (breakpoint_event_location_empty_p (b))
3600 {
3601 delete_breakpoint (b);
3602 continue;
3603 }
3604 }
3605 }
3606
3607 int
3608 detach_breakpoints (ptid_t ptid)
3609 {
3610 struct bp_location *bl, **blp_tmp;
3611 int val = 0;
3612 scoped_restore save_inferior_ptid = make_scoped_restore (&inferior_ptid);
3613 struct inferior *inf = current_inferior ();
3614
3615 if (ptid.pid () == inferior_ptid.pid ())
3616 error (_("Cannot detach breakpoints of inferior_ptid"));
3617
3618 /* Set inferior_ptid; remove_breakpoint_1 uses this global. */
3619 inferior_ptid = ptid;
3620 ALL_BP_LOCATIONS (bl, blp_tmp)
3621 {
3622 if (bl->pspace != inf->pspace)
3623 continue;
3624
3625 /* This function must physically remove breakpoints locations
3626 from the specified ptid, without modifying the breakpoint
3627 package's state. Locations of type bp_loc_other are only
3628 maintained at GDB side. So, there is no need to remove
3629 these bp_loc_other locations. Moreover, removing these
3630 would modify the breakpoint package's state. */
3631 if (bl->loc_type == bp_loc_other)
3632 continue;
3633
3634 if (bl->inserted)
3635 val |= remove_breakpoint_1 (bl, DETACH_BREAKPOINT);
3636 }
3637
3638 return val;
3639 }
3640
3641 /* Remove the breakpoint location BL from the current address space.
3642 Note that this is used to detach breakpoints from a child fork.
3643 When we get here, the child isn't in the inferior list, and neither
3644 do we have objects to represent its address space --- we should
3645 *not* look at bl->pspace->aspace here. */
3646
3647 static int
3648 remove_breakpoint_1 (struct bp_location *bl, enum remove_bp_reason reason)
3649 {
3650 int val;
3651
3652 /* BL is never in moribund_locations by our callers. */
3653 gdb_assert (bl->owner != NULL);
3654
3655 /* The type of none suggests that owner is actually deleted.
3656 This should not ever happen. */
3657 gdb_assert (bl->owner->type != bp_none);
3658
3659 if (bl->loc_type == bp_loc_software_breakpoint
3660 || bl->loc_type == bp_loc_hardware_breakpoint)
3661 {
3662 /* "Normal" instruction breakpoint: either the standard
3663 trap-instruction bp (bp_breakpoint), or a
3664 bp_hardware_breakpoint. */
3665
3666 /* First check to see if we have to handle an overlay. */
3667 if (overlay_debugging == ovly_off
3668 || bl->section == NULL
3669 || !(section_is_overlay (bl->section)))
3670 {
3671 /* No overlay handling: just remove the breakpoint. */
3672
3673 /* If we're trying to uninsert a memory breakpoint that we
3674 know is set in a dynamic object that is marked
3675 shlib_disabled, then either the dynamic object was
3676 removed with "remove-symbol-file" or with
3677 "nosharedlibrary". In the former case, we don't know
3678 whether another dynamic object might have loaded over the
3679 breakpoint's address -- the user might well let us know
3680 about it next with add-symbol-file (the whole point of
3681 add-symbol-file is letting the user manually maintain a
3682 list of dynamically loaded objects). If we have the
3683 breakpoint's shadow memory, that is, this is a software
3684 breakpoint managed by GDB, check whether the breakpoint
3685 is still inserted in memory, to avoid overwriting wrong
3686 code with stale saved shadow contents. Note that HW
3687 breakpoints don't have shadow memory, as they're
3688 implemented using a mechanism that is not dependent on
3689 being able to modify the target's memory, and as such
3690 they should always be removed. */
3691 if (bl->shlib_disabled
3692 && bl->target_info.shadow_len != 0
3693 && !memory_validate_breakpoint (bl->gdbarch, &bl->target_info))
3694 val = 0;
3695 else
3696 val = bl->owner->ops->remove_location (bl, reason);
3697 }
3698 else
3699 {
3700 /* This breakpoint is in an overlay section.
3701 Did we set a breakpoint at the LMA? */
3702 if (!overlay_events_enabled)
3703 {
3704 /* Yes -- overlay event support is not active, so we
3705 should have set a breakpoint at the LMA. Remove it.
3706 */
3707 /* Ignore any failures: if the LMA is in ROM, we will
3708 have already warned when we failed to insert it. */
3709 if (bl->loc_type == bp_loc_hardware_breakpoint)
3710 target_remove_hw_breakpoint (bl->gdbarch,
3711 &bl->overlay_target_info);
3712 else
3713 target_remove_breakpoint (bl->gdbarch,
3714 &bl->overlay_target_info,
3715 reason);
3716 }
3717 /* Did we set a breakpoint at the VMA?
3718 If so, we will have marked the breakpoint 'inserted'. */
3719 if (bl->inserted)
3720 {
3721 /* Yes -- remove it. Previously we did not bother to
3722 remove the breakpoint if the section had been
3723 unmapped, but let's not rely on that being safe. We
3724 don't know what the overlay manager might do. */
3725
3726 /* However, we should remove *software* breakpoints only
3727 if the section is still mapped, or else we overwrite
3728 wrong code with the saved shadow contents. */
3729 if (bl->loc_type == bp_loc_hardware_breakpoint
3730 || section_is_mapped (bl->section))
3731 val = bl->owner->ops->remove_location (bl, reason);
3732 else
3733 val = 0;
3734 }
3735 else
3736 {
3737 /* No -- not inserted, so no need to remove. No error. */
3738 val = 0;
3739 }
3740 }
3741
3742 /* In some cases, we might not be able to remove a breakpoint in
3743 a shared library that has already been removed, but we have
3744 not yet processed the shlib unload event. Similarly for an
3745 unloaded add-symbol-file object - the user might not yet have
3746 had the chance to remove-symbol-file it. shlib_disabled will
3747 be set if the library/object has already been removed, but
3748 the breakpoint hasn't been uninserted yet, e.g., after
3749 "nosharedlibrary" or "remove-symbol-file" with breakpoints
3750 always-inserted mode. */
3751 if (val
3752 && (bl->loc_type == bp_loc_software_breakpoint
3753 && (bl->shlib_disabled
3754 || solib_name_from_address (bl->pspace, bl->address)
3755 || shared_objfile_contains_address_p (bl->pspace,
3756 bl->address))))
3757 val = 0;
3758
3759 if (val)
3760 return val;
3761 bl->inserted = (reason == DETACH_BREAKPOINT);
3762 }
3763 else if (bl->loc_type == bp_loc_hardware_watchpoint)
3764 {
3765 gdb_assert (bl->owner->ops != NULL
3766 && bl->owner->ops->remove_location != NULL);
3767
3768 bl->inserted = (reason == DETACH_BREAKPOINT);
3769 bl->owner->ops->remove_location (bl, reason);
3770
3771 /* Failure to remove any of the hardware watchpoints comes here. */
3772 if (reason == REMOVE_BREAKPOINT && bl->inserted)
3773 warning (_("Could not remove hardware watchpoint %d."),
3774 bl->owner->number);
3775 }
3776 else if (bl->owner->type == bp_catchpoint
3777 && breakpoint_enabled (bl->owner)
3778 && !bl->duplicate)
3779 {
3780 gdb_assert (bl->owner->ops != NULL
3781 && bl->owner->ops->remove_location != NULL);
3782
3783 val = bl->owner->ops->remove_location (bl, reason);
3784 if (val)
3785 return val;
3786
3787 bl->inserted = (reason == DETACH_BREAKPOINT);
3788 }
3789
3790 return 0;
3791 }
3792
3793 static int
3794 remove_breakpoint (struct bp_location *bl)
3795 {
3796 /* BL is never in moribund_locations by our callers. */
3797 gdb_assert (bl->owner != NULL);
3798
3799 /* The type of none suggests that owner is actually deleted.
3800 This should not ever happen. */
3801 gdb_assert (bl->owner->type != bp_none);
3802
3803 scoped_restore_current_pspace_and_thread restore_pspace_thread;
3804
3805 switch_to_program_space_and_thread (bl->pspace);
3806
3807 return remove_breakpoint_1 (bl, REMOVE_BREAKPOINT);
3808 }
3809
3810 /* Clear the "inserted" flag in all breakpoints. */
3811
3812 void
3813 mark_breakpoints_out (void)
3814 {
3815 struct bp_location *bl, **blp_tmp;
3816
3817 ALL_BP_LOCATIONS (bl, blp_tmp)
3818 if (bl->pspace == current_program_space)
3819 bl->inserted = 0;
3820 }
3821
3822 /* Clear the "inserted" flag in all breakpoints and delete any
3823 breakpoints which should go away between runs of the program.
3824
3825 Plus other such housekeeping that has to be done for breakpoints
3826 between runs.
3827
3828 Note: this function gets called at the end of a run (by
3829 generic_mourn_inferior) and when a run begins (by
3830 init_wait_for_inferior). */
3831
3832
3833
3834 void
3835 breakpoint_init_inferior (enum inf_context context)
3836 {
3837 struct breakpoint *b, *b_tmp;
3838 struct program_space *pspace = current_program_space;
3839
3840 /* If breakpoint locations are shared across processes, then there's
3841 nothing to do. */
3842 if (gdbarch_has_global_breakpoints (target_gdbarch ()))
3843 return;
3844
3845 mark_breakpoints_out ();
3846
3847 ALL_BREAKPOINTS_SAFE (b, b_tmp)
3848 {
3849 if (b->loc && b->loc->pspace != pspace)
3850 continue;
3851
3852 switch (b->type)
3853 {
3854 case bp_call_dummy:
3855 case bp_longjmp_call_dummy:
3856
3857 /* If the call dummy breakpoint is at the entry point it will
3858 cause problems when the inferior is rerun, so we better get
3859 rid of it. */
3860
3861 case bp_watchpoint_scope:
3862
3863 /* Also get rid of scope breakpoints. */
3864
3865 case bp_shlib_event:
3866
3867 /* Also remove solib event breakpoints. Their addresses may
3868 have changed since the last time we ran the program.
3869 Actually we may now be debugging against different target;
3870 and so the solib backend that installed this breakpoint may
3871 not be used in by the target. E.g.,
3872
3873 (gdb) file prog-linux
3874 (gdb) run # native linux target
3875 ...
3876 (gdb) kill
3877 (gdb) file prog-win.exe
3878 (gdb) tar rem :9999 # remote Windows gdbserver.
3879 */
3880
3881 case bp_step_resume:
3882
3883 /* Also remove step-resume breakpoints. */
3884
3885 case bp_single_step:
3886
3887 /* Also remove single-step breakpoints. */
3888
3889 delete_breakpoint (b);
3890 break;
3891
3892 case bp_watchpoint:
3893 case bp_hardware_watchpoint:
3894 case bp_read_watchpoint:
3895 case bp_access_watchpoint:
3896 {
3897 struct watchpoint *w = (struct watchpoint *) b;
3898
3899 /* Likewise for watchpoints on local expressions. */
3900 if (w->exp_valid_block != NULL)
3901 delete_breakpoint (b);
3902 else
3903 {
3904 /* Get rid of existing locations, which are no longer
3905 valid. New ones will be created in
3906 update_watchpoint, when the inferior is restarted.
3907 The next update_global_location_list call will
3908 garbage collect them. */
3909 b->loc = NULL;
3910
3911 if (context == inf_starting)
3912 {
3913 /* Reset val field to force reread of starting value in
3914 insert_breakpoints. */
3915 w->val.reset (nullptr);
3916 w->val_valid = 0;
3917 }
3918 }
3919 }
3920 break;
3921 default:
3922 break;
3923 }
3924 }
3925
3926 /* Get rid of the moribund locations. */
3927 for (bp_location *bl : moribund_locations)
3928 decref_bp_location (&bl);
3929 moribund_locations.clear ();
3930 }
3931
3932 /* These functions concern about actual breakpoints inserted in the
3933 target --- to e.g. check if we need to do decr_pc adjustment or if
3934 we need to hop over the bkpt --- so we check for address space
3935 match, not program space. */
3936
3937 /* breakpoint_here_p (PC) returns non-zero if an enabled breakpoint
3938 exists at PC. It returns ordinary_breakpoint_here if it's an
3939 ordinary breakpoint, or permanent_breakpoint_here if it's a
3940 permanent breakpoint.
3941 - When continuing from a location with an ordinary breakpoint, we
3942 actually single step once before calling insert_breakpoints.
3943 - When continuing from a location with a permanent breakpoint, we
3944 need to use the `SKIP_PERMANENT_BREAKPOINT' macro, provided by
3945 the target, to advance the PC past the breakpoint. */
3946
3947 enum breakpoint_here
3948 breakpoint_here_p (const address_space *aspace, CORE_ADDR pc)
3949 {
3950 struct bp_location *bl, **blp_tmp;
3951 int any_breakpoint_here = 0;
3952
3953 ALL_BP_LOCATIONS (bl, blp_tmp)
3954 {
3955 if (bl->loc_type != bp_loc_software_breakpoint
3956 && bl->loc_type != bp_loc_hardware_breakpoint)
3957 continue;
3958
3959 /* ALL_BP_LOCATIONS bp_location has BL->OWNER always non-NULL. */
3960 if ((breakpoint_enabled (bl->owner)
3961 || bl->permanent)
3962 && breakpoint_location_address_match (bl, aspace, pc))
3963 {
3964 if (overlay_debugging
3965 && section_is_overlay (bl->section)
3966 && !section_is_mapped (bl->section))
3967 continue; /* unmapped overlay -- can't be a match */
3968 else if (bl->permanent)
3969 return permanent_breakpoint_here;
3970 else
3971 any_breakpoint_here = 1;
3972 }
3973 }
3974
3975 return any_breakpoint_here ? ordinary_breakpoint_here : no_breakpoint_here;
3976 }
3977
3978 /* See breakpoint.h. */
3979
3980 int
3981 breakpoint_in_range_p (const address_space *aspace,
3982 CORE_ADDR addr, ULONGEST len)
3983 {
3984 struct bp_location *bl, **blp_tmp;
3985
3986 ALL_BP_LOCATIONS (bl, blp_tmp)
3987 {
3988 if (bl->loc_type != bp_loc_software_breakpoint
3989 && bl->loc_type != bp_loc_hardware_breakpoint)
3990 continue;
3991
3992 if ((breakpoint_enabled (bl->owner)
3993 || bl->permanent)
3994 && breakpoint_location_address_range_overlap (bl, aspace,
3995 addr, len))
3996 {
3997 if (overlay_debugging
3998 && section_is_overlay (bl->section)
3999 && !section_is_mapped (bl->section))
4000 {
4001 /* Unmapped overlay -- can't be a match. */
4002 continue;
4003 }
4004
4005 return 1;
4006 }
4007 }
4008
4009 return 0;
4010 }
4011
4012 /* Return true if there's a moribund breakpoint at PC. */
4013
4014 int
4015 moribund_breakpoint_here_p (const address_space *aspace, CORE_ADDR pc)
4016 {
4017 for (bp_location *loc : moribund_locations)
4018 if (breakpoint_location_address_match (loc, aspace, pc))
4019 return 1;
4020
4021 return 0;
4022 }
4023
4024 /* Returns non-zero iff BL is inserted at PC, in address space
4025 ASPACE. */
4026
4027 static int
4028 bp_location_inserted_here_p (struct bp_location *bl,
4029 const address_space *aspace, CORE_ADDR pc)
4030 {
4031 if (bl->inserted
4032 && breakpoint_address_match (bl->pspace->aspace, bl->address,
4033 aspace, pc))
4034 {
4035 if (overlay_debugging
4036 && section_is_overlay (bl->section)
4037 && !section_is_mapped (bl->section))
4038 return 0; /* unmapped overlay -- can't be a match */
4039 else
4040 return 1;
4041 }
4042 return 0;
4043 }
4044
4045 /* Returns non-zero iff there's a breakpoint inserted at PC. */
4046
4047 int
4048 breakpoint_inserted_here_p (const address_space *aspace, CORE_ADDR pc)
4049 {
4050 struct bp_location **blp, **blp_tmp = NULL;
4051
4052 ALL_BP_LOCATIONS_AT_ADDR (blp, blp_tmp, pc)
4053 {
4054 struct bp_location *bl = *blp;
4055
4056 if (bl->loc_type != bp_loc_software_breakpoint
4057 && bl->loc_type != bp_loc_hardware_breakpoint)
4058 continue;
4059
4060 if (bp_location_inserted_here_p (bl, aspace, pc))
4061 return 1;
4062 }
4063 return 0;
4064 }
4065
4066 /* This function returns non-zero iff there is a software breakpoint
4067 inserted at PC. */
4068
4069 int
4070 software_breakpoint_inserted_here_p (const address_space *aspace,
4071 CORE_ADDR pc)
4072 {
4073 struct bp_location **blp, **blp_tmp = NULL;
4074
4075 ALL_BP_LOCATIONS_AT_ADDR (blp, blp_tmp, pc)
4076 {
4077 struct bp_location *bl = *blp;
4078
4079 if (bl->loc_type != bp_loc_software_breakpoint)
4080 continue;
4081
4082 if (bp_location_inserted_here_p (bl, aspace, pc))
4083 return 1;
4084 }
4085
4086 return 0;
4087 }
4088
4089 /* See breakpoint.h. */
4090
4091 int
4092 hardware_breakpoint_inserted_here_p (const address_space *aspace,
4093 CORE_ADDR pc)
4094 {
4095 struct bp_location **blp, **blp_tmp = NULL;
4096
4097 ALL_BP_LOCATIONS_AT_ADDR (blp, blp_tmp, pc)
4098 {
4099 struct bp_location *bl = *blp;
4100
4101 if (bl->loc_type != bp_loc_hardware_breakpoint)
4102 continue;
4103
4104 if (bp_location_inserted_here_p (bl, aspace, pc))
4105 return 1;
4106 }
4107
4108 return 0;
4109 }
4110
4111 int
4112 hardware_watchpoint_inserted_in_range (const address_space *aspace,
4113 CORE_ADDR addr, ULONGEST len)
4114 {
4115 struct breakpoint *bpt;
4116
4117 ALL_BREAKPOINTS (bpt)
4118 {
4119 struct bp_location *loc;
4120
4121 if (bpt->type != bp_hardware_watchpoint
4122 && bpt->type != bp_access_watchpoint)
4123 continue;
4124
4125 if (!breakpoint_enabled (bpt))
4126 continue;
4127
4128 for (loc = bpt->loc; loc; loc = loc->next)
4129 if (loc->pspace->aspace == aspace && loc->inserted)
4130 {
4131 CORE_ADDR l, h;
4132
4133 /* Check for intersection. */
4134 l = std::max<CORE_ADDR> (loc->address, addr);
4135 h = std::min<CORE_ADDR> (loc->address + loc->length, addr + len);
4136 if (l < h)
4137 return 1;
4138 }
4139 }
4140 return 0;
4141 }
4142 \f
4143
4144 /* bpstat stuff. External routines' interfaces are documented
4145 in breakpoint.h. */
4146
4147 int
4148 is_catchpoint (struct breakpoint *ep)
4149 {
4150 return (ep->type == bp_catchpoint);
4151 }
4152
4153 /* Frees any storage that is part of a bpstat. Does not walk the
4154 'next' chain. */
4155
4156 bpstats::~bpstats ()
4157 {
4158 if (bp_location_at != NULL)
4159 decref_bp_location (&bp_location_at);
4160 }
4161
4162 /* Clear a bpstat so that it says we are not at any breakpoint.
4163 Also free any storage that is part of a bpstat. */
4164
4165 void
4166 bpstat_clear (bpstat *bsp)
4167 {
4168 bpstat p;
4169 bpstat q;
4170
4171 if (bsp == 0)
4172 return;
4173 p = *bsp;
4174 while (p != NULL)
4175 {
4176 q = p->next;
4177 delete p;
4178 p = q;
4179 }
4180 *bsp = NULL;
4181 }
4182
4183 bpstats::bpstats (const bpstats &other)
4184 : next (NULL),
4185 bp_location_at (other.bp_location_at),
4186 breakpoint_at (other.breakpoint_at),
4187 commands (other.commands),
4188 print (other.print),
4189 stop (other.stop),
4190 print_it (other.print_it)
4191 {
4192 if (other.old_val != NULL)
4193 old_val = release_value (value_copy (other.old_val.get ()));
4194 incref_bp_location (bp_location_at);
4195 }
4196
4197 /* Return a copy of a bpstat. Like "bs1 = bs2" but all storage that
4198 is part of the bpstat is copied as well. */
4199
4200 bpstat
4201 bpstat_copy (bpstat bs)
4202 {
4203 bpstat p = NULL;
4204 bpstat tmp;
4205 bpstat retval = NULL;
4206
4207 if (bs == NULL)
4208 return bs;
4209
4210 for (; bs != NULL; bs = bs->next)
4211 {
4212 tmp = new bpstats (*bs);
4213
4214 if (p == NULL)
4215 /* This is the first thing in the chain. */
4216 retval = tmp;
4217 else
4218 p->next = tmp;
4219 p = tmp;
4220 }
4221 p->next = NULL;
4222 return retval;
4223 }
4224
4225 /* Find the bpstat associated with this breakpoint. */
4226
4227 bpstat
4228 bpstat_find_breakpoint (bpstat bsp, struct breakpoint *breakpoint)
4229 {
4230 if (bsp == NULL)
4231 return NULL;
4232
4233 for (; bsp != NULL; bsp = bsp->next)
4234 {
4235 if (bsp->breakpoint_at == breakpoint)
4236 return bsp;
4237 }
4238 return NULL;
4239 }
4240
4241 /* See breakpoint.h. */
4242
4243 int
4244 bpstat_explains_signal (bpstat bsp, enum gdb_signal sig)
4245 {
4246 for (; bsp != NULL; bsp = bsp->next)
4247 {
4248 if (bsp->breakpoint_at == NULL)
4249 {
4250 /* A moribund location can never explain a signal other than
4251 GDB_SIGNAL_TRAP. */
4252 if (sig == GDB_SIGNAL_TRAP)
4253 return 1;
4254 }
4255 else
4256 {
4257 if (bsp->breakpoint_at->ops->explains_signal (bsp->breakpoint_at,
4258 sig))
4259 return 1;
4260 }
4261 }
4262
4263 return 0;
4264 }
4265
4266 /* Put in *NUM the breakpoint number of the first breakpoint we are
4267 stopped at. *BSP upon return is a bpstat which points to the
4268 remaining breakpoints stopped at (but which is not guaranteed to be
4269 good for anything but further calls to bpstat_num).
4270
4271 Return 0 if passed a bpstat which does not indicate any breakpoints.
4272 Return -1 if stopped at a breakpoint that has been deleted since
4273 we set it.
4274 Return 1 otherwise. */
4275
4276 int
4277 bpstat_num (bpstat *bsp, int *num)
4278 {
4279 struct breakpoint *b;
4280
4281 if ((*bsp) == NULL)
4282 return 0; /* No more breakpoint values */
4283
4284 /* We assume we'll never have several bpstats that correspond to a
4285 single breakpoint -- otherwise, this function might return the
4286 same number more than once and this will look ugly. */
4287 b = (*bsp)->breakpoint_at;
4288 *bsp = (*bsp)->next;
4289 if (b == NULL)
4290 return -1; /* breakpoint that's been deleted since */
4291
4292 *num = b->number; /* We have its number */
4293 return 1;
4294 }
4295
4296 /* See breakpoint.h. */
4297
4298 void
4299 bpstat_clear_actions (void)
4300 {
4301 bpstat bs;
4302
4303 if (inferior_ptid == null_ptid)
4304 return;
4305
4306 thread_info *tp = inferior_thread ();
4307 for (bs = tp->control.stop_bpstat; bs != NULL; bs = bs->next)
4308 {
4309 bs->commands = NULL;
4310 bs->old_val.reset (nullptr);
4311 }
4312 }
4313
4314 /* Called when a command is about to proceed the inferior. */
4315
4316 static void
4317 breakpoint_about_to_proceed (void)
4318 {
4319 if (inferior_ptid != null_ptid)
4320 {
4321 struct thread_info *tp = inferior_thread ();
4322
4323 /* Allow inferior function calls in breakpoint commands to not
4324 interrupt the command list. When the call finishes
4325 successfully, the inferior will be standing at the same
4326 breakpoint as if nothing happened. */
4327 if (tp->control.in_infcall)
4328 return;
4329 }
4330
4331 breakpoint_proceeded = 1;
4332 }
4333
4334 /* Return non-zero iff CMD as the first line of a command sequence is `silent'
4335 or its equivalent. */
4336
4337 static int
4338 command_line_is_silent (struct command_line *cmd)
4339 {
4340 return cmd && (strcmp ("silent", cmd->line) == 0);
4341 }
4342
4343 /* Execute all the commands associated with all the breakpoints at
4344 this location. Any of these commands could cause the process to
4345 proceed beyond this point, etc. We look out for such changes by
4346 checking the global "breakpoint_proceeded" after each command.
4347
4348 Returns true if a breakpoint command resumed the inferior. In that
4349 case, it is the caller's responsibility to recall it again with the
4350 bpstat of the current thread. */
4351
4352 static int
4353 bpstat_do_actions_1 (bpstat *bsp)
4354 {
4355 bpstat bs;
4356 int again = 0;
4357
4358 /* Avoid endless recursion if a `source' command is contained
4359 in bs->commands. */
4360 if (executing_breakpoint_commands)
4361 return 0;
4362
4363 scoped_restore save_executing
4364 = make_scoped_restore (&executing_breakpoint_commands, 1);
4365
4366 scoped_restore preventer = prevent_dont_repeat ();
4367
4368 /* This pointer will iterate over the list of bpstat's. */
4369 bs = *bsp;
4370
4371 breakpoint_proceeded = 0;
4372 for (; bs != NULL; bs = bs->next)
4373 {
4374 struct command_line *cmd = NULL;
4375
4376 /* Take ownership of the BSP's command tree, if it has one.
4377
4378 The command tree could legitimately contain commands like
4379 'step' and 'next', which call clear_proceed_status, which
4380 frees stop_bpstat's command tree. To make sure this doesn't
4381 free the tree we're executing out from under us, we need to
4382 take ownership of the tree ourselves. Since a given bpstat's
4383 commands are only executed once, we don't need to copy it; we
4384 can clear the pointer in the bpstat, and make sure we free
4385 the tree when we're done. */
4386 counted_command_line ccmd = bs->commands;
4387 bs->commands = NULL;
4388 if (ccmd != NULL)
4389 cmd = ccmd.get ();
4390 if (command_line_is_silent (cmd))
4391 {
4392 /* The action has been already done by bpstat_stop_status. */
4393 cmd = cmd->next;
4394 }
4395
4396 while (cmd != NULL)
4397 {
4398 execute_control_command (cmd);
4399
4400 if (breakpoint_proceeded)
4401 break;
4402 else
4403 cmd = cmd->next;
4404 }
4405
4406 if (breakpoint_proceeded)
4407 {
4408 if (current_ui->async)
4409 /* If we are in async mode, then the target might be still
4410 running, not stopped at any breakpoint, so nothing for
4411 us to do here -- just return to the event loop. */
4412 ;
4413 else
4414 /* In sync mode, when execute_control_command returns
4415 we're already standing on the next breakpoint.
4416 Breakpoint commands for that stop were not run, since
4417 execute_command does not run breakpoint commands --
4418 only command_line_handler does, but that one is not
4419 involved in execution of breakpoint commands. So, we
4420 can now execute breakpoint commands. It should be
4421 noted that making execute_command do bpstat actions is
4422 not an option -- in this case we'll have recursive
4423 invocation of bpstat for each breakpoint with a
4424 command, and can easily blow up GDB stack. Instead, we
4425 return true, which will trigger the caller to recall us
4426 with the new stop_bpstat. */
4427 again = 1;
4428 break;
4429 }
4430 }
4431 return again;
4432 }
4433
4434 /* Helper for bpstat_do_actions. Get the current thread, if there's
4435 one, is alive and has execution. Return NULL otherwise. */
4436
4437 static thread_info *
4438 get_bpstat_thread ()
4439 {
4440 if (inferior_ptid == null_ptid || !target_has_execution)
4441 return NULL;
4442
4443 thread_info *tp = inferior_thread ();
4444 if (tp->state == THREAD_EXITED || tp->executing)
4445 return NULL;
4446 return tp;
4447 }
4448
4449 void
4450 bpstat_do_actions (void)
4451 {
4452 auto cleanup_if_error = make_scope_exit (bpstat_clear_actions);
4453 thread_info *tp;
4454
4455 /* Do any commands attached to breakpoint we are stopped at. */
4456 while ((tp = get_bpstat_thread ()) != NULL)
4457 {
4458 /* Since in sync mode, bpstat_do_actions may resume the
4459 inferior, and only return when it is stopped at the next
4460 breakpoint, we keep doing breakpoint actions until it returns
4461 false to indicate the inferior was not resumed. */
4462 if (!bpstat_do_actions_1 (&tp->control.stop_bpstat))
4463 break;
4464 }
4465
4466 cleanup_if_error.release ();
4467 }
4468
4469 /* Print out the (old or new) value associated with a watchpoint. */
4470
4471 static void
4472 watchpoint_value_print (struct value *val, struct ui_file *stream)
4473 {
4474 if (val == NULL)
4475 fprintf_unfiltered (stream, _("<unreadable>"));
4476 else
4477 {
4478 struct value_print_options opts;
4479 get_user_print_options (&opts);
4480 value_print (val, stream, &opts);
4481 }
4482 }
4483
4484 /* Print the "Thread ID hit" part of "Thread ID hit Breakpoint N" if
4485 debugging multiple threads. */
4486
4487 void
4488 maybe_print_thread_hit_breakpoint (struct ui_out *uiout)
4489 {
4490 if (uiout->is_mi_like_p ())
4491 return;
4492
4493 uiout->text ("\n");
4494
4495 if (show_thread_that_caused_stop ())
4496 {
4497 const char *name;
4498 struct thread_info *thr = inferior_thread ();
4499
4500 uiout->text ("Thread ");
4501 uiout->field_fmt ("thread-id", "%s", print_thread_id (thr));
4502
4503 name = thr->name != NULL ? thr->name : target_thread_name (thr);
4504 if (name != NULL)
4505 {
4506 uiout->text (" \"");
4507 uiout->field_fmt ("name", "%s", name);
4508 uiout->text ("\"");
4509 }
4510
4511 uiout->text (" hit ");
4512 }
4513 }
4514
4515 /* Generic routine for printing messages indicating why we
4516 stopped. The behavior of this function depends on the value
4517 'print_it' in the bpstat structure. Under some circumstances we
4518 may decide not to print anything here and delegate the task to
4519 normal_stop(). */
4520
4521 static enum print_stop_action
4522 print_bp_stop_message (bpstat bs)
4523 {
4524 switch (bs->print_it)
4525 {
4526 case print_it_noop:
4527 /* Nothing should be printed for this bpstat entry. */
4528 return PRINT_UNKNOWN;
4529 break;
4530
4531 case print_it_done:
4532 /* We still want to print the frame, but we already printed the
4533 relevant messages. */
4534 return PRINT_SRC_AND_LOC;
4535 break;
4536
4537 case print_it_normal:
4538 {
4539 struct breakpoint *b = bs->breakpoint_at;
4540
4541 /* bs->breakpoint_at can be NULL if it was a momentary breakpoint
4542 which has since been deleted. */
4543 if (b == NULL)
4544 return PRINT_UNKNOWN;
4545
4546 /* Normal case. Call the breakpoint's print_it method. */
4547 return b->ops->print_it (bs);
4548 }
4549 break;
4550
4551 default:
4552 internal_error (__FILE__, __LINE__,
4553 _("print_bp_stop_message: unrecognized enum value"));
4554 break;
4555 }
4556 }
4557
4558 /* A helper function that prints a shared library stopped event. */
4559
4560 static void
4561 print_solib_event (int is_catchpoint)
4562 {
4563 bool any_deleted = !current_program_space->deleted_solibs.empty ();
4564 bool any_added = !current_program_space->added_solibs.empty ();
4565
4566 if (!is_catchpoint)
4567 {
4568 if (any_added || any_deleted)
4569 current_uiout->text (_("Stopped due to shared library event:\n"));
4570 else
4571 current_uiout->text (_("Stopped due to shared library event (no "
4572 "libraries added or removed)\n"));
4573 }
4574
4575 if (current_uiout->is_mi_like_p ())
4576 current_uiout->field_string ("reason",
4577 async_reason_lookup (EXEC_ASYNC_SOLIB_EVENT));
4578
4579 if (any_deleted)
4580 {
4581 current_uiout->text (_(" Inferior unloaded "));
4582 ui_out_emit_list list_emitter (current_uiout, "removed");
4583 for (int ix = 0; ix < current_program_space->deleted_solibs.size (); ix++)
4584 {
4585 const std::string &name = current_program_space->deleted_solibs[ix];
4586
4587 if (ix > 0)
4588 current_uiout->text (" ");
4589 current_uiout->field_string ("library", name);
4590 current_uiout->text ("\n");
4591 }
4592 }
4593
4594 if (any_added)
4595 {
4596 current_uiout->text (_(" Inferior loaded "));
4597 ui_out_emit_list list_emitter (current_uiout, "added");
4598 bool first = true;
4599 for (so_list *iter : current_program_space->added_solibs)
4600 {
4601 if (!first)
4602 current_uiout->text (" ");
4603 first = false;
4604 current_uiout->field_string ("library", iter->so_name);
4605 current_uiout->text ("\n");
4606 }
4607 }
4608 }
4609
4610 /* Print a message indicating what happened. This is called from
4611 normal_stop(). The input to this routine is the head of the bpstat
4612 list - a list of the eventpoints that caused this stop. KIND is
4613 the target_waitkind for the stopping event. This
4614 routine calls the generic print routine for printing a message
4615 about reasons for stopping. This will print (for example) the
4616 "Breakpoint n," part of the output. The return value of this
4617 routine is one of:
4618
4619 PRINT_UNKNOWN: Means we printed nothing.
4620 PRINT_SRC_AND_LOC: Means we printed something, and expect subsequent
4621 code to print the location. An example is
4622 "Breakpoint 1, " which should be followed by
4623 the location.
4624 PRINT_SRC_ONLY: Means we printed something, but there is no need
4625 to also print the location part of the message.
4626 An example is the catch/throw messages, which
4627 don't require a location appended to the end.
4628 PRINT_NOTHING: We have done some printing and we don't need any
4629 further info to be printed. */
4630
4631 enum print_stop_action
4632 bpstat_print (bpstat bs, int kind)
4633 {
4634 enum print_stop_action val;
4635
4636 /* Maybe another breakpoint in the chain caused us to stop.
4637 (Currently all watchpoints go on the bpstat whether hit or not.
4638 That probably could (should) be changed, provided care is taken
4639 with respect to bpstat_explains_signal). */
4640 for (; bs; bs = bs->next)
4641 {
4642 val = print_bp_stop_message (bs);
4643 if (val == PRINT_SRC_ONLY
4644 || val == PRINT_SRC_AND_LOC
4645 || val == PRINT_NOTHING)
4646 return val;
4647 }
4648
4649 /* If we had hit a shared library event breakpoint,
4650 print_bp_stop_message would print out this message. If we hit an
4651 OS-level shared library event, do the same thing. */
4652 if (kind == TARGET_WAITKIND_LOADED)
4653 {
4654 print_solib_event (0);
4655 return PRINT_NOTHING;
4656 }
4657
4658 /* We reached the end of the chain, or we got a null BS to start
4659 with and nothing was printed. */
4660 return PRINT_UNKNOWN;
4661 }
4662
4663 /* Evaluate the boolean expression EXP and return the result. */
4664
4665 static bool
4666 breakpoint_cond_eval (expression *exp)
4667 {
4668 struct value *mark = value_mark ();
4669 bool res = value_true (evaluate_expression (exp));
4670
4671 value_free_to_mark (mark);
4672 return res;
4673 }
4674
4675 /* Allocate a new bpstat. Link it to the FIFO list by BS_LINK_POINTER. */
4676
4677 bpstats::bpstats (struct bp_location *bl, bpstat **bs_link_pointer)
4678 : next (NULL),
4679 bp_location_at (bl),
4680 breakpoint_at (bl->owner),
4681 commands (NULL),
4682 print (0),
4683 stop (0),
4684 print_it (print_it_normal)
4685 {
4686 incref_bp_location (bl);
4687 **bs_link_pointer = this;
4688 *bs_link_pointer = &next;
4689 }
4690
4691 bpstats::bpstats ()
4692 : next (NULL),
4693 bp_location_at (NULL),
4694 breakpoint_at (NULL),
4695 commands (NULL),
4696 print (0),
4697 stop (0),
4698 print_it (print_it_normal)
4699 {
4700 }
4701 \f
4702 /* The target has stopped with waitstatus WS. Check if any hardware
4703 watchpoints have triggered, according to the target. */
4704
4705 int
4706 watchpoints_triggered (struct target_waitstatus *ws)
4707 {
4708 bool stopped_by_watchpoint = target_stopped_by_watchpoint ();
4709 CORE_ADDR addr;
4710 struct breakpoint *b;
4711
4712 if (!stopped_by_watchpoint)
4713 {
4714 /* We were not stopped by a watchpoint. Mark all watchpoints
4715 as not triggered. */
4716 ALL_BREAKPOINTS (b)
4717 if (is_hardware_watchpoint (b))
4718 {
4719 struct watchpoint *w = (struct watchpoint *) b;
4720
4721 w->watchpoint_triggered = watch_triggered_no;
4722 }
4723
4724 return 0;
4725 }
4726
4727 if (!target_stopped_data_address (current_top_target (), &addr))
4728 {
4729 /* We were stopped by a watchpoint, but we don't know where.
4730 Mark all watchpoints as unknown. */
4731 ALL_BREAKPOINTS (b)
4732 if (is_hardware_watchpoint (b))
4733 {
4734 struct watchpoint *w = (struct watchpoint *) b;
4735
4736 w->watchpoint_triggered = watch_triggered_unknown;
4737 }
4738
4739 return 1;
4740 }
4741
4742 /* The target could report the data address. Mark watchpoints
4743 affected by this data address as triggered, and all others as not
4744 triggered. */
4745
4746 ALL_BREAKPOINTS (b)
4747 if (is_hardware_watchpoint (b))
4748 {
4749 struct watchpoint *w = (struct watchpoint *) b;
4750 struct bp_location *loc;
4751
4752 w->watchpoint_triggered = watch_triggered_no;
4753 for (loc = b->loc; loc; loc = loc->next)
4754 {
4755 if (is_masked_watchpoint (b))
4756 {
4757 CORE_ADDR newaddr = addr & w->hw_wp_mask;
4758 CORE_ADDR start = loc->address & w->hw_wp_mask;
4759
4760 if (newaddr == start)
4761 {
4762 w->watchpoint_triggered = watch_triggered_yes;
4763 break;
4764 }
4765 }
4766 /* Exact match not required. Within range is sufficient. */
4767 else if (target_watchpoint_addr_within_range (current_top_target (),
4768 addr, loc->address,
4769 loc->length))
4770 {
4771 w->watchpoint_triggered = watch_triggered_yes;
4772 break;
4773 }
4774 }
4775 }
4776
4777 return 1;
4778 }
4779
4780 /* Possible return values for watchpoint_check. */
4781 enum wp_check_result
4782 {
4783 /* The watchpoint has been deleted. */
4784 WP_DELETED = 1,
4785
4786 /* The value has changed. */
4787 WP_VALUE_CHANGED = 2,
4788
4789 /* The value has not changed. */
4790 WP_VALUE_NOT_CHANGED = 3,
4791
4792 /* Ignore this watchpoint, no matter if the value changed or not. */
4793 WP_IGNORE = 4,
4794 };
4795
4796 #define BP_TEMPFLAG 1
4797 #define BP_HARDWAREFLAG 2
4798
4799 /* Evaluate watchpoint condition expression and check if its value
4800 changed. */
4801
4802 static wp_check_result
4803 watchpoint_check (bpstat bs)
4804 {
4805 struct watchpoint *b;
4806 struct frame_info *fr;
4807 int within_current_scope;
4808
4809 /* BS is built from an existing struct breakpoint. */
4810 gdb_assert (bs->breakpoint_at != NULL);
4811 b = (struct watchpoint *) bs->breakpoint_at;
4812
4813 /* If this is a local watchpoint, we only want to check if the
4814 watchpoint frame is in scope if the current thread is the thread
4815 that was used to create the watchpoint. */
4816 if (!watchpoint_in_thread_scope (b))
4817 return WP_IGNORE;
4818
4819 if (b->exp_valid_block == NULL)
4820 within_current_scope = 1;
4821 else
4822 {
4823 struct frame_info *frame = get_current_frame ();
4824 struct gdbarch *frame_arch = get_frame_arch (frame);
4825 CORE_ADDR frame_pc = get_frame_pc (frame);
4826
4827 /* stack_frame_destroyed_p() returns a non-zero value if we're
4828 still in the function but the stack frame has already been
4829 invalidated. Since we can't rely on the values of local
4830 variables after the stack has been destroyed, we are treating
4831 the watchpoint in that state as `not changed' without further
4832 checking. Don't mark watchpoints as changed if the current
4833 frame is in an epilogue - even if they are in some other
4834 frame, our view of the stack is likely to be wrong and
4835 frame_find_by_id could error out. */
4836 if (gdbarch_stack_frame_destroyed_p (frame_arch, frame_pc))
4837 return WP_IGNORE;
4838
4839 fr = frame_find_by_id (b->watchpoint_frame);
4840 within_current_scope = (fr != NULL);
4841
4842 /* If we've gotten confused in the unwinder, we might have
4843 returned a frame that can't describe this variable. */
4844 if (within_current_scope)
4845 {
4846 struct symbol *function;
4847
4848 function = get_frame_function (fr);
4849 if (function == NULL
4850 || !contained_in (b->exp_valid_block,
4851 SYMBOL_BLOCK_VALUE (function)))
4852 within_current_scope = 0;
4853 }
4854
4855 if (within_current_scope)
4856 /* If we end up stopping, the current frame will get selected
4857 in normal_stop. So this call to select_frame won't affect
4858 the user. */
4859 select_frame (fr);
4860 }
4861
4862 if (within_current_scope)
4863 {
4864 /* We use value_{,free_to_}mark because it could be a *long*
4865 time before we return to the command level and call
4866 free_all_values. We can't call free_all_values because we
4867 might be in the middle of evaluating a function call. */
4868
4869 int pc = 0;
4870 struct value *mark;
4871 struct value *new_val;
4872
4873 if (is_masked_watchpoint (b))
4874 /* Since we don't know the exact trigger address (from
4875 stopped_data_address), just tell the user we've triggered
4876 a mask watchpoint. */
4877 return WP_VALUE_CHANGED;
4878
4879 mark = value_mark ();
4880 fetch_subexp_value (b->exp.get (), &pc, &new_val, NULL, NULL, 0);
4881
4882 if (b->val_bitsize != 0)
4883 new_val = extract_bitfield_from_watchpoint_value (b, new_val);
4884
4885 /* We use value_equal_contents instead of value_equal because
4886 the latter coerces an array to a pointer, thus comparing just
4887 the address of the array instead of its contents. This is
4888 not what we want. */
4889 if ((b->val != NULL) != (new_val != NULL)
4890 || (b->val != NULL && !value_equal_contents (b->val.get (),
4891 new_val)))
4892 {
4893 bs->old_val = b->val;
4894 b->val = release_value (new_val);
4895 b->val_valid = 1;
4896 if (new_val != NULL)
4897 value_free_to_mark (mark);
4898 return WP_VALUE_CHANGED;
4899 }
4900 else
4901 {
4902 /* Nothing changed. */
4903 value_free_to_mark (mark);
4904 return WP_VALUE_NOT_CHANGED;
4905 }
4906 }
4907 else
4908 {
4909 /* This seems like the only logical thing to do because
4910 if we temporarily ignored the watchpoint, then when
4911 we reenter the block in which it is valid it contains
4912 garbage (in the case of a function, it may have two
4913 garbage values, one before and one after the prologue).
4914 So we can't even detect the first assignment to it and
4915 watch after that (since the garbage may or may not equal
4916 the first value assigned). */
4917 /* We print all the stop information in
4918 breakpoint_ops->print_it, but in this case, by the time we
4919 call breakpoint_ops->print_it this bp will be deleted
4920 already. So we have no choice but print the information
4921 here. */
4922
4923 SWITCH_THRU_ALL_UIS ()
4924 {
4925 struct ui_out *uiout = current_uiout;
4926
4927 if (uiout->is_mi_like_p ())
4928 uiout->field_string
4929 ("reason", async_reason_lookup (EXEC_ASYNC_WATCHPOINT_SCOPE));
4930 uiout->text ("\nWatchpoint ");
4931 uiout->field_int ("wpnum", b->number);
4932 uiout->text (" deleted because the program has left the block in\n"
4933 "which its expression is valid.\n");
4934 }
4935
4936 /* Make sure the watchpoint's commands aren't executed. */
4937 b->commands = NULL;
4938 watchpoint_del_at_next_stop (b);
4939
4940 return WP_DELETED;
4941 }
4942 }
4943
4944 /* Return true if it looks like target has stopped due to hitting
4945 breakpoint location BL. This function does not check if we should
4946 stop, only if BL explains the stop. */
4947
4948 static int
4949 bpstat_check_location (const struct bp_location *bl,
4950 const address_space *aspace, CORE_ADDR bp_addr,
4951 const struct target_waitstatus *ws)
4952 {
4953 struct breakpoint *b = bl->owner;
4954
4955 /* BL is from an existing breakpoint. */
4956 gdb_assert (b != NULL);
4957
4958 return b->ops->breakpoint_hit (bl, aspace, bp_addr, ws);
4959 }
4960
4961 /* Determine if the watched values have actually changed, and we
4962 should stop. If not, set BS->stop to 0. */
4963
4964 static void
4965 bpstat_check_watchpoint (bpstat bs)
4966 {
4967 const struct bp_location *bl;
4968 struct watchpoint *b;
4969
4970 /* BS is built for existing struct breakpoint. */
4971 bl = bs->bp_location_at;
4972 gdb_assert (bl != NULL);
4973 b = (struct watchpoint *) bs->breakpoint_at;
4974 gdb_assert (b != NULL);
4975
4976 {
4977 int must_check_value = 0;
4978
4979 if (b->type == bp_watchpoint)
4980 /* For a software watchpoint, we must always check the
4981 watched value. */
4982 must_check_value = 1;
4983 else if (b->watchpoint_triggered == watch_triggered_yes)
4984 /* We have a hardware watchpoint (read, write, or access)
4985 and the target earlier reported an address watched by
4986 this watchpoint. */
4987 must_check_value = 1;
4988 else if (b->watchpoint_triggered == watch_triggered_unknown
4989 && b->type == bp_hardware_watchpoint)
4990 /* We were stopped by a hardware watchpoint, but the target could
4991 not report the data address. We must check the watchpoint's
4992 value. Access and read watchpoints are out of luck; without
4993 a data address, we can't figure it out. */
4994 must_check_value = 1;
4995
4996 if (must_check_value)
4997 {
4998 wp_check_result e;
4999
5000 try
5001 {
5002 e = watchpoint_check (bs);
5003 }
5004 catch (const gdb_exception &ex)
5005 {
5006 exception_fprintf (gdb_stderr, ex,
5007 "Error evaluating expression "
5008 "for watchpoint %d\n",
5009 b->number);
5010
5011 SWITCH_THRU_ALL_UIS ()
5012 {
5013 printf_filtered (_("Watchpoint %d deleted.\n"),
5014 b->number);
5015 }
5016 watchpoint_del_at_next_stop (b);
5017 e = WP_DELETED;
5018 }
5019
5020 switch (e)
5021 {
5022 case WP_DELETED:
5023 /* We've already printed what needs to be printed. */
5024 bs->print_it = print_it_done;
5025 /* Stop. */
5026 break;
5027 case WP_IGNORE:
5028 bs->print_it = print_it_noop;
5029 bs->stop = 0;
5030 break;
5031 case WP_VALUE_CHANGED:
5032 if (b->type == bp_read_watchpoint)
5033 {
5034 /* There are two cases to consider here:
5035
5036 1. We're watching the triggered memory for reads.
5037 In that case, trust the target, and always report
5038 the watchpoint hit to the user. Even though
5039 reads don't cause value changes, the value may
5040 have changed since the last time it was read, and
5041 since we're not trapping writes, we will not see
5042 those, and as such we should ignore our notion of
5043 old value.
5044
5045 2. We're watching the triggered memory for both
5046 reads and writes. There are two ways this may
5047 happen:
5048
5049 2.1. This is a target that can't break on data
5050 reads only, but can break on accesses (reads or
5051 writes), such as e.g., x86. We detect this case
5052 at the time we try to insert read watchpoints.
5053
5054 2.2. Otherwise, the target supports read
5055 watchpoints, but, the user set an access or write
5056 watchpoint watching the same memory as this read
5057 watchpoint.
5058
5059 If we're watching memory writes as well as reads,
5060 ignore watchpoint hits when we find that the
5061 value hasn't changed, as reads don't cause
5062 changes. This still gives false positives when
5063 the program writes the same value to memory as
5064 what there was already in memory (we will confuse
5065 it for a read), but it's much better than
5066 nothing. */
5067
5068 int other_write_watchpoint = 0;
5069
5070 if (bl->watchpoint_type == hw_read)
5071 {
5072 struct breakpoint *other_b;
5073
5074 ALL_BREAKPOINTS (other_b)
5075 if (other_b->type == bp_hardware_watchpoint
5076 || other_b->type == bp_access_watchpoint)
5077 {
5078 struct watchpoint *other_w =
5079 (struct watchpoint *) other_b;
5080
5081 if (other_w->watchpoint_triggered
5082 == watch_triggered_yes)
5083 {
5084 other_write_watchpoint = 1;
5085 break;
5086 }
5087 }
5088 }
5089
5090 if (other_write_watchpoint
5091 || bl->watchpoint_type == hw_access)
5092 {
5093 /* We're watching the same memory for writes,
5094 and the value changed since the last time we
5095 updated it, so this trap must be for a write.
5096 Ignore it. */
5097 bs->print_it = print_it_noop;
5098 bs->stop = 0;
5099 }
5100 }
5101 break;
5102 case WP_VALUE_NOT_CHANGED:
5103 if (b->type == bp_hardware_watchpoint
5104 || b->type == bp_watchpoint)
5105 {
5106 /* Don't stop: write watchpoints shouldn't fire if
5107 the value hasn't changed. */
5108 bs->print_it = print_it_noop;
5109 bs->stop = 0;
5110 }
5111 /* Stop. */
5112 break;
5113 default:
5114 /* Can't happen. */
5115 break;
5116 }
5117 }
5118 else /* must_check_value == 0 */
5119 {
5120 /* This is a case where some watchpoint(s) triggered, but
5121 not at the address of this watchpoint, or else no
5122 watchpoint triggered after all. So don't print
5123 anything for this watchpoint. */
5124 bs->print_it = print_it_noop;
5125 bs->stop = 0;
5126 }
5127 }
5128 }
5129
5130 /* For breakpoints that are currently marked as telling gdb to stop,
5131 check conditions (condition proper, frame, thread and ignore count)
5132 of breakpoint referred to by BS. If we should not stop for this
5133 breakpoint, set BS->stop to 0. */
5134
5135 static void
5136 bpstat_check_breakpoint_conditions (bpstat bs, thread_info *thread)
5137 {
5138 const struct bp_location *bl;
5139 struct breakpoint *b;
5140 /* Assume stop. */
5141 bool condition_result = true;
5142 struct expression *cond;
5143
5144 gdb_assert (bs->stop);
5145
5146 /* BS is built for existing struct breakpoint. */
5147 bl = bs->bp_location_at;
5148 gdb_assert (bl != NULL);
5149 b = bs->breakpoint_at;
5150 gdb_assert (b != NULL);
5151
5152 /* Even if the target evaluated the condition on its end and notified GDB, we
5153 need to do so again since GDB does not know if we stopped due to a
5154 breakpoint or a single step breakpoint. */
5155
5156 if (frame_id_p (b->frame_id)
5157 && !frame_id_eq (b->frame_id, get_stack_frame_id (get_current_frame ())))
5158 {
5159 bs->stop = 0;
5160 return;
5161 }
5162
5163 /* If this is a thread/task-specific breakpoint, don't waste cpu
5164 evaluating the condition if this isn't the specified
5165 thread/task. */
5166 if ((b->thread != -1 && b->thread != thread->global_num)
5167 || (b->task != 0 && b->task != ada_get_task_number (thread)))
5168 {
5169 bs->stop = 0;
5170 return;
5171 }
5172
5173 /* Evaluate extension language breakpoints that have a "stop" method
5174 implemented. */
5175 bs->stop = breakpoint_ext_lang_cond_says_stop (b);
5176
5177 if (is_watchpoint (b))
5178 {
5179 struct watchpoint *w = (struct watchpoint *) b;
5180
5181 cond = w->cond_exp.get ();
5182 }
5183 else
5184 cond = bl->cond.get ();
5185
5186 if (cond && b->disposition != disp_del_at_next_stop)
5187 {
5188 int within_current_scope = 1;
5189 struct watchpoint * w;
5190
5191 /* We use value_mark and value_free_to_mark because it could
5192 be a long time before we return to the command level and
5193 call free_all_values. We can't call free_all_values
5194 because we might be in the middle of evaluating a
5195 function call. */
5196 struct value *mark = value_mark ();
5197
5198 if (is_watchpoint (b))
5199 w = (struct watchpoint *) b;
5200 else
5201 w = NULL;
5202
5203 /* Need to select the frame, with all that implies so that
5204 the conditions will have the right context. Because we
5205 use the frame, we will not see an inlined function's
5206 variables when we arrive at a breakpoint at the start
5207 of the inlined function; the current frame will be the
5208 call site. */
5209 if (w == NULL || w->cond_exp_valid_block == NULL)
5210 select_frame (get_current_frame ());
5211 else
5212 {
5213 struct frame_info *frame;
5214
5215 /* For local watchpoint expressions, which particular
5216 instance of a local is being watched matters, so we
5217 keep track of the frame to evaluate the expression
5218 in. To evaluate the condition however, it doesn't
5219 really matter which instantiation of the function
5220 where the condition makes sense triggers the
5221 watchpoint. This allows an expression like "watch
5222 global if q > 10" set in `func', catch writes to
5223 global on all threads that call `func', or catch
5224 writes on all recursive calls of `func' by a single
5225 thread. We simply always evaluate the condition in
5226 the innermost frame that's executing where it makes
5227 sense to evaluate the condition. It seems
5228 intuitive. */
5229 frame = block_innermost_frame (w->cond_exp_valid_block);
5230 if (frame != NULL)
5231 select_frame (frame);
5232 else
5233 within_current_scope = 0;
5234 }
5235 if (within_current_scope)
5236 {
5237 try
5238 {
5239 condition_result = breakpoint_cond_eval (cond);
5240 }
5241 catch (const gdb_exception &ex)
5242 {
5243 exception_fprintf (gdb_stderr, ex,
5244 "Error in testing breakpoint condition:\n");
5245 }
5246 }
5247 else
5248 {
5249 warning (_("Watchpoint condition cannot be tested "
5250 "in the current scope"));
5251 /* If we failed to set the right context for this
5252 watchpoint, unconditionally report it. */
5253 }
5254 /* FIXME-someday, should give breakpoint #. */
5255 value_free_to_mark (mark);
5256 }
5257
5258 if (cond && !condition_result)
5259 {
5260 bs->stop = 0;
5261 }
5262 else if (b->ignore_count > 0)
5263 {
5264 b->ignore_count--;
5265 bs->stop = 0;
5266 /* Increase the hit count even though we don't stop. */
5267 ++(b->hit_count);
5268 gdb::observers::breakpoint_modified.notify (b);
5269 }
5270 }
5271
5272 /* Returns true if we need to track moribund locations of LOC's type
5273 on the current target. */
5274
5275 static int
5276 need_moribund_for_location_type (struct bp_location *loc)
5277 {
5278 return ((loc->loc_type == bp_loc_software_breakpoint
5279 && !target_supports_stopped_by_sw_breakpoint ())
5280 || (loc->loc_type == bp_loc_hardware_breakpoint
5281 && !target_supports_stopped_by_hw_breakpoint ()));
5282 }
5283
5284 /* See breakpoint.h. */
5285
5286 bpstat
5287 build_bpstat_chain (const address_space *aspace, CORE_ADDR bp_addr,
5288 const struct target_waitstatus *ws)
5289 {
5290 struct breakpoint *b;
5291 bpstat bs_head = NULL, *bs_link = &bs_head;
5292
5293 ALL_BREAKPOINTS (b)
5294 {
5295 if (!breakpoint_enabled (b))
5296 continue;
5297
5298 for (bp_location *bl = b->loc; bl != NULL; bl = bl->next)
5299 {
5300 /* For hardware watchpoints, we look only at the first
5301 location. The watchpoint_check function will work on the
5302 entire expression, not the individual locations. For
5303 read watchpoints, the watchpoints_triggered function has
5304 checked all locations already. */
5305 if (b->type == bp_hardware_watchpoint && bl != b->loc)
5306 break;
5307
5308 if (!bl->enabled || bl->shlib_disabled)
5309 continue;
5310
5311 if (!bpstat_check_location (bl, aspace, bp_addr, ws))
5312 continue;
5313
5314 /* Come here if it's a watchpoint, or if the break address
5315 matches. */
5316
5317 bpstat bs = new bpstats (bl, &bs_link); /* Alloc a bpstat to
5318 explain stop. */
5319
5320 /* Assume we stop. Should we find a watchpoint that is not
5321 actually triggered, or if the condition of the breakpoint
5322 evaluates as false, we'll reset 'stop' to 0. */
5323 bs->stop = 1;
5324 bs->print = 1;
5325
5326 /* If this is a scope breakpoint, mark the associated
5327 watchpoint as triggered so that we will handle the
5328 out-of-scope event. We'll get to the watchpoint next
5329 iteration. */
5330 if (b->type == bp_watchpoint_scope && b->related_breakpoint != b)
5331 {
5332 struct watchpoint *w = (struct watchpoint *) b->related_breakpoint;
5333
5334 w->watchpoint_triggered = watch_triggered_yes;
5335 }
5336 }
5337 }
5338
5339 /* Check if a moribund breakpoint explains the stop. */
5340 if (!target_supports_stopped_by_sw_breakpoint ()
5341 || !target_supports_stopped_by_hw_breakpoint ())
5342 {
5343 for (bp_location *loc : moribund_locations)
5344 {
5345 if (breakpoint_location_address_match (loc, aspace, bp_addr)
5346 && need_moribund_for_location_type (loc))
5347 {
5348 bpstat bs = new bpstats (loc, &bs_link);
5349 /* For hits of moribund locations, we should just proceed. */
5350 bs->stop = 0;
5351 bs->print = 0;
5352 bs->print_it = print_it_noop;
5353 }
5354 }
5355 }
5356
5357 return bs_head;
5358 }
5359
5360 /* See breakpoint.h. */
5361
5362 bpstat
5363 bpstat_stop_status (const address_space *aspace,
5364 CORE_ADDR bp_addr, thread_info *thread,
5365 const struct target_waitstatus *ws,
5366 bpstat stop_chain)
5367 {
5368 struct breakpoint *b = NULL;
5369 /* First item of allocated bpstat's. */
5370 bpstat bs_head = stop_chain;
5371 bpstat bs;
5372 int need_remove_insert;
5373 int removed_any;
5374
5375 /* First, build the bpstat chain with locations that explain a
5376 target stop, while being careful to not set the target running,
5377 as that may invalidate locations (in particular watchpoint
5378 locations are recreated). Resuming will happen here with
5379 breakpoint conditions or watchpoint expressions that include
5380 inferior function calls. */
5381 if (bs_head == NULL)
5382 bs_head = build_bpstat_chain (aspace, bp_addr, ws);
5383
5384 /* A bit of special processing for shlib breakpoints. We need to
5385 process solib loading here, so that the lists of loaded and
5386 unloaded libraries are correct before we handle "catch load" and
5387 "catch unload". */
5388 for (bs = bs_head; bs != NULL; bs = bs->next)
5389 {
5390 if (bs->breakpoint_at && bs->breakpoint_at->type == bp_shlib_event)
5391 {
5392 handle_solib_event ();
5393 break;
5394 }
5395 }
5396
5397 /* Now go through the locations that caused the target to stop, and
5398 check whether we're interested in reporting this stop to higher
5399 layers, or whether we should resume the target transparently. */
5400
5401 removed_any = 0;
5402
5403 for (bs = bs_head; bs != NULL; bs = bs->next)
5404 {
5405 if (!bs->stop)
5406 continue;
5407
5408 b = bs->breakpoint_at;
5409 b->ops->check_status (bs);
5410 if (bs->stop)
5411 {
5412 bpstat_check_breakpoint_conditions (bs, thread);
5413
5414 if (bs->stop)
5415 {
5416 ++(b->hit_count);
5417 gdb::observers::breakpoint_modified.notify (b);
5418
5419 /* We will stop here. */
5420 if (b->disposition == disp_disable)
5421 {
5422 --(b->enable_count);
5423 if (b->enable_count <= 0)
5424 b->enable_state = bp_disabled;
5425 removed_any = 1;
5426 }
5427 if (b->silent)
5428 bs->print = 0;
5429 bs->commands = b->commands;
5430 if (command_line_is_silent (bs->commands
5431 ? bs->commands.get () : NULL))
5432 bs->print = 0;
5433
5434 b->ops->after_condition_true (bs);
5435 }
5436
5437 }
5438
5439 /* Print nothing for this entry if we don't stop or don't
5440 print. */
5441 if (!bs->stop || !bs->print)
5442 bs->print_it = print_it_noop;
5443 }
5444
5445 /* If we aren't stopping, the value of some hardware watchpoint may
5446 not have changed, but the intermediate memory locations we are
5447 watching may have. Don't bother if we're stopping; this will get
5448 done later. */
5449 need_remove_insert = 0;
5450 if (! bpstat_causes_stop (bs_head))
5451 for (bs = bs_head; bs != NULL; bs = bs->next)
5452 if (!bs->stop
5453 && bs->breakpoint_at
5454 && is_hardware_watchpoint (bs->breakpoint_at))
5455 {
5456 struct watchpoint *w = (struct watchpoint *) bs->breakpoint_at;
5457
5458 update_watchpoint (w, 0 /* don't reparse. */);
5459 need_remove_insert = 1;
5460 }
5461
5462 if (need_remove_insert)
5463 update_global_location_list (UGLL_MAY_INSERT);
5464 else if (removed_any)
5465 update_global_location_list (UGLL_DONT_INSERT);
5466
5467 return bs_head;
5468 }
5469
5470 static void
5471 handle_jit_event (void)
5472 {
5473 struct frame_info *frame;
5474 struct gdbarch *gdbarch;
5475
5476 if (debug_infrun)
5477 fprintf_unfiltered (gdb_stdlog, "handling bp_jit_event\n");
5478
5479 /* Switch terminal for any messages produced by
5480 breakpoint_re_set. */
5481 target_terminal::ours_for_output ();
5482
5483 frame = get_current_frame ();
5484 gdbarch = get_frame_arch (frame);
5485
5486 jit_event_handler (gdbarch);
5487
5488 target_terminal::inferior ();
5489 }
5490
5491 /* Prepare WHAT final decision for infrun. */
5492
5493 /* Decide what infrun needs to do with this bpstat. */
5494
5495 struct bpstat_what
5496 bpstat_what (bpstat bs_head)
5497 {
5498 struct bpstat_what retval;
5499 bpstat bs;
5500
5501 retval.main_action = BPSTAT_WHAT_KEEP_CHECKING;
5502 retval.call_dummy = STOP_NONE;
5503 retval.is_longjmp = 0;
5504
5505 for (bs = bs_head; bs != NULL; bs = bs->next)
5506 {
5507 /* Extract this BS's action. After processing each BS, we check
5508 if its action overrides all we've seem so far. */
5509 enum bpstat_what_main_action this_action = BPSTAT_WHAT_KEEP_CHECKING;
5510 enum bptype bptype;
5511
5512 if (bs->breakpoint_at == NULL)
5513 {
5514 /* I suspect this can happen if it was a momentary
5515 breakpoint which has since been deleted. */
5516 bptype = bp_none;
5517 }
5518 else
5519 bptype = bs->breakpoint_at->type;
5520
5521 switch (bptype)
5522 {
5523 case bp_none:
5524 break;
5525 case bp_breakpoint:
5526 case bp_hardware_breakpoint:
5527 case bp_single_step:
5528 case bp_until:
5529 case bp_finish:
5530 case bp_shlib_event:
5531 if (bs->stop)
5532 {
5533 if (bs->print)
5534 this_action = BPSTAT_WHAT_STOP_NOISY;
5535 else
5536 this_action = BPSTAT_WHAT_STOP_SILENT;
5537 }
5538 else
5539 this_action = BPSTAT_WHAT_SINGLE;
5540 break;
5541 case bp_watchpoint:
5542 case bp_hardware_watchpoint:
5543 case bp_read_watchpoint:
5544 case bp_access_watchpoint:
5545 if (bs->stop)
5546 {
5547 if (bs->print)
5548 this_action = BPSTAT_WHAT_STOP_NOISY;
5549 else
5550 this_action = BPSTAT_WHAT_STOP_SILENT;
5551 }
5552 else
5553 {
5554 /* There was a watchpoint, but we're not stopping.
5555 This requires no further action. */
5556 }
5557 break;
5558 case bp_longjmp:
5559 case bp_longjmp_call_dummy:
5560 case bp_exception:
5561 if (bs->stop)
5562 {
5563 this_action = BPSTAT_WHAT_SET_LONGJMP_RESUME;
5564 retval.is_longjmp = bptype != bp_exception;
5565 }
5566 else
5567 this_action = BPSTAT_WHAT_SINGLE;
5568 break;
5569 case bp_longjmp_resume:
5570 case bp_exception_resume:
5571 if (bs->stop)
5572 {
5573 this_action = BPSTAT_WHAT_CLEAR_LONGJMP_RESUME;
5574 retval.is_longjmp = bptype == bp_longjmp_resume;
5575 }
5576 else
5577 this_action = BPSTAT_WHAT_SINGLE;
5578 break;
5579 case bp_step_resume:
5580 if (bs->stop)
5581 this_action = BPSTAT_WHAT_STEP_RESUME;
5582 else
5583 {
5584 /* It is for the wrong frame. */
5585 this_action = BPSTAT_WHAT_SINGLE;
5586 }
5587 break;
5588 case bp_hp_step_resume:
5589 if (bs->stop)
5590 this_action = BPSTAT_WHAT_HP_STEP_RESUME;
5591 else
5592 {
5593 /* It is for the wrong frame. */
5594 this_action = BPSTAT_WHAT_SINGLE;
5595 }
5596 break;
5597 case bp_watchpoint_scope:
5598 case bp_thread_event:
5599 case bp_overlay_event:
5600 case bp_longjmp_master:
5601 case bp_std_terminate_master:
5602 case bp_exception_master:
5603 this_action = BPSTAT_WHAT_SINGLE;
5604 break;
5605 case bp_catchpoint:
5606 if (bs->stop)
5607 {
5608 if (bs->print)
5609 this_action = BPSTAT_WHAT_STOP_NOISY;
5610 else
5611 this_action = BPSTAT_WHAT_STOP_SILENT;
5612 }
5613 else
5614 {
5615 /* There was a catchpoint, but we're not stopping.
5616 This requires no further action. */
5617 }
5618 break;
5619 case bp_jit_event:
5620 this_action = BPSTAT_WHAT_SINGLE;
5621 break;
5622 case bp_call_dummy:
5623 /* Make sure the action is stop (silent or noisy),
5624 so infrun.c pops the dummy frame. */
5625 retval.call_dummy = STOP_STACK_DUMMY;
5626 this_action = BPSTAT_WHAT_STOP_SILENT;
5627 break;
5628 case bp_std_terminate:
5629 /* Make sure the action is stop (silent or noisy),
5630 so infrun.c pops the dummy frame. */
5631 retval.call_dummy = STOP_STD_TERMINATE;
5632 this_action = BPSTAT_WHAT_STOP_SILENT;
5633 break;
5634 case bp_tracepoint:
5635 case bp_fast_tracepoint:
5636 case bp_static_tracepoint:
5637 /* Tracepoint hits should not be reported back to GDB, and
5638 if one got through somehow, it should have been filtered
5639 out already. */
5640 internal_error (__FILE__, __LINE__,
5641 _("bpstat_what: tracepoint encountered"));
5642 break;
5643 case bp_gnu_ifunc_resolver:
5644 /* Step over it (and insert bp_gnu_ifunc_resolver_return). */
5645 this_action = BPSTAT_WHAT_SINGLE;
5646 break;
5647 case bp_gnu_ifunc_resolver_return:
5648 /* The breakpoint will be removed, execution will restart from the
5649 PC of the former breakpoint. */
5650 this_action = BPSTAT_WHAT_KEEP_CHECKING;
5651 break;
5652
5653 case bp_dprintf:
5654 if (bs->stop)
5655 this_action = BPSTAT_WHAT_STOP_SILENT;
5656 else
5657 this_action = BPSTAT_WHAT_SINGLE;
5658 break;
5659
5660 default:
5661 internal_error (__FILE__, __LINE__,
5662 _("bpstat_what: unhandled bptype %d"), (int) bptype);
5663 }
5664
5665 retval.main_action = std::max (retval.main_action, this_action);
5666 }
5667
5668 return retval;
5669 }
5670
5671 void
5672 bpstat_run_callbacks (bpstat bs_head)
5673 {
5674 bpstat bs;
5675
5676 for (bs = bs_head; bs != NULL; bs = bs->next)
5677 {
5678 struct breakpoint *b = bs->breakpoint_at;
5679
5680 if (b == NULL)
5681 continue;
5682 switch (b->type)
5683 {
5684 case bp_jit_event:
5685 handle_jit_event ();
5686 break;
5687 case bp_gnu_ifunc_resolver:
5688 gnu_ifunc_resolver_stop (b);
5689 break;
5690 case bp_gnu_ifunc_resolver_return:
5691 gnu_ifunc_resolver_return_stop (b);
5692 break;
5693 }
5694 }
5695 }
5696
5697 /* Nonzero if we should step constantly (e.g. watchpoints on machines
5698 without hardware support). This isn't related to a specific bpstat,
5699 just to things like whether watchpoints are set. */
5700
5701 int
5702 bpstat_should_step (void)
5703 {
5704 struct breakpoint *b;
5705
5706 ALL_BREAKPOINTS (b)
5707 if (breakpoint_enabled (b) && b->type == bp_watchpoint && b->loc != NULL)
5708 return 1;
5709 return 0;
5710 }
5711
5712 int
5713 bpstat_causes_stop (bpstat bs)
5714 {
5715 for (; bs != NULL; bs = bs->next)
5716 if (bs->stop)
5717 return 1;
5718
5719 return 0;
5720 }
5721
5722 \f
5723
5724 /* Compute a string of spaces suitable to indent the next line
5725 so it starts at the position corresponding to the table column
5726 named COL_NAME in the currently active table of UIOUT. */
5727
5728 static char *
5729 wrap_indent_at_field (struct ui_out *uiout, const char *col_name)
5730 {
5731 static char wrap_indent[80];
5732 int i, total_width, width, align;
5733 const char *text;
5734
5735 total_width = 0;
5736 for (i = 1; uiout->query_table_field (i, &width, &align, &text); i++)
5737 {
5738 if (strcmp (text, col_name) == 0)
5739 {
5740 gdb_assert (total_width < sizeof wrap_indent);
5741 memset (wrap_indent, ' ', total_width);
5742 wrap_indent[total_width] = 0;
5743
5744 return wrap_indent;
5745 }
5746
5747 total_width += width + 1;
5748 }
5749
5750 return NULL;
5751 }
5752
5753 /* Determine if the locations of this breakpoint will have their conditions
5754 evaluated by the target, host or a mix of both. Returns the following:
5755
5756 "host": Host evals condition.
5757 "host or target": Host or Target evals condition.
5758 "target": Target evals condition.
5759 */
5760
5761 static const char *
5762 bp_condition_evaluator (struct breakpoint *b)
5763 {
5764 struct bp_location *bl;
5765 char host_evals = 0;
5766 char target_evals = 0;
5767
5768 if (!b)
5769 return NULL;
5770
5771 if (!is_breakpoint (b))
5772 return NULL;
5773
5774 if (gdb_evaluates_breakpoint_condition_p ()
5775 || !target_supports_evaluation_of_breakpoint_conditions ())
5776 return condition_evaluation_host;
5777
5778 for (bl = b->loc; bl; bl = bl->next)
5779 {
5780 if (bl->cond_bytecode)
5781 target_evals++;
5782 else
5783 host_evals++;
5784 }
5785
5786 if (host_evals && target_evals)
5787 return condition_evaluation_both;
5788 else if (target_evals)
5789 return condition_evaluation_target;
5790 else
5791 return condition_evaluation_host;
5792 }
5793
5794 /* Determine the breakpoint location's condition evaluator. This is
5795 similar to bp_condition_evaluator, but for locations. */
5796
5797 static const char *
5798 bp_location_condition_evaluator (struct bp_location *bl)
5799 {
5800 if (bl && !is_breakpoint (bl->owner))
5801 return NULL;
5802
5803 if (gdb_evaluates_breakpoint_condition_p ()
5804 || !target_supports_evaluation_of_breakpoint_conditions ())
5805 return condition_evaluation_host;
5806
5807 if (bl && bl->cond_bytecode)
5808 return condition_evaluation_target;
5809 else
5810 return condition_evaluation_host;
5811 }
5812
5813 /* Print the LOC location out of the list of B->LOC locations. */
5814
5815 static void
5816 print_breakpoint_location (struct breakpoint *b,
5817 struct bp_location *loc)
5818 {
5819 struct ui_out *uiout = current_uiout;
5820
5821 scoped_restore_current_program_space restore_pspace;
5822
5823 if (loc != NULL && loc->shlib_disabled)
5824 loc = NULL;
5825
5826 if (loc != NULL)
5827 set_current_program_space (loc->pspace);
5828
5829 if (b->display_canonical)
5830 uiout->field_string ("what", event_location_to_string (b->location.get ()));
5831 else if (loc && loc->symtab)
5832 {
5833 const struct symbol *sym = loc->symbol;
5834
5835 if (sym)
5836 {
5837 uiout->text ("in ");
5838 uiout->field_string ("func", SYMBOL_PRINT_NAME (sym),
5839 ui_out_style_kind::FUNCTION);
5840 uiout->text (" ");
5841 uiout->wrap_hint (wrap_indent_at_field (uiout, "what"));
5842 uiout->text ("at ");
5843 }
5844 uiout->field_string ("file",
5845 symtab_to_filename_for_display (loc->symtab),
5846 ui_out_style_kind::FILE);
5847 uiout->text (":");
5848
5849 if (uiout->is_mi_like_p ())
5850 uiout->field_string ("fullname", symtab_to_fullname (loc->symtab));
5851
5852 uiout->field_int ("line", loc->line_number);
5853 }
5854 else if (loc)
5855 {
5856 string_file stb;
5857
5858 print_address_symbolic (loc->gdbarch, loc->address, &stb,
5859 demangle, "");
5860 uiout->field_stream ("at", stb);
5861 }
5862 else
5863 {
5864 uiout->field_string ("pending",
5865 event_location_to_string (b->location.get ()));
5866 /* If extra_string is available, it could be holding a condition
5867 or dprintf arguments. In either case, make sure it is printed,
5868 too, but only for non-MI streams. */
5869 if (!uiout->is_mi_like_p () && b->extra_string != NULL)
5870 {
5871 if (b->type == bp_dprintf)
5872 uiout->text (",");
5873 else
5874 uiout->text (" ");
5875 uiout->text (b->extra_string);
5876 }
5877 }
5878
5879 if (loc && is_breakpoint (b)
5880 && breakpoint_condition_evaluation_mode () == condition_evaluation_target
5881 && bp_condition_evaluator (b) == condition_evaluation_both)
5882 {
5883 uiout->text (" (");
5884 uiout->field_string ("evaluated-by",
5885 bp_location_condition_evaluator (loc));
5886 uiout->text (")");
5887 }
5888 }
5889
5890 static const char *
5891 bptype_string (enum bptype type)
5892 {
5893 struct ep_type_description
5894 {
5895 enum bptype type;
5896 const char *description;
5897 };
5898 static struct ep_type_description bptypes[] =
5899 {
5900 {bp_none, "?deleted?"},
5901 {bp_breakpoint, "breakpoint"},
5902 {bp_hardware_breakpoint, "hw breakpoint"},
5903 {bp_single_step, "sw single-step"},
5904 {bp_until, "until"},
5905 {bp_finish, "finish"},
5906 {bp_watchpoint, "watchpoint"},
5907 {bp_hardware_watchpoint, "hw watchpoint"},
5908 {bp_read_watchpoint, "read watchpoint"},
5909 {bp_access_watchpoint, "acc watchpoint"},
5910 {bp_longjmp, "longjmp"},
5911 {bp_longjmp_resume, "longjmp resume"},
5912 {bp_longjmp_call_dummy, "longjmp for call dummy"},
5913 {bp_exception, "exception"},
5914 {bp_exception_resume, "exception resume"},
5915 {bp_step_resume, "step resume"},
5916 {bp_hp_step_resume, "high-priority step resume"},
5917 {bp_watchpoint_scope, "watchpoint scope"},
5918 {bp_call_dummy, "call dummy"},
5919 {bp_std_terminate, "std::terminate"},
5920 {bp_shlib_event, "shlib events"},
5921 {bp_thread_event, "thread events"},
5922 {bp_overlay_event, "overlay events"},
5923 {bp_longjmp_master, "longjmp master"},
5924 {bp_std_terminate_master, "std::terminate master"},
5925 {bp_exception_master, "exception master"},
5926 {bp_catchpoint, "catchpoint"},
5927 {bp_tracepoint, "tracepoint"},
5928 {bp_fast_tracepoint, "fast tracepoint"},
5929 {bp_static_tracepoint, "static tracepoint"},
5930 {bp_dprintf, "dprintf"},
5931 {bp_jit_event, "jit events"},
5932 {bp_gnu_ifunc_resolver, "STT_GNU_IFUNC resolver"},
5933 {bp_gnu_ifunc_resolver_return, "STT_GNU_IFUNC resolver return"},
5934 };
5935
5936 if (((int) type >= (sizeof (bptypes) / sizeof (bptypes[0])))
5937 || ((int) type != bptypes[(int) type].type))
5938 internal_error (__FILE__, __LINE__,
5939 _("bptypes table does not describe type #%d."),
5940 (int) type);
5941
5942 return bptypes[(int) type].description;
5943 }
5944
5945 /* For MI, output a field named 'thread-groups' with a list as the value.
5946 For CLI, prefix the list with the string 'inf'. */
5947
5948 static void
5949 output_thread_groups (struct ui_out *uiout,
5950 const char *field_name,
5951 const std::vector<int> &inf_nums,
5952 int mi_only)
5953 {
5954 int is_mi = uiout->is_mi_like_p ();
5955
5956 /* For backward compatibility, don't display inferiors in CLI unless
5957 there are several. Always display them for MI. */
5958 if (!is_mi && mi_only)
5959 return;
5960
5961 ui_out_emit_list list_emitter (uiout, field_name);
5962
5963 for (size_t i = 0; i < inf_nums.size (); i++)
5964 {
5965 if (is_mi)
5966 {
5967 char mi_group[10];
5968
5969 xsnprintf (mi_group, sizeof (mi_group), "i%d", inf_nums[i]);
5970 uiout->field_string (NULL, mi_group);
5971 }
5972 else
5973 {
5974 if (i == 0)
5975 uiout->text (" inf ");
5976 else
5977 uiout->text (", ");
5978
5979 uiout->text (plongest (inf_nums[i]));
5980 }
5981 }
5982 }
5983
5984 /* Print B to gdb_stdout. */
5985
5986 static void
5987 print_one_breakpoint_location (struct breakpoint *b,
5988 struct bp_location *loc,
5989 int loc_number,
5990 struct bp_location **last_loc,
5991 int allflag)
5992 {
5993 struct command_line *l;
5994 static char bpenables[] = "nynny";
5995
5996 struct ui_out *uiout = current_uiout;
5997 int header_of_multiple = 0;
5998 int part_of_multiple = (loc != NULL);
5999 struct value_print_options opts;
6000
6001 get_user_print_options (&opts);
6002
6003 gdb_assert (!loc || loc_number != 0);
6004 /* See comment in print_one_breakpoint concerning treatment of
6005 breakpoints with single disabled location. */
6006 if (loc == NULL
6007 && (b->loc != NULL
6008 && (b->loc->next != NULL || !b->loc->enabled)))
6009 header_of_multiple = 1;
6010 if (loc == NULL)
6011 loc = b->loc;
6012
6013 annotate_record ();
6014
6015 /* 1 */
6016 annotate_field (0);
6017 if (part_of_multiple)
6018 uiout->field_fmt ("number", "%d.%d", b->number, loc_number);
6019 else
6020 uiout->field_int ("number", b->number);
6021
6022 /* 2 */
6023 annotate_field (1);
6024 if (part_of_multiple)
6025 uiout->field_skip ("type");
6026 else
6027 uiout->field_string ("type", bptype_string (b->type));
6028
6029 /* 3 */
6030 annotate_field (2);
6031 if (part_of_multiple)
6032 uiout->field_skip ("disp");
6033 else
6034 uiout->field_string ("disp", bpdisp_text (b->disposition));
6035
6036 /* 4 */
6037 annotate_field (3);
6038 if (part_of_multiple)
6039 uiout->field_string ("enabled", loc->enabled ? "y" : "n");
6040 else
6041 uiout->field_fmt ("enabled", "%c", bpenables[(int) b->enable_state]);
6042
6043 /* 5 and 6 */
6044 if (b->ops != NULL && b->ops->print_one != NULL)
6045 {
6046 /* Although the print_one can possibly print all locations,
6047 calling it here is not likely to get any nice result. So,
6048 make sure there's just one location. */
6049 gdb_assert (b->loc == NULL || b->loc->next == NULL);
6050 b->ops->print_one (b, last_loc);
6051 }
6052 else
6053 switch (b->type)
6054 {
6055 case bp_none:
6056 internal_error (__FILE__, __LINE__,
6057 _("print_one_breakpoint: bp_none encountered\n"));
6058 break;
6059
6060 case bp_watchpoint:
6061 case bp_hardware_watchpoint:
6062 case bp_read_watchpoint:
6063 case bp_access_watchpoint:
6064 {
6065 struct watchpoint *w = (struct watchpoint *) b;
6066
6067 /* Field 4, the address, is omitted (which makes the columns
6068 not line up too nicely with the headers, but the effect
6069 is relatively readable). */
6070 if (opts.addressprint)
6071 uiout->field_skip ("addr");
6072 annotate_field (5);
6073 uiout->field_string ("what", w->exp_string);
6074 }
6075 break;
6076
6077 case bp_breakpoint:
6078 case bp_hardware_breakpoint:
6079 case bp_single_step:
6080 case bp_until:
6081 case bp_finish:
6082 case bp_longjmp:
6083 case bp_longjmp_resume:
6084 case bp_longjmp_call_dummy:
6085 case bp_exception:
6086 case bp_exception_resume:
6087 case bp_step_resume:
6088 case bp_hp_step_resume:
6089 case bp_watchpoint_scope:
6090 case bp_call_dummy:
6091 case bp_std_terminate:
6092 case bp_shlib_event:
6093 case bp_thread_event:
6094 case bp_overlay_event:
6095 case bp_longjmp_master:
6096 case bp_std_terminate_master:
6097 case bp_exception_master:
6098 case bp_tracepoint:
6099 case bp_fast_tracepoint:
6100 case bp_static_tracepoint:
6101 case bp_dprintf:
6102 case bp_jit_event:
6103 case bp_gnu_ifunc_resolver:
6104 case bp_gnu_ifunc_resolver_return:
6105 if (opts.addressprint)
6106 {
6107 annotate_field (4);
6108 if (header_of_multiple)
6109 uiout->field_string ("addr", "<MULTIPLE>");
6110 else if (b->loc == NULL || loc->shlib_disabled)
6111 uiout->field_string ("addr", "<PENDING>");
6112 else
6113 uiout->field_core_addr ("addr",
6114 loc->gdbarch, loc->address);
6115 }
6116 annotate_field (5);
6117 if (!header_of_multiple)
6118 print_breakpoint_location (b, loc);
6119 if (b->loc)
6120 *last_loc = b->loc;
6121 break;
6122 }
6123
6124
6125 if (loc != NULL && !header_of_multiple)
6126 {
6127 std::vector<int> inf_nums;
6128 int mi_only = 1;
6129
6130 for (inferior *inf : all_inferiors ())
6131 {
6132 if (inf->pspace == loc->pspace)
6133 inf_nums.push_back (inf->num);
6134 }
6135
6136 /* For backward compatibility, don't display inferiors in CLI unless
6137 there are several. Always display for MI. */
6138 if (allflag
6139 || (!gdbarch_has_global_breakpoints (target_gdbarch ())
6140 && (number_of_program_spaces () > 1
6141 || number_of_inferiors () > 1)
6142 /* LOC is for existing B, it cannot be in
6143 moribund_locations and thus having NULL OWNER. */
6144 && loc->owner->type != bp_catchpoint))
6145 mi_only = 0;
6146 output_thread_groups (uiout, "thread-groups", inf_nums, mi_only);
6147 }
6148
6149 if (!part_of_multiple)
6150 {
6151 if (b->thread != -1)
6152 {
6153 /* FIXME: This seems to be redundant and lost here; see the
6154 "stop only in" line a little further down. */
6155 uiout->text (" thread ");
6156 uiout->field_int ("thread", b->thread);
6157 }
6158 else if (b->task != 0)
6159 {
6160 uiout->text (" task ");
6161 uiout->field_int ("task", b->task);
6162 }
6163 }
6164
6165 uiout->text ("\n");
6166
6167 if (!part_of_multiple)
6168 b->ops->print_one_detail (b, uiout);
6169
6170 if (part_of_multiple && frame_id_p (b->frame_id))
6171 {
6172 annotate_field (6);
6173 uiout->text ("\tstop only in stack frame at ");
6174 /* FIXME: cagney/2002-12-01: Shouldn't be poking around inside
6175 the frame ID. */
6176 uiout->field_core_addr ("frame",
6177 b->gdbarch, b->frame_id.stack_addr);
6178 uiout->text ("\n");
6179 }
6180
6181 if (!part_of_multiple && b->cond_string)
6182 {
6183 annotate_field (7);
6184 if (is_tracepoint (b))
6185 uiout->text ("\ttrace only if ");
6186 else
6187 uiout->text ("\tstop only if ");
6188 uiout->field_string ("cond", b->cond_string);
6189
6190 /* Print whether the target is doing the breakpoint's condition
6191 evaluation. If GDB is doing the evaluation, don't print anything. */
6192 if (is_breakpoint (b)
6193 && breakpoint_condition_evaluation_mode ()
6194 == condition_evaluation_target)
6195 {
6196 uiout->text (" (");
6197 uiout->field_string ("evaluated-by",
6198 bp_condition_evaluator (b));
6199 uiout->text (" evals)");
6200 }
6201 uiout->text ("\n");
6202 }
6203
6204 if (!part_of_multiple && b->thread != -1)
6205 {
6206 /* FIXME should make an annotation for this. */
6207 uiout->text ("\tstop only in thread ");
6208 if (uiout->is_mi_like_p ())
6209 uiout->field_int ("thread", b->thread);
6210 else
6211 {
6212 struct thread_info *thr = find_thread_global_id (b->thread);
6213
6214 uiout->field_string ("thread", print_thread_id (thr));
6215 }
6216 uiout->text ("\n");
6217 }
6218
6219 if (!part_of_multiple)
6220 {
6221 if (b->hit_count)
6222 {
6223 /* FIXME should make an annotation for this. */
6224 if (is_catchpoint (b))
6225 uiout->text ("\tcatchpoint");
6226 else if (is_tracepoint (b))
6227 uiout->text ("\ttracepoint");
6228 else
6229 uiout->text ("\tbreakpoint");
6230 uiout->text (" already hit ");
6231 uiout->field_int ("times", b->hit_count);
6232 if (b->hit_count == 1)
6233 uiout->text (" time\n");
6234 else
6235 uiout->text (" times\n");
6236 }
6237 else
6238 {
6239 /* Output the count also if it is zero, but only if this is mi. */
6240 if (uiout->is_mi_like_p ())
6241 uiout->field_int ("times", b->hit_count);
6242 }
6243 }
6244
6245 if (!part_of_multiple && b->ignore_count)
6246 {
6247 annotate_field (8);
6248 uiout->text ("\tignore next ");
6249 uiout->field_int ("ignore", b->ignore_count);
6250 uiout->text (" hits\n");
6251 }
6252
6253 /* Note that an enable count of 1 corresponds to "enable once"
6254 behavior, which is reported by the combination of enablement and
6255 disposition, so we don't need to mention it here. */
6256 if (!part_of_multiple && b->enable_count > 1)
6257 {
6258 annotate_field (8);
6259 uiout->text ("\tdisable after ");
6260 /* Tweak the wording to clarify that ignore and enable counts
6261 are distinct, and have additive effect. */
6262 if (b->ignore_count)
6263 uiout->text ("additional ");
6264 else
6265 uiout->text ("next ");
6266 uiout->field_int ("enable", b->enable_count);
6267 uiout->text (" hits\n");
6268 }
6269
6270 if (!part_of_multiple && is_tracepoint (b))
6271 {
6272 struct tracepoint *tp = (struct tracepoint *) b;
6273
6274 if (tp->traceframe_usage)
6275 {
6276 uiout->text ("\ttrace buffer usage ");
6277 uiout->field_int ("traceframe-usage", tp->traceframe_usage);
6278 uiout->text (" bytes\n");
6279 }
6280 }
6281
6282 l = b->commands ? b->commands.get () : NULL;
6283 if (!part_of_multiple && l)
6284 {
6285 annotate_field (9);
6286 ui_out_emit_tuple tuple_emitter (uiout, "script");
6287 print_command_lines (uiout, l, 4);
6288 }
6289
6290 if (is_tracepoint (b))
6291 {
6292 struct tracepoint *t = (struct tracepoint *) b;
6293
6294 if (!part_of_multiple && t->pass_count)
6295 {
6296 annotate_field (10);
6297 uiout->text ("\tpass count ");
6298 uiout->field_int ("pass", t->pass_count);
6299 uiout->text (" \n");
6300 }
6301
6302 /* Don't display it when tracepoint or tracepoint location is
6303 pending. */
6304 if (!header_of_multiple && loc != NULL && !loc->shlib_disabled)
6305 {
6306 annotate_field (11);
6307
6308 if (uiout->is_mi_like_p ())
6309 uiout->field_string ("installed",
6310 loc->inserted ? "y" : "n");
6311 else
6312 {
6313 if (loc->inserted)
6314 uiout->text ("\t");
6315 else
6316 uiout->text ("\tnot ");
6317 uiout->text ("installed on target\n");
6318 }
6319 }
6320 }
6321
6322 if (uiout->is_mi_like_p () && !part_of_multiple)
6323 {
6324 if (is_watchpoint (b))
6325 {
6326 struct watchpoint *w = (struct watchpoint *) b;
6327
6328 uiout->field_string ("original-location", w->exp_string);
6329 }
6330 else if (b->location != NULL
6331 && event_location_to_string (b->location.get ()) != NULL)
6332 uiout->field_string ("original-location",
6333 event_location_to_string (b->location.get ()));
6334 }
6335 }
6336
6337 /* See breakpoint.h. */
6338
6339 bool fix_multi_location_breakpoint_output_globally = false;
6340
6341 static void
6342 print_one_breakpoint (struct breakpoint *b,
6343 struct bp_location **last_loc,
6344 int allflag)
6345 {
6346 struct ui_out *uiout = current_uiout;
6347 bool use_fixed_output
6348 = (uiout->test_flags (fix_multi_location_breakpoint_output)
6349 || fix_multi_location_breakpoint_output_globally);
6350
6351 gdb::optional<ui_out_emit_tuple> bkpt_tuple_emitter (gdb::in_place, uiout, "bkpt");
6352 print_one_breakpoint_location (b, NULL, 0, last_loc, allflag);
6353
6354 /* The mi2 broken format: the main breakpoint tuple ends here, the locations
6355 are outside. */
6356 if (!use_fixed_output)
6357 bkpt_tuple_emitter.reset ();
6358
6359 /* If this breakpoint has custom print function,
6360 it's already printed. Otherwise, print individual
6361 locations, if any. */
6362 if (b->ops == NULL || b->ops->print_one == NULL)
6363 {
6364 /* If breakpoint has a single location that is disabled, we
6365 print it as if it had several locations, since otherwise it's
6366 hard to represent "breakpoint enabled, location disabled"
6367 situation.
6368
6369 Note that while hardware watchpoints have several locations
6370 internally, that's not a property exposed to user. */
6371 if (b->loc
6372 && !is_hardware_watchpoint (b)
6373 && (b->loc->next || !b->loc->enabled))
6374 {
6375 gdb::optional<ui_out_emit_list> locations_list;
6376
6377 /* For MI version <= 2, keep the behavior where GDB outputs an invalid
6378 MI record. For later versions, place breakpoint locations in a
6379 list. */
6380 if (uiout->is_mi_like_p () && use_fixed_output)
6381 locations_list.emplace (uiout, "locations");
6382
6383 int n = 1;
6384 for (bp_location *loc = b->loc; loc != NULL; loc = loc->next, ++n)
6385 {
6386 ui_out_emit_tuple loc_tuple_emitter (uiout, NULL);
6387 print_one_breakpoint_location (b, loc, n, last_loc, allflag);
6388 }
6389 }
6390 }
6391 }
6392
6393 static int
6394 breakpoint_address_bits (struct breakpoint *b)
6395 {
6396 int print_address_bits = 0;
6397 struct bp_location *loc;
6398
6399 /* Software watchpoints that aren't watching memory don't have an
6400 address to print. */
6401 if (is_no_memory_software_watchpoint (b))
6402 return 0;
6403
6404 for (loc = b->loc; loc; loc = loc->next)
6405 {
6406 int addr_bit;
6407
6408 addr_bit = gdbarch_addr_bit (loc->gdbarch);
6409 if (addr_bit > print_address_bits)
6410 print_address_bits = addr_bit;
6411 }
6412
6413 return print_address_bits;
6414 }
6415
6416 /* See breakpoint.h. */
6417
6418 void
6419 print_breakpoint (breakpoint *b)
6420 {
6421 struct bp_location *dummy_loc = NULL;
6422 print_one_breakpoint (b, &dummy_loc, 0);
6423 }
6424
6425 /* Return true if this breakpoint was set by the user, false if it is
6426 internal or momentary. */
6427
6428 int
6429 user_breakpoint_p (struct breakpoint *b)
6430 {
6431 return b->number > 0;
6432 }
6433
6434 /* See breakpoint.h. */
6435
6436 int
6437 pending_breakpoint_p (struct breakpoint *b)
6438 {
6439 return b->loc == NULL;
6440 }
6441
6442 /* Print information on user settable breakpoint (watchpoint, etc)
6443 number BNUM. If BNUM is -1 print all user-settable breakpoints.
6444 If ALLFLAG is non-zero, include non-user-settable breakpoints. If
6445 FILTER is non-NULL, call it on each breakpoint and only include the
6446 ones for which it returns non-zero. Return the total number of
6447 breakpoints listed. */
6448
6449 static int
6450 breakpoint_1 (const char *args, int allflag,
6451 int (*filter) (const struct breakpoint *))
6452 {
6453 struct breakpoint *b;
6454 struct bp_location *last_loc = NULL;
6455 int nr_printable_breakpoints;
6456 struct value_print_options opts;
6457 int print_address_bits = 0;
6458 int print_type_col_width = 14;
6459 struct ui_out *uiout = current_uiout;
6460
6461 get_user_print_options (&opts);
6462
6463 /* Compute the number of rows in the table, as well as the size
6464 required for address fields. */
6465 nr_printable_breakpoints = 0;
6466 ALL_BREAKPOINTS (b)
6467 {
6468 /* If we have a filter, only list the breakpoints it accepts. */
6469 if (filter && !filter (b))
6470 continue;
6471
6472 /* If we have an "args" string, it is a list of breakpoints to
6473 accept. Skip the others. */
6474 if (args != NULL && *args != '\0')
6475 {
6476 if (allflag && parse_and_eval_long (args) != b->number)
6477 continue;
6478 if (!allflag && !number_is_in_list (args, b->number))
6479 continue;
6480 }
6481
6482 if (allflag || user_breakpoint_p (b))
6483 {
6484 int addr_bit, type_len;
6485
6486 addr_bit = breakpoint_address_bits (b);
6487 if (addr_bit > print_address_bits)
6488 print_address_bits = addr_bit;
6489
6490 type_len = strlen (bptype_string (b->type));
6491 if (type_len > print_type_col_width)
6492 print_type_col_width = type_len;
6493
6494 nr_printable_breakpoints++;
6495 }
6496 }
6497
6498 {
6499 ui_out_emit_table table_emitter (uiout,
6500 opts.addressprint ? 6 : 5,
6501 nr_printable_breakpoints,
6502 "BreakpointTable");
6503
6504 if (nr_printable_breakpoints > 0)
6505 annotate_breakpoints_headers ();
6506 if (nr_printable_breakpoints > 0)
6507 annotate_field (0);
6508 uiout->table_header (7, ui_left, "number", "Num"); /* 1 */
6509 if (nr_printable_breakpoints > 0)
6510 annotate_field (1);
6511 uiout->table_header (print_type_col_width, ui_left, "type", "Type"); /* 2 */
6512 if (nr_printable_breakpoints > 0)
6513 annotate_field (2);
6514 uiout->table_header (4, ui_left, "disp", "Disp"); /* 3 */
6515 if (nr_printable_breakpoints > 0)
6516 annotate_field (3);
6517 uiout->table_header (3, ui_left, "enabled", "Enb"); /* 4 */
6518 if (opts.addressprint)
6519 {
6520 if (nr_printable_breakpoints > 0)
6521 annotate_field (4);
6522 if (print_address_bits <= 32)
6523 uiout->table_header (10, ui_left, "addr", "Address"); /* 5 */
6524 else
6525 uiout->table_header (18, ui_left, "addr", "Address"); /* 5 */
6526 }
6527 if (nr_printable_breakpoints > 0)
6528 annotate_field (5);
6529 uiout->table_header (40, ui_noalign, "what", "What"); /* 6 */
6530 uiout->table_body ();
6531 if (nr_printable_breakpoints > 0)
6532 annotate_breakpoints_table ();
6533
6534 ALL_BREAKPOINTS (b)
6535 {
6536 QUIT;
6537 /* If we have a filter, only list the breakpoints it accepts. */
6538 if (filter && !filter (b))
6539 continue;
6540
6541 /* If we have an "args" string, it is a list of breakpoints to
6542 accept. Skip the others. */
6543
6544 if (args != NULL && *args != '\0')
6545 {
6546 if (allflag) /* maintenance info breakpoint */
6547 {
6548 if (parse_and_eval_long (args) != b->number)
6549 continue;
6550 }
6551 else /* all others */
6552 {
6553 if (!number_is_in_list (args, b->number))
6554 continue;
6555 }
6556 }
6557 /* We only print out user settable breakpoints unless the
6558 allflag is set. */
6559 if (allflag || user_breakpoint_p (b))
6560 print_one_breakpoint (b, &last_loc, allflag);
6561 }
6562 }
6563
6564 if (nr_printable_breakpoints == 0)
6565 {
6566 /* If there's a filter, let the caller decide how to report
6567 empty list. */
6568 if (!filter)
6569 {
6570 if (args == NULL || *args == '\0')
6571 uiout->message ("No breakpoints or watchpoints.\n");
6572 else
6573 uiout->message ("No breakpoint or watchpoint matching '%s'.\n",
6574 args);
6575 }
6576 }
6577 else
6578 {
6579 if (last_loc && !server_command)
6580 set_next_address (last_loc->gdbarch, last_loc->address);
6581 }
6582
6583 /* FIXME? Should this be moved up so that it is only called when
6584 there have been breakpoints? */
6585 annotate_breakpoints_table_end ();
6586
6587 return nr_printable_breakpoints;
6588 }
6589
6590 /* Display the value of default-collect in a way that is generally
6591 compatible with the breakpoint list. */
6592
6593 static void
6594 default_collect_info (void)
6595 {
6596 struct ui_out *uiout = current_uiout;
6597
6598 /* If it has no value (which is frequently the case), say nothing; a
6599 message like "No default-collect." gets in user's face when it's
6600 not wanted. */
6601 if (!*default_collect)
6602 return;
6603
6604 /* The following phrase lines up nicely with per-tracepoint collect
6605 actions. */
6606 uiout->text ("default collect ");
6607 uiout->field_string ("default-collect", default_collect);
6608 uiout->text (" \n");
6609 }
6610
6611 static void
6612 info_breakpoints_command (const char *args, int from_tty)
6613 {
6614 breakpoint_1 (args, 0, NULL);
6615
6616 default_collect_info ();
6617 }
6618
6619 static void
6620 info_watchpoints_command (const char *args, int from_tty)
6621 {
6622 int num_printed = breakpoint_1 (args, 0, is_watchpoint);
6623 struct ui_out *uiout = current_uiout;
6624
6625 if (num_printed == 0)
6626 {
6627 if (args == NULL || *args == '\0')
6628 uiout->message ("No watchpoints.\n");
6629 else
6630 uiout->message ("No watchpoint matching '%s'.\n", args);
6631 }
6632 }
6633
6634 static void
6635 maintenance_info_breakpoints (const char *args, int from_tty)
6636 {
6637 breakpoint_1 (args, 1, NULL);
6638
6639 default_collect_info ();
6640 }
6641
6642 static int
6643 breakpoint_has_pc (struct breakpoint *b,
6644 struct program_space *pspace,
6645 CORE_ADDR pc, struct obj_section *section)
6646 {
6647 struct bp_location *bl = b->loc;
6648
6649 for (; bl; bl = bl->next)
6650 {
6651 if (bl->pspace == pspace
6652 && bl->address == pc
6653 && (!overlay_debugging || bl->section == section))
6654 return 1;
6655 }
6656 return 0;
6657 }
6658
6659 /* Print a message describing any user-breakpoints set at PC. This
6660 concerns with logical breakpoints, so we match program spaces, not
6661 address spaces. */
6662
6663 static void
6664 describe_other_breakpoints (struct gdbarch *gdbarch,
6665 struct program_space *pspace, CORE_ADDR pc,
6666 struct obj_section *section, int thread)
6667 {
6668 int others = 0;
6669 struct breakpoint *b;
6670
6671 ALL_BREAKPOINTS (b)
6672 others += (user_breakpoint_p (b)
6673 && breakpoint_has_pc (b, pspace, pc, section));
6674 if (others > 0)
6675 {
6676 if (others == 1)
6677 printf_filtered (_("Note: breakpoint "));
6678 else /* if (others == ???) */
6679 printf_filtered (_("Note: breakpoints "));
6680 ALL_BREAKPOINTS (b)
6681 if (user_breakpoint_p (b) && breakpoint_has_pc (b, pspace, pc, section))
6682 {
6683 others--;
6684 printf_filtered ("%d", b->number);
6685 if (b->thread == -1 && thread != -1)
6686 printf_filtered (" (all threads)");
6687 else if (b->thread != -1)
6688 printf_filtered (" (thread %d)", b->thread);
6689 printf_filtered ("%s%s ",
6690 ((b->enable_state == bp_disabled
6691 || b->enable_state == bp_call_disabled)
6692 ? " (disabled)"
6693 : ""),
6694 (others > 1) ? ","
6695 : ((others == 1) ? " and" : ""));
6696 }
6697 printf_filtered (_("also set at pc "));
6698 fputs_styled (paddress (gdbarch, pc), address_style.style (), gdb_stdout);
6699 printf_filtered (".\n");
6700 }
6701 }
6702 \f
6703
6704 /* Return true iff it is meaningful to use the address member of
6705 BPT locations. For some breakpoint types, the locations' address members
6706 are irrelevant and it makes no sense to attempt to compare them to other
6707 addresses (or use them for any other purpose either).
6708
6709 More specifically, each of the following breakpoint types will
6710 always have a zero valued location address and we don't want to mark
6711 breakpoints of any of these types to be a duplicate of an actual
6712 breakpoint location at address zero:
6713
6714 bp_watchpoint
6715 bp_catchpoint
6716
6717 */
6718
6719 static int
6720 breakpoint_address_is_meaningful (struct breakpoint *bpt)
6721 {
6722 enum bptype type = bpt->type;
6723
6724 return (type != bp_watchpoint && type != bp_catchpoint);
6725 }
6726
6727 /* Assuming LOC1 and LOC2's owners are hardware watchpoints, returns
6728 true if LOC1 and LOC2 represent the same watchpoint location. */
6729
6730 static int
6731 watchpoint_locations_match (struct bp_location *loc1,
6732 struct bp_location *loc2)
6733 {
6734 struct watchpoint *w1 = (struct watchpoint *) loc1->owner;
6735 struct watchpoint *w2 = (struct watchpoint *) loc2->owner;
6736
6737 /* Both of them must exist. */
6738 gdb_assert (w1 != NULL);
6739 gdb_assert (w2 != NULL);
6740
6741 /* If the target can evaluate the condition expression in hardware,
6742 then we we need to insert both watchpoints even if they are at
6743 the same place. Otherwise the watchpoint will only trigger when
6744 the condition of whichever watchpoint was inserted evaluates to
6745 true, not giving a chance for GDB to check the condition of the
6746 other watchpoint. */
6747 if ((w1->cond_exp
6748 && target_can_accel_watchpoint_condition (loc1->address,
6749 loc1->length,
6750 loc1->watchpoint_type,
6751 w1->cond_exp.get ()))
6752 || (w2->cond_exp
6753 && target_can_accel_watchpoint_condition (loc2->address,
6754 loc2->length,
6755 loc2->watchpoint_type,
6756 w2->cond_exp.get ())))
6757 return 0;
6758
6759 /* Note that this checks the owner's type, not the location's. In
6760 case the target does not support read watchpoints, but does
6761 support access watchpoints, we'll have bp_read_watchpoint
6762 watchpoints with hw_access locations. Those should be considered
6763 duplicates of hw_read locations. The hw_read locations will
6764 become hw_access locations later. */
6765 return (loc1->owner->type == loc2->owner->type
6766 && loc1->pspace->aspace == loc2->pspace->aspace
6767 && loc1->address == loc2->address
6768 && loc1->length == loc2->length);
6769 }
6770
6771 /* See breakpoint.h. */
6772
6773 int
6774 breakpoint_address_match (const address_space *aspace1, CORE_ADDR addr1,
6775 const address_space *aspace2, CORE_ADDR addr2)
6776 {
6777 return ((gdbarch_has_global_breakpoints (target_gdbarch ())
6778 || aspace1 == aspace2)
6779 && addr1 == addr2);
6780 }
6781
6782 /* Returns true if {ASPACE2,ADDR2} falls within the range determined by
6783 {ASPACE1,ADDR1,LEN1}. In most targets, this can only be true if ASPACE1
6784 matches ASPACE2. On targets that have global breakpoints, the address
6785 space doesn't really matter. */
6786
6787 static int
6788 breakpoint_address_match_range (const address_space *aspace1,
6789 CORE_ADDR addr1,
6790 int len1, const address_space *aspace2,
6791 CORE_ADDR addr2)
6792 {
6793 return ((gdbarch_has_global_breakpoints (target_gdbarch ())
6794 || aspace1 == aspace2)
6795 && addr2 >= addr1 && addr2 < addr1 + len1);
6796 }
6797
6798 /* Returns true if {ASPACE,ADDR} matches the breakpoint BL. BL may be
6799 a ranged breakpoint. In most targets, a match happens only if ASPACE
6800 matches the breakpoint's address space. On targets that have global
6801 breakpoints, the address space doesn't really matter. */
6802
6803 static int
6804 breakpoint_location_address_match (struct bp_location *bl,
6805 const address_space *aspace,
6806 CORE_ADDR addr)
6807 {
6808 return (breakpoint_address_match (bl->pspace->aspace, bl->address,
6809 aspace, addr)
6810 || (bl->length
6811 && breakpoint_address_match_range (bl->pspace->aspace,
6812 bl->address, bl->length,
6813 aspace, addr)));
6814 }
6815
6816 /* Returns true if the [ADDR,ADDR+LEN) range in ASPACE overlaps
6817 breakpoint BL. BL may be a ranged breakpoint. In most targets, a
6818 match happens only if ASPACE matches the breakpoint's address
6819 space. On targets that have global breakpoints, the address space
6820 doesn't really matter. */
6821
6822 static int
6823 breakpoint_location_address_range_overlap (struct bp_location *bl,
6824 const address_space *aspace,
6825 CORE_ADDR addr, int len)
6826 {
6827 if (gdbarch_has_global_breakpoints (target_gdbarch ())
6828 || bl->pspace->aspace == aspace)
6829 {
6830 int bl_len = bl->length != 0 ? bl->length : 1;
6831
6832 if (mem_ranges_overlap (addr, len, bl->address, bl_len))
6833 return 1;
6834 }
6835 return 0;
6836 }
6837
6838 /* If LOC1 and LOC2's owners are not tracepoints, returns false directly.
6839 Then, if LOC1 and LOC2 represent the same tracepoint location, returns
6840 true, otherwise returns false. */
6841
6842 static int
6843 tracepoint_locations_match (struct bp_location *loc1,
6844 struct bp_location *loc2)
6845 {
6846 if (is_tracepoint (loc1->owner) && is_tracepoint (loc2->owner))
6847 /* Since tracepoint locations are never duplicated with others', tracepoint
6848 locations at the same address of different tracepoints are regarded as
6849 different locations. */
6850 return (loc1->address == loc2->address && loc1->owner == loc2->owner);
6851 else
6852 return 0;
6853 }
6854
6855 /* Assuming LOC1 and LOC2's types' have meaningful target addresses
6856 (breakpoint_address_is_meaningful), returns true if LOC1 and LOC2
6857 represent the same location. */
6858
6859 static int
6860 breakpoint_locations_match (struct bp_location *loc1,
6861 struct bp_location *loc2)
6862 {
6863 int hw_point1, hw_point2;
6864
6865 /* Both of them must not be in moribund_locations. */
6866 gdb_assert (loc1->owner != NULL);
6867 gdb_assert (loc2->owner != NULL);
6868
6869 hw_point1 = is_hardware_watchpoint (loc1->owner);
6870 hw_point2 = is_hardware_watchpoint (loc2->owner);
6871
6872 if (hw_point1 != hw_point2)
6873 return 0;
6874 else if (hw_point1)
6875 return watchpoint_locations_match (loc1, loc2);
6876 else if (is_tracepoint (loc1->owner) || is_tracepoint (loc2->owner))
6877 return tracepoint_locations_match (loc1, loc2);
6878 else
6879 /* We compare bp_location.length in order to cover ranged breakpoints. */
6880 return (breakpoint_address_match (loc1->pspace->aspace, loc1->address,
6881 loc2->pspace->aspace, loc2->address)
6882 && loc1->length == loc2->length);
6883 }
6884
6885 static void
6886 breakpoint_adjustment_warning (CORE_ADDR from_addr, CORE_ADDR to_addr,
6887 int bnum, int have_bnum)
6888 {
6889 /* The longest string possibly returned by hex_string_custom
6890 is 50 chars. These must be at least that big for safety. */
6891 char astr1[64];
6892 char astr2[64];
6893
6894 strcpy (astr1, hex_string_custom ((unsigned long) from_addr, 8));
6895 strcpy (astr2, hex_string_custom ((unsigned long) to_addr, 8));
6896 if (have_bnum)
6897 warning (_("Breakpoint %d address previously adjusted from %s to %s."),
6898 bnum, astr1, astr2);
6899 else
6900 warning (_("Breakpoint address adjusted from %s to %s."), astr1, astr2);
6901 }
6902
6903 /* Adjust a breakpoint's address to account for architectural
6904 constraints on breakpoint placement. Return the adjusted address.
6905 Note: Very few targets require this kind of adjustment. For most
6906 targets, this function is simply the identity function. */
6907
6908 static CORE_ADDR
6909 adjust_breakpoint_address (struct gdbarch *gdbarch,
6910 CORE_ADDR bpaddr, enum bptype bptype)
6911 {
6912 if (bptype == bp_watchpoint
6913 || bptype == bp_hardware_watchpoint
6914 || bptype == bp_read_watchpoint
6915 || bptype == bp_access_watchpoint
6916 || bptype == bp_catchpoint)
6917 {
6918 /* Watchpoints and the various bp_catch_* eventpoints should not
6919 have their addresses modified. */
6920 return bpaddr;
6921 }
6922 else if (bptype == bp_single_step)
6923 {
6924 /* Single-step breakpoints should not have their addresses
6925 modified. If there's any architectural constrain that
6926 applies to this address, then it should have already been
6927 taken into account when the breakpoint was created in the
6928 first place. If we didn't do this, stepping through e.g.,
6929 Thumb-2 IT blocks would break. */
6930 return bpaddr;
6931 }
6932 else
6933 {
6934 CORE_ADDR adjusted_bpaddr = bpaddr;
6935
6936 if (gdbarch_adjust_breakpoint_address_p (gdbarch))
6937 {
6938 /* Some targets have architectural constraints on the placement
6939 of breakpoint instructions. Obtain the adjusted address. */
6940 adjusted_bpaddr = gdbarch_adjust_breakpoint_address (gdbarch, bpaddr);
6941 }
6942
6943 adjusted_bpaddr = address_significant (gdbarch, adjusted_bpaddr);
6944
6945 /* An adjusted breakpoint address can significantly alter
6946 a user's expectations. Print a warning if an adjustment
6947 is required. */
6948 if (adjusted_bpaddr != bpaddr)
6949 breakpoint_adjustment_warning (bpaddr, adjusted_bpaddr, 0, 0);
6950
6951 return adjusted_bpaddr;
6952 }
6953 }
6954
6955 bp_location::bp_location (breakpoint *owner)
6956 {
6957 bp_location *loc = this;
6958
6959 loc->owner = owner;
6960 loc->cond_bytecode = NULL;
6961 loc->shlib_disabled = 0;
6962 loc->enabled = 1;
6963
6964 switch (owner->type)
6965 {
6966 case bp_breakpoint:
6967 case bp_single_step:
6968 case bp_until:
6969 case bp_finish:
6970 case bp_longjmp:
6971 case bp_longjmp_resume:
6972 case bp_longjmp_call_dummy:
6973 case bp_exception:
6974 case bp_exception_resume:
6975 case bp_step_resume:
6976 case bp_hp_step_resume:
6977 case bp_watchpoint_scope:
6978 case bp_call_dummy:
6979 case bp_std_terminate:
6980 case bp_shlib_event:
6981 case bp_thread_event:
6982 case bp_overlay_event:
6983 case bp_jit_event:
6984 case bp_longjmp_master:
6985 case bp_std_terminate_master:
6986 case bp_exception_master:
6987 case bp_gnu_ifunc_resolver:
6988 case bp_gnu_ifunc_resolver_return:
6989 case bp_dprintf:
6990 loc->loc_type = bp_loc_software_breakpoint;
6991 mark_breakpoint_location_modified (loc);
6992 break;
6993 case bp_hardware_breakpoint:
6994 loc->loc_type = bp_loc_hardware_breakpoint;
6995 mark_breakpoint_location_modified (loc);
6996 break;
6997 case bp_hardware_watchpoint:
6998 case bp_read_watchpoint:
6999 case bp_access_watchpoint:
7000 loc->loc_type = bp_loc_hardware_watchpoint;
7001 break;
7002 case bp_watchpoint:
7003 case bp_catchpoint:
7004 case bp_tracepoint:
7005 case bp_fast_tracepoint:
7006 case bp_static_tracepoint:
7007 loc->loc_type = bp_loc_other;
7008 break;
7009 default:
7010 internal_error (__FILE__, __LINE__, _("unknown breakpoint type"));
7011 }
7012
7013 loc->refc = 1;
7014 }
7015
7016 /* Allocate a struct bp_location. */
7017
7018 static struct bp_location *
7019 allocate_bp_location (struct breakpoint *bpt)
7020 {
7021 return bpt->ops->allocate_location (bpt);
7022 }
7023
7024 static void
7025 free_bp_location (struct bp_location *loc)
7026 {
7027 delete loc;
7028 }
7029
7030 /* Increment reference count. */
7031
7032 static void
7033 incref_bp_location (struct bp_location *bl)
7034 {
7035 ++bl->refc;
7036 }
7037
7038 /* Decrement reference count. If the reference count reaches 0,
7039 destroy the bp_location. Sets *BLP to NULL. */
7040
7041 static void
7042 decref_bp_location (struct bp_location **blp)
7043 {
7044 gdb_assert ((*blp)->refc > 0);
7045
7046 if (--(*blp)->refc == 0)
7047 free_bp_location (*blp);
7048 *blp = NULL;
7049 }
7050
7051 /* Add breakpoint B at the end of the global breakpoint chain. */
7052
7053 static breakpoint *
7054 add_to_breakpoint_chain (std::unique_ptr<breakpoint> &&b)
7055 {
7056 struct breakpoint *b1;
7057 struct breakpoint *result = b.get ();
7058
7059 /* Add this breakpoint to the end of the chain so that a list of
7060 breakpoints will come out in order of increasing numbers. */
7061
7062 b1 = breakpoint_chain;
7063 if (b1 == 0)
7064 breakpoint_chain = b.release ();
7065 else
7066 {
7067 while (b1->next)
7068 b1 = b1->next;
7069 b1->next = b.release ();
7070 }
7071
7072 return result;
7073 }
7074
7075 /* Initializes breakpoint B with type BPTYPE and no locations yet. */
7076
7077 static void
7078 init_raw_breakpoint_without_location (struct breakpoint *b,
7079 struct gdbarch *gdbarch,
7080 enum bptype bptype,
7081 const struct breakpoint_ops *ops)
7082 {
7083 gdb_assert (ops != NULL);
7084
7085 b->ops = ops;
7086 b->type = bptype;
7087 b->gdbarch = gdbarch;
7088 b->language = current_language->la_language;
7089 b->input_radix = input_radix;
7090 b->related_breakpoint = b;
7091 }
7092
7093 /* Helper to set_raw_breakpoint below. Creates a breakpoint
7094 that has type BPTYPE and has no locations as yet. */
7095
7096 static struct breakpoint *
7097 set_raw_breakpoint_without_location (struct gdbarch *gdbarch,
7098 enum bptype bptype,
7099 const struct breakpoint_ops *ops)
7100 {
7101 std::unique_ptr<breakpoint> b = new_breakpoint_from_type (bptype);
7102
7103 init_raw_breakpoint_without_location (b.get (), gdbarch, bptype, ops);
7104 return add_to_breakpoint_chain (std::move (b));
7105 }
7106
7107 /* Initialize loc->function_name. EXPLICIT_LOC says no indirect function
7108 resolutions should be made as the user specified the location explicitly
7109 enough. */
7110
7111 static void
7112 set_breakpoint_location_function (struct bp_location *loc, int explicit_loc)
7113 {
7114 gdb_assert (loc->owner != NULL);
7115
7116 if (loc->owner->type == bp_breakpoint
7117 || loc->owner->type == bp_hardware_breakpoint
7118 || is_tracepoint (loc->owner))
7119 {
7120 const char *function_name;
7121
7122 if (loc->msymbol != NULL
7123 && (MSYMBOL_TYPE (loc->msymbol) == mst_text_gnu_ifunc
7124 || MSYMBOL_TYPE (loc->msymbol) == mst_data_gnu_ifunc)
7125 && !explicit_loc)
7126 {
7127 struct breakpoint *b = loc->owner;
7128
7129 function_name = MSYMBOL_LINKAGE_NAME (loc->msymbol);
7130
7131 if (b->type == bp_breakpoint && b->loc == loc
7132 && loc->next == NULL && b->related_breakpoint == b)
7133 {
7134 /* Create only the whole new breakpoint of this type but do not
7135 mess more complicated breakpoints with multiple locations. */
7136 b->type = bp_gnu_ifunc_resolver;
7137 /* Remember the resolver's address for use by the return
7138 breakpoint. */
7139 loc->related_address = loc->address;
7140 }
7141 }
7142 else
7143 find_pc_partial_function (loc->address, &function_name, NULL, NULL);
7144
7145 if (function_name)
7146 loc->function_name = xstrdup (function_name);
7147 }
7148 }
7149
7150 /* Attempt to determine architecture of location identified by SAL. */
7151 struct gdbarch *
7152 get_sal_arch (struct symtab_and_line sal)
7153 {
7154 if (sal.section)
7155 return get_objfile_arch (sal.section->objfile);
7156 if (sal.symtab)
7157 return get_objfile_arch (SYMTAB_OBJFILE (sal.symtab));
7158
7159 return NULL;
7160 }
7161
7162 /* Low level routine for partially initializing a breakpoint of type
7163 BPTYPE. The newly created breakpoint's address, section, source
7164 file name, and line number are provided by SAL.
7165
7166 It is expected that the caller will complete the initialization of
7167 the newly created breakpoint struct as well as output any status
7168 information regarding the creation of a new breakpoint. */
7169
7170 static void
7171 init_raw_breakpoint (struct breakpoint *b, struct gdbarch *gdbarch,
7172 struct symtab_and_line sal, enum bptype bptype,
7173 const struct breakpoint_ops *ops)
7174 {
7175 init_raw_breakpoint_without_location (b, gdbarch, bptype, ops);
7176
7177 add_location_to_breakpoint (b, &sal);
7178
7179 if (bptype != bp_catchpoint)
7180 gdb_assert (sal.pspace != NULL);
7181
7182 /* Store the program space that was used to set the breakpoint,
7183 except for ordinary breakpoints, which are independent of the
7184 program space. */
7185 if (bptype != bp_breakpoint && bptype != bp_hardware_breakpoint)
7186 b->pspace = sal.pspace;
7187 }
7188
7189 /* set_raw_breakpoint is a low level routine for allocating and
7190 partially initializing a breakpoint of type BPTYPE. The newly
7191 created breakpoint's address, section, source file name, and line
7192 number are provided by SAL. The newly created and partially
7193 initialized breakpoint is added to the breakpoint chain and
7194 is also returned as the value of this function.
7195
7196 It is expected that the caller will complete the initialization of
7197 the newly created breakpoint struct as well as output any status
7198 information regarding the creation of a new breakpoint. In
7199 particular, set_raw_breakpoint does NOT set the breakpoint
7200 number! Care should be taken to not allow an error to occur
7201 prior to completing the initialization of the breakpoint. If this
7202 should happen, a bogus breakpoint will be left on the chain. */
7203
7204 struct breakpoint *
7205 set_raw_breakpoint (struct gdbarch *gdbarch,
7206 struct symtab_and_line sal, enum bptype bptype,
7207 const struct breakpoint_ops *ops)
7208 {
7209 std::unique_ptr<breakpoint> b = new_breakpoint_from_type (bptype);
7210
7211 init_raw_breakpoint (b.get (), gdbarch, sal, bptype, ops);
7212 return add_to_breakpoint_chain (std::move (b));
7213 }
7214
7215 /* Call this routine when stepping and nexting to enable a breakpoint
7216 if we do a longjmp() or 'throw' in TP. FRAME is the frame which
7217 initiated the operation. */
7218
7219 void
7220 set_longjmp_breakpoint (struct thread_info *tp, struct frame_id frame)
7221 {
7222 struct breakpoint *b, *b_tmp;
7223 int thread = tp->global_num;
7224
7225 /* To avoid having to rescan all objfile symbols at every step,
7226 we maintain a list of continually-inserted but always disabled
7227 longjmp "master" breakpoints. Here, we simply create momentary
7228 clones of those and enable them for the requested thread. */
7229 ALL_BREAKPOINTS_SAFE (b, b_tmp)
7230 if (b->pspace == current_program_space
7231 && (b->type == bp_longjmp_master
7232 || b->type == bp_exception_master))
7233 {
7234 enum bptype type = b->type == bp_longjmp_master ? bp_longjmp : bp_exception;
7235 struct breakpoint *clone;
7236
7237 /* longjmp_breakpoint_ops ensures INITIATING_FRAME is cleared again
7238 after their removal. */
7239 clone = momentary_breakpoint_from_master (b, type,
7240 &momentary_breakpoint_ops, 1);
7241 clone->thread = thread;
7242 }
7243
7244 tp->initiating_frame = frame;
7245 }
7246
7247 /* Delete all longjmp breakpoints from THREAD. */
7248 void
7249 delete_longjmp_breakpoint (int thread)
7250 {
7251 struct breakpoint *b, *b_tmp;
7252
7253 ALL_BREAKPOINTS_SAFE (b, b_tmp)
7254 if (b->type == bp_longjmp || b->type == bp_exception)
7255 {
7256 if (b->thread == thread)
7257 delete_breakpoint (b);
7258 }
7259 }
7260
7261 void
7262 delete_longjmp_breakpoint_at_next_stop (int thread)
7263 {
7264 struct breakpoint *b, *b_tmp;
7265
7266 ALL_BREAKPOINTS_SAFE (b, b_tmp)
7267 if (b->type == bp_longjmp || b->type == bp_exception)
7268 {
7269 if (b->thread == thread)
7270 b->disposition = disp_del_at_next_stop;
7271 }
7272 }
7273
7274 /* Place breakpoints of type bp_longjmp_call_dummy to catch longjmp for
7275 INFERIOR_PTID thread. Chain them all by RELATED_BREAKPOINT and return
7276 pointer to any of them. Return NULL if this system cannot place longjmp
7277 breakpoints. */
7278
7279 struct breakpoint *
7280 set_longjmp_breakpoint_for_call_dummy (void)
7281 {
7282 struct breakpoint *b, *retval = NULL;
7283
7284 ALL_BREAKPOINTS (b)
7285 if (b->pspace == current_program_space && b->type == bp_longjmp_master)
7286 {
7287 struct breakpoint *new_b;
7288
7289 new_b = momentary_breakpoint_from_master (b, bp_longjmp_call_dummy,
7290 &momentary_breakpoint_ops,
7291 1);
7292 new_b->thread = inferior_thread ()->global_num;
7293
7294 /* Link NEW_B into the chain of RETVAL breakpoints. */
7295
7296 gdb_assert (new_b->related_breakpoint == new_b);
7297 if (retval == NULL)
7298 retval = new_b;
7299 new_b->related_breakpoint = retval;
7300 while (retval->related_breakpoint != new_b->related_breakpoint)
7301 retval = retval->related_breakpoint;
7302 retval->related_breakpoint = new_b;
7303 }
7304
7305 return retval;
7306 }
7307
7308 /* Verify all existing dummy frames and their associated breakpoints for
7309 TP. Remove those which can no longer be found in the current frame
7310 stack.
7311
7312 You should call this function only at places where it is safe to currently
7313 unwind the whole stack. Failed stack unwind would discard live dummy
7314 frames. */
7315
7316 void
7317 check_longjmp_breakpoint_for_call_dummy (struct thread_info *tp)
7318 {
7319 struct breakpoint *b, *b_tmp;
7320
7321 ALL_BREAKPOINTS_SAFE (b, b_tmp)
7322 if (b->type == bp_longjmp_call_dummy && b->thread == tp->global_num)
7323 {
7324 struct breakpoint *dummy_b = b->related_breakpoint;
7325
7326 while (dummy_b != b && dummy_b->type != bp_call_dummy)
7327 dummy_b = dummy_b->related_breakpoint;
7328 if (dummy_b->type != bp_call_dummy
7329 || frame_find_by_id (dummy_b->frame_id) != NULL)
7330 continue;
7331
7332 dummy_frame_discard (dummy_b->frame_id, tp);
7333
7334 while (b->related_breakpoint != b)
7335 {
7336 if (b_tmp == b->related_breakpoint)
7337 b_tmp = b->related_breakpoint->next;
7338 delete_breakpoint (b->related_breakpoint);
7339 }
7340 delete_breakpoint (b);
7341 }
7342 }
7343
7344 void
7345 enable_overlay_breakpoints (void)
7346 {
7347 struct breakpoint *b;
7348
7349 ALL_BREAKPOINTS (b)
7350 if (b->type == bp_overlay_event)
7351 {
7352 b->enable_state = bp_enabled;
7353 update_global_location_list (UGLL_MAY_INSERT);
7354 overlay_events_enabled = 1;
7355 }
7356 }
7357
7358 void
7359 disable_overlay_breakpoints (void)
7360 {
7361 struct breakpoint *b;
7362
7363 ALL_BREAKPOINTS (b)
7364 if (b->type == bp_overlay_event)
7365 {
7366 b->enable_state = bp_disabled;
7367 update_global_location_list (UGLL_DONT_INSERT);
7368 overlay_events_enabled = 0;
7369 }
7370 }
7371
7372 /* Set an active std::terminate breakpoint for each std::terminate
7373 master breakpoint. */
7374 void
7375 set_std_terminate_breakpoint (void)
7376 {
7377 struct breakpoint *b, *b_tmp;
7378
7379 ALL_BREAKPOINTS_SAFE (b, b_tmp)
7380 if (b->pspace == current_program_space
7381 && b->type == bp_std_terminate_master)
7382 {
7383 momentary_breakpoint_from_master (b, bp_std_terminate,
7384 &momentary_breakpoint_ops, 1);
7385 }
7386 }
7387
7388 /* Delete all the std::terminate breakpoints. */
7389 void
7390 delete_std_terminate_breakpoint (void)
7391 {
7392 struct breakpoint *b, *b_tmp;
7393
7394 ALL_BREAKPOINTS_SAFE (b, b_tmp)
7395 if (b->type == bp_std_terminate)
7396 delete_breakpoint (b);
7397 }
7398
7399 struct breakpoint *
7400 create_thread_event_breakpoint (struct gdbarch *gdbarch, CORE_ADDR address)
7401 {
7402 struct breakpoint *b;
7403
7404 b = create_internal_breakpoint (gdbarch, address, bp_thread_event,
7405 &internal_breakpoint_ops);
7406
7407 b->enable_state = bp_enabled;
7408 /* location has to be used or breakpoint_re_set will delete me. */
7409 b->location = new_address_location (b->loc->address, NULL, 0);
7410
7411 update_global_location_list_nothrow (UGLL_MAY_INSERT);
7412
7413 return b;
7414 }
7415
7416 struct lang_and_radix
7417 {
7418 enum language lang;
7419 int radix;
7420 };
7421
7422 /* Create a breakpoint for JIT code registration and unregistration. */
7423
7424 struct breakpoint *
7425 create_jit_event_breakpoint (struct gdbarch *gdbarch, CORE_ADDR address)
7426 {
7427 return create_internal_breakpoint (gdbarch, address, bp_jit_event,
7428 &internal_breakpoint_ops);
7429 }
7430
7431 /* Remove JIT code registration and unregistration breakpoint(s). */
7432
7433 void
7434 remove_jit_event_breakpoints (void)
7435 {
7436 struct breakpoint *b, *b_tmp;
7437
7438 ALL_BREAKPOINTS_SAFE (b, b_tmp)
7439 if (b->type == bp_jit_event
7440 && b->loc->pspace == current_program_space)
7441 delete_breakpoint (b);
7442 }
7443
7444 void
7445 remove_solib_event_breakpoints (void)
7446 {
7447 struct breakpoint *b, *b_tmp;
7448
7449 ALL_BREAKPOINTS_SAFE (b, b_tmp)
7450 if (b->type == bp_shlib_event
7451 && b->loc->pspace == current_program_space)
7452 delete_breakpoint (b);
7453 }
7454
7455 /* See breakpoint.h. */
7456
7457 void
7458 remove_solib_event_breakpoints_at_next_stop (void)
7459 {
7460 struct breakpoint *b, *b_tmp;
7461
7462 ALL_BREAKPOINTS_SAFE (b, b_tmp)
7463 if (b->type == bp_shlib_event
7464 && b->loc->pspace == current_program_space)
7465 b->disposition = disp_del_at_next_stop;
7466 }
7467
7468 /* Helper for create_solib_event_breakpoint /
7469 create_and_insert_solib_event_breakpoint. Allows specifying which
7470 INSERT_MODE to pass through to update_global_location_list. */
7471
7472 static struct breakpoint *
7473 create_solib_event_breakpoint_1 (struct gdbarch *gdbarch, CORE_ADDR address,
7474 enum ugll_insert_mode insert_mode)
7475 {
7476 struct breakpoint *b;
7477
7478 b = create_internal_breakpoint (gdbarch, address, bp_shlib_event,
7479 &internal_breakpoint_ops);
7480 update_global_location_list_nothrow (insert_mode);
7481 return b;
7482 }
7483
7484 struct breakpoint *
7485 create_solib_event_breakpoint (struct gdbarch *gdbarch, CORE_ADDR address)
7486 {
7487 return create_solib_event_breakpoint_1 (gdbarch, address, UGLL_MAY_INSERT);
7488 }
7489
7490 /* See breakpoint.h. */
7491
7492 struct breakpoint *
7493 create_and_insert_solib_event_breakpoint (struct gdbarch *gdbarch, CORE_ADDR address)
7494 {
7495 struct breakpoint *b;
7496
7497 /* Explicitly tell update_global_location_list to insert
7498 locations. */
7499 b = create_solib_event_breakpoint_1 (gdbarch, address, UGLL_INSERT);
7500 if (!b->loc->inserted)
7501 {
7502 delete_breakpoint (b);
7503 return NULL;
7504 }
7505 return b;
7506 }
7507
7508 /* Disable any breakpoints that are on code in shared libraries. Only
7509 apply to enabled breakpoints, disabled ones can just stay disabled. */
7510
7511 void
7512 disable_breakpoints_in_shlibs (void)
7513 {
7514 struct bp_location *loc, **locp_tmp;
7515
7516 ALL_BP_LOCATIONS (loc, locp_tmp)
7517 {
7518 /* ALL_BP_LOCATIONS bp_location has LOC->OWNER always non-NULL. */
7519 struct breakpoint *b = loc->owner;
7520
7521 /* We apply the check to all breakpoints, including disabled for
7522 those with loc->duplicate set. This is so that when breakpoint
7523 becomes enabled, or the duplicate is removed, gdb will try to
7524 insert all breakpoints. If we don't set shlib_disabled here,
7525 we'll try to insert those breakpoints and fail. */
7526 if (((b->type == bp_breakpoint)
7527 || (b->type == bp_jit_event)
7528 || (b->type == bp_hardware_breakpoint)
7529 || (is_tracepoint (b)))
7530 && loc->pspace == current_program_space
7531 && !loc->shlib_disabled
7532 && solib_name_from_address (loc->pspace, loc->address)
7533 )
7534 {
7535 loc->shlib_disabled = 1;
7536 }
7537 }
7538 }
7539
7540 /* Disable any breakpoints and tracepoints that are in SOLIB upon
7541 notification of unloaded_shlib. Only apply to enabled breakpoints,
7542 disabled ones can just stay disabled. */
7543
7544 static void
7545 disable_breakpoints_in_unloaded_shlib (struct so_list *solib)
7546 {
7547 struct bp_location *loc, **locp_tmp;
7548 int disabled_shlib_breaks = 0;
7549
7550 ALL_BP_LOCATIONS (loc, locp_tmp)
7551 {
7552 /* ALL_BP_LOCATIONS bp_location has LOC->OWNER always non-NULL. */
7553 struct breakpoint *b = loc->owner;
7554
7555 if (solib->pspace == loc->pspace
7556 && !loc->shlib_disabled
7557 && (((b->type == bp_breakpoint
7558 || b->type == bp_jit_event
7559 || b->type == bp_hardware_breakpoint)
7560 && (loc->loc_type == bp_loc_hardware_breakpoint
7561 || loc->loc_type == bp_loc_software_breakpoint))
7562 || is_tracepoint (b))
7563 && solib_contains_address_p (solib, loc->address))
7564 {
7565 loc->shlib_disabled = 1;
7566 /* At this point, we cannot rely on remove_breakpoint
7567 succeeding so we must mark the breakpoint as not inserted
7568 to prevent future errors occurring in remove_breakpoints. */
7569 loc->inserted = 0;
7570
7571 /* This may cause duplicate notifications for the same breakpoint. */
7572 gdb::observers::breakpoint_modified.notify (b);
7573
7574 if (!disabled_shlib_breaks)
7575 {
7576 target_terminal::ours_for_output ();
7577 warning (_("Temporarily disabling breakpoints "
7578 "for unloaded shared library \"%s\""),
7579 solib->so_name);
7580 }
7581 disabled_shlib_breaks = 1;
7582 }
7583 }
7584 }
7585
7586 /* Disable any breakpoints and tracepoints in OBJFILE upon
7587 notification of free_objfile. Only apply to enabled breakpoints,
7588 disabled ones can just stay disabled. */
7589
7590 static void
7591 disable_breakpoints_in_freed_objfile (struct objfile *objfile)
7592 {
7593 struct breakpoint *b;
7594
7595 if (objfile == NULL)
7596 return;
7597
7598 /* OBJF_SHARED|OBJF_USERLOADED objfiles are dynamic modules manually
7599 managed by the user with add-symbol-file/remove-symbol-file.
7600 Similarly to how breakpoints in shared libraries are handled in
7601 response to "nosharedlibrary", mark breakpoints in such modules
7602 shlib_disabled so they end up uninserted on the next global
7603 location list update. Shared libraries not loaded by the user
7604 aren't handled here -- they're already handled in
7605 disable_breakpoints_in_unloaded_shlib, called by solib.c's
7606 solib_unloaded observer. We skip objfiles that are not
7607 OBJF_SHARED as those aren't considered dynamic objects (e.g. the
7608 main objfile). */
7609 if ((objfile->flags & OBJF_SHARED) == 0
7610 || (objfile->flags & OBJF_USERLOADED) == 0)
7611 return;
7612
7613 ALL_BREAKPOINTS (b)
7614 {
7615 struct bp_location *loc;
7616 int bp_modified = 0;
7617
7618 if (!is_breakpoint (b) && !is_tracepoint (b))
7619 continue;
7620
7621 for (loc = b->loc; loc != NULL; loc = loc->next)
7622 {
7623 CORE_ADDR loc_addr = loc->address;
7624
7625 if (loc->loc_type != bp_loc_hardware_breakpoint
7626 && loc->loc_type != bp_loc_software_breakpoint)
7627 continue;
7628
7629 if (loc->shlib_disabled != 0)
7630 continue;
7631
7632 if (objfile->pspace != loc->pspace)
7633 continue;
7634
7635 if (loc->loc_type != bp_loc_hardware_breakpoint
7636 && loc->loc_type != bp_loc_software_breakpoint)
7637 continue;
7638
7639 if (is_addr_in_objfile (loc_addr, objfile))
7640 {
7641 loc->shlib_disabled = 1;
7642 /* At this point, we don't know whether the object was
7643 unmapped from the inferior or not, so leave the
7644 inserted flag alone. We'll handle failure to
7645 uninsert quietly, in case the object was indeed
7646 unmapped. */
7647
7648 mark_breakpoint_location_modified (loc);
7649
7650 bp_modified = 1;
7651 }
7652 }
7653
7654 if (bp_modified)
7655 gdb::observers::breakpoint_modified.notify (b);
7656 }
7657 }
7658
7659 /* FORK & VFORK catchpoints. */
7660
7661 /* An instance of this type is used to represent a fork or vfork
7662 catchpoint. A breakpoint is really of this type iff its ops pointer points
7663 to CATCH_FORK_BREAKPOINT_OPS. */
7664
7665 struct fork_catchpoint : public breakpoint
7666 {
7667 /* Process id of a child process whose forking triggered this
7668 catchpoint. This field is only valid immediately after this
7669 catchpoint has triggered. */
7670 ptid_t forked_inferior_pid;
7671 };
7672
7673 /* Implement the "insert" breakpoint_ops method for fork
7674 catchpoints. */
7675
7676 static int
7677 insert_catch_fork (struct bp_location *bl)
7678 {
7679 return target_insert_fork_catchpoint (inferior_ptid.pid ());
7680 }
7681
7682 /* Implement the "remove" breakpoint_ops method for fork
7683 catchpoints. */
7684
7685 static int
7686 remove_catch_fork (struct bp_location *bl, enum remove_bp_reason reason)
7687 {
7688 return target_remove_fork_catchpoint (inferior_ptid.pid ());
7689 }
7690
7691 /* Implement the "breakpoint_hit" breakpoint_ops method for fork
7692 catchpoints. */
7693
7694 static int
7695 breakpoint_hit_catch_fork (const struct bp_location *bl,
7696 const address_space *aspace, CORE_ADDR bp_addr,
7697 const struct target_waitstatus *ws)
7698 {
7699 struct fork_catchpoint *c = (struct fork_catchpoint *) bl->owner;
7700
7701 if (ws->kind != TARGET_WAITKIND_FORKED)
7702 return 0;
7703
7704 c->forked_inferior_pid = ws->value.related_pid;
7705 return 1;
7706 }
7707
7708 /* Implement the "print_it" breakpoint_ops method for fork
7709 catchpoints. */
7710
7711 static enum print_stop_action
7712 print_it_catch_fork (bpstat bs)
7713 {
7714 struct ui_out *uiout = current_uiout;
7715 struct breakpoint *b = bs->breakpoint_at;
7716 struct fork_catchpoint *c = (struct fork_catchpoint *) bs->breakpoint_at;
7717
7718 annotate_catchpoint (b->number);
7719 maybe_print_thread_hit_breakpoint (uiout);
7720 if (b->disposition == disp_del)
7721 uiout->text ("Temporary catchpoint ");
7722 else
7723 uiout->text ("Catchpoint ");
7724 if (uiout->is_mi_like_p ())
7725 {
7726 uiout->field_string ("reason", async_reason_lookup (EXEC_ASYNC_FORK));
7727 uiout->field_string ("disp", bpdisp_text (b->disposition));
7728 }
7729 uiout->field_int ("bkptno", b->number);
7730 uiout->text (" (forked process ");
7731 uiout->field_int ("newpid", c->forked_inferior_pid.pid ());
7732 uiout->text ("), ");
7733 return PRINT_SRC_AND_LOC;
7734 }
7735
7736 /* Implement the "print_one" breakpoint_ops method for fork
7737 catchpoints. */
7738
7739 static void
7740 print_one_catch_fork (struct breakpoint *b, struct bp_location **last_loc)
7741 {
7742 struct fork_catchpoint *c = (struct fork_catchpoint *) b;
7743 struct value_print_options opts;
7744 struct ui_out *uiout = current_uiout;
7745
7746 get_user_print_options (&opts);
7747
7748 /* Field 4, the address, is omitted (which makes the columns not
7749 line up too nicely with the headers, but the effect is relatively
7750 readable). */
7751 if (opts.addressprint)
7752 uiout->field_skip ("addr");
7753 annotate_field (5);
7754 uiout->text ("fork");
7755 if (c->forked_inferior_pid != null_ptid)
7756 {
7757 uiout->text (", process ");
7758 uiout->field_int ("what", c->forked_inferior_pid.pid ());
7759 uiout->spaces (1);
7760 }
7761
7762 if (uiout->is_mi_like_p ())
7763 uiout->field_string ("catch-type", "fork");
7764 }
7765
7766 /* Implement the "print_mention" breakpoint_ops method for fork
7767 catchpoints. */
7768
7769 static void
7770 print_mention_catch_fork (struct breakpoint *b)
7771 {
7772 printf_filtered (_("Catchpoint %d (fork)"), b->number);
7773 }
7774
7775 /* Implement the "print_recreate" breakpoint_ops method for fork
7776 catchpoints. */
7777
7778 static void
7779 print_recreate_catch_fork (struct breakpoint *b, struct ui_file *fp)
7780 {
7781 fprintf_unfiltered (fp, "catch fork");
7782 print_recreate_thread (b, fp);
7783 }
7784
7785 /* The breakpoint_ops structure to be used in fork catchpoints. */
7786
7787 static struct breakpoint_ops catch_fork_breakpoint_ops;
7788
7789 /* Implement the "insert" breakpoint_ops method for vfork
7790 catchpoints. */
7791
7792 static int
7793 insert_catch_vfork (struct bp_location *bl)
7794 {
7795 return target_insert_vfork_catchpoint (inferior_ptid.pid ());
7796 }
7797
7798 /* Implement the "remove" breakpoint_ops method for vfork
7799 catchpoints. */
7800
7801 static int
7802 remove_catch_vfork (struct bp_location *bl, enum remove_bp_reason reason)
7803 {
7804 return target_remove_vfork_catchpoint (inferior_ptid.pid ());
7805 }
7806
7807 /* Implement the "breakpoint_hit" breakpoint_ops method for vfork
7808 catchpoints. */
7809
7810 static int
7811 breakpoint_hit_catch_vfork (const struct bp_location *bl,
7812 const address_space *aspace, CORE_ADDR bp_addr,
7813 const struct target_waitstatus *ws)
7814 {
7815 struct fork_catchpoint *c = (struct fork_catchpoint *) bl->owner;
7816
7817 if (ws->kind != TARGET_WAITKIND_VFORKED)
7818 return 0;
7819
7820 c->forked_inferior_pid = ws->value.related_pid;
7821 return 1;
7822 }
7823
7824 /* Implement the "print_it" breakpoint_ops method for vfork
7825 catchpoints. */
7826
7827 static enum print_stop_action
7828 print_it_catch_vfork (bpstat bs)
7829 {
7830 struct ui_out *uiout = current_uiout;
7831 struct breakpoint *b = bs->breakpoint_at;
7832 struct fork_catchpoint *c = (struct fork_catchpoint *) b;
7833
7834 annotate_catchpoint (b->number);
7835 maybe_print_thread_hit_breakpoint (uiout);
7836 if (b->disposition == disp_del)
7837 uiout->text ("Temporary catchpoint ");
7838 else
7839 uiout->text ("Catchpoint ");
7840 if (uiout->is_mi_like_p ())
7841 {
7842 uiout->field_string ("reason", async_reason_lookup (EXEC_ASYNC_VFORK));
7843 uiout->field_string ("disp", bpdisp_text (b->disposition));
7844 }
7845 uiout->field_int ("bkptno", b->number);
7846 uiout->text (" (vforked process ");
7847 uiout->field_int ("newpid", c->forked_inferior_pid.pid ());
7848 uiout->text ("), ");
7849 return PRINT_SRC_AND_LOC;
7850 }
7851
7852 /* Implement the "print_one" breakpoint_ops method for vfork
7853 catchpoints. */
7854
7855 static void
7856 print_one_catch_vfork (struct breakpoint *b, struct bp_location **last_loc)
7857 {
7858 struct fork_catchpoint *c = (struct fork_catchpoint *) b;
7859 struct value_print_options opts;
7860 struct ui_out *uiout = current_uiout;
7861
7862 get_user_print_options (&opts);
7863 /* Field 4, the address, is omitted (which makes the columns not
7864 line up too nicely with the headers, but the effect is relatively
7865 readable). */
7866 if (opts.addressprint)
7867 uiout->field_skip ("addr");
7868 annotate_field (5);
7869 uiout->text ("vfork");
7870 if (c->forked_inferior_pid != null_ptid)
7871 {
7872 uiout->text (", process ");
7873 uiout->field_int ("what", c->forked_inferior_pid.pid ());
7874 uiout->spaces (1);
7875 }
7876
7877 if (uiout->is_mi_like_p ())
7878 uiout->field_string ("catch-type", "vfork");
7879 }
7880
7881 /* Implement the "print_mention" breakpoint_ops method for vfork
7882 catchpoints. */
7883
7884 static void
7885 print_mention_catch_vfork (struct breakpoint *b)
7886 {
7887 printf_filtered (_("Catchpoint %d (vfork)"), b->number);
7888 }
7889
7890 /* Implement the "print_recreate" breakpoint_ops method for vfork
7891 catchpoints. */
7892
7893 static void
7894 print_recreate_catch_vfork (struct breakpoint *b, struct ui_file *fp)
7895 {
7896 fprintf_unfiltered (fp, "catch vfork");
7897 print_recreate_thread (b, fp);
7898 }
7899
7900 /* The breakpoint_ops structure to be used in vfork catchpoints. */
7901
7902 static struct breakpoint_ops catch_vfork_breakpoint_ops;
7903
7904 /* An instance of this type is used to represent an solib catchpoint.
7905 A breakpoint is really of this type iff its ops pointer points to
7906 CATCH_SOLIB_BREAKPOINT_OPS. */
7907
7908 struct solib_catchpoint : public breakpoint
7909 {
7910 ~solib_catchpoint () override;
7911
7912 /* True for "catch load", false for "catch unload". */
7913 unsigned char is_load;
7914
7915 /* Regular expression to match, if any. COMPILED is only valid when
7916 REGEX is non-NULL. */
7917 char *regex;
7918 std::unique_ptr<compiled_regex> compiled;
7919 };
7920
7921 solib_catchpoint::~solib_catchpoint ()
7922 {
7923 xfree (this->regex);
7924 }
7925
7926 static int
7927 insert_catch_solib (struct bp_location *ignore)
7928 {
7929 return 0;
7930 }
7931
7932 static int
7933 remove_catch_solib (struct bp_location *ignore, enum remove_bp_reason reason)
7934 {
7935 return 0;
7936 }
7937
7938 static int
7939 breakpoint_hit_catch_solib (const struct bp_location *bl,
7940 const address_space *aspace,
7941 CORE_ADDR bp_addr,
7942 const struct target_waitstatus *ws)
7943 {
7944 struct solib_catchpoint *self = (struct solib_catchpoint *) bl->owner;
7945 struct breakpoint *other;
7946
7947 if (ws->kind == TARGET_WAITKIND_LOADED)
7948 return 1;
7949
7950 ALL_BREAKPOINTS (other)
7951 {
7952 struct bp_location *other_bl;
7953
7954 if (other == bl->owner)
7955 continue;
7956
7957 if (other->type != bp_shlib_event)
7958 continue;
7959
7960 if (self->pspace != NULL && other->pspace != self->pspace)
7961 continue;
7962
7963 for (other_bl = other->loc; other_bl != NULL; other_bl = other_bl->next)
7964 {
7965 if (other->ops->breakpoint_hit (other_bl, aspace, bp_addr, ws))
7966 return 1;
7967 }
7968 }
7969
7970 return 0;
7971 }
7972
7973 static void
7974 check_status_catch_solib (struct bpstats *bs)
7975 {
7976 struct solib_catchpoint *self
7977 = (struct solib_catchpoint *) bs->breakpoint_at;
7978
7979 if (self->is_load)
7980 {
7981 for (so_list *iter : current_program_space->added_solibs)
7982 {
7983 if (!self->regex
7984 || self->compiled->exec (iter->so_name, 0, NULL, 0) == 0)
7985 return;
7986 }
7987 }
7988 else
7989 {
7990 for (const std::string &iter : current_program_space->deleted_solibs)
7991 {
7992 if (!self->regex
7993 || self->compiled->exec (iter.c_str (), 0, NULL, 0) == 0)
7994 return;
7995 }
7996 }
7997
7998 bs->stop = 0;
7999 bs->print_it = print_it_noop;
8000 }
8001
8002 static enum print_stop_action
8003 print_it_catch_solib (bpstat bs)
8004 {
8005 struct breakpoint *b = bs->breakpoint_at;
8006 struct ui_out *uiout = current_uiout;
8007
8008 annotate_catchpoint (b->number);
8009 maybe_print_thread_hit_breakpoint (uiout);
8010 if (b->disposition == disp_del)
8011 uiout->text ("Temporary catchpoint ");
8012 else
8013 uiout->text ("Catchpoint ");
8014 uiout->field_int ("bkptno", b->number);
8015 uiout->text ("\n");
8016 if (uiout->is_mi_like_p ())
8017 uiout->field_string ("disp", bpdisp_text (b->disposition));
8018 print_solib_event (1);
8019 return PRINT_SRC_AND_LOC;
8020 }
8021
8022 static void
8023 print_one_catch_solib (struct breakpoint *b, struct bp_location **locs)
8024 {
8025 struct solib_catchpoint *self = (struct solib_catchpoint *) b;
8026 struct value_print_options opts;
8027 struct ui_out *uiout = current_uiout;
8028
8029 get_user_print_options (&opts);
8030 /* Field 4, the address, is omitted (which makes the columns not
8031 line up too nicely with the headers, but the effect is relatively
8032 readable). */
8033 if (opts.addressprint)
8034 {
8035 annotate_field (4);
8036 uiout->field_skip ("addr");
8037 }
8038
8039 std::string msg;
8040 annotate_field (5);
8041 if (self->is_load)
8042 {
8043 if (self->regex)
8044 msg = string_printf (_("load of library matching %s"), self->regex);
8045 else
8046 msg = _("load of library");
8047 }
8048 else
8049 {
8050 if (self->regex)
8051 msg = string_printf (_("unload of library matching %s"), self->regex);
8052 else
8053 msg = _("unload of library");
8054 }
8055 uiout->field_string ("what", msg);
8056
8057 if (uiout->is_mi_like_p ())
8058 uiout->field_string ("catch-type", self->is_load ? "load" : "unload");
8059 }
8060
8061 static void
8062 print_mention_catch_solib (struct breakpoint *b)
8063 {
8064 struct solib_catchpoint *self = (struct solib_catchpoint *) b;
8065
8066 printf_filtered (_("Catchpoint %d (%s)"), b->number,
8067 self->is_load ? "load" : "unload");
8068 }
8069
8070 static void
8071 print_recreate_catch_solib (struct breakpoint *b, struct ui_file *fp)
8072 {
8073 struct solib_catchpoint *self = (struct solib_catchpoint *) b;
8074
8075 fprintf_unfiltered (fp, "%s %s",
8076 b->disposition == disp_del ? "tcatch" : "catch",
8077 self->is_load ? "load" : "unload");
8078 if (self->regex)
8079 fprintf_unfiltered (fp, " %s", self->regex);
8080 fprintf_unfiltered (fp, "\n");
8081 }
8082
8083 static struct breakpoint_ops catch_solib_breakpoint_ops;
8084
8085 /* Shared helper function (MI and CLI) for creating and installing
8086 a shared object event catchpoint. If IS_LOAD is non-zero then
8087 the events to be caught are load events, otherwise they are
8088 unload events. If IS_TEMP is non-zero the catchpoint is a
8089 temporary one. If ENABLED is non-zero the catchpoint is
8090 created in an enabled state. */
8091
8092 void
8093 add_solib_catchpoint (const char *arg, int is_load, int is_temp, int enabled)
8094 {
8095 struct gdbarch *gdbarch = get_current_arch ();
8096
8097 if (!arg)
8098 arg = "";
8099 arg = skip_spaces (arg);
8100
8101 std::unique_ptr<solib_catchpoint> c (new solib_catchpoint ());
8102
8103 if (*arg != '\0')
8104 {
8105 c->compiled.reset (new compiled_regex (arg, REG_NOSUB,
8106 _("Invalid regexp")));
8107 c->regex = xstrdup (arg);
8108 }
8109
8110 c->is_load = is_load;
8111 init_catchpoint (c.get (), gdbarch, is_temp, NULL,
8112 &catch_solib_breakpoint_ops);
8113
8114 c->enable_state = enabled ? bp_enabled : bp_disabled;
8115
8116 install_breakpoint (0, std::move (c), 1);
8117 }
8118
8119 /* A helper function that does all the work for "catch load" and
8120 "catch unload". */
8121
8122 static void
8123 catch_load_or_unload (const char *arg, int from_tty, int is_load,
8124 struct cmd_list_element *command)
8125 {
8126 int tempflag;
8127 const int enabled = 1;
8128
8129 tempflag = get_cmd_context (command) == CATCH_TEMPORARY;
8130
8131 add_solib_catchpoint (arg, is_load, tempflag, enabled);
8132 }
8133
8134 static void
8135 catch_load_command_1 (const char *arg, int from_tty,
8136 struct cmd_list_element *command)
8137 {
8138 catch_load_or_unload (arg, from_tty, 1, command);
8139 }
8140
8141 static void
8142 catch_unload_command_1 (const char *arg, int from_tty,
8143 struct cmd_list_element *command)
8144 {
8145 catch_load_or_unload (arg, from_tty, 0, command);
8146 }
8147
8148 /* Initialize a new breakpoint of the bp_catchpoint kind. If TEMPFLAG
8149 is non-zero, then make the breakpoint temporary. If COND_STRING is
8150 not NULL, then store it in the breakpoint. OPS, if not NULL, is
8151 the breakpoint_ops structure associated to the catchpoint. */
8152
8153 void
8154 init_catchpoint (struct breakpoint *b,
8155 struct gdbarch *gdbarch, int tempflag,
8156 const char *cond_string,
8157 const struct breakpoint_ops *ops)
8158 {
8159 symtab_and_line sal;
8160 sal.pspace = current_program_space;
8161
8162 init_raw_breakpoint (b, gdbarch, sal, bp_catchpoint, ops);
8163
8164 b->cond_string = (cond_string == NULL) ? NULL : xstrdup (cond_string);
8165 b->disposition = tempflag ? disp_del : disp_donttouch;
8166 }
8167
8168 void
8169 install_breakpoint (int internal, std::unique_ptr<breakpoint> &&arg, int update_gll)
8170 {
8171 breakpoint *b = add_to_breakpoint_chain (std::move (arg));
8172 set_breakpoint_number (internal, b);
8173 if (is_tracepoint (b))
8174 set_tracepoint_count (breakpoint_count);
8175 if (!internal)
8176 mention (b);
8177 gdb::observers::breakpoint_created.notify (b);
8178
8179 if (update_gll)
8180 update_global_location_list (UGLL_MAY_INSERT);
8181 }
8182
8183 static void
8184 create_fork_vfork_event_catchpoint (struct gdbarch *gdbarch,
8185 int tempflag, const char *cond_string,
8186 const struct breakpoint_ops *ops)
8187 {
8188 std::unique_ptr<fork_catchpoint> c (new fork_catchpoint ());
8189
8190 init_catchpoint (c.get (), gdbarch, tempflag, cond_string, ops);
8191
8192 c->forked_inferior_pid = null_ptid;
8193
8194 install_breakpoint (0, std::move (c), 1);
8195 }
8196
8197 /* Exec catchpoints. */
8198
8199 /* An instance of this type is used to represent an exec catchpoint.
8200 A breakpoint is really of this type iff its ops pointer points to
8201 CATCH_EXEC_BREAKPOINT_OPS. */
8202
8203 struct exec_catchpoint : public breakpoint
8204 {
8205 ~exec_catchpoint () override;
8206
8207 /* Filename of a program whose exec triggered this catchpoint.
8208 This field is only valid immediately after this catchpoint has
8209 triggered. */
8210 char *exec_pathname;
8211 };
8212
8213 /* Exec catchpoint destructor. */
8214
8215 exec_catchpoint::~exec_catchpoint ()
8216 {
8217 xfree (this->exec_pathname);
8218 }
8219
8220 static int
8221 insert_catch_exec (struct bp_location *bl)
8222 {
8223 return target_insert_exec_catchpoint (inferior_ptid.pid ());
8224 }
8225
8226 static int
8227 remove_catch_exec (struct bp_location *bl, enum remove_bp_reason reason)
8228 {
8229 return target_remove_exec_catchpoint (inferior_ptid.pid ());
8230 }
8231
8232 static int
8233 breakpoint_hit_catch_exec (const struct bp_location *bl,
8234 const address_space *aspace, CORE_ADDR bp_addr,
8235 const struct target_waitstatus *ws)
8236 {
8237 struct exec_catchpoint *c = (struct exec_catchpoint *) bl->owner;
8238
8239 if (ws->kind != TARGET_WAITKIND_EXECD)
8240 return 0;
8241
8242 c->exec_pathname = xstrdup (ws->value.execd_pathname);
8243 return 1;
8244 }
8245
8246 static enum print_stop_action
8247 print_it_catch_exec (bpstat bs)
8248 {
8249 struct ui_out *uiout = current_uiout;
8250 struct breakpoint *b = bs->breakpoint_at;
8251 struct exec_catchpoint *c = (struct exec_catchpoint *) b;
8252
8253 annotate_catchpoint (b->number);
8254 maybe_print_thread_hit_breakpoint (uiout);
8255 if (b->disposition == disp_del)
8256 uiout->text ("Temporary catchpoint ");
8257 else
8258 uiout->text ("Catchpoint ");
8259 if (uiout->is_mi_like_p ())
8260 {
8261 uiout->field_string ("reason", async_reason_lookup (EXEC_ASYNC_EXEC));
8262 uiout->field_string ("disp", bpdisp_text (b->disposition));
8263 }
8264 uiout->field_int ("bkptno", b->number);
8265 uiout->text (" (exec'd ");
8266 uiout->field_string ("new-exec", c->exec_pathname);
8267 uiout->text ("), ");
8268
8269 return PRINT_SRC_AND_LOC;
8270 }
8271
8272 static void
8273 print_one_catch_exec (struct breakpoint *b, struct bp_location **last_loc)
8274 {
8275 struct exec_catchpoint *c = (struct exec_catchpoint *) b;
8276 struct value_print_options opts;
8277 struct ui_out *uiout = current_uiout;
8278
8279 get_user_print_options (&opts);
8280
8281 /* Field 4, the address, is omitted (which makes the columns
8282 not line up too nicely with the headers, but the effect
8283 is relatively readable). */
8284 if (opts.addressprint)
8285 uiout->field_skip ("addr");
8286 annotate_field (5);
8287 uiout->text ("exec");
8288 if (c->exec_pathname != NULL)
8289 {
8290 uiout->text (", program \"");
8291 uiout->field_string ("what", c->exec_pathname);
8292 uiout->text ("\" ");
8293 }
8294
8295 if (uiout->is_mi_like_p ())
8296 uiout->field_string ("catch-type", "exec");
8297 }
8298
8299 static void
8300 print_mention_catch_exec (struct breakpoint *b)
8301 {
8302 printf_filtered (_("Catchpoint %d (exec)"), b->number);
8303 }
8304
8305 /* Implement the "print_recreate" breakpoint_ops method for exec
8306 catchpoints. */
8307
8308 static void
8309 print_recreate_catch_exec (struct breakpoint *b, struct ui_file *fp)
8310 {
8311 fprintf_unfiltered (fp, "catch exec");
8312 print_recreate_thread (b, fp);
8313 }
8314
8315 static struct breakpoint_ops catch_exec_breakpoint_ops;
8316
8317 static int
8318 hw_breakpoint_used_count (void)
8319 {
8320 int i = 0;
8321 struct breakpoint *b;
8322 struct bp_location *bl;
8323
8324 ALL_BREAKPOINTS (b)
8325 {
8326 if (b->type == bp_hardware_breakpoint && breakpoint_enabled (b))
8327 for (bl = b->loc; bl; bl = bl->next)
8328 {
8329 /* Special types of hardware breakpoints may use more than
8330 one register. */
8331 i += b->ops->resources_needed (bl);
8332 }
8333 }
8334
8335 return i;
8336 }
8337
8338 /* Returns the resources B would use if it were a hardware
8339 watchpoint. */
8340
8341 static int
8342 hw_watchpoint_use_count (struct breakpoint *b)
8343 {
8344 int i = 0;
8345 struct bp_location *bl;
8346
8347 if (!breakpoint_enabled (b))
8348 return 0;
8349
8350 for (bl = b->loc; bl; bl = bl->next)
8351 {
8352 /* Special types of hardware watchpoints may use more than
8353 one register. */
8354 i += b->ops->resources_needed (bl);
8355 }
8356
8357 return i;
8358 }
8359
8360 /* Returns the sum the used resources of all hardware watchpoints of
8361 type TYPE in the breakpoints list. Also returns in OTHER_TYPE_USED
8362 the sum of the used resources of all hardware watchpoints of other
8363 types _not_ TYPE. */
8364
8365 static int
8366 hw_watchpoint_used_count_others (struct breakpoint *except,
8367 enum bptype type, int *other_type_used)
8368 {
8369 int i = 0;
8370 struct breakpoint *b;
8371
8372 *other_type_used = 0;
8373 ALL_BREAKPOINTS (b)
8374 {
8375 if (b == except)
8376 continue;
8377 if (!breakpoint_enabled (b))
8378 continue;
8379
8380 if (b->type == type)
8381 i += hw_watchpoint_use_count (b);
8382 else if (is_hardware_watchpoint (b))
8383 *other_type_used = 1;
8384 }
8385
8386 return i;
8387 }
8388
8389 void
8390 disable_watchpoints_before_interactive_call_start (void)
8391 {
8392 struct breakpoint *b;
8393
8394 ALL_BREAKPOINTS (b)
8395 {
8396 if (is_watchpoint (b) && breakpoint_enabled (b))
8397 {
8398 b->enable_state = bp_call_disabled;
8399 update_global_location_list (UGLL_DONT_INSERT);
8400 }
8401 }
8402 }
8403
8404 void
8405 enable_watchpoints_after_interactive_call_stop (void)
8406 {
8407 struct breakpoint *b;
8408
8409 ALL_BREAKPOINTS (b)
8410 {
8411 if (is_watchpoint (b) && b->enable_state == bp_call_disabled)
8412 {
8413 b->enable_state = bp_enabled;
8414 update_global_location_list (UGLL_MAY_INSERT);
8415 }
8416 }
8417 }
8418
8419 void
8420 disable_breakpoints_before_startup (void)
8421 {
8422 current_program_space->executing_startup = 1;
8423 update_global_location_list (UGLL_DONT_INSERT);
8424 }
8425
8426 void
8427 enable_breakpoints_after_startup (void)
8428 {
8429 current_program_space->executing_startup = 0;
8430 breakpoint_re_set ();
8431 }
8432
8433 /* Create a new single-step breakpoint for thread THREAD, with no
8434 locations. */
8435
8436 static struct breakpoint *
8437 new_single_step_breakpoint (int thread, struct gdbarch *gdbarch)
8438 {
8439 std::unique_ptr<breakpoint> b (new breakpoint ());
8440
8441 init_raw_breakpoint_without_location (b.get (), gdbarch, bp_single_step,
8442 &momentary_breakpoint_ops);
8443
8444 b->disposition = disp_donttouch;
8445 b->frame_id = null_frame_id;
8446
8447 b->thread = thread;
8448 gdb_assert (b->thread != 0);
8449
8450 return add_to_breakpoint_chain (std::move (b));
8451 }
8452
8453 /* Set a momentary breakpoint of type TYPE at address specified by
8454 SAL. If FRAME_ID is valid, the breakpoint is restricted to that
8455 frame. */
8456
8457 breakpoint_up
8458 set_momentary_breakpoint (struct gdbarch *gdbarch, struct symtab_and_line sal,
8459 struct frame_id frame_id, enum bptype type)
8460 {
8461 struct breakpoint *b;
8462
8463 /* If FRAME_ID is valid, it should be a real frame, not an inlined or
8464 tail-called one. */
8465 gdb_assert (!frame_id_artificial_p (frame_id));
8466
8467 b = set_raw_breakpoint (gdbarch, sal, type, &momentary_breakpoint_ops);
8468 b->enable_state = bp_enabled;
8469 b->disposition = disp_donttouch;
8470 b->frame_id = frame_id;
8471
8472 b->thread = inferior_thread ()->global_num;
8473
8474 update_global_location_list_nothrow (UGLL_MAY_INSERT);
8475
8476 return breakpoint_up (b);
8477 }
8478
8479 /* Make a momentary breakpoint based on the master breakpoint ORIG.
8480 The new breakpoint will have type TYPE, use OPS as its
8481 breakpoint_ops, and will set enabled to LOC_ENABLED. */
8482
8483 static struct breakpoint *
8484 momentary_breakpoint_from_master (struct breakpoint *orig,
8485 enum bptype type,
8486 const struct breakpoint_ops *ops,
8487 int loc_enabled)
8488 {
8489 struct breakpoint *copy;
8490
8491 copy = set_raw_breakpoint_without_location (orig->gdbarch, type, ops);
8492 copy->loc = allocate_bp_location (copy);
8493 set_breakpoint_location_function (copy->loc, 1);
8494
8495 copy->loc->gdbarch = orig->loc->gdbarch;
8496 copy->loc->requested_address = orig->loc->requested_address;
8497 copy->loc->address = orig->loc->address;
8498 copy->loc->section = orig->loc->section;
8499 copy->loc->pspace = orig->loc->pspace;
8500 copy->loc->probe = orig->loc->probe;
8501 copy->loc->line_number = orig->loc->line_number;
8502 copy->loc->symtab = orig->loc->symtab;
8503 copy->loc->enabled = loc_enabled;
8504 copy->frame_id = orig->frame_id;
8505 copy->thread = orig->thread;
8506 copy->pspace = orig->pspace;
8507
8508 copy->enable_state = bp_enabled;
8509 copy->disposition = disp_donttouch;
8510 copy->number = internal_breakpoint_number--;
8511
8512 update_global_location_list_nothrow (UGLL_DONT_INSERT);
8513 return copy;
8514 }
8515
8516 /* Make a deep copy of momentary breakpoint ORIG. Returns NULL if
8517 ORIG is NULL. */
8518
8519 struct breakpoint *
8520 clone_momentary_breakpoint (struct breakpoint *orig)
8521 {
8522 /* If there's nothing to clone, then return nothing. */
8523 if (orig == NULL)
8524 return NULL;
8525
8526 return momentary_breakpoint_from_master (orig, orig->type, orig->ops, 0);
8527 }
8528
8529 breakpoint_up
8530 set_momentary_breakpoint_at_pc (struct gdbarch *gdbarch, CORE_ADDR pc,
8531 enum bptype type)
8532 {
8533 struct symtab_and_line sal;
8534
8535 sal = find_pc_line (pc, 0);
8536 sal.pc = pc;
8537 sal.section = find_pc_overlay (pc);
8538 sal.explicit_pc = 1;
8539
8540 return set_momentary_breakpoint (gdbarch, sal, null_frame_id, type);
8541 }
8542 \f
8543
8544 /* Tell the user we have just set a breakpoint B. */
8545
8546 static void
8547 mention (struct breakpoint *b)
8548 {
8549 b->ops->print_mention (b);
8550 current_uiout->text ("\n");
8551 }
8552 \f
8553
8554 static int bp_loc_is_permanent (struct bp_location *loc);
8555
8556 static struct bp_location *
8557 add_location_to_breakpoint (struct breakpoint *b,
8558 const struct symtab_and_line *sal)
8559 {
8560 struct bp_location *loc, **tmp;
8561 CORE_ADDR adjusted_address;
8562 struct gdbarch *loc_gdbarch = get_sal_arch (*sal);
8563
8564 if (loc_gdbarch == NULL)
8565 loc_gdbarch = b->gdbarch;
8566
8567 /* Adjust the breakpoint's address prior to allocating a location.
8568 Once we call allocate_bp_location(), that mostly uninitialized
8569 location will be placed on the location chain. Adjustment of the
8570 breakpoint may cause target_read_memory() to be called and we do
8571 not want its scan of the location chain to find a breakpoint and
8572 location that's only been partially initialized. */
8573 adjusted_address = adjust_breakpoint_address (loc_gdbarch,
8574 sal->pc, b->type);
8575
8576 /* Sort the locations by their ADDRESS. */
8577 loc = allocate_bp_location (b);
8578 for (tmp = &(b->loc); *tmp != NULL && (*tmp)->address <= adjusted_address;
8579 tmp = &((*tmp)->next))
8580 ;
8581 loc->next = *tmp;
8582 *tmp = loc;
8583
8584 loc->requested_address = sal->pc;
8585 loc->address = adjusted_address;
8586 loc->pspace = sal->pspace;
8587 loc->probe.prob = sal->prob;
8588 loc->probe.objfile = sal->objfile;
8589 gdb_assert (loc->pspace != NULL);
8590 loc->section = sal->section;
8591 loc->gdbarch = loc_gdbarch;
8592 loc->line_number = sal->line;
8593 loc->symtab = sal->symtab;
8594 loc->symbol = sal->symbol;
8595 loc->msymbol = sal->msymbol;
8596 loc->objfile = sal->objfile;
8597
8598 set_breakpoint_location_function (loc,
8599 sal->explicit_pc || sal->explicit_line);
8600
8601 /* While by definition, permanent breakpoints are already present in the
8602 code, we don't mark the location as inserted. Normally one would expect
8603 that GDB could rely on that breakpoint instruction to stop the program,
8604 thus removing the need to insert its own breakpoint, except that executing
8605 the breakpoint instruction can kill the target instead of reporting a
8606 SIGTRAP. E.g., on SPARC, when interrupts are disabled, executing the
8607 instruction resets the CPU, so QEMU 2.0.0 for SPARC correspondingly dies
8608 with "Trap 0x02 while interrupts disabled, Error state". Letting the
8609 breakpoint be inserted normally results in QEMU knowing about the GDB
8610 breakpoint, and thus trap before the breakpoint instruction is executed.
8611 (If GDB later needs to continue execution past the permanent breakpoint,
8612 it manually increments the PC, thus avoiding executing the breakpoint
8613 instruction.) */
8614 if (bp_loc_is_permanent (loc))
8615 loc->permanent = 1;
8616
8617 return loc;
8618 }
8619 \f
8620
8621 /* See breakpoint.h. */
8622
8623 int
8624 program_breakpoint_here_p (struct gdbarch *gdbarch, CORE_ADDR address)
8625 {
8626 int len;
8627 CORE_ADDR addr;
8628 const gdb_byte *bpoint;
8629 gdb_byte *target_mem;
8630
8631 addr = address;
8632 bpoint = gdbarch_breakpoint_from_pc (gdbarch, &addr, &len);
8633
8634 /* Software breakpoints unsupported? */
8635 if (bpoint == NULL)
8636 return 0;
8637
8638 target_mem = (gdb_byte *) alloca (len);
8639
8640 /* Enable the automatic memory restoration from breakpoints while
8641 we read the memory. Otherwise we could say about our temporary
8642 breakpoints they are permanent. */
8643 scoped_restore restore_memory
8644 = make_scoped_restore_show_memory_breakpoints (0);
8645
8646 if (target_read_memory (address, target_mem, len) == 0
8647 && memcmp (target_mem, bpoint, len) == 0)
8648 return 1;
8649
8650 return 0;
8651 }
8652
8653 /* Return 1 if LOC is pointing to a permanent breakpoint,
8654 return 0 otherwise. */
8655
8656 static int
8657 bp_loc_is_permanent (struct bp_location *loc)
8658 {
8659 gdb_assert (loc != NULL);
8660
8661 /* If we have a catchpoint or a watchpoint, just return 0. We should not
8662 attempt to read from the addresses the locations of these breakpoint types
8663 point to. program_breakpoint_here_p, below, will attempt to read
8664 memory. */
8665 if (!breakpoint_address_is_meaningful (loc->owner))
8666 return 0;
8667
8668 scoped_restore_current_pspace_and_thread restore_pspace_thread;
8669 switch_to_program_space_and_thread (loc->pspace);
8670 return program_breakpoint_here_p (loc->gdbarch, loc->address);
8671 }
8672
8673 /* Build a command list for the dprintf corresponding to the current
8674 settings of the dprintf style options. */
8675
8676 static void
8677 update_dprintf_command_list (struct breakpoint *b)
8678 {
8679 char *dprintf_args = b->extra_string;
8680 char *printf_line = NULL;
8681
8682 if (!dprintf_args)
8683 return;
8684
8685 dprintf_args = skip_spaces (dprintf_args);
8686
8687 /* Allow a comma, as it may have terminated a location, but don't
8688 insist on it. */
8689 if (*dprintf_args == ',')
8690 ++dprintf_args;
8691 dprintf_args = skip_spaces (dprintf_args);
8692
8693 if (*dprintf_args != '"')
8694 error (_("Bad format string, missing '\"'."));
8695
8696 if (strcmp (dprintf_style, dprintf_style_gdb) == 0)
8697 printf_line = xstrprintf ("printf %s", dprintf_args);
8698 else if (strcmp (dprintf_style, dprintf_style_call) == 0)
8699 {
8700 if (!dprintf_function)
8701 error (_("No function supplied for dprintf call"));
8702
8703 if (dprintf_channel && strlen (dprintf_channel) > 0)
8704 printf_line = xstrprintf ("call (void) %s (%s,%s)",
8705 dprintf_function,
8706 dprintf_channel,
8707 dprintf_args);
8708 else
8709 printf_line = xstrprintf ("call (void) %s (%s)",
8710 dprintf_function,
8711 dprintf_args);
8712 }
8713 else if (strcmp (dprintf_style, dprintf_style_agent) == 0)
8714 {
8715 if (target_can_run_breakpoint_commands ())
8716 printf_line = xstrprintf ("agent-printf %s", dprintf_args);
8717 else
8718 {
8719 warning (_("Target cannot run dprintf commands, falling back to GDB printf"));
8720 printf_line = xstrprintf ("printf %s", dprintf_args);
8721 }
8722 }
8723 else
8724 internal_error (__FILE__, __LINE__,
8725 _("Invalid dprintf style."));
8726
8727 gdb_assert (printf_line != NULL);
8728
8729 /* Manufacture a printf sequence. */
8730 struct command_line *printf_cmd_line
8731 = new struct command_line (simple_control, printf_line);
8732 breakpoint_set_commands (b, counted_command_line (printf_cmd_line,
8733 command_lines_deleter ()));
8734 }
8735
8736 /* Update all dprintf commands, making their command lists reflect
8737 current style settings. */
8738
8739 static void
8740 update_dprintf_commands (const char *args, int from_tty,
8741 struct cmd_list_element *c)
8742 {
8743 struct breakpoint *b;
8744
8745 ALL_BREAKPOINTS (b)
8746 {
8747 if (b->type == bp_dprintf)
8748 update_dprintf_command_list (b);
8749 }
8750 }
8751
8752 /* Create a breakpoint with SAL as location. Use LOCATION
8753 as a description of the location, and COND_STRING
8754 as condition expression. If LOCATION is NULL then create an
8755 "address location" from the address in the SAL. */
8756
8757 static void
8758 init_breakpoint_sal (struct breakpoint *b, struct gdbarch *gdbarch,
8759 gdb::array_view<const symtab_and_line> sals,
8760 event_location_up &&location,
8761 gdb::unique_xmalloc_ptr<char> filter,
8762 gdb::unique_xmalloc_ptr<char> cond_string,
8763 gdb::unique_xmalloc_ptr<char> extra_string,
8764 enum bptype type, enum bpdisp disposition,
8765 int thread, int task, int ignore_count,
8766 const struct breakpoint_ops *ops, int from_tty,
8767 int enabled, int internal, unsigned flags,
8768 int display_canonical)
8769 {
8770 int i;
8771
8772 if (type == bp_hardware_breakpoint)
8773 {
8774 int target_resources_ok;
8775
8776 i = hw_breakpoint_used_count ();
8777 target_resources_ok =
8778 target_can_use_hardware_watchpoint (bp_hardware_breakpoint,
8779 i + 1, 0);
8780 if (target_resources_ok == 0)
8781 error (_("No hardware breakpoint support in the target."));
8782 else if (target_resources_ok < 0)
8783 error (_("Hardware breakpoints used exceeds limit."));
8784 }
8785
8786 gdb_assert (!sals.empty ());
8787
8788 for (const auto &sal : sals)
8789 {
8790 struct bp_location *loc;
8791
8792 if (from_tty)
8793 {
8794 struct gdbarch *loc_gdbarch = get_sal_arch (sal);
8795 if (!loc_gdbarch)
8796 loc_gdbarch = gdbarch;
8797
8798 describe_other_breakpoints (loc_gdbarch,
8799 sal.pspace, sal.pc, sal.section, thread);
8800 }
8801
8802 if (&sal == &sals[0])
8803 {
8804 init_raw_breakpoint (b, gdbarch, sal, type, ops);
8805 b->thread = thread;
8806 b->task = task;
8807
8808 b->cond_string = cond_string.release ();
8809 b->extra_string = extra_string.release ();
8810 b->ignore_count = ignore_count;
8811 b->enable_state = enabled ? bp_enabled : bp_disabled;
8812 b->disposition = disposition;
8813
8814 if ((flags & CREATE_BREAKPOINT_FLAGS_INSERTED) != 0)
8815 b->loc->inserted = 1;
8816
8817 if (type == bp_static_tracepoint)
8818 {
8819 struct tracepoint *t = (struct tracepoint *) b;
8820 struct static_tracepoint_marker marker;
8821
8822 if (strace_marker_p (b))
8823 {
8824 /* We already know the marker exists, otherwise, we
8825 wouldn't see a sal for it. */
8826 const char *p
8827 = &event_location_to_string (b->location.get ())[3];
8828 const char *endp;
8829
8830 p = skip_spaces (p);
8831
8832 endp = skip_to_space (p);
8833
8834 t->static_trace_marker_id.assign (p, endp - p);
8835
8836 printf_filtered (_("Probed static tracepoint "
8837 "marker \"%s\"\n"),
8838 t->static_trace_marker_id.c_str ());
8839 }
8840 else if (target_static_tracepoint_marker_at (sal.pc, &marker))
8841 {
8842 t->static_trace_marker_id = std::move (marker.str_id);
8843
8844 printf_filtered (_("Probed static tracepoint "
8845 "marker \"%s\"\n"),
8846 t->static_trace_marker_id.c_str ());
8847 }
8848 else
8849 warning (_("Couldn't determine the static "
8850 "tracepoint marker to probe"));
8851 }
8852
8853 loc = b->loc;
8854 }
8855 else
8856 {
8857 loc = add_location_to_breakpoint (b, &sal);
8858 if ((flags & CREATE_BREAKPOINT_FLAGS_INSERTED) != 0)
8859 loc->inserted = 1;
8860 }
8861
8862 if (b->cond_string)
8863 {
8864 const char *arg = b->cond_string;
8865
8866 loc->cond = parse_exp_1 (&arg, loc->address,
8867 block_for_pc (loc->address), 0);
8868 if (*arg)
8869 error (_("Garbage '%s' follows condition"), arg);
8870 }
8871
8872 /* Dynamic printf requires and uses additional arguments on the
8873 command line, otherwise it's an error. */
8874 if (type == bp_dprintf)
8875 {
8876 if (b->extra_string)
8877 update_dprintf_command_list (b);
8878 else
8879 error (_("Format string required"));
8880 }
8881 else if (b->extra_string)
8882 error (_("Garbage '%s' at end of command"), b->extra_string);
8883 }
8884
8885 b->display_canonical = display_canonical;
8886 if (location != NULL)
8887 b->location = std::move (location);
8888 else
8889 b->location = new_address_location (b->loc->address, NULL, 0);
8890 b->filter = filter.release ();
8891 }
8892
8893 static void
8894 create_breakpoint_sal (struct gdbarch *gdbarch,
8895 gdb::array_view<const symtab_and_line> sals,
8896 event_location_up &&location,
8897 gdb::unique_xmalloc_ptr<char> filter,
8898 gdb::unique_xmalloc_ptr<char> cond_string,
8899 gdb::unique_xmalloc_ptr<char> extra_string,
8900 enum bptype type, enum bpdisp disposition,
8901 int thread, int task, int ignore_count,
8902 const struct breakpoint_ops *ops, int from_tty,
8903 int enabled, int internal, unsigned flags,
8904 int display_canonical)
8905 {
8906 std::unique_ptr<breakpoint> b = new_breakpoint_from_type (type);
8907
8908 init_breakpoint_sal (b.get (), gdbarch,
8909 sals, std::move (location),
8910 std::move (filter),
8911 std::move (cond_string),
8912 std::move (extra_string),
8913 type, disposition,
8914 thread, task, ignore_count,
8915 ops, from_tty,
8916 enabled, internal, flags,
8917 display_canonical);
8918
8919 install_breakpoint (internal, std::move (b), 0);
8920 }
8921
8922 /* Add SALS.nelts breakpoints to the breakpoint table. For each
8923 SALS.sal[i] breakpoint, include the corresponding ADDR_STRING[i]
8924 value. COND_STRING, if not NULL, specified the condition to be
8925 used for all breakpoints. Essentially the only case where
8926 SALS.nelts is not 1 is when we set a breakpoint on an overloaded
8927 function. In that case, it's still not possible to specify
8928 separate conditions for different overloaded functions, so
8929 we take just a single condition string.
8930
8931 NOTE: If the function succeeds, the caller is expected to cleanup
8932 the arrays ADDR_STRING, COND_STRING, and SALS (but not the
8933 array contents). If the function fails (error() is called), the
8934 caller is expected to cleanups both the ADDR_STRING, COND_STRING,
8935 COND and SALS arrays and each of those arrays contents. */
8936
8937 static void
8938 create_breakpoints_sal (struct gdbarch *gdbarch,
8939 struct linespec_result *canonical,
8940 gdb::unique_xmalloc_ptr<char> cond_string,
8941 gdb::unique_xmalloc_ptr<char> extra_string,
8942 enum bptype type, enum bpdisp disposition,
8943 int thread, int task, int ignore_count,
8944 const struct breakpoint_ops *ops, int from_tty,
8945 int enabled, int internal, unsigned flags)
8946 {
8947 if (canonical->pre_expanded)
8948 gdb_assert (canonical->lsals.size () == 1);
8949
8950 for (const auto &lsal : canonical->lsals)
8951 {
8952 /* Note that 'location' can be NULL in the case of a plain
8953 'break', without arguments. */
8954 event_location_up location
8955 = (canonical->location != NULL
8956 ? copy_event_location (canonical->location.get ()) : NULL);
8957 gdb::unique_xmalloc_ptr<char> filter_string
8958 (lsal.canonical != NULL ? xstrdup (lsal.canonical) : NULL);
8959
8960 create_breakpoint_sal (gdbarch, lsal.sals,
8961 std::move (location),
8962 std::move (filter_string),
8963 std::move (cond_string),
8964 std::move (extra_string),
8965 type, disposition,
8966 thread, task, ignore_count, ops,
8967 from_tty, enabled, internal, flags,
8968 canonical->special_display);
8969 }
8970 }
8971
8972 /* Parse LOCATION which is assumed to be a SAL specification possibly
8973 followed by conditionals. On return, SALS contains an array of SAL
8974 addresses found. LOCATION points to the end of the SAL (for
8975 linespec locations).
8976
8977 The array and the line spec strings are allocated on the heap, it is
8978 the caller's responsibility to free them. */
8979
8980 static void
8981 parse_breakpoint_sals (const struct event_location *location,
8982 struct linespec_result *canonical)
8983 {
8984 struct symtab_and_line cursal;
8985
8986 if (event_location_type (location) == LINESPEC_LOCATION)
8987 {
8988 const char *spec = get_linespec_location (location)->spec_string;
8989
8990 if (spec == NULL)
8991 {
8992 /* The last displayed codepoint, if it's valid, is our default
8993 breakpoint address. */
8994 if (last_displayed_sal_is_valid ())
8995 {
8996 /* Set sal's pspace, pc, symtab, and line to the values
8997 corresponding to the last call to print_frame_info.
8998 Be sure to reinitialize LINE with NOTCURRENT == 0
8999 as the breakpoint line number is inappropriate otherwise.
9000 find_pc_line would adjust PC, re-set it back. */
9001 symtab_and_line sal = get_last_displayed_sal ();
9002 CORE_ADDR pc = sal.pc;
9003
9004 sal = find_pc_line (pc, 0);
9005
9006 /* "break" without arguments is equivalent to "break *PC"
9007 where PC is the last displayed codepoint's address. So
9008 make sure to set sal.explicit_pc to prevent GDB from
9009 trying to expand the list of sals to include all other
9010 instances with the same symtab and line. */
9011 sal.pc = pc;
9012 sal.explicit_pc = 1;
9013
9014 struct linespec_sals lsal;
9015 lsal.sals = {sal};
9016 lsal.canonical = NULL;
9017
9018 canonical->lsals.push_back (std::move (lsal));
9019 return;
9020 }
9021 else
9022 error (_("No default breakpoint address now."));
9023 }
9024 }
9025
9026 /* Force almost all breakpoints to be in terms of the
9027 current_source_symtab (which is decode_line_1's default).
9028 This should produce the results we want almost all of the
9029 time while leaving default_breakpoint_* alone.
9030
9031 ObjC: However, don't match an Objective-C method name which
9032 may have a '+' or '-' succeeded by a '['. */
9033 cursal = get_current_source_symtab_and_line ();
9034 if (last_displayed_sal_is_valid ())
9035 {
9036 const char *spec = NULL;
9037
9038 if (event_location_type (location) == LINESPEC_LOCATION)
9039 spec = get_linespec_location (location)->spec_string;
9040
9041 if (!cursal.symtab
9042 || (spec != NULL
9043 && strchr ("+-", spec[0]) != NULL
9044 && spec[1] != '['))
9045 {
9046 decode_line_full (location, DECODE_LINE_FUNFIRSTLINE, NULL,
9047 get_last_displayed_symtab (),
9048 get_last_displayed_line (),
9049 canonical, NULL, NULL);
9050 return;
9051 }
9052 }
9053
9054 decode_line_full (location, DECODE_LINE_FUNFIRSTLINE, NULL,
9055 cursal.symtab, cursal.line, canonical, NULL, NULL);
9056 }
9057
9058
9059 /* Convert each SAL into a real PC. Verify that the PC can be
9060 inserted as a breakpoint. If it can't throw an error. */
9061
9062 static void
9063 breakpoint_sals_to_pc (std::vector<symtab_and_line> &sals)
9064 {
9065 for (auto &sal : sals)
9066 resolve_sal_pc (&sal);
9067 }
9068
9069 /* Fast tracepoints may have restrictions on valid locations. For
9070 instance, a fast tracepoint using a jump instead of a trap will
9071 likely have to overwrite more bytes than a trap would, and so can
9072 only be placed where the instruction is longer than the jump, or a
9073 multi-instruction sequence does not have a jump into the middle of
9074 it, etc. */
9075
9076 static void
9077 check_fast_tracepoint_sals (struct gdbarch *gdbarch,
9078 gdb::array_view<const symtab_and_line> sals)
9079 {
9080 for (const auto &sal : sals)
9081 {
9082 struct gdbarch *sarch;
9083
9084 sarch = get_sal_arch (sal);
9085 /* We fall back to GDBARCH if there is no architecture
9086 associated with SAL. */
9087 if (sarch == NULL)
9088 sarch = gdbarch;
9089 std::string msg;
9090 if (!gdbarch_fast_tracepoint_valid_at (sarch, sal.pc, &msg))
9091 error (_("May not have a fast tracepoint at %s%s"),
9092 paddress (sarch, sal.pc), msg.c_str ());
9093 }
9094 }
9095
9096 /* Given TOK, a string specification of condition and thread, as
9097 accepted by the 'break' command, extract the condition
9098 string and thread number and set *COND_STRING and *THREAD.
9099 PC identifies the context at which the condition should be parsed.
9100 If no condition is found, *COND_STRING is set to NULL.
9101 If no thread is found, *THREAD is set to -1. */
9102
9103 static void
9104 find_condition_and_thread (const char *tok, CORE_ADDR pc,
9105 char **cond_string, int *thread, int *task,
9106 char **rest)
9107 {
9108 *cond_string = NULL;
9109 *thread = -1;
9110 *task = 0;
9111 *rest = NULL;
9112
9113 while (tok && *tok)
9114 {
9115 const char *end_tok;
9116 int toklen;
9117 const char *cond_start = NULL;
9118 const char *cond_end = NULL;
9119
9120 tok = skip_spaces (tok);
9121
9122 if ((*tok == '"' || *tok == ',') && rest)
9123 {
9124 *rest = savestring (tok, strlen (tok));
9125 return;
9126 }
9127
9128 end_tok = skip_to_space (tok);
9129
9130 toklen = end_tok - tok;
9131
9132 if (toklen >= 1 && strncmp (tok, "if", toklen) == 0)
9133 {
9134 tok = cond_start = end_tok + 1;
9135 parse_exp_1 (&tok, pc, block_for_pc (pc), 0);
9136 cond_end = tok;
9137 *cond_string = savestring (cond_start, cond_end - cond_start);
9138 }
9139 else if (toklen >= 1 && strncmp (tok, "thread", toklen) == 0)
9140 {
9141 const char *tmptok;
9142 struct thread_info *thr;
9143
9144 tok = end_tok + 1;
9145 thr = parse_thread_id (tok, &tmptok);
9146 if (tok == tmptok)
9147 error (_("Junk after thread keyword."));
9148 *thread = thr->global_num;
9149 tok = tmptok;
9150 }
9151 else if (toklen >= 1 && strncmp (tok, "task", toklen) == 0)
9152 {
9153 char *tmptok;
9154
9155 tok = end_tok + 1;
9156 *task = strtol (tok, &tmptok, 0);
9157 if (tok == tmptok)
9158 error (_("Junk after task keyword."));
9159 if (!valid_task_id (*task))
9160 error (_("Unknown task %d."), *task);
9161 tok = tmptok;
9162 }
9163 else if (rest)
9164 {
9165 *rest = savestring (tok, strlen (tok));
9166 return;
9167 }
9168 else
9169 error (_("Junk at end of arguments."));
9170 }
9171 }
9172
9173 /* Decode a static tracepoint marker spec. */
9174
9175 static std::vector<symtab_and_line>
9176 decode_static_tracepoint_spec (const char **arg_p)
9177 {
9178 const char *p = &(*arg_p)[3];
9179 const char *endp;
9180
9181 p = skip_spaces (p);
9182
9183 endp = skip_to_space (p);
9184
9185 std::string marker_str (p, endp - p);
9186
9187 std::vector<static_tracepoint_marker> markers
9188 = target_static_tracepoint_markers_by_strid (marker_str.c_str ());
9189 if (markers.empty ())
9190 error (_("No known static tracepoint marker named %s"),
9191 marker_str.c_str ());
9192
9193 std::vector<symtab_and_line> sals;
9194 sals.reserve (markers.size ());
9195
9196 for (const static_tracepoint_marker &marker : markers)
9197 {
9198 symtab_and_line sal = find_pc_line (marker.address, 0);
9199 sal.pc = marker.address;
9200 sals.push_back (sal);
9201 }
9202
9203 *arg_p = endp;
9204 return sals;
9205 }
9206
9207 /* See breakpoint.h. */
9208
9209 int
9210 create_breakpoint (struct gdbarch *gdbarch,
9211 const struct event_location *location,
9212 const char *cond_string,
9213 int thread, const char *extra_string,
9214 int parse_extra,
9215 int tempflag, enum bptype type_wanted,
9216 int ignore_count,
9217 enum auto_boolean pending_break_support,
9218 const struct breakpoint_ops *ops,
9219 int from_tty, int enabled, int internal,
9220 unsigned flags)
9221 {
9222 struct linespec_result canonical;
9223 int pending = 0;
9224 int task = 0;
9225 int prev_bkpt_count = breakpoint_count;
9226
9227 gdb_assert (ops != NULL);
9228
9229 /* If extra_string isn't useful, set it to NULL. */
9230 if (extra_string != NULL && *extra_string == '\0')
9231 extra_string = NULL;
9232
9233 try
9234 {
9235 ops->create_sals_from_location (location, &canonical, type_wanted);
9236 }
9237 catch (const gdb_exception_error &e)
9238 {
9239 /* If caller is interested in rc value from parse, set
9240 value. */
9241 if (e.error == NOT_FOUND_ERROR)
9242 {
9243 /* If pending breakpoint support is turned off, throw
9244 error. */
9245
9246 if (pending_break_support == AUTO_BOOLEAN_FALSE)
9247 throw;
9248
9249 exception_print (gdb_stderr, e);
9250
9251 /* If pending breakpoint support is auto query and the user
9252 selects no, then simply return the error code. */
9253 if (pending_break_support == AUTO_BOOLEAN_AUTO
9254 && !nquery (_("Make %s pending on future shared library load? "),
9255 bptype_string (type_wanted)))
9256 return 0;
9257
9258 /* At this point, either the user was queried about setting
9259 a pending breakpoint and selected yes, or pending
9260 breakpoint behavior is on and thus a pending breakpoint
9261 is defaulted on behalf of the user. */
9262 pending = 1;
9263 }
9264 else
9265 throw;
9266 }
9267
9268 if (!pending && canonical.lsals.empty ())
9269 return 0;
9270
9271 /* Resolve all line numbers to PC's and verify that the addresses
9272 are ok for the target. */
9273 if (!pending)
9274 {
9275 for (auto &lsal : canonical.lsals)
9276 breakpoint_sals_to_pc (lsal.sals);
9277 }
9278
9279 /* Fast tracepoints may have additional restrictions on location. */
9280 if (!pending && type_wanted == bp_fast_tracepoint)
9281 {
9282 for (const auto &lsal : canonical.lsals)
9283 check_fast_tracepoint_sals (gdbarch, lsal.sals);
9284 }
9285
9286 /* Verify that condition can be parsed, before setting any
9287 breakpoints. Allocate a separate condition expression for each
9288 breakpoint. */
9289 if (!pending)
9290 {
9291 gdb::unique_xmalloc_ptr<char> cond_string_copy;
9292 gdb::unique_xmalloc_ptr<char> extra_string_copy;
9293
9294 if (parse_extra)
9295 {
9296 char *rest;
9297 char *cond;
9298
9299 const linespec_sals &lsal = canonical.lsals[0];
9300
9301 /* Here we only parse 'arg' to separate condition
9302 from thread number, so parsing in context of first
9303 sal is OK. When setting the breakpoint we'll
9304 re-parse it in context of each sal. */
9305
9306 find_condition_and_thread (extra_string, lsal.sals[0].pc,
9307 &cond, &thread, &task, &rest);
9308 cond_string_copy.reset (cond);
9309 extra_string_copy.reset (rest);
9310 }
9311 else
9312 {
9313 if (type_wanted != bp_dprintf
9314 && extra_string != NULL && *extra_string != '\0')
9315 error (_("Garbage '%s' at end of location"), extra_string);
9316
9317 /* Create a private copy of condition string. */
9318 if (cond_string)
9319 cond_string_copy.reset (xstrdup (cond_string));
9320 /* Create a private copy of any extra string. */
9321 if (extra_string)
9322 extra_string_copy.reset (xstrdup (extra_string));
9323 }
9324
9325 ops->create_breakpoints_sal (gdbarch, &canonical,
9326 std::move (cond_string_copy),
9327 std::move (extra_string_copy),
9328 type_wanted,
9329 tempflag ? disp_del : disp_donttouch,
9330 thread, task, ignore_count, ops,
9331 from_tty, enabled, internal, flags);
9332 }
9333 else
9334 {
9335 std::unique_ptr <breakpoint> b = new_breakpoint_from_type (type_wanted);
9336
9337 init_raw_breakpoint_without_location (b.get (), gdbarch, type_wanted, ops);
9338 b->location = copy_event_location (location);
9339
9340 if (parse_extra)
9341 b->cond_string = NULL;
9342 else
9343 {
9344 /* Create a private copy of condition string. */
9345 b->cond_string = cond_string != NULL ? xstrdup (cond_string) : NULL;
9346 b->thread = thread;
9347 }
9348
9349 /* Create a private copy of any extra string. */
9350 b->extra_string = extra_string != NULL ? xstrdup (extra_string) : NULL;
9351 b->ignore_count = ignore_count;
9352 b->disposition = tempflag ? disp_del : disp_donttouch;
9353 b->condition_not_parsed = 1;
9354 b->enable_state = enabled ? bp_enabled : bp_disabled;
9355 if ((type_wanted != bp_breakpoint
9356 && type_wanted != bp_hardware_breakpoint) || thread != -1)
9357 b->pspace = current_program_space;
9358
9359 install_breakpoint (internal, std::move (b), 0);
9360 }
9361
9362 if (canonical.lsals.size () > 1)
9363 {
9364 warning (_("Multiple breakpoints were set.\nUse the "
9365 "\"delete\" command to delete unwanted breakpoints."));
9366 prev_breakpoint_count = prev_bkpt_count;
9367 }
9368
9369 update_global_location_list (UGLL_MAY_INSERT);
9370
9371 return 1;
9372 }
9373
9374 /* Set a breakpoint.
9375 ARG is a string describing breakpoint address,
9376 condition, and thread.
9377 FLAG specifies if a breakpoint is hardware on,
9378 and if breakpoint is temporary, using BP_HARDWARE_FLAG
9379 and BP_TEMPFLAG. */
9380
9381 static void
9382 break_command_1 (const char *arg, int flag, int from_tty)
9383 {
9384 int tempflag = flag & BP_TEMPFLAG;
9385 enum bptype type_wanted = (flag & BP_HARDWAREFLAG
9386 ? bp_hardware_breakpoint
9387 : bp_breakpoint);
9388 struct breakpoint_ops *ops;
9389
9390 event_location_up location = string_to_event_location (&arg, current_language);
9391
9392 /* Matching breakpoints on probes. */
9393 if (location != NULL
9394 && event_location_type (location.get ()) == PROBE_LOCATION)
9395 ops = &bkpt_probe_breakpoint_ops;
9396 else
9397 ops = &bkpt_breakpoint_ops;
9398
9399 create_breakpoint (get_current_arch (),
9400 location.get (),
9401 NULL, 0, arg, 1 /* parse arg */,
9402 tempflag, type_wanted,
9403 0 /* Ignore count */,
9404 pending_break_support,
9405 ops,
9406 from_tty,
9407 1 /* enabled */,
9408 0 /* internal */,
9409 0);
9410 }
9411
9412 /* Helper function for break_command_1 and disassemble_command. */
9413
9414 void
9415 resolve_sal_pc (struct symtab_and_line *sal)
9416 {
9417 CORE_ADDR pc;
9418
9419 if (sal->pc == 0 && sal->symtab != NULL)
9420 {
9421 if (!find_line_pc (sal->symtab, sal->line, &pc))
9422 error (_("No line %d in file \"%s\"."),
9423 sal->line, symtab_to_filename_for_display (sal->symtab));
9424 sal->pc = pc;
9425
9426 /* If this SAL corresponds to a breakpoint inserted using a line
9427 number, then skip the function prologue if necessary. */
9428 if (sal->explicit_line)
9429 skip_prologue_sal (sal);
9430 }
9431
9432 if (sal->section == 0 && sal->symtab != NULL)
9433 {
9434 const struct blockvector *bv;
9435 const struct block *b;
9436 struct symbol *sym;
9437
9438 bv = blockvector_for_pc_sect (sal->pc, 0, &b,
9439 SYMTAB_COMPUNIT (sal->symtab));
9440 if (bv != NULL)
9441 {
9442 sym = block_linkage_function (b);
9443 if (sym != NULL)
9444 {
9445 fixup_symbol_section (sym, SYMTAB_OBJFILE (sal->symtab));
9446 sal->section = SYMBOL_OBJ_SECTION (SYMTAB_OBJFILE (sal->symtab),
9447 sym);
9448 }
9449 else
9450 {
9451 /* It really is worthwhile to have the section, so we'll
9452 just have to look harder. This case can be executed
9453 if we have line numbers but no functions (as can
9454 happen in assembly source). */
9455
9456 scoped_restore_current_pspace_and_thread restore_pspace_thread;
9457 switch_to_program_space_and_thread (sal->pspace);
9458
9459 bound_minimal_symbol msym = lookup_minimal_symbol_by_pc (sal->pc);
9460 if (msym.minsym)
9461 sal->section = MSYMBOL_OBJ_SECTION (msym.objfile, msym.minsym);
9462 }
9463 }
9464 }
9465 }
9466
9467 void
9468 break_command (const char *arg, int from_tty)
9469 {
9470 break_command_1 (arg, 0, from_tty);
9471 }
9472
9473 void
9474 tbreak_command (const char *arg, int from_tty)
9475 {
9476 break_command_1 (arg, BP_TEMPFLAG, from_tty);
9477 }
9478
9479 static void
9480 hbreak_command (const char *arg, int from_tty)
9481 {
9482 break_command_1 (arg, BP_HARDWAREFLAG, from_tty);
9483 }
9484
9485 static void
9486 thbreak_command (const char *arg, int from_tty)
9487 {
9488 break_command_1 (arg, (BP_TEMPFLAG | BP_HARDWAREFLAG), from_tty);
9489 }
9490
9491 static void
9492 stop_command (const char *arg, int from_tty)
9493 {
9494 printf_filtered (_("Specify the type of breakpoint to set.\n\
9495 Usage: stop in <function | address>\n\
9496 stop at <line>\n"));
9497 }
9498
9499 static void
9500 stopin_command (const char *arg, int from_tty)
9501 {
9502 int badInput = 0;
9503
9504 if (arg == (char *) NULL)
9505 badInput = 1;
9506 else if (*arg != '*')
9507 {
9508 const char *argptr = arg;
9509 int hasColon = 0;
9510
9511 /* Look for a ':'. If this is a line number specification, then
9512 say it is bad, otherwise, it should be an address or
9513 function/method name. */
9514 while (*argptr && !hasColon)
9515 {
9516 hasColon = (*argptr == ':');
9517 argptr++;
9518 }
9519
9520 if (hasColon)
9521 badInput = (*argptr != ':'); /* Not a class::method */
9522 else
9523 badInput = isdigit (*arg); /* a simple line number */
9524 }
9525
9526 if (badInput)
9527 printf_filtered (_("Usage: stop in <function | address>\n"));
9528 else
9529 break_command_1 (arg, 0, from_tty);
9530 }
9531
9532 static void
9533 stopat_command (const char *arg, int from_tty)
9534 {
9535 int badInput = 0;
9536
9537 if (arg == (char *) NULL || *arg == '*') /* no line number */
9538 badInput = 1;
9539 else
9540 {
9541 const char *argptr = arg;
9542 int hasColon = 0;
9543
9544 /* Look for a ':'. If there is a '::' then get out, otherwise
9545 it is probably a line number. */
9546 while (*argptr && !hasColon)
9547 {
9548 hasColon = (*argptr == ':');
9549 argptr++;
9550 }
9551
9552 if (hasColon)
9553 badInput = (*argptr == ':'); /* we have class::method */
9554 else
9555 badInput = !isdigit (*arg); /* not a line number */
9556 }
9557
9558 if (badInput)
9559 printf_filtered (_("Usage: stop at LINE\n"));
9560 else
9561 break_command_1 (arg, 0, from_tty);
9562 }
9563
9564 /* The dynamic printf command is mostly like a regular breakpoint, but
9565 with a prewired command list consisting of a single output command,
9566 built from extra arguments supplied on the dprintf command
9567 line. */
9568
9569 static void
9570 dprintf_command (const char *arg, int from_tty)
9571 {
9572 event_location_up location = string_to_event_location (&arg, current_language);
9573
9574 /* If non-NULL, ARG should have been advanced past the location;
9575 the next character must be ','. */
9576 if (arg != NULL)
9577 {
9578 if (arg[0] != ',' || arg[1] == '\0')
9579 error (_("Format string required"));
9580 else
9581 {
9582 /* Skip the comma. */
9583 ++arg;
9584 }
9585 }
9586
9587 create_breakpoint (get_current_arch (),
9588 location.get (),
9589 NULL, 0, arg, 1 /* parse arg */,
9590 0, bp_dprintf,
9591 0 /* Ignore count */,
9592 pending_break_support,
9593 &dprintf_breakpoint_ops,
9594 from_tty,
9595 1 /* enabled */,
9596 0 /* internal */,
9597 0);
9598 }
9599
9600 static void
9601 agent_printf_command (const char *arg, int from_tty)
9602 {
9603 error (_("May only run agent-printf on the target"));
9604 }
9605
9606 /* Implement the "breakpoint_hit" breakpoint_ops method for
9607 ranged breakpoints. */
9608
9609 static int
9610 breakpoint_hit_ranged_breakpoint (const struct bp_location *bl,
9611 const address_space *aspace,
9612 CORE_ADDR bp_addr,
9613 const struct target_waitstatus *ws)
9614 {
9615 if (ws->kind != TARGET_WAITKIND_STOPPED
9616 || ws->value.sig != GDB_SIGNAL_TRAP)
9617 return 0;
9618
9619 return breakpoint_address_match_range (bl->pspace->aspace, bl->address,
9620 bl->length, aspace, bp_addr);
9621 }
9622
9623 /* Implement the "resources_needed" breakpoint_ops method for
9624 ranged breakpoints. */
9625
9626 static int
9627 resources_needed_ranged_breakpoint (const struct bp_location *bl)
9628 {
9629 return target_ranged_break_num_registers ();
9630 }
9631
9632 /* Implement the "print_it" breakpoint_ops method for
9633 ranged breakpoints. */
9634
9635 static enum print_stop_action
9636 print_it_ranged_breakpoint (bpstat bs)
9637 {
9638 struct breakpoint *b = bs->breakpoint_at;
9639 struct bp_location *bl = b->loc;
9640 struct ui_out *uiout = current_uiout;
9641
9642 gdb_assert (b->type == bp_hardware_breakpoint);
9643
9644 /* Ranged breakpoints have only one location. */
9645 gdb_assert (bl && bl->next == NULL);
9646
9647 annotate_breakpoint (b->number);
9648
9649 maybe_print_thread_hit_breakpoint (uiout);
9650
9651 if (b->disposition == disp_del)
9652 uiout->text ("Temporary ranged breakpoint ");
9653 else
9654 uiout->text ("Ranged breakpoint ");
9655 if (uiout->is_mi_like_p ())
9656 {
9657 uiout->field_string ("reason",
9658 async_reason_lookup (EXEC_ASYNC_BREAKPOINT_HIT));
9659 uiout->field_string ("disp", bpdisp_text (b->disposition));
9660 }
9661 uiout->field_int ("bkptno", b->number);
9662 uiout->text (", ");
9663
9664 return PRINT_SRC_AND_LOC;
9665 }
9666
9667 /* Implement the "print_one" breakpoint_ops method for
9668 ranged breakpoints. */
9669
9670 static void
9671 print_one_ranged_breakpoint (struct breakpoint *b,
9672 struct bp_location **last_loc)
9673 {
9674 struct bp_location *bl = b->loc;
9675 struct value_print_options opts;
9676 struct ui_out *uiout = current_uiout;
9677
9678 /* Ranged breakpoints have only one location. */
9679 gdb_assert (bl && bl->next == NULL);
9680
9681 get_user_print_options (&opts);
9682
9683 if (opts.addressprint)
9684 /* We don't print the address range here, it will be printed later
9685 by print_one_detail_ranged_breakpoint. */
9686 uiout->field_skip ("addr");
9687 annotate_field (5);
9688 print_breakpoint_location (b, bl);
9689 *last_loc = bl;
9690 }
9691
9692 /* Implement the "print_one_detail" breakpoint_ops method for
9693 ranged breakpoints. */
9694
9695 static void
9696 print_one_detail_ranged_breakpoint (const struct breakpoint *b,
9697 struct ui_out *uiout)
9698 {
9699 CORE_ADDR address_start, address_end;
9700 struct bp_location *bl = b->loc;
9701 string_file stb;
9702
9703 gdb_assert (bl);
9704
9705 address_start = bl->address;
9706 address_end = address_start + bl->length - 1;
9707
9708 uiout->text ("\taddress range: ");
9709 stb.printf ("[%s, %s]",
9710 print_core_address (bl->gdbarch, address_start),
9711 print_core_address (bl->gdbarch, address_end));
9712 uiout->field_stream ("addr", stb);
9713 uiout->text ("\n");
9714 }
9715
9716 /* Implement the "print_mention" breakpoint_ops method for
9717 ranged breakpoints. */
9718
9719 static void
9720 print_mention_ranged_breakpoint (struct breakpoint *b)
9721 {
9722 struct bp_location *bl = b->loc;
9723 struct ui_out *uiout = current_uiout;
9724
9725 gdb_assert (bl);
9726 gdb_assert (b->type == bp_hardware_breakpoint);
9727
9728 uiout->message (_("Hardware assisted ranged breakpoint %d from %s to %s."),
9729 b->number, paddress (bl->gdbarch, bl->address),
9730 paddress (bl->gdbarch, bl->address + bl->length - 1));
9731 }
9732
9733 /* Implement the "print_recreate" breakpoint_ops method for
9734 ranged breakpoints. */
9735
9736 static void
9737 print_recreate_ranged_breakpoint (struct breakpoint *b, struct ui_file *fp)
9738 {
9739 fprintf_unfiltered (fp, "break-range %s, %s",
9740 event_location_to_string (b->location.get ()),
9741 event_location_to_string (b->location_range_end.get ()));
9742 print_recreate_thread (b, fp);
9743 }
9744
9745 /* The breakpoint_ops structure to be used in ranged breakpoints. */
9746
9747 static struct breakpoint_ops ranged_breakpoint_ops;
9748
9749 /* Find the address where the end of the breakpoint range should be
9750 placed, given the SAL of the end of the range. This is so that if
9751 the user provides a line number, the end of the range is set to the
9752 last instruction of the given line. */
9753
9754 static CORE_ADDR
9755 find_breakpoint_range_end (struct symtab_and_line sal)
9756 {
9757 CORE_ADDR end;
9758
9759 /* If the user provided a PC value, use it. Otherwise,
9760 find the address of the end of the given location. */
9761 if (sal.explicit_pc)
9762 end = sal.pc;
9763 else
9764 {
9765 int ret;
9766 CORE_ADDR start;
9767
9768 ret = find_line_pc_range (sal, &start, &end);
9769 if (!ret)
9770 error (_("Could not find location of the end of the range."));
9771
9772 /* find_line_pc_range returns the start of the next line. */
9773 end--;
9774 }
9775
9776 return end;
9777 }
9778
9779 /* Implement the "break-range" CLI command. */
9780
9781 static void
9782 break_range_command (const char *arg, int from_tty)
9783 {
9784 const char *arg_start;
9785 struct linespec_result canonical_start, canonical_end;
9786 int bp_count, can_use_bp, length;
9787 CORE_ADDR end;
9788 struct breakpoint *b;
9789
9790 /* We don't support software ranged breakpoints. */
9791 if (target_ranged_break_num_registers () < 0)
9792 error (_("This target does not support hardware ranged breakpoints."));
9793
9794 bp_count = hw_breakpoint_used_count ();
9795 bp_count += target_ranged_break_num_registers ();
9796 can_use_bp = target_can_use_hardware_watchpoint (bp_hardware_breakpoint,
9797 bp_count, 0);
9798 if (can_use_bp < 0)
9799 error (_("Hardware breakpoints used exceeds limit."));
9800
9801 arg = skip_spaces (arg);
9802 if (arg == NULL || arg[0] == '\0')
9803 error(_("No address range specified."));
9804
9805 arg_start = arg;
9806 event_location_up start_location = string_to_event_location (&arg,
9807 current_language);
9808 parse_breakpoint_sals (start_location.get (), &canonical_start);
9809
9810 if (arg[0] != ',')
9811 error (_("Too few arguments."));
9812 else if (canonical_start.lsals.empty ())
9813 error (_("Could not find location of the beginning of the range."));
9814
9815 const linespec_sals &lsal_start = canonical_start.lsals[0];
9816
9817 if (canonical_start.lsals.size () > 1
9818 || lsal_start.sals.size () != 1)
9819 error (_("Cannot create a ranged breakpoint with multiple locations."));
9820
9821 const symtab_and_line &sal_start = lsal_start.sals[0];
9822 std::string addr_string_start (arg_start, arg - arg_start);
9823
9824 arg++; /* Skip the comma. */
9825 arg = skip_spaces (arg);
9826
9827 /* Parse the end location. */
9828
9829 arg_start = arg;
9830
9831 /* We call decode_line_full directly here instead of using
9832 parse_breakpoint_sals because we need to specify the start location's
9833 symtab and line as the default symtab and line for the end of the
9834 range. This makes it possible to have ranges like "foo.c:27, +14",
9835 where +14 means 14 lines from the start location. */
9836 event_location_up end_location = string_to_event_location (&arg,
9837 current_language);
9838 decode_line_full (end_location.get (), DECODE_LINE_FUNFIRSTLINE, NULL,
9839 sal_start.symtab, sal_start.line,
9840 &canonical_end, NULL, NULL);
9841
9842 if (canonical_end.lsals.empty ())
9843 error (_("Could not find location of the end of the range."));
9844
9845 const linespec_sals &lsal_end = canonical_end.lsals[0];
9846 if (canonical_end.lsals.size () > 1
9847 || lsal_end.sals.size () != 1)
9848 error (_("Cannot create a ranged breakpoint with multiple locations."));
9849
9850 const symtab_and_line &sal_end = lsal_end.sals[0];
9851
9852 end = find_breakpoint_range_end (sal_end);
9853 if (sal_start.pc > end)
9854 error (_("Invalid address range, end precedes start."));
9855
9856 length = end - sal_start.pc + 1;
9857 if (length < 0)
9858 /* Length overflowed. */
9859 error (_("Address range too large."));
9860 else if (length == 1)
9861 {
9862 /* This range is simple enough to be handled by
9863 the `hbreak' command. */
9864 hbreak_command (&addr_string_start[0], 1);
9865
9866 return;
9867 }
9868
9869 /* Now set up the breakpoint. */
9870 b = set_raw_breakpoint (get_current_arch (), sal_start,
9871 bp_hardware_breakpoint, &ranged_breakpoint_ops);
9872 set_breakpoint_count (breakpoint_count + 1);
9873 b->number = breakpoint_count;
9874 b->disposition = disp_donttouch;
9875 b->location = std::move (start_location);
9876 b->location_range_end = std::move (end_location);
9877 b->loc->length = length;
9878
9879 mention (b);
9880 gdb::observers::breakpoint_created.notify (b);
9881 update_global_location_list (UGLL_MAY_INSERT);
9882 }
9883
9884 /* Return non-zero if EXP is verified as constant. Returned zero
9885 means EXP is variable. Also the constant detection may fail for
9886 some constant expressions and in such case still falsely return
9887 zero. */
9888
9889 static int
9890 watchpoint_exp_is_const (const struct expression *exp)
9891 {
9892 int i = exp->nelts;
9893
9894 while (i > 0)
9895 {
9896 int oplenp, argsp;
9897
9898 /* We are only interested in the descriptor of each element. */
9899 operator_length (exp, i, &oplenp, &argsp);
9900 i -= oplenp;
9901
9902 switch (exp->elts[i].opcode)
9903 {
9904 case BINOP_ADD:
9905 case BINOP_SUB:
9906 case BINOP_MUL:
9907 case BINOP_DIV:
9908 case BINOP_REM:
9909 case BINOP_MOD:
9910 case BINOP_LSH:
9911 case BINOP_RSH:
9912 case BINOP_LOGICAL_AND:
9913 case BINOP_LOGICAL_OR:
9914 case BINOP_BITWISE_AND:
9915 case BINOP_BITWISE_IOR:
9916 case BINOP_BITWISE_XOR:
9917 case BINOP_EQUAL:
9918 case BINOP_NOTEQUAL:
9919 case BINOP_LESS:
9920 case BINOP_GTR:
9921 case BINOP_LEQ:
9922 case BINOP_GEQ:
9923 case BINOP_REPEAT:
9924 case BINOP_COMMA:
9925 case BINOP_EXP:
9926 case BINOP_MIN:
9927 case BINOP_MAX:
9928 case BINOP_INTDIV:
9929 case BINOP_CONCAT:
9930 case TERNOP_COND:
9931 case TERNOP_SLICE:
9932
9933 case OP_LONG:
9934 case OP_FLOAT:
9935 case OP_LAST:
9936 case OP_COMPLEX:
9937 case OP_STRING:
9938 case OP_ARRAY:
9939 case OP_TYPE:
9940 case OP_TYPEOF:
9941 case OP_DECLTYPE:
9942 case OP_TYPEID:
9943 case OP_NAME:
9944 case OP_OBJC_NSSTRING:
9945
9946 case UNOP_NEG:
9947 case UNOP_LOGICAL_NOT:
9948 case UNOP_COMPLEMENT:
9949 case UNOP_ADDR:
9950 case UNOP_HIGH:
9951 case UNOP_CAST:
9952
9953 case UNOP_CAST_TYPE:
9954 case UNOP_REINTERPRET_CAST:
9955 case UNOP_DYNAMIC_CAST:
9956 /* Unary, binary and ternary operators: We have to check
9957 their operands. If they are constant, then so is the
9958 result of that operation. For instance, if A and B are
9959 determined to be constants, then so is "A + B".
9960
9961 UNOP_IND is one exception to the rule above, because the
9962 value of *ADDR is not necessarily a constant, even when
9963 ADDR is. */
9964 break;
9965
9966 case OP_VAR_VALUE:
9967 /* Check whether the associated symbol is a constant.
9968
9969 We use SYMBOL_CLASS rather than TYPE_CONST because it's
9970 possible that a buggy compiler could mark a variable as
9971 constant even when it is not, and TYPE_CONST would return
9972 true in this case, while SYMBOL_CLASS wouldn't.
9973
9974 We also have to check for function symbols because they
9975 are always constant. */
9976 {
9977 struct symbol *s = exp->elts[i + 2].symbol;
9978
9979 if (SYMBOL_CLASS (s) != LOC_BLOCK
9980 && SYMBOL_CLASS (s) != LOC_CONST
9981 && SYMBOL_CLASS (s) != LOC_CONST_BYTES)
9982 return 0;
9983 break;
9984 }
9985
9986 /* The default action is to return 0 because we are using
9987 the optimistic approach here: If we don't know something,
9988 then it is not a constant. */
9989 default:
9990 return 0;
9991 }
9992 }
9993
9994 return 1;
9995 }
9996
9997 /* Watchpoint destructor. */
9998
9999 watchpoint::~watchpoint ()
10000 {
10001 xfree (this->exp_string);
10002 xfree (this->exp_string_reparse);
10003 }
10004
10005 /* Implement the "re_set" breakpoint_ops method for watchpoints. */
10006
10007 static void
10008 re_set_watchpoint (struct breakpoint *b)
10009 {
10010 struct watchpoint *w = (struct watchpoint *) b;
10011
10012 /* Watchpoint can be either on expression using entirely global
10013 variables, or it can be on local variables.
10014
10015 Watchpoints of the first kind are never auto-deleted, and even
10016 persist across program restarts. Since they can use variables
10017 from shared libraries, we need to reparse expression as libraries
10018 are loaded and unloaded.
10019
10020 Watchpoints on local variables can also change meaning as result
10021 of solib event. For example, if a watchpoint uses both a local
10022 and a global variables in expression, it's a local watchpoint,
10023 but unloading of a shared library will make the expression
10024 invalid. This is not a very common use case, but we still
10025 re-evaluate expression, to avoid surprises to the user.
10026
10027 Note that for local watchpoints, we re-evaluate it only if
10028 watchpoints frame id is still valid. If it's not, it means the
10029 watchpoint is out of scope and will be deleted soon. In fact,
10030 I'm not sure we'll ever be called in this case.
10031
10032 If a local watchpoint's frame id is still valid, then
10033 w->exp_valid_block is likewise valid, and we can safely use it.
10034
10035 Don't do anything about disabled watchpoints, since they will be
10036 reevaluated again when enabled. */
10037 update_watchpoint (w, 1 /* reparse */);
10038 }
10039
10040 /* Implement the "insert" breakpoint_ops method for hardware watchpoints. */
10041
10042 static int
10043 insert_watchpoint (struct bp_location *bl)
10044 {
10045 struct watchpoint *w = (struct watchpoint *) bl->owner;
10046 int length = w->exact ? 1 : bl->length;
10047
10048 return target_insert_watchpoint (bl->address, length, bl->watchpoint_type,
10049 w->cond_exp.get ());
10050 }
10051
10052 /* Implement the "remove" breakpoint_ops method for hardware watchpoints. */
10053
10054 static int
10055 remove_watchpoint (struct bp_location *bl, enum remove_bp_reason reason)
10056 {
10057 struct watchpoint *w = (struct watchpoint *) bl->owner;
10058 int length = w->exact ? 1 : bl->length;
10059
10060 return target_remove_watchpoint (bl->address, length, bl->watchpoint_type,
10061 w->cond_exp.get ());
10062 }
10063
10064 static int
10065 breakpoint_hit_watchpoint (const struct bp_location *bl,
10066 const address_space *aspace, CORE_ADDR bp_addr,
10067 const struct target_waitstatus *ws)
10068 {
10069 struct breakpoint *b = bl->owner;
10070 struct watchpoint *w = (struct watchpoint *) b;
10071
10072 /* Continuable hardware watchpoints are treated as non-existent if the
10073 reason we stopped wasn't a hardware watchpoint (we didn't stop on
10074 some data address). Otherwise gdb won't stop on a break instruction
10075 in the code (not from a breakpoint) when a hardware watchpoint has
10076 been defined. Also skip watchpoints which we know did not trigger
10077 (did not match the data address). */
10078 if (is_hardware_watchpoint (b)
10079 && w->watchpoint_triggered == watch_triggered_no)
10080 return 0;
10081
10082 return 1;
10083 }
10084
10085 static void
10086 check_status_watchpoint (bpstat bs)
10087 {
10088 gdb_assert (is_watchpoint (bs->breakpoint_at));
10089
10090 bpstat_check_watchpoint (bs);
10091 }
10092
10093 /* Implement the "resources_needed" breakpoint_ops method for
10094 hardware watchpoints. */
10095
10096 static int
10097 resources_needed_watchpoint (const struct bp_location *bl)
10098 {
10099 struct watchpoint *w = (struct watchpoint *) bl->owner;
10100 int length = w->exact? 1 : bl->length;
10101
10102 return target_region_ok_for_hw_watchpoint (bl->address, length);
10103 }
10104
10105 /* Implement the "works_in_software_mode" breakpoint_ops method for
10106 hardware watchpoints. */
10107
10108 static int
10109 works_in_software_mode_watchpoint (const struct breakpoint *b)
10110 {
10111 /* Read and access watchpoints only work with hardware support. */
10112 return b->type == bp_watchpoint || b->type == bp_hardware_watchpoint;
10113 }
10114
10115 static enum print_stop_action
10116 print_it_watchpoint (bpstat bs)
10117 {
10118 struct breakpoint *b;
10119 enum print_stop_action result;
10120 struct watchpoint *w;
10121 struct ui_out *uiout = current_uiout;
10122
10123 gdb_assert (bs->bp_location_at != NULL);
10124
10125 b = bs->breakpoint_at;
10126 w = (struct watchpoint *) b;
10127
10128 annotate_watchpoint (b->number);
10129 maybe_print_thread_hit_breakpoint (uiout);
10130
10131 string_file stb;
10132
10133 gdb::optional<ui_out_emit_tuple> tuple_emitter;
10134 switch (b->type)
10135 {
10136 case bp_watchpoint:
10137 case bp_hardware_watchpoint:
10138 if (uiout->is_mi_like_p ())
10139 uiout->field_string
10140 ("reason", async_reason_lookup (EXEC_ASYNC_WATCHPOINT_TRIGGER));
10141 mention (b);
10142 tuple_emitter.emplace (uiout, "value");
10143 uiout->text ("\nOld value = ");
10144 watchpoint_value_print (bs->old_val.get (), &stb);
10145 uiout->field_stream ("old", stb);
10146 uiout->text ("\nNew value = ");
10147 watchpoint_value_print (w->val.get (), &stb);
10148 uiout->field_stream ("new", stb);
10149 uiout->text ("\n");
10150 /* More than one watchpoint may have been triggered. */
10151 result = PRINT_UNKNOWN;
10152 break;
10153
10154 case bp_read_watchpoint:
10155 if (uiout->is_mi_like_p ())
10156 uiout->field_string
10157 ("reason", async_reason_lookup (EXEC_ASYNC_READ_WATCHPOINT_TRIGGER));
10158 mention (b);
10159 tuple_emitter.emplace (uiout, "value");
10160 uiout->text ("\nValue = ");
10161 watchpoint_value_print (w->val.get (), &stb);
10162 uiout->field_stream ("value", stb);
10163 uiout->text ("\n");
10164 result = PRINT_UNKNOWN;
10165 break;
10166
10167 case bp_access_watchpoint:
10168 if (bs->old_val != NULL)
10169 {
10170 if (uiout->is_mi_like_p ())
10171 uiout->field_string
10172 ("reason",
10173 async_reason_lookup (EXEC_ASYNC_ACCESS_WATCHPOINT_TRIGGER));
10174 mention (b);
10175 tuple_emitter.emplace (uiout, "value");
10176 uiout->text ("\nOld value = ");
10177 watchpoint_value_print (bs->old_val.get (), &stb);
10178 uiout->field_stream ("old", stb);
10179 uiout->text ("\nNew value = ");
10180 }
10181 else
10182 {
10183 mention (b);
10184 if (uiout->is_mi_like_p ())
10185 uiout->field_string
10186 ("reason",
10187 async_reason_lookup (EXEC_ASYNC_ACCESS_WATCHPOINT_TRIGGER));
10188 tuple_emitter.emplace (uiout, "value");
10189 uiout->text ("\nValue = ");
10190 }
10191 watchpoint_value_print (w->val.get (), &stb);
10192 uiout->field_stream ("new", stb);
10193 uiout->text ("\n");
10194 result = PRINT_UNKNOWN;
10195 break;
10196 default:
10197 result = PRINT_UNKNOWN;
10198 }
10199
10200 return result;
10201 }
10202
10203 /* Implement the "print_mention" breakpoint_ops method for hardware
10204 watchpoints. */
10205
10206 static void
10207 print_mention_watchpoint (struct breakpoint *b)
10208 {
10209 struct watchpoint *w = (struct watchpoint *) b;
10210 struct ui_out *uiout = current_uiout;
10211 const char *tuple_name;
10212
10213 switch (b->type)
10214 {
10215 case bp_watchpoint:
10216 uiout->text ("Watchpoint ");
10217 tuple_name = "wpt";
10218 break;
10219 case bp_hardware_watchpoint:
10220 uiout->text ("Hardware watchpoint ");
10221 tuple_name = "wpt";
10222 break;
10223 case bp_read_watchpoint:
10224 uiout->text ("Hardware read watchpoint ");
10225 tuple_name = "hw-rwpt";
10226 break;
10227 case bp_access_watchpoint:
10228 uiout->text ("Hardware access (read/write) watchpoint ");
10229 tuple_name = "hw-awpt";
10230 break;
10231 default:
10232 internal_error (__FILE__, __LINE__,
10233 _("Invalid hardware watchpoint type."));
10234 }
10235
10236 ui_out_emit_tuple tuple_emitter (uiout, tuple_name);
10237 uiout->field_int ("number", b->number);
10238 uiout->text (": ");
10239 uiout->field_string ("exp", w->exp_string);
10240 }
10241
10242 /* Implement the "print_recreate" breakpoint_ops method for
10243 watchpoints. */
10244
10245 static void
10246 print_recreate_watchpoint (struct breakpoint *b, struct ui_file *fp)
10247 {
10248 struct watchpoint *w = (struct watchpoint *) b;
10249
10250 switch (b->type)
10251 {
10252 case bp_watchpoint:
10253 case bp_hardware_watchpoint:
10254 fprintf_unfiltered (fp, "watch");
10255 break;
10256 case bp_read_watchpoint:
10257 fprintf_unfiltered (fp, "rwatch");
10258 break;
10259 case bp_access_watchpoint:
10260 fprintf_unfiltered (fp, "awatch");
10261 break;
10262 default:
10263 internal_error (__FILE__, __LINE__,
10264 _("Invalid watchpoint type."));
10265 }
10266
10267 fprintf_unfiltered (fp, " %s", w->exp_string);
10268 print_recreate_thread (b, fp);
10269 }
10270
10271 /* Implement the "explains_signal" breakpoint_ops method for
10272 watchpoints. */
10273
10274 static int
10275 explains_signal_watchpoint (struct breakpoint *b, enum gdb_signal sig)
10276 {
10277 /* A software watchpoint cannot cause a signal other than
10278 GDB_SIGNAL_TRAP. */
10279 if (b->type == bp_watchpoint && sig != GDB_SIGNAL_TRAP)
10280 return 0;
10281
10282 return 1;
10283 }
10284
10285 /* The breakpoint_ops structure to be used in hardware watchpoints. */
10286
10287 static struct breakpoint_ops watchpoint_breakpoint_ops;
10288
10289 /* Implement the "insert" breakpoint_ops method for
10290 masked hardware watchpoints. */
10291
10292 static int
10293 insert_masked_watchpoint (struct bp_location *bl)
10294 {
10295 struct watchpoint *w = (struct watchpoint *) bl->owner;
10296
10297 return target_insert_mask_watchpoint (bl->address, w->hw_wp_mask,
10298 bl->watchpoint_type);
10299 }
10300
10301 /* Implement the "remove" breakpoint_ops method for
10302 masked hardware watchpoints. */
10303
10304 static int
10305 remove_masked_watchpoint (struct bp_location *bl, enum remove_bp_reason reason)
10306 {
10307 struct watchpoint *w = (struct watchpoint *) bl->owner;
10308
10309 return target_remove_mask_watchpoint (bl->address, w->hw_wp_mask,
10310 bl->watchpoint_type);
10311 }
10312
10313 /* Implement the "resources_needed" breakpoint_ops method for
10314 masked hardware watchpoints. */
10315
10316 static int
10317 resources_needed_masked_watchpoint (const struct bp_location *bl)
10318 {
10319 struct watchpoint *w = (struct watchpoint *) bl->owner;
10320
10321 return target_masked_watch_num_registers (bl->address, w->hw_wp_mask);
10322 }
10323
10324 /* Implement the "works_in_software_mode" breakpoint_ops method for
10325 masked hardware watchpoints. */
10326
10327 static int
10328 works_in_software_mode_masked_watchpoint (const struct breakpoint *b)
10329 {
10330 return 0;
10331 }
10332
10333 /* Implement the "print_it" breakpoint_ops method for
10334 masked hardware watchpoints. */
10335
10336 static enum print_stop_action
10337 print_it_masked_watchpoint (bpstat bs)
10338 {
10339 struct breakpoint *b = bs->breakpoint_at;
10340 struct ui_out *uiout = current_uiout;
10341
10342 /* Masked watchpoints have only one location. */
10343 gdb_assert (b->loc && b->loc->next == NULL);
10344
10345 annotate_watchpoint (b->number);
10346 maybe_print_thread_hit_breakpoint (uiout);
10347
10348 switch (b->type)
10349 {
10350 case bp_hardware_watchpoint:
10351 if (uiout->is_mi_like_p ())
10352 uiout->field_string
10353 ("reason", async_reason_lookup (EXEC_ASYNC_WATCHPOINT_TRIGGER));
10354 break;
10355
10356 case bp_read_watchpoint:
10357 if (uiout->is_mi_like_p ())
10358 uiout->field_string
10359 ("reason", async_reason_lookup (EXEC_ASYNC_READ_WATCHPOINT_TRIGGER));
10360 break;
10361
10362 case bp_access_watchpoint:
10363 if (uiout->is_mi_like_p ())
10364 uiout->field_string
10365 ("reason",
10366 async_reason_lookup (EXEC_ASYNC_ACCESS_WATCHPOINT_TRIGGER));
10367 break;
10368 default:
10369 internal_error (__FILE__, __LINE__,
10370 _("Invalid hardware watchpoint type."));
10371 }
10372
10373 mention (b);
10374 uiout->text (_("\n\
10375 Check the underlying instruction at PC for the memory\n\
10376 address and value which triggered this watchpoint.\n"));
10377 uiout->text ("\n");
10378
10379 /* More than one watchpoint may have been triggered. */
10380 return PRINT_UNKNOWN;
10381 }
10382
10383 /* Implement the "print_one_detail" breakpoint_ops method for
10384 masked hardware watchpoints. */
10385
10386 static void
10387 print_one_detail_masked_watchpoint (const struct breakpoint *b,
10388 struct ui_out *uiout)
10389 {
10390 struct watchpoint *w = (struct watchpoint *) b;
10391
10392 /* Masked watchpoints have only one location. */
10393 gdb_assert (b->loc && b->loc->next == NULL);
10394
10395 uiout->text ("\tmask ");
10396 uiout->field_core_addr ("mask", b->loc->gdbarch, w->hw_wp_mask);
10397 uiout->text ("\n");
10398 }
10399
10400 /* Implement the "print_mention" breakpoint_ops method for
10401 masked hardware watchpoints. */
10402
10403 static void
10404 print_mention_masked_watchpoint (struct breakpoint *b)
10405 {
10406 struct watchpoint *w = (struct watchpoint *) b;
10407 struct ui_out *uiout = current_uiout;
10408 const char *tuple_name;
10409
10410 switch (b->type)
10411 {
10412 case bp_hardware_watchpoint:
10413 uiout->text ("Masked hardware watchpoint ");
10414 tuple_name = "wpt";
10415 break;
10416 case bp_read_watchpoint:
10417 uiout->text ("Masked hardware read watchpoint ");
10418 tuple_name = "hw-rwpt";
10419 break;
10420 case bp_access_watchpoint:
10421 uiout->text ("Masked hardware access (read/write) watchpoint ");
10422 tuple_name = "hw-awpt";
10423 break;
10424 default:
10425 internal_error (__FILE__, __LINE__,
10426 _("Invalid hardware watchpoint type."));
10427 }
10428
10429 ui_out_emit_tuple tuple_emitter (uiout, tuple_name);
10430 uiout->field_int ("number", b->number);
10431 uiout->text (": ");
10432 uiout->field_string ("exp", w->exp_string);
10433 }
10434
10435 /* Implement the "print_recreate" breakpoint_ops method for
10436 masked hardware watchpoints. */
10437
10438 static void
10439 print_recreate_masked_watchpoint (struct breakpoint *b, struct ui_file *fp)
10440 {
10441 struct watchpoint *w = (struct watchpoint *) b;
10442 char tmp[40];
10443
10444 switch (b->type)
10445 {
10446 case bp_hardware_watchpoint:
10447 fprintf_unfiltered (fp, "watch");
10448 break;
10449 case bp_read_watchpoint:
10450 fprintf_unfiltered (fp, "rwatch");
10451 break;
10452 case bp_access_watchpoint:
10453 fprintf_unfiltered (fp, "awatch");
10454 break;
10455 default:
10456 internal_error (__FILE__, __LINE__,
10457 _("Invalid hardware watchpoint type."));
10458 }
10459
10460 sprintf_vma (tmp, w->hw_wp_mask);
10461 fprintf_unfiltered (fp, " %s mask 0x%s", w->exp_string, tmp);
10462 print_recreate_thread (b, fp);
10463 }
10464
10465 /* The breakpoint_ops structure to be used in masked hardware watchpoints. */
10466
10467 static struct breakpoint_ops masked_watchpoint_breakpoint_ops;
10468
10469 /* Tell whether the given watchpoint is a masked hardware watchpoint. */
10470
10471 static int
10472 is_masked_watchpoint (const struct breakpoint *b)
10473 {
10474 return b->ops == &masked_watchpoint_breakpoint_ops;
10475 }
10476
10477 /* accessflag: hw_write: watch write,
10478 hw_read: watch read,
10479 hw_access: watch access (read or write) */
10480 static void
10481 watch_command_1 (const char *arg, int accessflag, int from_tty,
10482 int just_location, int internal)
10483 {
10484 struct breakpoint *scope_breakpoint = NULL;
10485 const struct block *exp_valid_block = NULL, *cond_exp_valid_block = NULL;
10486 struct value *result;
10487 int saved_bitpos = 0, saved_bitsize = 0;
10488 const char *exp_start = NULL;
10489 const char *exp_end = NULL;
10490 const char *tok, *end_tok;
10491 int toklen = -1;
10492 const char *cond_start = NULL;
10493 const char *cond_end = NULL;
10494 enum bptype bp_type;
10495 int thread = -1;
10496 int pc = 0;
10497 /* Flag to indicate whether we are going to use masks for
10498 the hardware watchpoint. */
10499 int use_mask = 0;
10500 CORE_ADDR mask = 0;
10501
10502 /* Make sure that we actually have parameters to parse. */
10503 if (arg != NULL && arg[0] != '\0')
10504 {
10505 const char *value_start;
10506
10507 exp_end = arg + strlen (arg);
10508
10509 /* Look for "parameter value" pairs at the end
10510 of the arguments string. */
10511 for (tok = exp_end - 1; tok > arg; tok--)
10512 {
10513 /* Skip whitespace at the end of the argument list. */
10514 while (tok > arg && (*tok == ' ' || *tok == '\t'))
10515 tok--;
10516
10517 /* Find the beginning of the last token.
10518 This is the value of the parameter. */
10519 while (tok > arg && (*tok != ' ' && *tok != '\t'))
10520 tok--;
10521 value_start = tok + 1;
10522
10523 /* Skip whitespace. */
10524 while (tok > arg && (*tok == ' ' || *tok == '\t'))
10525 tok--;
10526
10527 end_tok = tok;
10528
10529 /* Find the beginning of the second to last token.
10530 This is the parameter itself. */
10531 while (tok > arg && (*tok != ' ' && *tok != '\t'))
10532 tok--;
10533 tok++;
10534 toklen = end_tok - tok + 1;
10535
10536 if (toklen == 6 && startswith (tok, "thread"))
10537 {
10538 struct thread_info *thr;
10539 /* At this point we've found a "thread" token, which means
10540 the user is trying to set a watchpoint that triggers
10541 only in a specific thread. */
10542 const char *endp;
10543
10544 if (thread != -1)
10545 error(_("You can specify only one thread."));
10546
10547 /* Extract the thread ID from the next token. */
10548 thr = parse_thread_id (value_start, &endp);
10549
10550 /* Check if the user provided a valid thread ID. */
10551 if (*endp != ' ' && *endp != '\t' && *endp != '\0')
10552 invalid_thread_id_error (value_start);
10553
10554 thread = thr->global_num;
10555 }
10556 else if (toklen == 4 && startswith (tok, "mask"))
10557 {
10558 /* We've found a "mask" token, which means the user wants to
10559 create a hardware watchpoint that is going to have the mask
10560 facility. */
10561 struct value *mask_value, *mark;
10562
10563 if (use_mask)
10564 error(_("You can specify only one mask."));
10565
10566 use_mask = just_location = 1;
10567
10568 mark = value_mark ();
10569 mask_value = parse_to_comma_and_eval (&value_start);
10570 mask = value_as_address (mask_value);
10571 value_free_to_mark (mark);
10572 }
10573 else
10574 /* We didn't recognize what we found. We should stop here. */
10575 break;
10576
10577 /* Truncate the string and get rid of the "parameter value" pair before
10578 the arguments string is parsed by the parse_exp_1 function. */
10579 exp_end = tok;
10580 }
10581 }
10582 else
10583 exp_end = arg;
10584
10585 /* Parse the rest of the arguments. From here on out, everything
10586 is in terms of a newly allocated string instead of the original
10587 ARG. */
10588 std::string expression (arg, exp_end - arg);
10589 exp_start = arg = expression.c_str ();
10590 innermost_block_tracker tracker;
10591 expression_up exp = parse_exp_1 (&arg, 0, 0, 0, &tracker);
10592 exp_end = arg;
10593 /* Remove trailing whitespace from the expression before saving it.
10594 This makes the eventual display of the expression string a bit
10595 prettier. */
10596 while (exp_end > exp_start && (exp_end[-1] == ' ' || exp_end[-1] == '\t'))
10597 --exp_end;
10598
10599 /* Checking if the expression is not constant. */
10600 if (watchpoint_exp_is_const (exp.get ()))
10601 {
10602 int len;
10603
10604 len = exp_end - exp_start;
10605 while (len > 0 && isspace (exp_start[len - 1]))
10606 len--;
10607 error (_("Cannot watch constant value `%.*s'."), len, exp_start);
10608 }
10609
10610 exp_valid_block = tracker.block ();
10611 struct value *mark = value_mark ();
10612 struct value *val_as_value = nullptr;
10613 fetch_subexp_value (exp.get (), &pc, &val_as_value, &result, NULL,
10614 just_location);
10615
10616 if (val_as_value != NULL && just_location)
10617 {
10618 saved_bitpos = value_bitpos (val_as_value);
10619 saved_bitsize = value_bitsize (val_as_value);
10620 }
10621
10622 value_ref_ptr val;
10623 if (just_location)
10624 {
10625 int ret;
10626
10627 exp_valid_block = NULL;
10628 val = release_value (value_addr (result));
10629 value_free_to_mark (mark);
10630
10631 if (use_mask)
10632 {
10633 ret = target_masked_watch_num_registers (value_as_address (val.get ()),
10634 mask);
10635 if (ret == -1)
10636 error (_("This target does not support masked watchpoints."));
10637 else if (ret == -2)
10638 error (_("Invalid mask or memory region."));
10639 }
10640 }
10641 else if (val_as_value != NULL)
10642 val = release_value (val_as_value);
10643
10644 tok = skip_spaces (arg);
10645 end_tok = skip_to_space (tok);
10646
10647 toklen = end_tok - tok;
10648 if (toklen >= 1 && strncmp (tok, "if", toklen) == 0)
10649 {
10650 tok = cond_start = end_tok + 1;
10651 innermost_block_tracker if_tracker;
10652 parse_exp_1 (&tok, 0, 0, 0, &if_tracker);
10653
10654 /* The watchpoint expression may not be local, but the condition
10655 may still be. E.g.: `watch global if local > 0'. */
10656 cond_exp_valid_block = if_tracker.block ();
10657
10658 cond_end = tok;
10659 }
10660 if (*tok)
10661 error (_("Junk at end of command."));
10662
10663 frame_info *wp_frame = block_innermost_frame (exp_valid_block);
10664
10665 /* Save this because create_internal_breakpoint below invalidates
10666 'wp_frame'. */
10667 frame_id watchpoint_frame = get_frame_id (wp_frame);
10668
10669 /* If the expression is "local", then set up a "watchpoint scope"
10670 breakpoint at the point where we've left the scope of the watchpoint
10671 expression. Create the scope breakpoint before the watchpoint, so
10672 that we will encounter it first in bpstat_stop_status. */
10673 if (exp_valid_block != NULL && wp_frame != NULL)
10674 {
10675 frame_id caller_frame_id = frame_unwind_caller_id (wp_frame);
10676
10677 if (frame_id_p (caller_frame_id))
10678 {
10679 gdbarch *caller_arch = frame_unwind_caller_arch (wp_frame);
10680 CORE_ADDR caller_pc = frame_unwind_caller_pc (wp_frame);
10681
10682 scope_breakpoint
10683 = create_internal_breakpoint (caller_arch, caller_pc,
10684 bp_watchpoint_scope,
10685 &momentary_breakpoint_ops);
10686
10687 /* create_internal_breakpoint could invalidate WP_FRAME. */
10688 wp_frame = NULL;
10689
10690 scope_breakpoint->enable_state = bp_enabled;
10691
10692 /* Automatically delete the breakpoint when it hits. */
10693 scope_breakpoint->disposition = disp_del;
10694
10695 /* Only break in the proper frame (help with recursion). */
10696 scope_breakpoint->frame_id = caller_frame_id;
10697
10698 /* Set the address at which we will stop. */
10699 scope_breakpoint->loc->gdbarch = caller_arch;
10700 scope_breakpoint->loc->requested_address = caller_pc;
10701 scope_breakpoint->loc->address
10702 = adjust_breakpoint_address (scope_breakpoint->loc->gdbarch,
10703 scope_breakpoint->loc->requested_address,
10704 scope_breakpoint->type);
10705 }
10706 }
10707
10708 /* Now set up the breakpoint. We create all watchpoints as hardware
10709 watchpoints here even if hardware watchpoints are turned off, a call
10710 to update_watchpoint later in this function will cause the type to
10711 drop back to bp_watchpoint (software watchpoint) if required. */
10712
10713 if (accessflag == hw_read)
10714 bp_type = bp_read_watchpoint;
10715 else if (accessflag == hw_access)
10716 bp_type = bp_access_watchpoint;
10717 else
10718 bp_type = bp_hardware_watchpoint;
10719
10720 std::unique_ptr<watchpoint> w (new watchpoint ());
10721
10722 if (use_mask)
10723 init_raw_breakpoint_without_location (w.get (), NULL, bp_type,
10724 &masked_watchpoint_breakpoint_ops);
10725 else
10726 init_raw_breakpoint_without_location (w.get (), NULL, bp_type,
10727 &watchpoint_breakpoint_ops);
10728 w->thread = thread;
10729 w->disposition = disp_donttouch;
10730 w->pspace = current_program_space;
10731 w->exp = std::move (exp);
10732 w->exp_valid_block = exp_valid_block;
10733 w->cond_exp_valid_block = cond_exp_valid_block;
10734 if (just_location)
10735 {
10736 struct type *t = value_type (val.get ());
10737 CORE_ADDR addr = value_as_address (val.get ());
10738
10739 w->exp_string_reparse
10740 = current_language->la_watch_location_expression (t, addr).release ();
10741
10742 w->exp_string = xstrprintf ("-location %.*s",
10743 (int) (exp_end - exp_start), exp_start);
10744 }
10745 else
10746 w->exp_string = savestring (exp_start, exp_end - exp_start);
10747
10748 if (use_mask)
10749 {
10750 w->hw_wp_mask = mask;
10751 }
10752 else
10753 {
10754 w->val = val;
10755 w->val_bitpos = saved_bitpos;
10756 w->val_bitsize = saved_bitsize;
10757 w->val_valid = 1;
10758 }
10759
10760 if (cond_start)
10761 w->cond_string = savestring (cond_start, cond_end - cond_start);
10762 else
10763 w->cond_string = 0;
10764
10765 if (frame_id_p (watchpoint_frame))
10766 {
10767 w->watchpoint_frame = watchpoint_frame;
10768 w->watchpoint_thread = inferior_ptid;
10769 }
10770 else
10771 {
10772 w->watchpoint_frame = null_frame_id;
10773 w->watchpoint_thread = null_ptid;
10774 }
10775
10776 if (scope_breakpoint != NULL)
10777 {
10778 /* The scope breakpoint is related to the watchpoint. We will
10779 need to act on them together. */
10780 w->related_breakpoint = scope_breakpoint;
10781 scope_breakpoint->related_breakpoint = w.get ();
10782 }
10783
10784 if (!just_location)
10785 value_free_to_mark (mark);
10786
10787 /* Finally update the new watchpoint. This creates the locations
10788 that should be inserted. */
10789 update_watchpoint (w.get (), 1);
10790
10791 install_breakpoint (internal, std::move (w), 1);
10792 }
10793
10794 /* Return count of debug registers needed to watch the given expression.
10795 If the watchpoint cannot be handled in hardware return zero. */
10796
10797 static int
10798 can_use_hardware_watchpoint (const std::vector<value_ref_ptr> &vals)
10799 {
10800 int found_memory_cnt = 0;
10801
10802 /* Did the user specifically forbid us to use hardware watchpoints? */
10803 if (!can_use_hw_watchpoints)
10804 return 0;
10805
10806 gdb_assert (!vals.empty ());
10807 struct value *head = vals[0].get ();
10808
10809 /* Make sure that the value of the expression depends only upon
10810 memory contents, and values computed from them within GDB. If we
10811 find any register references or function calls, we can't use a
10812 hardware watchpoint.
10813
10814 The idea here is that evaluating an expression generates a series
10815 of values, one holding the value of every subexpression. (The
10816 expression a*b+c has five subexpressions: a, b, a*b, c, and
10817 a*b+c.) GDB's values hold almost enough information to establish
10818 the criteria given above --- they identify memory lvalues,
10819 register lvalues, computed values, etcetera. So we can evaluate
10820 the expression, and then scan the chain of values that leaves
10821 behind to decide whether we can detect any possible change to the
10822 expression's final value using only hardware watchpoints.
10823
10824 However, I don't think that the values returned by inferior
10825 function calls are special in any way. So this function may not
10826 notice that an expression involving an inferior function call
10827 can't be watched with hardware watchpoints. FIXME. */
10828 for (const value_ref_ptr &iter : vals)
10829 {
10830 struct value *v = iter.get ();
10831
10832 if (VALUE_LVAL (v) == lval_memory)
10833 {
10834 if (v != head && value_lazy (v))
10835 /* A lazy memory lvalue in the chain is one that GDB never
10836 needed to fetch; we either just used its address (e.g.,
10837 `a' in `a.b') or we never needed it at all (e.g., `a'
10838 in `a,b'). This doesn't apply to HEAD; if that is
10839 lazy then it was not readable, but watch it anyway. */
10840 ;
10841 else
10842 {
10843 /* Ahh, memory we actually used! Check if we can cover
10844 it with hardware watchpoints. */
10845 struct type *vtype = check_typedef (value_type (v));
10846
10847 /* We only watch structs and arrays if user asked for it
10848 explicitly, never if they just happen to appear in a
10849 middle of some value chain. */
10850 if (v == head
10851 || (TYPE_CODE (vtype) != TYPE_CODE_STRUCT
10852 && TYPE_CODE (vtype) != TYPE_CODE_ARRAY))
10853 {
10854 CORE_ADDR vaddr = value_address (v);
10855 int len;
10856 int num_regs;
10857
10858 len = (target_exact_watchpoints
10859 && is_scalar_type_recursive (vtype))?
10860 1 : TYPE_LENGTH (value_type (v));
10861
10862 num_regs = target_region_ok_for_hw_watchpoint (vaddr, len);
10863 if (!num_regs)
10864 return 0;
10865 else
10866 found_memory_cnt += num_regs;
10867 }
10868 }
10869 }
10870 else if (VALUE_LVAL (v) != not_lval
10871 && deprecated_value_modifiable (v) == 0)
10872 return 0; /* These are values from the history (e.g., $1). */
10873 else if (VALUE_LVAL (v) == lval_register)
10874 return 0; /* Cannot watch a register with a HW watchpoint. */
10875 }
10876
10877 /* The expression itself looks suitable for using a hardware
10878 watchpoint, but give the target machine a chance to reject it. */
10879 return found_memory_cnt;
10880 }
10881
10882 void
10883 watch_command_wrapper (const char *arg, int from_tty, int internal)
10884 {
10885 watch_command_1 (arg, hw_write, from_tty, 0, internal);
10886 }
10887
10888 /* A helper function that looks for the "-location" argument and then
10889 calls watch_command_1. */
10890
10891 static void
10892 watch_maybe_just_location (const char *arg, int accessflag, int from_tty)
10893 {
10894 int just_location = 0;
10895
10896 if (arg
10897 && (check_for_argument (&arg, "-location", sizeof ("-location") - 1)
10898 || check_for_argument (&arg, "-l", sizeof ("-l") - 1)))
10899 just_location = 1;
10900
10901 watch_command_1 (arg, accessflag, from_tty, just_location, 0);
10902 }
10903
10904 static void
10905 watch_command (const char *arg, int from_tty)
10906 {
10907 watch_maybe_just_location (arg, hw_write, from_tty);
10908 }
10909
10910 void
10911 rwatch_command_wrapper (const char *arg, int from_tty, int internal)
10912 {
10913 watch_command_1 (arg, hw_read, from_tty, 0, internal);
10914 }
10915
10916 static void
10917 rwatch_command (const char *arg, int from_tty)
10918 {
10919 watch_maybe_just_location (arg, hw_read, from_tty);
10920 }
10921
10922 void
10923 awatch_command_wrapper (const char *arg, int from_tty, int internal)
10924 {
10925 watch_command_1 (arg, hw_access, from_tty, 0, internal);
10926 }
10927
10928 static void
10929 awatch_command (const char *arg, int from_tty)
10930 {
10931 watch_maybe_just_location (arg, hw_access, from_tty);
10932 }
10933 \f
10934
10935 /* Data for the FSM that manages the until(location)/advance commands
10936 in infcmd.c. Here because it uses the mechanisms of
10937 breakpoints. */
10938
10939 struct until_break_fsm : public thread_fsm
10940 {
10941 /* The thread that was current when the command was executed. */
10942 int thread;
10943
10944 /* The breakpoint set at the destination location. */
10945 breakpoint_up location_breakpoint;
10946
10947 /* Breakpoint set at the return address in the caller frame. May be
10948 NULL. */
10949 breakpoint_up caller_breakpoint;
10950
10951 until_break_fsm (struct interp *cmd_interp, int thread,
10952 breakpoint_up &&location_breakpoint,
10953 breakpoint_up &&caller_breakpoint)
10954 : thread_fsm (cmd_interp),
10955 thread (thread),
10956 location_breakpoint (std::move (location_breakpoint)),
10957 caller_breakpoint (std::move (caller_breakpoint))
10958 {
10959 }
10960
10961 void clean_up (struct thread_info *thread) override;
10962 bool should_stop (struct thread_info *thread) override;
10963 enum async_reply_reason do_async_reply_reason () override;
10964 };
10965
10966 /* Implementation of the 'should_stop' FSM method for the
10967 until(location)/advance commands. */
10968
10969 bool
10970 until_break_fsm::should_stop (struct thread_info *tp)
10971 {
10972 if (bpstat_find_breakpoint (tp->control.stop_bpstat,
10973 location_breakpoint.get ()) != NULL
10974 || (caller_breakpoint != NULL
10975 && bpstat_find_breakpoint (tp->control.stop_bpstat,
10976 caller_breakpoint.get ()) != NULL))
10977 set_finished ();
10978
10979 return true;
10980 }
10981
10982 /* Implementation of the 'clean_up' FSM method for the
10983 until(location)/advance commands. */
10984
10985 void
10986 until_break_fsm::clean_up (struct thread_info *)
10987 {
10988 /* Clean up our temporary breakpoints. */
10989 location_breakpoint.reset ();
10990 caller_breakpoint.reset ();
10991 delete_longjmp_breakpoint (thread);
10992 }
10993
10994 /* Implementation of the 'async_reply_reason' FSM method for the
10995 until(location)/advance commands. */
10996
10997 enum async_reply_reason
10998 until_break_fsm::do_async_reply_reason ()
10999 {
11000 return EXEC_ASYNC_LOCATION_REACHED;
11001 }
11002
11003 void
11004 until_break_command (const char *arg, int from_tty, int anywhere)
11005 {
11006 struct frame_info *frame;
11007 struct gdbarch *frame_gdbarch;
11008 struct frame_id stack_frame_id;
11009 struct frame_id caller_frame_id;
11010 int thread;
11011 struct thread_info *tp;
11012
11013 clear_proceed_status (0);
11014
11015 /* Set a breakpoint where the user wants it and at return from
11016 this function. */
11017
11018 event_location_up location = string_to_event_location (&arg, current_language);
11019
11020 std::vector<symtab_and_line> sals
11021 = (last_displayed_sal_is_valid ()
11022 ? decode_line_1 (location.get (), DECODE_LINE_FUNFIRSTLINE, NULL,
11023 get_last_displayed_symtab (),
11024 get_last_displayed_line ())
11025 : decode_line_1 (location.get (), DECODE_LINE_FUNFIRSTLINE,
11026 NULL, (struct symtab *) NULL, 0));
11027
11028 if (sals.size () != 1)
11029 error (_("Couldn't get information on specified line."));
11030
11031 symtab_and_line &sal = sals[0];
11032
11033 if (*arg)
11034 error (_("Junk at end of arguments."));
11035
11036 resolve_sal_pc (&sal);
11037
11038 tp = inferior_thread ();
11039 thread = tp->global_num;
11040
11041 /* Note linespec handling above invalidates the frame chain.
11042 Installing a breakpoint also invalidates the frame chain (as it
11043 may need to switch threads), so do any frame handling before
11044 that. */
11045
11046 frame = get_selected_frame (NULL);
11047 frame_gdbarch = get_frame_arch (frame);
11048 stack_frame_id = get_stack_frame_id (frame);
11049 caller_frame_id = frame_unwind_caller_id (frame);
11050
11051 /* Keep within the current frame, or in frames called by the current
11052 one. */
11053
11054 breakpoint_up caller_breakpoint;
11055
11056 gdb::optional<delete_longjmp_breakpoint_cleanup> lj_deleter;
11057
11058 if (frame_id_p (caller_frame_id))
11059 {
11060 struct symtab_and_line sal2;
11061 struct gdbarch *caller_gdbarch;
11062
11063 sal2 = find_pc_line (frame_unwind_caller_pc (frame), 0);
11064 sal2.pc = frame_unwind_caller_pc (frame);
11065 caller_gdbarch = frame_unwind_caller_arch (frame);
11066 caller_breakpoint = set_momentary_breakpoint (caller_gdbarch,
11067 sal2,
11068 caller_frame_id,
11069 bp_until);
11070
11071 set_longjmp_breakpoint (tp, caller_frame_id);
11072 lj_deleter.emplace (thread);
11073 }
11074
11075 /* set_momentary_breakpoint could invalidate FRAME. */
11076 frame = NULL;
11077
11078 breakpoint_up location_breakpoint;
11079 if (anywhere)
11080 /* If the user told us to continue until a specified location,
11081 we don't specify a frame at which we need to stop. */
11082 location_breakpoint = set_momentary_breakpoint (frame_gdbarch, sal,
11083 null_frame_id, bp_until);
11084 else
11085 /* Otherwise, specify the selected frame, because we want to stop
11086 only at the very same frame. */
11087 location_breakpoint = set_momentary_breakpoint (frame_gdbarch, sal,
11088 stack_frame_id, bp_until);
11089
11090 tp->thread_fsm = new until_break_fsm (command_interp (), tp->global_num,
11091 std::move (location_breakpoint),
11092 std::move (caller_breakpoint));
11093
11094 if (lj_deleter)
11095 lj_deleter->release ();
11096
11097 proceed (-1, GDB_SIGNAL_DEFAULT);
11098 }
11099
11100 /* This function attempts to parse an optional "if <cond>" clause
11101 from the arg string. If one is not found, it returns NULL.
11102
11103 Else, it returns a pointer to the condition string. (It does not
11104 attempt to evaluate the string against a particular block.) And,
11105 it updates arg to point to the first character following the parsed
11106 if clause in the arg string. */
11107
11108 const char *
11109 ep_parse_optional_if_clause (const char **arg)
11110 {
11111 const char *cond_string;
11112
11113 if (((*arg)[0] != 'i') || ((*arg)[1] != 'f') || !isspace ((*arg)[2]))
11114 return NULL;
11115
11116 /* Skip the "if" keyword. */
11117 (*arg) += 2;
11118
11119 /* Skip any extra leading whitespace, and record the start of the
11120 condition string. */
11121 *arg = skip_spaces (*arg);
11122 cond_string = *arg;
11123
11124 /* Assume that the condition occupies the remainder of the arg
11125 string. */
11126 (*arg) += strlen (cond_string);
11127
11128 return cond_string;
11129 }
11130
11131 /* Commands to deal with catching events, such as signals, exceptions,
11132 process start/exit, etc. */
11133
11134 typedef enum
11135 {
11136 catch_fork_temporary, catch_vfork_temporary,
11137 catch_fork_permanent, catch_vfork_permanent
11138 }
11139 catch_fork_kind;
11140
11141 static void
11142 catch_fork_command_1 (const char *arg, int from_tty,
11143 struct cmd_list_element *command)
11144 {
11145 struct gdbarch *gdbarch = get_current_arch ();
11146 const char *cond_string = NULL;
11147 catch_fork_kind fork_kind;
11148 int tempflag;
11149
11150 fork_kind = (catch_fork_kind) (uintptr_t) get_cmd_context (command);
11151 tempflag = (fork_kind == catch_fork_temporary
11152 || fork_kind == catch_vfork_temporary);
11153
11154 if (!arg)
11155 arg = "";
11156 arg = skip_spaces (arg);
11157
11158 /* The allowed syntax is:
11159 catch [v]fork
11160 catch [v]fork if <cond>
11161
11162 First, check if there's an if clause. */
11163 cond_string = ep_parse_optional_if_clause (&arg);
11164
11165 if ((*arg != '\0') && !isspace (*arg))
11166 error (_("Junk at end of arguments."));
11167
11168 /* If this target supports it, create a fork or vfork catchpoint
11169 and enable reporting of such events. */
11170 switch (fork_kind)
11171 {
11172 case catch_fork_temporary:
11173 case catch_fork_permanent:
11174 create_fork_vfork_event_catchpoint (gdbarch, tempflag, cond_string,
11175 &catch_fork_breakpoint_ops);
11176 break;
11177 case catch_vfork_temporary:
11178 case catch_vfork_permanent:
11179 create_fork_vfork_event_catchpoint (gdbarch, tempflag, cond_string,
11180 &catch_vfork_breakpoint_ops);
11181 break;
11182 default:
11183 error (_("unsupported or unknown fork kind; cannot catch it"));
11184 break;
11185 }
11186 }
11187
11188 static void
11189 catch_exec_command_1 (const char *arg, int from_tty,
11190 struct cmd_list_element *command)
11191 {
11192 struct gdbarch *gdbarch = get_current_arch ();
11193 int tempflag;
11194 const char *cond_string = NULL;
11195
11196 tempflag = get_cmd_context (command) == CATCH_TEMPORARY;
11197
11198 if (!arg)
11199 arg = "";
11200 arg = skip_spaces (arg);
11201
11202 /* The allowed syntax is:
11203 catch exec
11204 catch exec if <cond>
11205
11206 First, check if there's an if clause. */
11207 cond_string = ep_parse_optional_if_clause (&arg);
11208
11209 if ((*arg != '\0') && !isspace (*arg))
11210 error (_("Junk at end of arguments."));
11211
11212 std::unique_ptr<exec_catchpoint> c (new exec_catchpoint ());
11213 init_catchpoint (c.get (), gdbarch, tempflag, cond_string,
11214 &catch_exec_breakpoint_ops);
11215 c->exec_pathname = NULL;
11216
11217 install_breakpoint (0, std::move (c), 1);
11218 }
11219
11220 void
11221 init_ada_exception_breakpoint (struct breakpoint *b,
11222 struct gdbarch *gdbarch,
11223 struct symtab_and_line sal,
11224 const char *addr_string,
11225 const struct breakpoint_ops *ops,
11226 int tempflag,
11227 int enabled,
11228 int from_tty)
11229 {
11230 if (from_tty)
11231 {
11232 struct gdbarch *loc_gdbarch = get_sal_arch (sal);
11233 if (!loc_gdbarch)
11234 loc_gdbarch = gdbarch;
11235
11236 describe_other_breakpoints (loc_gdbarch,
11237 sal.pspace, sal.pc, sal.section, -1);
11238 /* FIXME: brobecker/2006-12-28: Actually, re-implement a special
11239 version for exception catchpoints, because two catchpoints
11240 used for different exception names will use the same address.
11241 In this case, a "breakpoint ... also set at..." warning is
11242 unproductive. Besides, the warning phrasing is also a bit
11243 inappropriate, we should use the word catchpoint, and tell
11244 the user what type of catchpoint it is. The above is good
11245 enough for now, though. */
11246 }
11247
11248 init_raw_breakpoint (b, gdbarch, sal, bp_breakpoint, ops);
11249
11250 b->enable_state = enabled ? bp_enabled : bp_disabled;
11251 b->disposition = tempflag ? disp_del : disp_donttouch;
11252 b->location = string_to_event_location (&addr_string,
11253 language_def (language_ada));
11254 b->language = language_ada;
11255 }
11256
11257 static void
11258 catch_command (const char *arg, int from_tty)
11259 {
11260 error (_("Catch requires an event name."));
11261 }
11262 \f
11263
11264 static void
11265 tcatch_command (const char *arg, int from_tty)
11266 {
11267 error (_("Catch requires an event name."));
11268 }
11269
11270 /* Compare two breakpoints and return a strcmp-like result. */
11271
11272 static int
11273 compare_breakpoints (const breakpoint *a, const breakpoint *b)
11274 {
11275 uintptr_t ua = (uintptr_t) a;
11276 uintptr_t ub = (uintptr_t) b;
11277
11278 if (a->number < b->number)
11279 return -1;
11280 else if (a->number > b->number)
11281 return 1;
11282
11283 /* Now sort by address, in case we see, e..g, two breakpoints with
11284 the number 0. */
11285 if (ua < ub)
11286 return -1;
11287 return ua > ub ? 1 : 0;
11288 }
11289
11290 /* Delete breakpoints by address or line. */
11291
11292 static void
11293 clear_command (const char *arg, int from_tty)
11294 {
11295 struct breakpoint *b;
11296 int default_match;
11297
11298 std::vector<symtab_and_line> decoded_sals;
11299 symtab_and_line last_sal;
11300 gdb::array_view<symtab_and_line> sals;
11301 if (arg)
11302 {
11303 decoded_sals
11304 = decode_line_with_current_source (arg,
11305 (DECODE_LINE_FUNFIRSTLINE
11306 | DECODE_LINE_LIST_MODE));
11307 default_match = 0;
11308 sals = decoded_sals;
11309 }
11310 else
11311 {
11312 /* Set sal's line, symtab, pc, and pspace to the values
11313 corresponding to the last call to print_frame_info. If the
11314 codepoint is not valid, this will set all the fields to 0. */
11315 last_sal = get_last_displayed_sal ();
11316 if (last_sal.symtab == 0)
11317 error (_("No source file specified."));
11318
11319 default_match = 1;
11320 sals = last_sal;
11321 }
11322
11323 /* We don't call resolve_sal_pc here. That's not as bad as it
11324 seems, because all existing breakpoints typically have both
11325 file/line and pc set. So, if clear is given file/line, we can
11326 match this to existing breakpoint without obtaining pc at all.
11327
11328 We only support clearing given the address explicitly
11329 present in breakpoint table. Say, we've set breakpoint
11330 at file:line. There were several PC values for that file:line,
11331 due to optimization, all in one block.
11332
11333 We've picked one PC value. If "clear" is issued with another
11334 PC corresponding to the same file:line, the breakpoint won't
11335 be cleared. We probably can still clear the breakpoint, but
11336 since the other PC value is never presented to user, user
11337 can only find it by guessing, and it does not seem important
11338 to support that. */
11339
11340 /* For each line spec given, delete bps which correspond to it. Do
11341 it in two passes, solely to preserve the current behavior that
11342 from_tty is forced true if we delete more than one
11343 breakpoint. */
11344
11345 std::vector<struct breakpoint *> found;
11346 for (const auto &sal : sals)
11347 {
11348 const char *sal_fullname;
11349
11350 /* If exact pc given, clear bpts at that pc.
11351 If line given (pc == 0), clear all bpts on specified line.
11352 If defaulting, clear all bpts on default line
11353 or at default pc.
11354
11355 defaulting sal.pc != 0 tests to do
11356
11357 0 1 pc
11358 1 1 pc _and_ line
11359 0 0 line
11360 1 0 <can't happen> */
11361
11362 sal_fullname = (sal.symtab == NULL
11363 ? NULL : symtab_to_fullname (sal.symtab));
11364
11365 /* Find all matching breakpoints and add them to 'found'. */
11366 ALL_BREAKPOINTS (b)
11367 {
11368 int match = 0;
11369 /* Are we going to delete b? */
11370 if (b->type != bp_none && !is_watchpoint (b))
11371 {
11372 struct bp_location *loc = b->loc;
11373 for (; loc; loc = loc->next)
11374 {
11375 /* If the user specified file:line, don't allow a PC
11376 match. This matches historical gdb behavior. */
11377 int pc_match = (!sal.explicit_line
11378 && sal.pc
11379 && (loc->pspace == sal.pspace)
11380 && (loc->address == sal.pc)
11381 && (!section_is_overlay (loc->section)
11382 || loc->section == sal.section));
11383 int line_match = 0;
11384
11385 if ((default_match || sal.explicit_line)
11386 && loc->symtab != NULL
11387 && sal_fullname != NULL
11388 && sal.pspace == loc->pspace
11389 && loc->line_number == sal.line
11390 && filename_cmp (symtab_to_fullname (loc->symtab),
11391 sal_fullname) == 0)
11392 line_match = 1;
11393
11394 if (pc_match || line_match)
11395 {
11396 match = 1;
11397 break;
11398 }
11399 }
11400 }
11401
11402 if (match)
11403 found.push_back (b);
11404 }
11405 }
11406
11407 /* Now go thru the 'found' chain and delete them. */
11408 if (found.empty ())
11409 {
11410 if (arg)
11411 error (_("No breakpoint at %s."), arg);
11412 else
11413 error (_("No breakpoint at this line."));
11414 }
11415
11416 /* Remove duplicates from the vec. */
11417 std::sort (found.begin (), found.end (),
11418 [] (const breakpoint *bp_a, const breakpoint *bp_b)
11419 {
11420 return compare_breakpoints (bp_a, bp_b) < 0;
11421 });
11422 found.erase (std::unique (found.begin (), found.end (),
11423 [] (const breakpoint *bp_a, const breakpoint *bp_b)
11424 {
11425 return compare_breakpoints (bp_a, bp_b) == 0;
11426 }),
11427 found.end ());
11428
11429 if (found.size () > 1)
11430 from_tty = 1; /* Always report if deleted more than one. */
11431 if (from_tty)
11432 {
11433 if (found.size () == 1)
11434 printf_unfiltered (_("Deleted breakpoint "));
11435 else
11436 printf_unfiltered (_("Deleted breakpoints "));
11437 }
11438
11439 for (breakpoint *iter : found)
11440 {
11441 if (from_tty)
11442 printf_unfiltered ("%d ", iter->number);
11443 delete_breakpoint (iter);
11444 }
11445 if (from_tty)
11446 putchar_unfiltered ('\n');
11447 }
11448 \f
11449 /* Delete breakpoint in BS if they are `delete' breakpoints and
11450 all breakpoints that are marked for deletion, whether hit or not.
11451 This is called after any breakpoint is hit, or after errors. */
11452
11453 void
11454 breakpoint_auto_delete (bpstat bs)
11455 {
11456 struct breakpoint *b, *b_tmp;
11457
11458 for (; bs; bs = bs->next)
11459 if (bs->breakpoint_at
11460 && bs->breakpoint_at->disposition == disp_del
11461 && bs->stop)
11462 delete_breakpoint (bs->breakpoint_at);
11463
11464 ALL_BREAKPOINTS_SAFE (b, b_tmp)
11465 {
11466 if (b->disposition == disp_del_at_next_stop)
11467 delete_breakpoint (b);
11468 }
11469 }
11470
11471 /* A comparison function for bp_location AP and BP being interfaced to
11472 qsort. Sort elements primarily by their ADDRESS (no matter what
11473 does breakpoint_address_is_meaningful say for its OWNER),
11474 secondarily by ordering first permanent elements and
11475 terciarily just ensuring the array is sorted stable way despite
11476 qsort being an unstable algorithm. */
11477
11478 static int
11479 bp_locations_compare (const void *ap, const void *bp)
11480 {
11481 const struct bp_location *a = *(const struct bp_location **) ap;
11482 const struct bp_location *b = *(const struct bp_location **) bp;
11483
11484 if (a->address != b->address)
11485 return (a->address > b->address) - (a->address < b->address);
11486
11487 /* Sort locations at the same address by their pspace number, keeping
11488 locations of the same inferior (in a multi-inferior environment)
11489 grouped. */
11490
11491 if (a->pspace->num != b->pspace->num)
11492 return ((a->pspace->num > b->pspace->num)
11493 - (a->pspace->num < b->pspace->num));
11494
11495 /* Sort permanent breakpoints first. */
11496 if (a->permanent != b->permanent)
11497 return (a->permanent < b->permanent) - (a->permanent > b->permanent);
11498
11499 /* Make the internal GDB representation stable across GDB runs
11500 where A and B memory inside GDB can differ. Breakpoint locations of
11501 the same type at the same address can be sorted in arbitrary order. */
11502
11503 if (a->owner->number != b->owner->number)
11504 return ((a->owner->number > b->owner->number)
11505 - (a->owner->number < b->owner->number));
11506
11507 return (a > b) - (a < b);
11508 }
11509
11510 /* Set bp_locations_placed_address_before_address_max and
11511 bp_locations_shadow_len_after_address_max according to the current
11512 content of the bp_locations array. */
11513
11514 static void
11515 bp_locations_target_extensions_update (void)
11516 {
11517 struct bp_location *bl, **blp_tmp;
11518
11519 bp_locations_placed_address_before_address_max = 0;
11520 bp_locations_shadow_len_after_address_max = 0;
11521
11522 ALL_BP_LOCATIONS (bl, blp_tmp)
11523 {
11524 CORE_ADDR start, end, addr;
11525
11526 if (!bp_location_has_shadow (bl))
11527 continue;
11528
11529 start = bl->target_info.placed_address;
11530 end = start + bl->target_info.shadow_len;
11531
11532 gdb_assert (bl->address >= start);
11533 addr = bl->address - start;
11534 if (addr > bp_locations_placed_address_before_address_max)
11535 bp_locations_placed_address_before_address_max = addr;
11536
11537 /* Zero SHADOW_LEN would not pass bp_location_has_shadow. */
11538
11539 gdb_assert (bl->address < end);
11540 addr = end - bl->address;
11541 if (addr > bp_locations_shadow_len_after_address_max)
11542 bp_locations_shadow_len_after_address_max = addr;
11543 }
11544 }
11545
11546 /* Download tracepoint locations if they haven't been. */
11547
11548 static void
11549 download_tracepoint_locations (void)
11550 {
11551 struct breakpoint *b;
11552 enum tribool can_download_tracepoint = TRIBOOL_UNKNOWN;
11553
11554 scoped_restore_current_pspace_and_thread restore_pspace_thread;
11555
11556 ALL_TRACEPOINTS (b)
11557 {
11558 struct bp_location *bl;
11559 struct tracepoint *t;
11560 int bp_location_downloaded = 0;
11561
11562 if ((b->type == bp_fast_tracepoint
11563 ? !may_insert_fast_tracepoints
11564 : !may_insert_tracepoints))
11565 continue;
11566
11567 if (can_download_tracepoint == TRIBOOL_UNKNOWN)
11568 {
11569 if (target_can_download_tracepoint ())
11570 can_download_tracepoint = TRIBOOL_TRUE;
11571 else
11572 can_download_tracepoint = TRIBOOL_FALSE;
11573 }
11574
11575 if (can_download_tracepoint == TRIBOOL_FALSE)
11576 break;
11577
11578 for (bl = b->loc; bl; bl = bl->next)
11579 {
11580 /* In tracepoint, locations are _never_ duplicated, so
11581 should_be_inserted is equivalent to
11582 unduplicated_should_be_inserted. */
11583 if (!should_be_inserted (bl) || bl->inserted)
11584 continue;
11585
11586 switch_to_program_space_and_thread (bl->pspace);
11587
11588 target_download_tracepoint (bl);
11589
11590 bl->inserted = 1;
11591 bp_location_downloaded = 1;
11592 }
11593 t = (struct tracepoint *) b;
11594 t->number_on_target = b->number;
11595 if (bp_location_downloaded)
11596 gdb::observers::breakpoint_modified.notify (b);
11597 }
11598 }
11599
11600 /* Swap the insertion/duplication state between two locations. */
11601
11602 static void
11603 swap_insertion (struct bp_location *left, struct bp_location *right)
11604 {
11605 const int left_inserted = left->inserted;
11606 const int left_duplicate = left->duplicate;
11607 const int left_needs_update = left->needs_update;
11608 const struct bp_target_info left_target_info = left->target_info;
11609
11610 /* Locations of tracepoints can never be duplicated. */
11611 if (is_tracepoint (left->owner))
11612 gdb_assert (!left->duplicate);
11613 if (is_tracepoint (right->owner))
11614 gdb_assert (!right->duplicate);
11615
11616 left->inserted = right->inserted;
11617 left->duplicate = right->duplicate;
11618 left->needs_update = right->needs_update;
11619 left->target_info = right->target_info;
11620 right->inserted = left_inserted;
11621 right->duplicate = left_duplicate;
11622 right->needs_update = left_needs_update;
11623 right->target_info = left_target_info;
11624 }
11625
11626 /* Force the re-insertion of the locations at ADDRESS. This is called
11627 once a new/deleted/modified duplicate location is found and we are evaluating
11628 conditions on the target's side. Such conditions need to be updated on
11629 the target. */
11630
11631 static void
11632 force_breakpoint_reinsertion (struct bp_location *bl)
11633 {
11634 struct bp_location **locp = NULL, **loc2p;
11635 struct bp_location *loc;
11636 CORE_ADDR address = 0;
11637 int pspace_num;
11638
11639 address = bl->address;
11640 pspace_num = bl->pspace->num;
11641
11642 /* This is only meaningful if the target is
11643 evaluating conditions and if the user has
11644 opted for condition evaluation on the target's
11645 side. */
11646 if (gdb_evaluates_breakpoint_condition_p ()
11647 || !target_supports_evaluation_of_breakpoint_conditions ())
11648 return;
11649
11650 /* Flag all breakpoint locations with this address and
11651 the same program space as the location
11652 as "its condition has changed". We need to
11653 update the conditions on the target's side. */
11654 ALL_BP_LOCATIONS_AT_ADDR (loc2p, locp, address)
11655 {
11656 loc = *loc2p;
11657
11658 if (!is_breakpoint (loc->owner)
11659 || pspace_num != loc->pspace->num)
11660 continue;
11661
11662 /* Flag the location appropriately. We use a different state to
11663 let everyone know that we already updated the set of locations
11664 with addr bl->address and program space bl->pspace. This is so
11665 we don't have to keep calling these functions just to mark locations
11666 that have already been marked. */
11667 loc->condition_changed = condition_updated;
11668
11669 /* Free the agent expression bytecode as well. We will compute
11670 it later on. */
11671 loc->cond_bytecode.reset ();
11672 }
11673 }
11674 /* Called whether new breakpoints are created, or existing breakpoints
11675 deleted, to update the global location list and recompute which
11676 locations are duplicate of which.
11677
11678 The INSERT_MODE flag determines whether locations may not, may, or
11679 shall be inserted now. See 'enum ugll_insert_mode' for more
11680 info. */
11681
11682 static void
11683 update_global_location_list (enum ugll_insert_mode insert_mode)
11684 {
11685 struct breakpoint *b;
11686 struct bp_location **locp, *loc;
11687 /* Last breakpoint location address that was marked for update. */
11688 CORE_ADDR last_addr = 0;
11689 /* Last breakpoint location program space that was marked for update. */
11690 int last_pspace_num = -1;
11691
11692 /* Used in the duplicates detection below. When iterating over all
11693 bp_locations, points to the first bp_location of a given address.
11694 Breakpoints and watchpoints of different types are never
11695 duplicates of each other. Keep one pointer for each type of
11696 breakpoint/watchpoint, so we only need to loop over all locations
11697 once. */
11698 struct bp_location *bp_loc_first; /* breakpoint */
11699 struct bp_location *wp_loc_first; /* hardware watchpoint */
11700 struct bp_location *awp_loc_first; /* access watchpoint */
11701 struct bp_location *rwp_loc_first; /* read watchpoint */
11702
11703 /* Saved former bp_locations array which we compare against the newly
11704 built bp_locations from the current state of ALL_BREAKPOINTS. */
11705 struct bp_location **old_locp;
11706 unsigned old_locations_count;
11707 gdb::unique_xmalloc_ptr<struct bp_location *> old_locations (bp_locations);
11708
11709 old_locations_count = bp_locations_count;
11710 bp_locations = NULL;
11711 bp_locations_count = 0;
11712
11713 ALL_BREAKPOINTS (b)
11714 for (loc = b->loc; loc; loc = loc->next)
11715 bp_locations_count++;
11716
11717 bp_locations = XNEWVEC (struct bp_location *, bp_locations_count);
11718 locp = bp_locations;
11719 ALL_BREAKPOINTS (b)
11720 for (loc = b->loc; loc; loc = loc->next)
11721 *locp++ = loc;
11722 qsort (bp_locations, bp_locations_count, sizeof (*bp_locations),
11723 bp_locations_compare);
11724
11725 bp_locations_target_extensions_update ();
11726
11727 /* Identify bp_location instances that are no longer present in the
11728 new list, and therefore should be freed. Note that it's not
11729 necessary that those locations should be removed from inferior --
11730 if there's another location at the same address (previously
11731 marked as duplicate), we don't need to remove/insert the
11732 location.
11733
11734 LOCP is kept in sync with OLD_LOCP, each pointing to the current
11735 and former bp_location array state respectively. */
11736
11737 locp = bp_locations;
11738 for (old_locp = old_locations.get ();
11739 old_locp < old_locations.get () + old_locations_count;
11740 old_locp++)
11741 {
11742 struct bp_location *old_loc = *old_locp;
11743 struct bp_location **loc2p;
11744
11745 /* Tells if 'old_loc' is found among the new locations. If
11746 not, we have to free it. */
11747 int found_object = 0;
11748 /* Tells if the location should remain inserted in the target. */
11749 int keep_in_target = 0;
11750 int removed = 0;
11751
11752 /* Skip LOCP entries which will definitely never be needed.
11753 Stop either at or being the one matching OLD_LOC. */
11754 while (locp < bp_locations + bp_locations_count
11755 && (*locp)->address < old_loc->address)
11756 locp++;
11757
11758 for (loc2p = locp;
11759 (loc2p < bp_locations + bp_locations_count
11760 && (*loc2p)->address == old_loc->address);
11761 loc2p++)
11762 {
11763 /* Check if this is a new/duplicated location or a duplicated
11764 location that had its condition modified. If so, we want to send
11765 its condition to the target if evaluation of conditions is taking
11766 place there. */
11767 if ((*loc2p)->condition_changed == condition_modified
11768 && (last_addr != old_loc->address
11769 || last_pspace_num != old_loc->pspace->num))
11770 {
11771 force_breakpoint_reinsertion (*loc2p);
11772 last_pspace_num = old_loc->pspace->num;
11773 }
11774
11775 if (*loc2p == old_loc)
11776 found_object = 1;
11777 }
11778
11779 /* We have already handled this address, update it so that we don't
11780 have to go through updates again. */
11781 last_addr = old_loc->address;
11782
11783 /* Target-side condition evaluation: Handle deleted locations. */
11784 if (!found_object)
11785 force_breakpoint_reinsertion (old_loc);
11786
11787 /* If this location is no longer present, and inserted, look if
11788 there's maybe a new location at the same address. If so,
11789 mark that one inserted, and don't remove this one. This is
11790 needed so that we don't have a time window where a breakpoint
11791 at certain location is not inserted. */
11792
11793 if (old_loc->inserted)
11794 {
11795 /* If the location is inserted now, we might have to remove
11796 it. */
11797
11798 if (found_object && should_be_inserted (old_loc))
11799 {
11800 /* The location is still present in the location list,
11801 and still should be inserted. Don't do anything. */
11802 keep_in_target = 1;
11803 }
11804 else
11805 {
11806 /* This location still exists, but it won't be kept in the
11807 target since it may have been disabled. We proceed to
11808 remove its target-side condition. */
11809
11810 /* The location is either no longer present, or got
11811 disabled. See if there's another location at the
11812 same address, in which case we don't need to remove
11813 this one from the target. */
11814
11815 /* OLD_LOC comes from existing struct breakpoint. */
11816 if (breakpoint_address_is_meaningful (old_loc->owner))
11817 {
11818 for (loc2p = locp;
11819 (loc2p < bp_locations + bp_locations_count
11820 && (*loc2p)->address == old_loc->address);
11821 loc2p++)
11822 {
11823 struct bp_location *loc2 = *loc2p;
11824
11825 if (breakpoint_locations_match (loc2, old_loc))
11826 {
11827 /* Read watchpoint locations are switched to
11828 access watchpoints, if the former are not
11829 supported, but the latter are. */
11830 if (is_hardware_watchpoint (old_loc->owner))
11831 {
11832 gdb_assert (is_hardware_watchpoint (loc2->owner));
11833 loc2->watchpoint_type = old_loc->watchpoint_type;
11834 }
11835
11836 /* loc2 is a duplicated location. We need to check
11837 if it should be inserted in case it will be
11838 unduplicated. */
11839 if (loc2 != old_loc
11840 && unduplicated_should_be_inserted (loc2))
11841 {
11842 swap_insertion (old_loc, loc2);
11843 keep_in_target = 1;
11844 break;
11845 }
11846 }
11847 }
11848 }
11849 }
11850
11851 if (!keep_in_target)
11852 {
11853 if (remove_breakpoint (old_loc))
11854 {
11855 /* This is just about all we can do. We could keep
11856 this location on the global list, and try to
11857 remove it next time, but there's no particular
11858 reason why we will succeed next time.
11859
11860 Note that at this point, old_loc->owner is still
11861 valid, as delete_breakpoint frees the breakpoint
11862 only after calling us. */
11863 printf_filtered (_("warning: Error removing "
11864 "breakpoint %d\n"),
11865 old_loc->owner->number);
11866 }
11867 removed = 1;
11868 }
11869 }
11870
11871 if (!found_object)
11872 {
11873 if (removed && target_is_non_stop_p ()
11874 && need_moribund_for_location_type (old_loc))
11875 {
11876 /* This location was removed from the target. In
11877 non-stop mode, a race condition is possible where
11878 we've removed a breakpoint, but stop events for that
11879 breakpoint are already queued and will arrive later.
11880 We apply an heuristic to be able to distinguish such
11881 SIGTRAPs from other random SIGTRAPs: we keep this
11882 breakpoint location for a bit, and will retire it
11883 after we see some number of events. The theory here
11884 is that reporting of events should, "on the average",
11885 be fair, so after a while we'll see events from all
11886 threads that have anything of interest, and no longer
11887 need to keep this breakpoint location around. We
11888 don't hold locations forever so to reduce chances of
11889 mistaking a non-breakpoint SIGTRAP for a breakpoint
11890 SIGTRAP.
11891
11892 The heuristic failing can be disastrous on
11893 decr_pc_after_break targets.
11894
11895 On decr_pc_after_break targets, like e.g., x86-linux,
11896 if we fail to recognize a late breakpoint SIGTRAP,
11897 because events_till_retirement has reached 0 too
11898 soon, we'll fail to do the PC adjustment, and report
11899 a random SIGTRAP to the user. When the user resumes
11900 the inferior, it will most likely immediately crash
11901 with SIGILL/SIGBUS/SIGSEGV, or worse, get silently
11902 corrupted, because of being resumed e.g., in the
11903 middle of a multi-byte instruction, or skipped a
11904 one-byte instruction. This was actually seen happen
11905 on native x86-linux, and should be less rare on
11906 targets that do not support new thread events, like
11907 remote, due to the heuristic depending on
11908 thread_count.
11909
11910 Mistaking a random SIGTRAP for a breakpoint trap
11911 causes similar symptoms (PC adjustment applied when
11912 it shouldn't), but then again, playing with SIGTRAPs
11913 behind the debugger's back is asking for trouble.
11914
11915 Since hardware watchpoint traps are always
11916 distinguishable from other traps, so we don't need to
11917 apply keep hardware watchpoint moribund locations
11918 around. We simply always ignore hardware watchpoint
11919 traps we can no longer explain. */
11920
11921 old_loc->events_till_retirement = 3 * (thread_count () + 1);
11922 old_loc->owner = NULL;
11923
11924 moribund_locations.push_back (old_loc);
11925 }
11926 else
11927 {
11928 old_loc->owner = NULL;
11929 decref_bp_location (&old_loc);
11930 }
11931 }
11932 }
11933
11934 /* Rescan breakpoints at the same address and section, marking the
11935 first one as "first" and any others as "duplicates". This is so
11936 that the bpt instruction is only inserted once. If we have a
11937 permanent breakpoint at the same place as BPT, make that one the
11938 official one, and the rest as duplicates. Permanent breakpoints
11939 are sorted first for the same address.
11940
11941 Do the same for hardware watchpoints, but also considering the
11942 watchpoint's type (regular/access/read) and length. */
11943
11944 bp_loc_first = NULL;
11945 wp_loc_first = NULL;
11946 awp_loc_first = NULL;
11947 rwp_loc_first = NULL;
11948 ALL_BP_LOCATIONS (loc, locp)
11949 {
11950 /* ALL_BP_LOCATIONS bp_location has LOC->OWNER always
11951 non-NULL. */
11952 struct bp_location **loc_first_p;
11953 b = loc->owner;
11954
11955 if (!unduplicated_should_be_inserted (loc)
11956 || !breakpoint_address_is_meaningful (b)
11957 /* Don't detect duplicate for tracepoint locations because they are
11958 never duplicated. See the comments in field `duplicate' of
11959 `struct bp_location'. */
11960 || is_tracepoint (b))
11961 {
11962 /* Clear the condition modification flag. */
11963 loc->condition_changed = condition_unchanged;
11964 continue;
11965 }
11966
11967 if (b->type == bp_hardware_watchpoint)
11968 loc_first_p = &wp_loc_first;
11969 else if (b->type == bp_read_watchpoint)
11970 loc_first_p = &rwp_loc_first;
11971 else if (b->type == bp_access_watchpoint)
11972 loc_first_p = &awp_loc_first;
11973 else
11974 loc_first_p = &bp_loc_first;
11975
11976 if (*loc_first_p == NULL
11977 || (overlay_debugging && loc->section != (*loc_first_p)->section)
11978 || !breakpoint_locations_match (loc, *loc_first_p))
11979 {
11980 *loc_first_p = loc;
11981 loc->duplicate = 0;
11982
11983 if (is_breakpoint (loc->owner) && loc->condition_changed)
11984 {
11985 loc->needs_update = 1;
11986 /* Clear the condition modification flag. */
11987 loc->condition_changed = condition_unchanged;
11988 }
11989 continue;
11990 }
11991
11992
11993 /* This and the above ensure the invariant that the first location
11994 is not duplicated, and is the inserted one.
11995 All following are marked as duplicated, and are not inserted. */
11996 if (loc->inserted)
11997 swap_insertion (loc, *loc_first_p);
11998 loc->duplicate = 1;
11999
12000 /* Clear the condition modification flag. */
12001 loc->condition_changed = condition_unchanged;
12002 }
12003
12004 if (insert_mode == UGLL_INSERT || breakpoints_should_be_inserted_now ())
12005 {
12006 if (insert_mode != UGLL_DONT_INSERT)
12007 insert_breakpoint_locations ();
12008 else
12009 {
12010 /* Even though the caller told us to not insert new
12011 locations, we may still need to update conditions on the
12012 target's side of breakpoints that were already inserted
12013 if the target is evaluating breakpoint conditions. We
12014 only update conditions for locations that are marked
12015 "needs_update". */
12016 update_inserted_breakpoint_locations ();
12017 }
12018 }
12019
12020 if (insert_mode != UGLL_DONT_INSERT)
12021 download_tracepoint_locations ();
12022 }
12023
12024 void
12025 breakpoint_retire_moribund (void)
12026 {
12027 for (int ix = 0; ix < moribund_locations.size (); ++ix)
12028 {
12029 struct bp_location *loc = moribund_locations[ix];
12030 if (--(loc->events_till_retirement) == 0)
12031 {
12032 decref_bp_location (&loc);
12033 unordered_remove (moribund_locations, ix);
12034 --ix;
12035 }
12036 }
12037 }
12038
12039 static void
12040 update_global_location_list_nothrow (enum ugll_insert_mode insert_mode)
12041 {
12042
12043 try
12044 {
12045 update_global_location_list (insert_mode);
12046 }
12047 catch (const gdb_exception_error &e)
12048 {
12049 }
12050 }
12051
12052 /* Clear BKP from a BPS. */
12053
12054 static void
12055 bpstat_remove_bp_location (bpstat bps, struct breakpoint *bpt)
12056 {
12057 bpstat bs;
12058
12059 for (bs = bps; bs; bs = bs->next)
12060 if (bs->breakpoint_at == bpt)
12061 {
12062 bs->breakpoint_at = NULL;
12063 bs->old_val = NULL;
12064 /* bs->commands will be freed later. */
12065 }
12066 }
12067
12068 /* Callback for iterate_over_threads. */
12069 static int
12070 bpstat_remove_breakpoint_callback (struct thread_info *th, void *data)
12071 {
12072 struct breakpoint *bpt = (struct breakpoint *) data;
12073
12074 bpstat_remove_bp_location (th->control.stop_bpstat, bpt);
12075 return 0;
12076 }
12077
12078 /* Helper for breakpoint and tracepoint breakpoint_ops->mention
12079 callbacks. */
12080
12081 static void
12082 say_where (struct breakpoint *b)
12083 {
12084 struct value_print_options opts;
12085
12086 get_user_print_options (&opts);
12087
12088 /* i18n: cagney/2005-02-11: Below needs to be merged into a
12089 single string. */
12090 if (b->loc == NULL)
12091 {
12092 /* For pending locations, the output differs slightly based
12093 on b->extra_string. If this is non-NULL, it contains either
12094 a condition or dprintf arguments. */
12095 if (b->extra_string == NULL)
12096 {
12097 printf_filtered (_(" (%s) pending."),
12098 event_location_to_string (b->location.get ()));
12099 }
12100 else if (b->type == bp_dprintf)
12101 {
12102 printf_filtered (_(" (%s,%s) pending."),
12103 event_location_to_string (b->location.get ()),
12104 b->extra_string);
12105 }
12106 else
12107 {
12108 printf_filtered (_(" (%s %s) pending."),
12109 event_location_to_string (b->location.get ()),
12110 b->extra_string);
12111 }
12112 }
12113 else
12114 {
12115 if (opts.addressprint || b->loc->symtab == NULL)
12116 {
12117 printf_filtered (" at ");
12118 fputs_styled (paddress (b->loc->gdbarch, b->loc->address),
12119 address_style.style (),
12120 gdb_stdout);
12121 }
12122 if (b->loc->symtab != NULL)
12123 {
12124 /* If there is a single location, we can print the location
12125 more nicely. */
12126 if (b->loc->next == NULL)
12127 {
12128 puts_filtered (": file ");
12129 fputs_styled (symtab_to_filename_for_display (b->loc->symtab),
12130 file_name_style.style (),
12131 gdb_stdout);
12132 printf_filtered (", line %d.",
12133 b->loc->line_number);
12134 }
12135 else
12136 /* This is not ideal, but each location may have a
12137 different file name, and this at least reflects the
12138 real situation somewhat. */
12139 printf_filtered (": %s.",
12140 event_location_to_string (b->location.get ()));
12141 }
12142
12143 if (b->loc->next)
12144 {
12145 struct bp_location *loc = b->loc;
12146 int n = 0;
12147 for (; loc; loc = loc->next)
12148 ++n;
12149 printf_filtered (" (%d locations)", n);
12150 }
12151 }
12152 }
12153
12154 bp_location::~bp_location ()
12155 {
12156 xfree (function_name);
12157 }
12158
12159 /* Destructor for the breakpoint base class. */
12160
12161 breakpoint::~breakpoint ()
12162 {
12163 xfree (this->cond_string);
12164 xfree (this->extra_string);
12165 xfree (this->filter);
12166 }
12167
12168 static struct bp_location *
12169 base_breakpoint_allocate_location (struct breakpoint *self)
12170 {
12171 return new bp_location (self);
12172 }
12173
12174 static void
12175 base_breakpoint_re_set (struct breakpoint *b)
12176 {
12177 /* Nothing to re-set. */
12178 }
12179
12180 #define internal_error_pure_virtual_called() \
12181 gdb_assert_not_reached ("pure virtual function called")
12182
12183 static int
12184 base_breakpoint_insert_location (struct bp_location *bl)
12185 {
12186 internal_error_pure_virtual_called ();
12187 }
12188
12189 static int
12190 base_breakpoint_remove_location (struct bp_location *bl,
12191 enum remove_bp_reason reason)
12192 {
12193 internal_error_pure_virtual_called ();
12194 }
12195
12196 static int
12197 base_breakpoint_breakpoint_hit (const struct bp_location *bl,
12198 const address_space *aspace,
12199 CORE_ADDR bp_addr,
12200 const struct target_waitstatus *ws)
12201 {
12202 internal_error_pure_virtual_called ();
12203 }
12204
12205 static void
12206 base_breakpoint_check_status (bpstat bs)
12207 {
12208 /* Always stop. */
12209 }
12210
12211 /* A "works_in_software_mode" breakpoint_ops method that just internal
12212 errors. */
12213
12214 static int
12215 base_breakpoint_works_in_software_mode (const struct breakpoint *b)
12216 {
12217 internal_error_pure_virtual_called ();
12218 }
12219
12220 /* A "resources_needed" breakpoint_ops method that just internal
12221 errors. */
12222
12223 static int
12224 base_breakpoint_resources_needed (const struct bp_location *bl)
12225 {
12226 internal_error_pure_virtual_called ();
12227 }
12228
12229 static enum print_stop_action
12230 base_breakpoint_print_it (bpstat bs)
12231 {
12232 internal_error_pure_virtual_called ();
12233 }
12234
12235 static void
12236 base_breakpoint_print_one_detail (const struct breakpoint *self,
12237 struct ui_out *uiout)
12238 {
12239 /* nothing */
12240 }
12241
12242 static void
12243 base_breakpoint_print_mention (struct breakpoint *b)
12244 {
12245 internal_error_pure_virtual_called ();
12246 }
12247
12248 static void
12249 base_breakpoint_print_recreate (struct breakpoint *b, struct ui_file *fp)
12250 {
12251 internal_error_pure_virtual_called ();
12252 }
12253
12254 static void
12255 base_breakpoint_create_sals_from_location
12256 (const struct event_location *location,
12257 struct linespec_result *canonical,
12258 enum bptype type_wanted)
12259 {
12260 internal_error_pure_virtual_called ();
12261 }
12262
12263 static void
12264 base_breakpoint_create_breakpoints_sal (struct gdbarch *gdbarch,
12265 struct linespec_result *c,
12266 gdb::unique_xmalloc_ptr<char> cond_string,
12267 gdb::unique_xmalloc_ptr<char> extra_string,
12268 enum bptype type_wanted,
12269 enum bpdisp disposition,
12270 int thread,
12271 int task, int ignore_count,
12272 const struct breakpoint_ops *o,
12273 int from_tty, int enabled,
12274 int internal, unsigned flags)
12275 {
12276 internal_error_pure_virtual_called ();
12277 }
12278
12279 static std::vector<symtab_and_line>
12280 base_breakpoint_decode_location (struct breakpoint *b,
12281 const struct event_location *location,
12282 struct program_space *search_pspace)
12283 {
12284 internal_error_pure_virtual_called ();
12285 }
12286
12287 /* The default 'explains_signal' method. */
12288
12289 static int
12290 base_breakpoint_explains_signal (struct breakpoint *b, enum gdb_signal sig)
12291 {
12292 return 1;
12293 }
12294
12295 /* The default "after_condition_true" method. */
12296
12297 static void
12298 base_breakpoint_after_condition_true (struct bpstats *bs)
12299 {
12300 /* Nothing to do. */
12301 }
12302
12303 struct breakpoint_ops base_breakpoint_ops =
12304 {
12305 base_breakpoint_allocate_location,
12306 base_breakpoint_re_set,
12307 base_breakpoint_insert_location,
12308 base_breakpoint_remove_location,
12309 base_breakpoint_breakpoint_hit,
12310 base_breakpoint_check_status,
12311 base_breakpoint_resources_needed,
12312 base_breakpoint_works_in_software_mode,
12313 base_breakpoint_print_it,
12314 NULL,
12315 base_breakpoint_print_one_detail,
12316 base_breakpoint_print_mention,
12317 base_breakpoint_print_recreate,
12318 base_breakpoint_create_sals_from_location,
12319 base_breakpoint_create_breakpoints_sal,
12320 base_breakpoint_decode_location,
12321 base_breakpoint_explains_signal,
12322 base_breakpoint_after_condition_true,
12323 };
12324
12325 /* Default breakpoint_ops methods. */
12326
12327 static void
12328 bkpt_re_set (struct breakpoint *b)
12329 {
12330 /* FIXME: is this still reachable? */
12331 if (breakpoint_event_location_empty_p (b))
12332 {
12333 /* Anything without a location can't be re-set. */
12334 delete_breakpoint (b);
12335 return;
12336 }
12337
12338 breakpoint_re_set_default (b);
12339 }
12340
12341 static int
12342 bkpt_insert_location (struct bp_location *bl)
12343 {
12344 CORE_ADDR addr = bl->target_info.reqstd_address;
12345
12346 bl->target_info.kind = breakpoint_kind (bl, &addr);
12347 bl->target_info.placed_address = addr;
12348
12349 if (bl->loc_type == bp_loc_hardware_breakpoint)
12350 return target_insert_hw_breakpoint (bl->gdbarch, &bl->target_info);
12351 else
12352 return target_insert_breakpoint (bl->gdbarch, &bl->target_info);
12353 }
12354
12355 static int
12356 bkpt_remove_location (struct bp_location *bl, enum remove_bp_reason reason)
12357 {
12358 if (bl->loc_type == bp_loc_hardware_breakpoint)
12359 return target_remove_hw_breakpoint (bl->gdbarch, &bl->target_info);
12360 else
12361 return target_remove_breakpoint (bl->gdbarch, &bl->target_info, reason);
12362 }
12363
12364 static int
12365 bkpt_breakpoint_hit (const struct bp_location *bl,
12366 const address_space *aspace, CORE_ADDR bp_addr,
12367 const struct target_waitstatus *ws)
12368 {
12369 if (ws->kind != TARGET_WAITKIND_STOPPED
12370 || ws->value.sig != GDB_SIGNAL_TRAP)
12371 return 0;
12372
12373 if (!breakpoint_address_match (bl->pspace->aspace, bl->address,
12374 aspace, bp_addr))
12375 return 0;
12376
12377 if (overlay_debugging /* unmapped overlay section */
12378 && section_is_overlay (bl->section)
12379 && !section_is_mapped (bl->section))
12380 return 0;
12381
12382 return 1;
12383 }
12384
12385 static int
12386 dprintf_breakpoint_hit (const struct bp_location *bl,
12387 const address_space *aspace, CORE_ADDR bp_addr,
12388 const struct target_waitstatus *ws)
12389 {
12390 if (dprintf_style == dprintf_style_agent
12391 && target_can_run_breakpoint_commands ())
12392 {
12393 /* An agent-style dprintf never causes a stop. If we see a trap
12394 for this address it must be for a breakpoint that happens to
12395 be set at the same address. */
12396 return 0;
12397 }
12398
12399 return bkpt_breakpoint_hit (bl, aspace, bp_addr, ws);
12400 }
12401
12402 static int
12403 bkpt_resources_needed (const struct bp_location *bl)
12404 {
12405 gdb_assert (bl->owner->type == bp_hardware_breakpoint);
12406
12407 return 1;
12408 }
12409
12410 static enum print_stop_action
12411 bkpt_print_it (bpstat bs)
12412 {
12413 struct breakpoint *b;
12414 const struct bp_location *bl;
12415 int bp_temp;
12416 struct ui_out *uiout = current_uiout;
12417
12418 gdb_assert (bs->bp_location_at != NULL);
12419
12420 bl = bs->bp_location_at;
12421 b = bs->breakpoint_at;
12422
12423 bp_temp = b->disposition == disp_del;
12424 if (bl->address != bl->requested_address)
12425 breakpoint_adjustment_warning (bl->requested_address,
12426 bl->address,
12427 b->number, 1);
12428 annotate_breakpoint (b->number);
12429 maybe_print_thread_hit_breakpoint (uiout);
12430
12431 if (bp_temp)
12432 uiout->text ("Temporary breakpoint ");
12433 else
12434 uiout->text ("Breakpoint ");
12435 if (uiout->is_mi_like_p ())
12436 {
12437 uiout->field_string ("reason",
12438 async_reason_lookup (EXEC_ASYNC_BREAKPOINT_HIT));
12439 uiout->field_string ("disp", bpdisp_text (b->disposition));
12440 }
12441 uiout->field_int ("bkptno", b->number);
12442 uiout->text (", ");
12443
12444 return PRINT_SRC_AND_LOC;
12445 }
12446
12447 static void
12448 bkpt_print_mention (struct breakpoint *b)
12449 {
12450 if (current_uiout->is_mi_like_p ())
12451 return;
12452
12453 switch (b->type)
12454 {
12455 case bp_breakpoint:
12456 case bp_gnu_ifunc_resolver:
12457 if (b->disposition == disp_del)
12458 printf_filtered (_("Temporary breakpoint"));
12459 else
12460 printf_filtered (_("Breakpoint"));
12461 printf_filtered (_(" %d"), b->number);
12462 if (b->type == bp_gnu_ifunc_resolver)
12463 printf_filtered (_(" at gnu-indirect-function resolver"));
12464 break;
12465 case bp_hardware_breakpoint:
12466 printf_filtered (_("Hardware assisted breakpoint %d"), b->number);
12467 break;
12468 case bp_dprintf:
12469 printf_filtered (_("Dprintf %d"), b->number);
12470 break;
12471 }
12472
12473 say_where (b);
12474 }
12475
12476 static void
12477 bkpt_print_recreate (struct breakpoint *tp, struct ui_file *fp)
12478 {
12479 if (tp->type == bp_breakpoint && tp->disposition == disp_del)
12480 fprintf_unfiltered (fp, "tbreak");
12481 else if (tp->type == bp_breakpoint)
12482 fprintf_unfiltered (fp, "break");
12483 else if (tp->type == bp_hardware_breakpoint
12484 && tp->disposition == disp_del)
12485 fprintf_unfiltered (fp, "thbreak");
12486 else if (tp->type == bp_hardware_breakpoint)
12487 fprintf_unfiltered (fp, "hbreak");
12488 else
12489 internal_error (__FILE__, __LINE__,
12490 _("unhandled breakpoint type %d"), (int) tp->type);
12491
12492 fprintf_unfiltered (fp, " %s",
12493 event_location_to_string (tp->location.get ()));
12494
12495 /* Print out extra_string if this breakpoint is pending. It might
12496 contain, for example, conditions that were set by the user. */
12497 if (tp->loc == NULL && tp->extra_string != NULL)
12498 fprintf_unfiltered (fp, " %s", tp->extra_string);
12499
12500 print_recreate_thread (tp, fp);
12501 }
12502
12503 static void
12504 bkpt_create_sals_from_location (const struct event_location *location,
12505 struct linespec_result *canonical,
12506 enum bptype type_wanted)
12507 {
12508 create_sals_from_location_default (location, canonical, type_wanted);
12509 }
12510
12511 static void
12512 bkpt_create_breakpoints_sal (struct gdbarch *gdbarch,
12513 struct linespec_result *canonical,
12514 gdb::unique_xmalloc_ptr<char> cond_string,
12515 gdb::unique_xmalloc_ptr<char> extra_string,
12516 enum bptype type_wanted,
12517 enum bpdisp disposition,
12518 int thread,
12519 int task, int ignore_count,
12520 const struct breakpoint_ops *ops,
12521 int from_tty, int enabled,
12522 int internal, unsigned flags)
12523 {
12524 create_breakpoints_sal_default (gdbarch, canonical,
12525 std::move (cond_string),
12526 std::move (extra_string),
12527 type_wanted,
12528 disposition, thread, task,
12529 ignore_count, ops, from_tty,
12530 enabled, internal, flags);
12531 }
12532
12533 static std::vector<symtab_and_line>
12534 bkpt_decode_location (struct breakpoint *b,
12535 const struct event_location *location,
12536 struct program_space *search_pspace)
12537 {
12538 return decode_location_default (b, location, search_pspace);
12539 }
12540
12541 /* Virtual table for internal breakpoints. */
12542
12543 static void
12544 internal_bkpt_re_set (struct breakpoint *b)
12545 {
12546 switch (b->type)
12547 {
12548 /* Delete overlay event and longjmp master breakpoints; they
12549 will be reset later by breakpoint_re_set. */
12550 case bp_overlay_event:
12551 case bp_longjmp_master:
12552 case bp_std_terminate_master:
12553 case bp_exception_master:
12554 delete_breakpoint (b);
12555 break;
12556
12557 /* This breakpoint is special, it's set up when the inferior
12558 starts and we really don't want to touch it. */
12559 case bp_shlib_event:
12560
12561 /* Like bp_shlib_event, this breakpoint type is special. Once
12562 it is set up, we do not want to touch it. */
12563 case bp_thread_event:
12564 break;
12565 }
12566 }
12567
12568 static void
12569 internal_bkpt_check_status (bpstat bs)
12570 {
12571 if (bs->breakpoint_at->type == bp_shlib_event)
12572 {
12573 /* If requested, stop when the dynamic linker notifies GDB of
12574 events. This allows the user to get control and place
12575 breakpoints in initializer routines for dynamically loaded
12576 objects (among other things). */
12577 bs->stop = stop_on_solib_events;
12578 bs->print = stop_on_solib_events;
12579 }
12580 else
12581 bs->stop = 0;
12582 }
12583
12584 static enum print_stop_action
12585 internal_bkpt_print_it (bpstat bs)
12586 {
12587 struct breakpoint *b;
12588
12589 b = bs->breakpoint_at;
12590
12591 switch (b->type)
12592 {
12593 case bp_shlib_event:
12594 /* Did we stop because the user set the stop_on_solib_events
12595 variable? (If so, we report this as a generic, "Stopped due
12596 to shlib event" message.) */
12597 print_solib_event (0);
12598 break;
12599
12600 case bp_thread_event:
12601 /* Not sure how we will get here.
12602 GDB should not stop for these breakpoints. */
12603 printf_filtered (_("Thread Event Breakpoint: gdb should not stop!\n"));
12604 break;
12605
12606 case bp_overlay_event:
12607 /* By analogy with the thread event, GDB should not stop for these. */
12608 printf_filtered (_("Overlay Event Breakpoint: gdb should not stop!\n"));
12609 break;
12610
12611 case bp_longjmp_master:
12612 /* These should never be enabled. */
12613 printf_filtered (_("Longjmp Master Breakpoint: gdb should not stop!\n"));
12614 break;
12615
12616 case bp_std_terminate_master:
12617 /* These should never be enabled. */
12618 printf_filtered (_("std::terminate Master Breakpoint: "
12619 "gdb should not stop!\n"));
12620 break;
12621
12622 case bp_exception_master:
12623 /* These should never be enabled. */
12624 printf_filtered (_("Exception Master Breakpoint: "
12625 "gdb should not stop!\n"));
12626 break;
12627 }
12628
12629 return PRINT_NOTHING;
12630 }
12631
12632 static void
12633 internal_bkpt_print_mention (struct breakpoint *b)
12634 {
12635 /* Nothing to mention. These breakpoints are internal. */
12636 }
12637
12638 /* Virtual table for momentary breakpoints */
12639
12640 static void
12641 momentary_bkpt_re_set (struct breakpoint *b)
12642 {
12643 /* Keep temporary breakpoints, which can be encountered when we step
12644 over a dlopen call and solib_add is resetting the breakpoints.
12645 Otherwise these should have been blown away via the cleanup chain
12646 or by breakpoint_init_inferior when we rerun the executable. */
12647 }
12648
12649 static void
12650 momentary_bkpt_check_status (bpstat bs)
12651 {
12652 /* Nothing. The point of these breakpoints is causing a stop. */
12653 }
12654
12655 static enum print_stop_action
12656 momentary_bkpt_print_it (bpstat bs)
12657 {
12658 return PRINT_UNKNOWN;
12659 }
12660
12661 static void
12662 momentary_bkpt_print_mention (struct breakpoint *b)
12663 {
12664 /* Nothing to mention. These breakpoints are internal. */
12665 }
12666
12667 /* Ensure INITIATING_FRAME is cleared when no such breakpoint exists.
12668
12669 It gets cleared already on the removal of the first one of such placed
12670 breakpoints. This is OK as they get all removed altogether. */
12671
12672 longjmp_breakpoint::~longjmp_breakpoint ()
12673 {
12674 thread_info *tp = find_thread_global_id (this->thread);
12675
12676 if (tp != NULL)
12677 tp->initiating_frame = null_frame_id;
12678 }
12679
12680 /* Specific methods for probe breakpoints. */
12681
12682 static int
12683 bkpt_probe_insert_location (struct bp_location *bl)
12684 {
12685 int v = bkpt_insert_location (bl);
12686
12687 if (v == 0)
12688 {
12689 /* The insertion was successful, now let's set the probe's semaphore
12690 if needed. */
12691 bl->probe.prob->set_semaphore (bl->probe.objfile, bl->gdbarch);
12692 }
12693
12694 return v;
12695 }
12696
12697 static int
12698 bkpt_probe_remove_location (struct bp_location *bl,
12699 enum remove_bp_reason reason)
12700 {
12701 /* Let's clear the semaphore before removing the location. */
12702 bl->probe.prob->clear_semaphore (bl->probe.objfile, bl->gdbarch);
12703
12704 return bkpt_remove_location (bl, reason);
12705 }
12706
12707 static void
12708 bkpt_probe_create_sals_from_location (const struct event_location *location,
12709 struct linespec_result *canonical,
12710 enum bptype type_wanted)
12711 {
12712 struct linespec_sals lsal;
12713
12714 lsal.sals = parse_probes (location, NULL, canonical);
12715 lsal.canonical
12716 = xstrdup (event_location_to_string (canonical->location.get ()));
12717 canonical->lsals.push_back (std::move (lsal));
12718 }
12719
12720 static std::vector<symtab_and_line>
12721 bkpt_probe_decode_location (struct breakpoint *b,
12722 const struct event_location *location,
12723 struct program_space *search_pspace)
12724 {
12725 std::vector<symtab_and_line> sals = parse_probes (location, search_pspace, NULL);
12726 if (sals.empty ())
12727 error (_("probe not found"));
12728 return sals;
12729 }
12730
12731 /* The breakpoint_ops structure to be used in tracepoints. */
12732
12733 static void
12734 tracepoint_re_set (struct breakpoint *b)
12735 {
12736 breakpoint_re_set_default (b);
12737 }
12738
12739 static int
12740 tracepoint_breakpoint_hit (const struct bp_location *bl,
12741 const address_space *aspace, CORE_ADDR bp_addr,
12742 const struct target_waitstatus *ws)
12743 {
12744 /* By definition, the inferior does not report stops at
12745 tracepoints. */
12746 return 0;
12747 }
12748
12749 static void
12750 tracepoint_print_one_detail (const struct breakpoint *self,
12751 struct ui_out *uiout)
12752 {
12753 struct tracepoint *tp = (struct tracepoint *) self;
12754 if (!tp->static_trace_marker_id.empty ())
12755 {
12756 gdb_assert (self->type == bp_static_tracepoint);
12757
12758 uiout->text ("\tmarker id is ");
12759 uiout->field_string ("static-tracepoint-marker-string-id",
12760 tp->static_trace_marker_id);
12761 uiout->text ("\n");
12762 }
12763 }
12764
12765 static void
12766 tracepoint_print_mention (struct breakpoint *b)
12767 {
12768 if (current_uiout->is_mi_like_p ())
12769 return;
12770
12771 switch (b->type)
12772 {
12773 case bp_tracepoint:
12774 printf_filtered (_("Tracepoint"));
12775 printf_filtered (_(" %d"), b->number);
12776 break;
12777 case bp_fast_tracepoint:
12778 printf_filtered (_("Fast tracepoint"));
12779 printf_filtered (_(" %d"), b->number);
12780 break;
12781 case bp_static_tracepoint:
12782 printf_filtered (_("Static tracepoint"));
12783 printf_filtered (_(" %d"), b->number);
12784 break;
12785 default:
12786 internal_error (__FILE__, __LINE__,
12787 _("unhandled tracepoint type %d"), (int) b->type);
12788 }
12789
12790 say_where (b);
12791 }
12792
12793 static void
12794 tracepoint_print_recreate (struct breakpoint *self, struct ui_file *fp)
12795 {
12796 struct tracepoint *tp = (struct tracepoint *) self;
12797
12798 if (self->type == bp_fast_tracepoint)
12799 fprintf_unfiltered (fp, "ftrace");
12800 else if (self->type == bp_static_tracepoint)
12801 fprintf_unfiltered (fp, "strace");
12802 else if (self->type == bp_tracepoint)
12803 fprintf_unfiltered (fp, "trace");
12804 else
12805 internal_error (__FILE__, __LINE__,
12806 _("unhandled tracepoint type %d"), (int) self->type);
12807
12808 fprintf_unfiltered (fp, " %s",
12809 event_location_to_string (self->location.get ()));
12810 print_recreate_thread (self, fp);
12811
12812 if (tp->pass_count)
12813 fprintf_unfiltered (fp, " passcount %d\n", tp->pass_count);
12814 }
12815
12816 static void
12817 tracepoint_create_sals_from_location (const struct event_location *location,
12818 struct linespec_result *canonical,
12819 enum bptype type_wanted)
12820 {
12821 create_sals_from_location_default (location, canonical, type_wanted);
12822 }
12823
12824 static void
12825 tracepoint_create_breakpoints_sal (struct gdbarch *gdbarch,
12826 struct linespec_result *canonical,
12827 gdb::unique_xmalloc_ptr<char> cond_string,
12828 gdb::unique_xmalloc_ptr<char> extra_string,
12829 enum bptype type_wanted,
12830 enum bpdisp disposition,
12831 int thread,
12832 int task, int ignore_count,
12833 const struct breakpoint_ops *ops,
12834 int from_tty, int enabled,
12835 int internal, unsigned flags)
12836 {
12837 create_breakpoints_sal_default (gdbarch, canonical,
12838 std::move (cond_string),
12839 std::move (extra_string),
12840 type_wanted,
12841 disposition, thread, task,
12842 ignore_count, ops, from_tty,
12843 enabled, internal, flags);
12844 }
12845
12846 static std::vector<symtab_and_line>
12847 tracepoint_decode_location (struct breakpoint *b,
12848 const struct event_location *location,
12849 struct program_space *search_pspace)
12850 {
12851 return decode_location_default (b, location, search_pspace);
12852 }
12853
12854 struct breakpoint_ops tracepoint_breakpoint_ops;
12855
12856 /* The breakpoint_ops structure to be use on tracepoints placed in a
12857 static probe. */
12858
12859 static void
12860 tracepoint_probe_create_sals_from_location
12861 (const struct event_location *location,
12862 struct linespec_result *canonical,
12863 enum bptype type_wanted)
12864 {
12865 /* We use the same method for breakpoint on probes. */
12866 bkpt_probe_create_sals_from_location (location, canonical, type_wanted);
12867 }
12868
12869 static std::vector<symtab_and_line>
12870 tracepoint_probe_decode_location (struct breakpoint *b,
12871 const struct event_location *location,
12872 struct program_space *search_pspace)
12873 {
12874 /* We use the same method for breakpoint on probes. */
12875 return bkpt_probe_decode_location (b, location, search_pspace);
12876 }
12877
12878 static struct breakpoint_ops tracepoint_probe_breakpoint_ops;
12879
12880 /* Dprintf breakpoint_ops methods. */
12881
12882 static void
12883 dprintf_re_set (struct breakpoint *b)
12884 {
12885 breakpoint_re_set_default (b);
12886
12887 /* extra_string should never be non-NULL for dprintf. */
12888 gdb_assert (b->extra_string != NULL);
12889
12890 /* 1 - connect to target 1, that can run breakpoint commands.
12891 2 - create a dprintf, which resolves fine.
12892 3 - disconnect from target 1
12893 4 - connect to target 2, that can NOT run breakpoint commands.
12894
12895 After steps #3/#4, you'll want the dprintf command list to
12896 be updated, because target 1 and 2 may well return different
12897 answers for target_can_run_breakpoint_commands().
12898 Given absence of finer grained resetting, we get to do
12899 it all the time. */
12900 if (b->extra_string != NULL)
12901 update_dprintf_command_list (b);
12902 }
12903
12904 /* Implement the "print_recreate" breakpoint_ops method for dprintf. */
12905
12906 static void
12907 dprintf_print_recreate (struct breakpoint *tp, struct ui_file *fp)
12908 {
12909 fprintf_unfiltered (fp, "dprintf %s,%s",
12910 event_location_to_string (tp->location.get ()),
12911 tp->extra_string);
12912 print_recreate_thread (tp, fp);
12913 }
12914
12915 /* Implement the "after_condition_true" breakpoint_ops method for
12916 dprintf.
12917
12918 dprintf's are implemented with regular commands in their command
12919 list, but we run the commands here instead of before presenting the
12920 stop to the user, as dprintf's don't actually cause a stop. This
12921 also makes it so that the commands of multiple dprintfs at the same
12922 address are all handled. */
12923
12924 static void
12925 dprintf_after_condition_true (struct bpstats *bs)
12926 {
12927 struct bpstats tmp_bs;
12928 struct bpstats *tmp_bs_p = &tmp_bs;
12929
12930 /* dprintf's never cause a stop. This wasn't set in the
12931 check_status hook instead because that would make the dprintf's
12932 condition not be evaluated. */
12933 bs->stop = 0;
12934
12935 /* Run the command list here. Take ownership of it instead of
12936 copying. We never want these commands to run later in
12937 bpstat_do_actions, if a breakpoint that causes a stop happens to
12938 be set at same address as this dprintf, or even if running the
12939 commands here throws. */
12940 tmp_bs.commands = bs->commands;
12941 bs->commands = NULL;
12942
12943 bpstat_do_actions_1 (&tmp_bs_p);
12944
12945 /* 'tmp_bs.commands' will usually be NULL by now, but
12946 bpstat_do_actions_1 may return early without processing the whole
12947 list. */
12948 }
12949
12950 /* The breakpoint_ops structure to be used on static tracepoints with
12951 markers (`-m'). */
12952
12953 static void
12954 strace_marker_create_sals_from_location (const struct event_location *location,
12955 struct linespec_result *canonical,
12956 enum bptype type_wanted)
12957 {
12958 struct linespec_sals lsal;
12959 const char *arg_start, *arg;
12960
12961 arg = arg_start = get_linespec_location (location)->spec_string;
12962 lsal.sals = decode_static_tracepoint_spec (&arg);
12963
12964 std::string str (arg_start, arg - arg_start);
12965 const char *ptr = str.c_str ();
12966 canonical->location
12967 = new_linespec_location (&ptr, symbol_name_match_type::FULL);
12968
12969 lsal.canonical
12970 = xstrdup (event_location_to_string (canonical->location.get ()));
12971 canonical->lsals.push_back (std::move (lsal));
12972 }
12973
12974 static void
12975 strace_marker_create_breakpoints_sal (struct gdbarch *gdbarch,
12976 struct linespec_result *canonical,
12977 gdb::unique_xmalloc_ptr<char> cond_string,
12978 gdb::unique_xmalloc_ptr<char> extra_string,
12979 enum bptype type_wanted,
12980 enum bpdisp disposition,
12981 int thread,
12982 int task, int ignore_count,
12983 const struct breakpoint_ops *ops,
12984 int from_tty, int enabled,
12985 int internal, unsigned flags)
12986 {
12987 const linespec_sals &lsal = canonical->lsals[0];
12988
12989 /* If the user is creating a static tracepoint by marker id
12990 (strace -m MARKER_ID), then store the sals index, so that
12991 breakpoint_re_set can try to match up which of the newly
12992 found markers corresponds to this one, and, don't try to
12993 expand multiple locations for each sal, given than SALS
12994 already should contain all sals for MARKER_ID. */
12995
12996 for (size_t i = 0; i < lsal.sals.size (); i++)
12997 {
12998 event_location_up location
12999 = copy_event_location (canonical->location.get ());
13000
13001 std::unique_ptr<tracepoint> tp (new tracepoint ());
13002 init_breakpoint_sal (tp.get (), gdbarch, lsal.sals[i],
13003 std::move (location), NULL,
13004 std::move (cond_string),
13005 std::move (extra_string),
13006 type_wanted, disposition,
13007 thread, task, ignore_count, ops,
13008 from_tty, enabled, internal, flags,
13009 canonical->special_display);
13010 /* Given that its possible to have multiple markers with
13011 the same string id, if the user is creating a static
13012 tracepoint by marker id ("strace -m MARKER_ID"), then
13013 store the sals index, so that breakpoint_re_set can
13014 try to match up which of the newly found markers
13015 corresponds to this one */
13016 tp->static_trace_marker_id_idx = i;
13017
13018 install_breakpoint (internal, std::move (tp), 0);
13019 }
13020 }
13021
13022 static std::vector<symtab_and_line>
13023 strace_marker_decode_location (struct breakpoint *b,
13024 const struct event_location *location,
13025 struct program_space *search_pspace)
13026 {
13027 struct tracepoint *tp = (struct tracepoint *) b;
13028 const char *s = get_linespec_location (location)->spec_string;
13029
13030 std::vector<symtab_and_line> sals = decode_static_tracepoint_spec (&s);
13031 if (sals.size () > tp->static_trace_marker_id_idx)
13032 {
13033 sals[0] = sals[tp->static_trace_marker_id_idx];
13034 sals.resize (1);
13035 return sals;
13036 }
13037 else
13038 error (_("marker %s not found"), tp->static_trace_marker_id.c_str ());
13039 }
13040
13041 static struct breakpoint_ops strace_marker_breakpoint_ops;
13042
13043 static int
13044 strace_marker_p (struct breakpoint *b)
13045 {
13046 return b->ops == &strace_marker_breakpoint_ops;
13047 }
13048
13049 /* Delete a breakpoint and clean up all traces of it in the data
13050 structures. */
13051
13052 void
13053 delete_breakpoint (struct breakpoint *bpt)
13054 {
13055 struct breakpoint *b;
13056
13057 gdb_assert (bpt != NULL);
13058
13059 /* Has this bp already been deleted? This can happen because
13060 multiple lists can hold pointers to bp's. bpstat lists are
13061 especial culprits.
13062
13063 One example of this happening is a watchpoint's scope bp. When
13064 the scope bp triggers, we notice that the watchpoint is out of
13065 scope, and delete it. We also delete its scope bp. But the
13066 scope bp is marked "auto-deleting", and is already on a bpstat.
13067 That bpstat is then checked for auto-deleting bp's, which are
13068 deleted.
13069
13070 A real solution to this problem might involve reference counts in
13071 bp's, and/or giving them pointers back to their referencing
13072 bpstat's, and teaching delete_breakpoint to only free a bp's
13073 storage when no more references were extent. A cheaper bandaid
13074 was chosen. */
13075 if (bpt->type == bp_none)
13076 return;
13077
13078 /* At least avoid this stale reference until the reference counting
13079 of breakpoints gets resolved. */
13080 if (bpt->related_breakpoint != bpt)
13081 {
13082 struct breakpoint *related;
13083 struct watchpoint *w;
13084
13085 if (bpt->type == bp_watchpoint_scope)
13086 w = (struct watchpoint *) bpt->related_breakpoint;
13087 else if (bpt->related_breakpoint->type == bp_watchpoint_scope)
13088 w = (struct watchpoint *) bpt;
13089 else
13090 w = NULL;
13091 if (w != NULL)
13092 watchpoint_del_at_next_stop (w);
13093
13094 /* Unlink bpt from the bpt->related_breakpoint ring. */
13095 for (related = bpt; related->related_breakpoint != bpt;
13096 related = related->related_breakpoint);
13097 related->related_breakpoint = bpt->related_breakpoint;
13098 bpt->related_breakpoint = bpt;
13099 }
13100
13101 /* watch_command_1 creates a watchpoint but only sets its number if
13102 update_watchpoint succeeds in creating its bp_locations. If there's
13103 a problem in that process, we'll be asked to delete the half-created
13104 watchpoint. In that case, don't announce the deletion. */
13105 if (bpt->number)
13106 gdb::observers::breakpoint_deleted.notify (bpt);
13107
13108 if (breakpoint_chain == bpt)
13109 breakpoint_chain = bpt->next;
13110
13111 ALL_BREAKPOINTS (b)
13112 if (b->next == bpt)
13113 {
13114 b->next = bpt->next;
13115 break;
13116 }
13117
13118 /* Be sure no bpstat's are pointing at the breakpoint after it's
13119 been freed. */
13120 /* FIXME, how can we find all bpstat's? We just check stop_bpstat
13121 in all threads for now. Note that we cannot just remove bpstats
13122 pointing at bpt from the stop_bpstat list entirely, as breakpoint
13123 commands are associated with the bpstat; if we remove it here,
13124 then the later call to bpstat_do_actions (&stop_bpstat); in
13125 event-top.c won't do anything, and temporary breakpoints with
13126 commands won't work. */
13127
13128 iterate_over_threads (bpstat_remove_breakpoint_callback, bpt);
13129
13130 /* Now that breakpoint is removed from breakpoint list, update the
13131 global location list. This will remove locations that used to
13132 belong to this breakpoint. Do this before freeing the breakpoint
13133 itself, since remove_breakpoint looks at location's owner. It
13134 might be better design to have location completely
13135 self-contained, but it's not the case now. */
13136 update_global_location_list (UGLL_DONT_INSERT);
13137
13138 /* On the chance that someone will soon try again to delete this
13139 same bp, we mark it as deleted before freeing its storage. */
13140 bpt->type = bp_none;
13141 delete bpt;
13142 }
13143
13144 /* Iterator function to call a user-provided callback function once
13145 for each of B and its related breakpoints. */
13146
13147 static void
13148 iterate_over_related_breakpoints (struct breakpoint *b,
13149 gdb::function_view<void (breakpoint *)> function)
13150 {
13151 struct breakpoint *related;
13152
13153 related = b;
13154 do
13155 {
13156 struct breakpoint *next;
13157
13158 /* FUNCTION may delete RELATED. */
13159 next = related->related_breakpoint;
13160
13161 if (next == related)
13162 {
13163 /* RELATED is the last ring entry. */
13164 function (related);
13165
13166 /* FUNCTION may have deleted it, so we'd never reach back to
13167 B. There's nothing left to do anyway, so just break
13168 out. */
13169 break;
13170 }
13171 else
13172 function (related);
13173
13174 related = next;
13175 }
13176 while (related != b);
13177 }
13178
13179 static void
13180 delete_command (const char *arg, int from_tty)
13181 {
13182 struct breakpoint *b, *b_tmp;
13183
13184 dont_repeat ();
13185
13186 if (arg == 0)
13187 {
13188 int breaks_to_delete = 0;
13189
13190 /* Delete all breakpoints if no argument. Do not delete
13191 internal breakpoints, these have to be deleted with an
13192 explicit breakpoint number argument. */
13193 ALL_BREAKPOINTS (b)
13194 if (user_breakpoint_p (b))
13195 {
13196 breaks_to_delete = 1;
13197 break;
13198 }
13199
13200 /* Ask user only if there are some breakpoints to delete. */
13201 if (!from_tty
13202 || (breaks_to_delete && query (_("Delete all breakpoints? "))))
13203 {
13204 ALL_BREAKPOINTS_SAFE (b, b_tmp)
13205 if (user_breakpoint_p (b))
13206 delete_breakpoint (b);
13207 }
13208 }
13209 else
13210 map_breakpoint_numbers
13211 (arg, [&] (breakpoint *br)
13212 {
13213 iterate_over_related_breakpoints (br, delete_breakpoint);
13214 });
13215 }
13216
13217 /* Return true if all locations of B bound to PSPACE are pending. If
13218 PSPACE is NULL, all locations of all program spaces are
13219 considered. */
13220
13221 static int
13222 all_locations_are_pending (struct breakpoint *b, struct program_space *pspace)
13223 {
13224 struct bp_location *loc;
13225
13226 for (loc = b->loc; loc != NULL; loc = loc->next)
13227 if ((pspace == NULL
13228 || loc->pspace == pspace)
13229 && !loc->shlib_disabled
13230 && !loc->pspace->executing_startup)
13231 return 0;
13232 return 1;
13233 }
13234
13235 /* Subroutine of update_breakpoint_locations to simplify it.
13236 Return non-zero if multiple fns in list LOC have the same name.
13237 Null names are ignored. */
13238
13239 static int
13240 ambiguous_names_p (struct bp_location *loc)
13241 {
13242 struct bp_location *l;
13243 htab_t htab = htab_create_alloc (13, htab_hash_string, streq_hash, NULL,
13244 xcalloc, xfree);
13245
13246 for (l = loc; l != NULL; l = l->next)
13247 {
13248 const char **slot;
13249 const char *name = l->function_name;
13250
13251 /* Allow for some names to be NULL, ignore them. */
13252 if (name == NULL)
13253 continue;
13254
13255 slot = (const char **) htab_find_slot (htab, (const void *) name,
13256 INSERT);
13257 /* NOTE: We can assume slot != NULL here because xcalloc never
13258 returns NULL. */
13259 if (*slot != NULL)
13260 {
13261 htab_delete (htab);
13262 return 1;
13263 }
13264 *slot = name;
13265 }
13266
13267 htab_delete (htab);
13268 return 0;
13269 }
13270
13271 /* When symbols change, it probably means the sources changed as well,
13272 and it might mean the static tracepoint markers are no longer at
13273 the same address or line numbers they used to be at last we
13274 checked. Losing your static tracepoints whenever you rebuild is
13275 undesirable. This function tries to resync/rematch gdb static
13276 tracepoints with the markers on the target, for static tracepoints
13277 that have not been set by marker id. Static tracepoint that have
13278 been set by marker id are reset by marker id in breakpoint_re_set.
13279 The heuristic is:
13280
13281 1) For a tracepoint set at a specific address, look for a marker at
13282 the old PC. If one is found there, assume to be the same marker.
13283 If the name / string id of the marker found is different from the
13284 previous known name, assume that means the user renamed the marker
13285 in the sources, and output a warning.
13286
13287 2) For a tracepoint set at a given line number, look for a marker
13288 at the new address of the old line number. If one is found there,
13289 assume to be the same marker. If the name / string id of the
13290 marker found is different from the previous known name, assume that
13291 means the user renamed the marker in the sources, and output a
13292 warning.
13293
13294 3) If a marker is no longer found at the same address or line, it
13295 may mean the marker no longer exists. But it may also just mean
13296 the code changed a bit. Maybe the user added a few lines of code
13297 that made the marker move up or down (in line number terms). Ask
13298 the target for info about the marker with the string id as we knew
13299 it. If found, update line number and address in the matching
13300 static tracepoint. This will get confused if there's more than one
13301 marker with the same ID (possible in UST, although unadvised
13302 precisely because it confuses tools). */
13303
13304 static struct symtab_and_line
13305 update_static_tracepoint (struct breakpoint *b, struct symtab_and_line sal)
13306 {
13307 struct tracepoint *tp = (struct tracepoint *) b;
13308 struct static_tracepoint_marker marker;
13309 CORE_ADDR pc;
13310
13311 pc = sal.pc;
13312 if (sal.line)
13313 find_line_pc (sal.symtab, sal.line, &pc);
13314
13315 if (target_static_tracepoint_marker_at (pc, &marker))
13316 {
13317 if (tp->static_trace_marker_id != marker.str_id)
13318 warning (_("static tracepoint %d changed probed marker from %s to %s"),
13319 b->number, tp->static_trace_marker_id.c_str (),
13320 marker.str_id.c_str ());
13321
13322 tp->static_trace_marker_id = std::move (marker.str_id);
13323
13324 return sal;
13325 }
13326
13327 /* Old marker wasn't found on target at lineno. Try looking it up
13328 by string ID. */
13329 if (!sal.explicit_pc
13330 && sal.line != 0
13331 && sal.symtab != NULL
13332 && !tp->static_trace_marker_id.empty ())
13333 {
13334 std::vector<static_tracepoint_marker> markers
13335 = target_static_tracepoint_markers_by_strid
13336 (tp->static_trace_marker_id.c_str ());
13337
13338 if (!markers.empty ())
13339 {
13340 struct symbol *sym;
13341 struct static_tracepoint_marker *tpmarker;
13342 struct ui_out *uiout = current_uiout;
13343 struct explicit_location explicit_loc;
13344
13345 tpmarker = &markers[0];
13346
13347 tp->static_trace_marker_id = std::move (tpmarker->str_id);
13348
13349 warning (_("marker for static tracepoint %d (%s) not "
13350 "found at previous line number"),
13351 b->number, tp->static_trace_marker_id.c_str ());
13352
13353 symtab_and_line sal2 = find_pc_line (tpmarker->address, 0);
13354 sym = find_pc_sect_function (tpmarker->address, NULL);
13355 uiout->text ("Now in ");
13356 if (sym)
13357 {
13358 uiout->field_string ("func", SYMBOL_PRINT_NAME (sym),
13359 ui_out_style_kind::FUNCTION);
13360 uiout->text (" at ");
13361 }
13362 uiout->field_string ("file",
13363 symtab_to_filename_for_display (sal2.symtab),
13364 ui_out_style_kind::FILE);
13365 uiout->text (":");
13366
13367 if (uiout->is_mi_like_p ())
13368 {
13369 const char *fullname = symtab_to_fullname (sal2.symtab);
13370
13371 uiout->field_string ("fullname", fullname);
13372 }
13373
13374 uiout->field_int ("line", sal2.line);
13375 uiout->text ("\n");
13376
13377 b->loc->line_number = sal2.line;
13378 b->loc->symtab = sym != NULL ? sal2.symtab : NULL;
13379
13380 b->location.reset (NULL);
13381 initialize_explicit_location (&explicit_loc);
13382 explicit_loc.source_filename
13383 = ASTRDUP (symtab_to_filename_for_display (sal2.symtab));
13384 explicit_loc.line_offset.offset = b->loc->line_number;
13385 explicit_loc.line_offset.sign = LINE_OFFSET_NONE;
13386 b->location = new_explicit_location (&explicit_loc);
13387
13388 /* Might be nice to check if function changed, and warn if
13389 so. */
13390 }
13391 }
13392 return sal;
13393 }
13394
13395 /* Returns 1 iff locations A and B are sufficiently same that
13396 we don't need to report breakpoint as changed. */
13397
13398 static int
13399 locations_are_equal (struct bp_location *a, struct bp_location *b)
13400 {
13401 while (a && b)
13402 {
13403 if (a->address != b->address)
13404 return 0;
13405
13406 if (a->shlib_disabled != b->shlib_disabled)
13407 return 0;
13408
13409 if (a->enabled != b->enabled)
13410 return 0;
13411
13412 a = a->next;
13413 b = b->next;
13414 }
13415
13416 if ((a == NULL) != (b == NULL))
13417 return 0;
13418
13419 return 1;
13420 }
13421
13422 /* Split all locations of B that are bound to PSPACE out of B's
13423 location list to a separate list and return that list's head. If
13424 PSPACE is NULL, hoist out all locations of B. */
13425
13426 static struct bp_location *
13427 hoist_existing_locations (struct breakpoint *b, struct program_space *pspace)
13428 {
13429 struct bp_location head;
13430 struct bp_location *i = b->loc;
13431 struct bp_location **i_link = &b->loc;
13432 struct bp_location *hoisted = &head;
13433
13434 if (pspace == NULL)
13435 {
13436 i = b->loc;
13437 b->loc = NULL;
13438 return i;
13439 }
13440
13441 head.next = NULL;
13442
13443 while (i != NULL)
13444 {
13445 if (i->pspace == pspace)
13446 {
13447 *i_link = i->next;
13448 i->next = NULL;
13449 hoisted->next = i;
13450 hoisted = i;
13451 }
13452 else
13453 i_link = &i->next;
13454 i = *i_link;
13455 }
13456
13457 return head.next;
13458 }
13459
13460 /* Create new breakpoint locations for B (a hardware or software
13461 breakpoint) based on SALS and SALS_END. If SALS_END.NELTS is not
13462 zero, then B is a ranged breakpoint. Only recreates locations for
13463 FILTER_PSPACE. Locations of other program spaces are left
13464 untouched. */
13465
13466 void
13467 update_breakpoint_locations (struct breakpoint *b,
13468 struct program_space *filter_pspace,
13469 gdb::array_view<const symtab_and_line> sals,
13470 gdb::array_view<const symtab_and_line> sals_end)
13471 {
13472 struct bp_location *existing_locations;
13473
13474 if (!sals_end.empty () && (sals.size () != 1 || sals_end.size () != 1))
13475 {
13476 /* Ranged breakpoints have only one start location and one end
13477 location. */
13478 b->enable_state = bp_disabled;
13479 printf_unfiltered (_("Could not reset ranged breakpoint %d: "
13480 "multiple locations found\n"),
13481 b->number);
13482 return;
13483 }
13484
13485 /* If there's no new locations, and all existing locations are
13486 pending, don't do anything. This optimizes the common case where
13487 all locations are in the same shared library, that was unloaded.
13488 We'd like to retain the location, so that when the library is
13489 loaded again, we don't loose the enabled/disabled status of the
13490 individual locations. */
13491 if (all_locations_are_pending (b, filter_pspace) && sals.empty ())
13492 return;
13493
13494 existing_locations = hoist_existing_locations (b, filter_pspace);
13495
13496 for (const auto &sal : sals)
13497 {
13498 struct bp_location *new_loc;
13499
13500 switch_to_program_space_and_thread (sal.pspace);
13501
13502 new_loc = add_location_to_breakpoint (b, &sal);
13503
13504 /* Reparse conditions, they might contain references to the
13505 old symtab. */
13506 if (b->cond_string != NULL)
13507 {
13508 const char *s;
13509
13510 s = b->cond_string;
13511 try
13512 {
13513 new_loc->cond = parse_exp_1 (&s, sal.pc,
13514 block_for_pc (sal.pc),
13515 0);
13516 }
13517 catch (const gdb_exception_error &e)
13518 {
13519 warning (_("failed to reevaluate condition "
13520 "for breakpoint %d: %s"),
13521 b->number, e.what ());
13522 new_loc->enabled = 0;
13523 }
13524 }
13525
13526 if (!sals_end.empty ())
13527 {
13528 CORE_ADDR end = find_breakpoint_range_end (sals_end[0]);
13529
13530 new_loc->length = end - sals[0].pc + 1;
13531 }
13532 }
13533
13534 /* If possible, carry over 'disable' status from existing
13535 breakpoints. */
13536 {
13537 struct bp_location *e = existing_locations;
13538 /* If there are multiple breakpoints with the same function name,
13539 e.g. for inline functions, comparing function names won't work.
13540 Instead compare pc addresses; this is just a heuristic as things
13541 may have moved, but in practice it gives the correct answer
13542 often enough until a better solution is found. */
13543 int have_ambiguous_names = ambiguous_names_p (b->loc);
13544
13545 for (; e; e = e->next)
13546 {
13547 if (!e->enabled && e->function_name)
13548 {
13549 struct bp_location *l = b->loc;
13550 if (have_ambiguous_names)
13551 {
13552 for (; l; l = l->next)
13553 if (breakpoint_locations_match (e, l))
13554 {
13555 l->enabled = 0;
13556 break;
13557 }
13558 }
13559 else
13560 {
13561 for (; l; l = l->next)
13562 if (l->function_name
13563 && strcmp (e->function_name, l->function_name) == 0)
13564 {
13565 l->enabled = 0;
13566 break;
13567 }
13568 }
13569 }
13570 }
13571 }
13572
13573 if (!locations_are_equal (existing_locations, b->loc))
13574 gdb::observers::breakpoint_modified.notify (b);
13575 }
13576
13577 /* Find the SaL locations corresponding to the given LOCATION.
13578 On return, FOUND will be 1 if any SaL was found, zero otherwise. */
13579
13580 static std::vector<symtab_and_line>
13581 location_to_sals (struct breakpoint *b, struct event_location *location,
13582 struct program_space *search_pspace, int *found)
13583 {
13584 struct gdb_exception exception;
13585
13586 gdb_assert (b->ops != NULL);
13587
13588 std::vector<symtab_and_line> sals;
13589
13590 try
13591 {
13592 sals = b->ops->decode_location (b, location, search_pspace);
13593 }
13594 catch (gdb_exception_error &e)
13595 {
13596 int not_found_and_ok = 0;
13597
13598 /* For pending breakpoints, it's expected that parsing will
13599 fail until the right shared library is loaded. User has
13600 already told to create pending breakpoints and don't need
13601 extra messages. If breakpoint is in bp_shlib_disabled
13602 state, then user already saw the message about that
13603 breakpoint being disabled, and don't want to see more
13604 errors. */
13605 if (e.error == NOT_FOUND_ERROR
13606 && (b->condition_not_parsed
13607 || (b->loc != NULL
13608 && search_pspace != NULL
13609 && b->loc->pspace != search_pspace)
13610 || (b->loc && b->loc->shlib_disabled)
13611 || (b->loc && b->loc->pspace->executing_startup)
13612 || b->enable_state == bp_disabled))
13613 not_found_and_ok = 1;
13614
13615 if (!not_found_and_ok)
13616 {
13617 /* We surely don't want to warn about the same breakpoint
13618 10 times. One solution, implemented here, is disable
13619 the breakpoint on error. Another solution would be to
13620 have separate 'warning emitted' flag. Since this
13621 happens only when a binary has changed, I don't know
13622 which approach is better. */
13623 b->enable_state = bp_disabled;
13624 throw;
13625 }
13626
13627 exception = std::move (e);
13628 }
13629
13630 if (exception.reason == 0 || exception.error != NOT_FOUND_ERROR)
13631 {
13632 for (auto &sal : sals)
13633 resolve_sal_pc (&sal);
13634 if (b->condition_not_parsed && b->extra_string != NULL)
13635 {
13636 char *cond_string, *extra_string;
13637 int thread, task;
13638
13639 find_condition_and_thread (b->extra_string, sals[0].pc,
13640 &cond_string, &thread, &task,
13641 &extra_string);
13642 gdb_assert (b->cond_string == NULL);
13643 if (cond_string)
13644 b->cond_string = cond_string;
13645 b->thread = thread;
13646 b->task = task;
13647 if (extra_string)
13648 {
13649 xfree (b->extra_string);
13650 b->extra_string = extra_string;
13651 }
13652 b->condition_not_parsed = 0;
13653 }
13654
13655 if (b->type == bp_static_tracepoint && !strace_marker_p (b))
13656 sals[0] = update_static_tracepoint (b, sals[0]);
13657
13658 *found = 1;
13659 }
13660 else
13661 *found = 0;
13662
13663 return sals;
13664 }
13665
13666 /* The default re_set method, for typical hardware or software
13667 breakpoints. Reevaluate the breakpoint and recreate its
13668 locations. */
13669
13670 static void
13671 breakpoint_re_set_default (struct breakpoint *b)
13672 {
13673 struct program_space *filter_pspace = current_program_space;
13674 std::vector<symtab_and_line> expanded, expanded_end;
13675
13676 int found;
13677 std::vector<symtab_and_line> sals = location_to_sals (b, b->location.get (),
13678 filter_pspace, &found);
13679 if (found)
13680 expanded = std::move (sals);
13681
13682 if (b->location_range_end != NULL)
13683 {
13684 std::vector<symtab_and_line> sals_end
13685 = location_to_sals (b, b->location_range_end.get (),
13686 filter_pspace, &found);
13687 if (found)
13688 expanded_end = std::move (sals_end);
13689 }
13690
13691 update_breakpoint_locations (b, filter_pspace, expanded, expanded_end);
13692 }
13693
13694 /* Default method for creating SALs from an address string. It basically
13695 calls parse_breakpoint_sals. Return 1 for success, zero for failure. */
13696
13697 static void
13698 create_sals_from_location_default (const struct event_location *location,
13699 struct linespec_result *canonical,
13700 enum bptype type_wanted)
13701 {
13702 parse_breakpoint_sals (location, canonical);
13703 }
13704
13705 /* Call create_breakpoints_sal for the given arguments. This is the default
13706 function for the `create_breakpoints_sal' method of
13707 breakpoint_ops. */
13708
13709 static void
13710 create_breakpoints_sal_default (struct gdbarch *gdbarch,
13711 struct linespec_result *canonical,
13712 gdb::unique_xmalloc_ptr<char> cond_string,
13713 gdb::unique_xmalloc_ptr<char> extra_string,
13714 enum bptype type_wanted,
13715 enum bpdisp disposition,
13716 int thread,
13717 int task, int ignore_count,
13718 const struct breakpoint_ops *ops,
13719 int from_tty, int enabled,
13720 int internal, unsigned flags)
13721 {
13722 create_breakpoints_sal (gdbarch, canonical,
13723 std::move (cond_string),
13724 std::move (extra_string),
13725 type_wanted, disposition,
13726 thread, task, ignore_count, ops, from_tty,
13727 enabled, internal, flags);
13728 }
13729
13730 /* Decode the line represented by S by calling decode_line_full. This is the
13731 default function for the `decode_location' method of breakpoint_ops. */
13732
13733 static std::vector<symtab_and_line>
13734 decode_location_default (struct breakpoint *b,
13735 const struct event_location *location,
13736 struct program_space *search_pspace)
13737 {
13738 struct linespec_result canonical;
13739
13740 decode_line_full (location, DECODE_LINE_FUNFIRSTLINE, search_pspace,
13741 (struct symtab *) NULL, 0,
13742 &canonical, multiple_symbols_all,
13743 b->filter);
13744
13745 /* We should get 0 or 1 resulting SALs. */
13746 gdb_assert (canonical.lsals.size () < 2);
13747
13748 if (!canonical.lsals.empty ())
13749 {
13750 const linespec_sals &lsal = canonical.lsals[0];
13751 return std::move (lsal.sals);
13752 }
13753 return {};
13754 }
13755
13756 /* Reset a breakpoint. */
13757
13758 static void
13759 breakpoint_re_set_one (breakpoint *b)
13760 {
13761 input_radix = b->input_radix;
13762 set_language (b->language);
13763
13764 b->ops->re_set (b);
13765 }
13766
13767 /* Re-set breakpoint locations for the current program space.
13768 Locations bound to other program spaces are left untouched. */
13769
13770 void
13771 breakpoint_re_set (void)
13772 {
13773 struct breakpoint *b, *b_tmp;
13774
13775 {
13776 scoped_restore_current_language save_language;
13777 scoped_restore save_input_radix = make_scoped_restore (&input_radix);
13778 scoped_restore_current_pspace_and_thread restore_pspace_thread;
13779
13780 /* breakpoint_re_set_one sets the current_language to the language
13781 of the breakpoint it is resetting (see prepare_re_set_context)
13782 before re-evaluating the breakpoint's location. This change can
13783 unfortunately get undone by accident if the language_mode is set
13784 to auto, and we either switch frames, or more likely in this context,
13785 we select the current frame.
13786
13787 We prevent this by temporarily turning the language_mode to
13788 language_mode_manual. We restore it once all breakpoints
13789 have been reset. */
13790 scoped_restore save_language_mode = make_scoped_restore (&language_mode);
13791 language_mode = language_mode_manual;
13792
13793 /* Note: we must not try to insert locations until after all
13794 breakpoints have been re-set. Otherwise, e.g., when re-setting
13795 breakpoint 1, we'd insert the locations of breakpoint 2, which
13796 hadn't been re-set yet, and thus may have stale locations. */
13797
13798 ALL_BREAKPOINTS_SAFE (b, b_tmp)
13799 {
13800 try
13801 {
13802 breakpoint_re_set_one (b);
13803 }
13804 catch (const gdb_exception &ex)
13805 {
13806 exception_fprintf (gdb_stderr, ex,
13807 "Error in re-setting breakpoint %d: ",
13808 b->number);
13809 }
13810 }
13811
13812 jit_breakpoint_re_set ();
13813 }
13814
13815 create_overlay_event_breakpoint ();
13816 create_longjmp_master_breakpoint ();
13817 create_std_terminate_master_breakpoint ();
13818 create_exception_master_breakpoint ();
13819
13820 /* Now we can insert. */
13821 update_global_location_list (UGLL_MAY_INSERT);
13822 }
13823 \f
13824 /* Reset the thread number of this breakpoint:
13825
13826 - If the breakpoint is for all threads, leave it as-is.
13827 - Else, reset it to the current thread for inferior_ptid. */
13828 void
13829 breakpoint_re_set_thread (struct breakpoint *b)
13830 {
13831 if (b->thread != -1)
13832 {
13833 b->thread = inferior_thread ()->global_num;
13834
13835 /* We're being called after following a fork. The new fork is
13836 selected as current, and unless this was a vfork will have a
13837 different program space from the original thread. Reset that
13838 as well. */
13839 b->loc->pspace = current_program_space;
13840 }
13841 }
13842
13843 /* Set ignore-count of breakpoint number BPTNUM to COUNT.
13844 If from_tty is nonzero, it prints a message to that effect,
13845 which ends with a period (no newline). */
13846
13847 void
13848 set_ignore_count (int bptnum, int count, int from_tty)
13849 {
13850 struct breakpoint *b;
13851
13852 if (count < 0)
13853 count = 0;
13854
13855 ALL_BREAKPOINTS (b)
13856 if (b->number == bptnum)
13857 {
13858 if (is_tracepoint (b))
13859 {
13860 if (from_tty && count != 0)
13861 printf_filtered (_("Ignore count ignored for tracepoint %d."),
13862 bptnum);
13863 return;
13864 }
13865
13866 b->ignore_count = count;
13867 if (from_tty)
13868 {
13869 if (count == 0)
13870 printf_filtered (_("Will stop next time "
13871 "breakpoint %d is reached."),
13872 bptnum);
13873 else if (count == 1)
13874 printf_filtered (_("Will ignore next crossing of breakpoint %d."),
13875 bptnum);
13876 else
13877 printf_filtered (_("Will ignore next %d "
13878 "crossings of breakpoint %d."),
13879 count, bptnum);
13880 }
13881 gdb::observers::breakpoint_modified.notify (b);
13882 return;
13883 }
13884
13885 error (_("No breakpoint number %d."), bptnum);
13886 }
13887
13888 /* Command to set ignore-count of breakpoint N to COUNT. */
13889
13890 static void
13891 ignore_command (const char *args, int from_tty)
13892 {
13893 const char *p = args;
13894 int num;
13895
13896 if (p == 0)
13897 error_no_arg (_("a breakpoint number"));
13898
13899 num = get_number (&p);
13900 if (num == 0)
13901 error (_("bad breakpoint number: '%s'"), args);
13902 if (*p == 0)
13903 error (_("Second argument (specified ignore-count) is missing."));
13904
13905 set_ignore_count (num,
13906 longest_to_int (value_as_long (parse_and_eval (p))),
13907 from_tty);
13908 if (from_tty)
13909 printf_filtered ("\n");
13910 }
13911 \f
13912
13913 /* Call FUNCTION on each of the breakpoints with numbers in the range
13914 defined by BP_NUM_RANGE (an inclusive range). */
13915
13916 static void
13917 map_breakpoint_number_range (std::pair<int, int> bp_num_range,
13918 gdb::function_view<void (breakpoint *)> function)
13919 {
13920 if (bp_num_range.first == 0)
13921 {
13922 warning (_("bad breakpoint number at or near '%d'"),
13923 bp_num_range.first);
13924 }
13925 else
13926 {
13927 struct breakpoint *b, *tmp;
13928
13929 for (int i = bp_num_range.first; i <= bp_num_range.second; i++)
13930 {
13931 bool match = false;
13932
13933 ALL_BREAKPOINTS_SAFE (b, tmp)
13934 if (b->number == i)
13935 {
13936 match = true;
13937 function (b);
13938 break;
13939 }
13940 if (!match)
13941 printf_unfiltered (_("No breakpoint number %d.\n"), i);
13942 }
13943 }
13944 }
13945
13946 /* Call FUNCTION on each of the breakpoints whose numbers are given in
13947 ARGS. */
13948
13949 static void
13950 map_breakpoint_numbers (const char *args,
13951 gdb::function_view<void (breakpoint *)> function)
13952 {
13953 if (args == NULL || *args == '\0')
13954 error_no_arg (_("one or more breakpoint numbers"));
13955
13956 number_or_range_parser parser (args);
13957
13958 while (!parser.finished ())
13959 {
13960 int num = parser.get_number ();
13961 map_breakpoint_number_range (std::make_pair (num, num), function);
13962 }
13963 }
13964
13965 /* Return the breakpoint location structure corresponding to the
13966 BP_NUM and LOC_NUM values. */
13967
13968 static struct bp_location *
13969 find_location_by_number (int bp_num, int loc_num)
13970 {
13971 struct breakpoint *b;
13972
13973 ALL_BREAKPOINTS (b)
13974 if (b->number == bp_num)
13975 {
13976 break;
13977 }
13978
13979 if (!b || b->number != bp_num)
13980 error (_("Bad breakpoint number '%d'"), bp_num);
13981
13982 if (loc_num == 0)
13983 error (_("Bad breakpoint location number '%d'"), loc_num);
13984
13985 int n = 0;
13986 for (bp_location *loc = b->loc; loc != NULL; loc = loc->next)
13987 if (++n == loc_num)
13988 return loc;
13989
13990 error (_("Bad breakpoint location number '%d'"), loc_num);
13991 }
13992
13993 /* Modes of operation for extract_bp_num. */
13994 enum class extract_bp_kind
13995 {
13996 /* Extracting a breakpoint number. */
13997 bp,
13998
13999 /* Extracting a location number. */
14000 loc,
14001 };
14002
14003 /* Extract a breakpoint or location number (as determined by KIND)
14004 from the string starting at START. TRAILER is a character which
14005 can be found after the number. If you don't want a trailer, use
14006 '\0'. If END_OUT is not NULL, it is set to point after the parsed
14007 string. This always returns a positive integer. */
14008
14009 static int
14010 extract_bp_num (extract_bp_kind kind, const char *start,
14011 int trailer, const char **end_out = NULL)
14012 {
14013 const char *end = start;
14014 int num = get_number_trailer (&end, trailer);
14015 if (num < 0)
14016 error (kind == extract_bp_kind::bp
14017 ? _("Negative breakpoint number '%.*s'")
14018 : _("Negative breakpoint location number '%.*s'"),
14019 int (end - start), start);
14020 if (num == 0)
14021 error (kind == extract_bp_kind::bp
14022 ? _("Bad breakpoint number '%.*s'")
14023 : _("Bad breakpoint location number '%.*s'"),
14024 int (end - start), start);
14025
14026 if (end_out != NULL)
14027 *end_out = end;
14028 return num;
14029 }
14030
14031 /* Extract a breakpoint or location range (as determined by KIND) in
14032 the form NUM1-NUM2 stored at &ARG[arg_offset]. Returns a std::pair
14033 representing the (inclusive) range. The returned pair's elements
14034 are always positive integers. */
14035
14036 static std::pair<int, int>
14037 extract_bp_or_bp_range (extract_bp_kind kind,
14038 const std::string &arg,
14039 std::string::size_type arg_offset)
14040 {
14041 std::pair<int, int> range;
14042 const char *bp_loc = &arg[arg_offset];
14043 std::string::size_type dash = arg.find ('-', arg_offset);
14044 if (dash != std::string::npos)
14045 {
14046 /* bp_loc is a range (x-z). */
14047 if (arg.length () == dash + 1)
14048 error (kind == extract_bp_kind::bp
14049 ? _("Bad breakpoint number at or near: '%s'")
14050 : _("Bad breakpoint location number at or near: '%s'"),
14051 bp_loc);
14052
14053 const char *end;
14054 const char *start_first = bp_loc;
14055 const char *start_second = &arg[dash + 1];
14056 range.first = extract_bp_num (kind, start_first, '-');
14057 range.second = extract_bp_num (kind, start_second, '\0', &end);
14058
14059 if (range.first > range.second)
14060 error (kind == extract_bp_kind::bp
14061 ? _("Inverted breakpoint range at '%.*s'")
14062 : _("Inverted breakpoint location range at '%.*s'"),
14063 int (end - start_first), start_first);
14064 }
14065 else
14066 {
14067 /* bp_loc is a single value. */
14068 range.first = extract_bp_num (kind, bp_loc, '\0');
14069 range.second = range.first;
14070 }
14071 return range;
14072 }
14073
14074 /* Extract the breakpoint/location range specified by ARG. Returns
14075 the breakpoint range in BP_NUM_RANGE, and the location range in
14076 BP_LOC_RANGE.
14077
14078 ARG may be in any of the following forms:
14079
14080 x where 'x' is a breakpoint number.
14081 x-y where 'x' and 'y' specify a breakpoint numbers range.
14082 x.y where 'x' is a breakpoint number and 'y' a location number.
14083 x.y-z where 'x' is a breakpoint number and 'y' and 'z' specify a
14084 location number range.
14085 */
14086
14087 static void
14088 extract_bp_number_and_location (const std::string &arg,
14089 std::pair<int, int> &bp_num_range,
14090 std::pair<int, int> &bp_loc_range)
14091 {
14092 std::string::size_type dot = arg.find ('.');
14093
14094 if (dot != std::string::npos)
14095 {
14096 /* Handle 'x.y' and 'x.y-z' cases. */
14097
14098 if (arg.length () == dot + 1 || dot == 0)
14099 error (_("Bad breakpoint number at or near: '%s'"), arg.c_str ());
14100
14101 bp_num_range.first
14102 = extract_bp_num (extract_bp_kind::bp, arg.c_str (), '.');
14103 bp_num_range.second = bp_num_range.first;
14104
14105 bp_loc_range = extract_bp_or_bp_range (extract_bp_kind::loc,
14106 arg, dot + 1);
14107 }
14108 else
14109 {
14110 /* Handle x and x-y cases. */
14111
14112 bp_num_range = extract_bp_or_bp_range (extract_bp_kind::bp, arg, 0);
14113 bp_loc_range.first = 0;
14114 bp_loc_range.second = 0;
14115 }
14116 }
14117
14118 /* Enable or disable a breakpoint location BP_NUM.LOC_NUM. ENABLE
14119 specifies whether to enable or disable. */
14120
14121 static void
14122 enable_disable_bp_num_loc (int bp_num, int loc_num, bool enable)
14123 {
14124 struct bp_location *loc = find_location_by_number (bp_num, loc_num);
14125 if (loc != NULL)
14126 {
14127 if (loc->enabled != enable)
14128 {
14129 loc->enabled = enable;
14130 mark_breakpoint_location_modified (loc);
14131 }
14132 if (target_supports_enable_disable_tracepoint ()
14133 && current_trace_status ()->running && loc->owner
14134 && is_tracepoint (loc->owner))
14135 target_disable_tracepoint (loc);
14136 }
14137 update_global_location_list (UGLL_DONT_INSERT);
14138
14139 gdb::observers::breakpoint_modified.notify (loc->owner);
14140 }
14141
14142 /* Enable or disable a range of breakpoint locations. BP_NUM is the
14143 number of the breakpoint, and BP_LOC_RANGE specifies the
14144 (inclusive) range of location numbers of that breakpoint to
14145 enable/disable. ENABLE specifies whether to enable or disable the
14146 location. */
14147
14148 static void
14149 enable_disable_breakpoint_location_range (int bp_num,
14150 std::pair<int, int> &bp_loc_range,
14151 bool enable)
14152 {
14153 for (int i = bp_loc_range.first; i <= bp_loc_range.second; i++)
14154 enable_disable_bp_num_loc (bp_num, i, enable);
14155 }
14156
14157 /* Set ignore-count of breakpoint number BPTNUM to COUNT.
14158 If from_tty is nonzero, it prints a message to that effect,
14159 which ends with a period (no newline). */
14160
14161 void
14162 disable_breakpoint (struct breakpoint *bpt)
14163 {
14164 /* Never disable a watchpoint scope breakpoint; we want to
14165 hit them when we leave scope so we can delete both the
14166 watchpoint and its scope breakpoint at that time. */
14167 if (bpt->type == bp_watchpoint_scope)
14168 return;
14169
14170 bpt->enable_state = bp_disabled;
14171
14172 /* Mark breakpoint locations modified. */
14173 mark_breakpoint_modified (bpt);
14174
14175 if (target_supports_enable_disable_tracepoint ()
14176 && current_trace_status ()->running && is_tracepoint (bpt))
14177 {
14178 struct bp_location *location;
14179
14180 for (location = bpt->loc; location; location = location->next)
14181 target_disable_tracepoint (location);
14182 }
14183
14184 update_global_location_list (UGLL_DONT_INSERT);
14185
14186 gdb::observers::breakpoint_modified.notify (bpt);
14187 }
14188
14189 /* Enable or disable the breakpoint(s) or breakpoint location(s)
14190 specified in ARGS. ARGS may be in any of the formats handled by
14191 extract_bp_number_and_location. ENABLE specifies whether to enable
14192 or disable the breakpoints/locations. */
14193
14194 static void
14195 enable_disable_command (const char *args, int from_tty, bool enable)
14196 {
14197 if (args == 0)
14198 {
14199 struct breakpoint *bpt;
14200
14201 ALL_BREAKPOINTS (bpt)
14202 if (user_breakpoint_p (bpt))
14203 {
14204 if (enable)
14205 enable_breakpoint (bpt);
14206 else
14207 disable_breakpoint (bpt);
14208 }
14209 }
14210 else
14211 {
14212 std::string num = extract_arg (&args);
14213
14214 while (!num.empty ())
14215 {
14216 std::pair<int, int> bp_num_range, bp_loc_range;
14217
14218 extract_bp_number_and_location (num, bp_num_range, bp_loc_range);
14219
14220 if (bp_loc_range.first == bp_loc_range.second
14221 && bp_loc_range.first == 0)
14222 {
14223 /* Handle breakpoint ids with formats 'x' or 'x-z'. */
14224 map_breakpoint_number_range (bp_num_range,
14225 enable
14226 ? enable_breakpoint
14227 : disable_breakpoint);
14228 }
14229 else
14230 {
14231 /* Handle breakpoint ids with formats 'x.y' or
14232 'x.y-z'. */
14233 enable_disable_breakpoint_location_range
14234 (bp_num_range.first, bp_loc_range, enable);
14235 }
14236 num = extract_arg (&args);
14237 }
14238 }
14239 }
14240
14241 /* The disable command disables the specified breakpoints/locations
14242 (or all defined breakpoints) so they're no longer effective in
14243 stopping the inferior. ARGS may be in any of the forms defined in
14244 extract_bp_number_and_location. */
14245
14246 static void
14247 disable_command (const char *args, int from_tty)
14248 {
14249 enable_disable_command (args, from_tty, false);
14250 }
14251
14252 static void
14253 enable_breakpoint_disp (struct breakpoint *bpt, enum bpdisp disposition,
14254 int count)
14255 {
14256 int target_resources_ok;
14257
14258 if (bpt->type == bp_hardware_breakpoint)
14259 {
14260 int i;
14261 i = hw_breakpoint_used_count ();
14262 target_resources_ok =
14263 target_can_use_hardware_watchpoint (bp_hardware_breakpoint,
14264 i + 1, 0);
14265 if (target_resources_ok == 0)
14266 error (_("No hardware breakpoint support in the target."));
14267 else if (target_resources_ok < 0)
14268 error (_("Hardware breakpoints used exceeds limit."));
14269 }
14270
14271 if (is_watchpoint (bpt))
14272 {
14273 /* Initialize it just to avoid a GCC false warning. */
14274 enum enable_state orig_enable_state = bp_disabled;
14275
14276 try
14277 {
14278 struct watchpoint *w = (struct watchpoint *) bpt;
14279
14280 orig_enable_state = bpt->enable_state;
14281 bpt->enable_state = bp_enabled;
14282 update_watchpoint (w, 1 /* reparse */);
14283 }
14284 catch (const gdb_exception &e)
14285 {
14286 bpt->enable_state = orig_enable_state;
14287 exception_fprintf (gdb_stderr, e, _("Cannot enable watchpoint %d: "),
14288 bpt->number);
14289 return;
14290 }
14291 }
14292
14293 bpt->enable_state = bp_enabled;
14294
14295 /* Mark breakpoint locations modified. */
14296 mark_breakpoint_modified (bpt);
14297
14298 if (target_supports_enable_disable_tracepoint ()
14299 && current_trace_status ()->running && is_tracepoint (bpt))
14300 {
14301 struct bp_location *location;
14302
14303 for (location = bpt->loc; location; location = location->next)
14304 target_enable_tracepoint (location);
14305 }
14306
14307 bpt->disposition = disposition;
14308 bpt->enable_count = count;
14309 update_global_location_list (UGLL_MAY_INSERT);
14310
14311 gdb::observers::breakpoint_modified.notify (bpt);
14312 }
14313
14314
14315 void
14316 enable_breakpoint (struct breakpoint *bpt)
14317 {
14318 enable_breakpoint_disp (bpt, bpt->disposition, 0);
14319 }
14320
14321 /* The enable command enables the specified breakpoints/locations (or
14322 all defined breakpoints) so they once again become (or continue to
14323 be) effective in stopping the inferior. ARGS may be in any of the
14324 forms defined in extract_bp_number_and_location. */
14325
14326 static void
14327 enable_command (const char *args, int from_tty)
14328 {
14329 enable_disable_command (args, from_tty, true);
14330 }
14331
14332 static void
14333 enable_once_command (const char *args, int from_tty)
14334 {
14335 map_breakpoint_numbers
14336 (args, [&] (breakpoint *b)
14337 {
14338 iterate_over_related_breakpoints
14339 (b, [&] (breakpoint *bpt)
14340 {
14341 enable_breakpoint_disp (bpt, disp_disable, 1);
14342 });
14343 });
14344 }
14345
14346 static void
14347 enable_count_command (const char *args, int from_tty)
14348 {
14349 int count;
14350
14351 if (args == NULL)
14352 error_no_arg (_("hit count"));
14353
14354 count = get_number (&args);
14355
14356 map_breakpoint_numbers
14357 (args, [&] (breakpoint *b)
14358 {
14359 iterate_over_related_breakpoints
14360 (b, [&] (breakpoint *bpt)
14361 {
14362 enable_breakpoint_disp (bpt, disp_disable, count);
14363 });
14364 });
14365 }
14366
14367 static void
14368 enable_delete_command (const char *args, int from_tty)
14369 {
14370 map_breakpoint_numbers
14371 (args, [&] (breakpoint *b)
14372 {
14373 iterate_over_related_breakpoints
14374 (b, [&] (breakpoint *bpt)
14375 {
14376 enable_breakpoint_disp (bpt, disp_del, 1);
14377 });
14378 });
14379 }
14380 \f
14381 static void
14382 set_breakpoint_cmd (const char *args, int from_tty)
14383 {
14384 }
14385
14386 static void
14387 show_breakpoint_cmd (const char *args, int from_tty)
14388 {
14389 }
14390
14391 /* Invalidate last known value of any hardware watchpoint if
14392 the memory which that value represents has been written to by
14393 GDB itself. */
14394
14395 static void
14396 invalidate_bp_value_on_memory_change (struct inferior *inferior,
14397 CORE_ADDR addr, ssize_t len,
14398 const bfd_byte *data)
14399 {
14400 struct breakpoint *bp;
14401
14402 ALL_BREAKPOINTS (bp)
14403 if (bp->enable_state == bp_enabled
14404 && bp->type == bp_hardware_watchpoint)
14405 {
14406 struct watchpoint *wp = (struct watchpoint *) bp;
14407
14408 if (wp->val_valid && wp->val != nullptr)
14409 {
14410 struct bp_location *loc;
14411
14412 for (loc = bp->loc; loc != NULL; loc = loc->next)
14413 if (loc->loc_type == bp_loc_hardware_watchpoint
14414 && loc->address + loc->length > addr
14415 && addr + len > loc->address)
14416 {
14417 wp->val = NULL;
14418 wp->val_valid = 0;
14419 }
14420 }
14421 }
14422 }
14423
14424 /* Create and insert a breakpoint for software single step. */
14425
14426 void
14427 insert_single_step_breakpoint (struct gdbarch *gdbarch,
14428 const address_space *aspace,
14429 CORE_ADDR next_pc)
14430 {
14431 struct thread_info *tp = inferior_thread ();
14432 struct symtab_and_line sal;
14433 CORE_ADDR pc = next_pc;
14434
14435 if (tp->control.single_step_breakpoints == NULL)
14436 {
14437 tp->control.single_step_breakpoints
14438 = new_single_step_breakpoint (tp->global_num, gdbarch);
14439 }
14440
14441 sal = find_pc_line (pc, 0);
14442 sal.pc = pc;
14443 sal.section = find_pc_overlay (pc);
14444 sal.explicit_pc = 1;
14445 add_location_to_breakpoint (tp->control.single_step_breakpoints, &sal);
14446
14447 update_global_location_list (UGLL_INSERT);
14448 }
14449
14450 /* Insert single step breakpoints according to the current state. */
14451
14452 int
14453 insert_single_step_breakpoints (struct gdbarch *gdbarch)
14454 {
14455 struct regcache *regcache = get_current_regcache ();
14456 std::vector<CORE_ADDR> next_pcs;
14457
14458 next_pcs = gdbarch_software_single_step (gdbarch, regcache);
14459
14460 if (!next_pcs.empty ())
14461 {
14462 struct frame_info *frame = get_current_frame ();
14463 const address_space *aspace = get_frame_address_space (frame);
14464
14465 for (CORE_ADDR pc : next_pcs)
14466 insert_single_step_breakpoint (gdbarch, aspace, pc);
14467
14468 return 1;
14469 }
14470 else
14471 return 0;
14472 }
14473
14474 /* See breakpoint.h. */
14475
14476 int
14477 breakpoint_has_location_inserted_here (struct breakpoint *bp,
14478 const address_space *aspace,
14479 CORE_ADDR pc)
14480 {
14481 struct bp_location *loc;
14482
14483 for (loc = bp->loc; loc != NULL; loc = loc->next)
14484 if (loc->inserted
14485 && breakpoint_location_address_match (loc, aspace, pc))
14486 return 1;
14487
14488 return 0;
14489 }
14490
14491 /* Check whether a software single-step breakpoint is inserted at
14492 PC. */
14493
14494 int
14495 single_step_breakpoint_inserted_here_p (const address_space *aspace,
14496 CORE_ADDR pc)
14497 {
14498 struct breakpoint *bpt;
14499
14500 ALL_BREAKPOINTS (bpt)
14501 {
14502 if (bpt->type == bp_single_step
14503 && breakpoint_has_location_inserted_here (bpt, aspace, pc))
14504 return 1;
14505 }
14506 return 0;
14507 }
14508
14509 /* Tracepoint-specific operations. */
14510
14511 /* Set tracepoint count to NUM. */
14512 static void
14513 set_tracepoint_count (int num)
14514 {
14515 tracepoint_count = num;
14516 set_internalvar_integer (lookup_internalvar ("tpnum"), num);
14517 }
14518
14519 static void
14520 trace_command (const char *arg, int from_tty)
14521 {
14522 struct breakpoint_ops *ops;
14523
14524 event_location_up location = string_to_event_location (&arg,
14525 current_language);
14526 if (location != NULL
14527 && event_location_type (location.get ()) == PROBE_LOCATION)
14528 ops = &tracepoint_probe_breakpoint_ops;
14529 else
14530 ops = &tracepoint_breakpoint_ops;
14531
14532 create_breakpoint (get_current_arch (),
14533 location.get (),
14534 NULL, 0, arg, 1 /* parse arg */,
14535 0 /* tempflag */,
14536 bp_tracepoint /* type_wanted */,
14537 0 /* Ignore count */,
14538 pending_break_support,
14539 ops,
14540 from_tty,
14541 1 /* enabled */,
14542 0 /* internal */, 0);
14543 }
14544
14545 static void
14546 ftrace_command (const char *arg, int from_tty)
14547 {
14548 event_location_up location = string_to_event_location (&arg,
14549 current_language);
14550 create_breakpoint (get_current_arch (),
14551 location.get (),
14552 NULL, 0, arg, 1 /* parse arg */,
14553 0 /* tempflag */,
14554 bp_fast_tracepoint /* type_wanted */,
14555 0 /* Ignore count */,
14556 pending_break_support,
14557 &tracepoint_breakpoint_ops,
14558 from_tty,
14559 1 /* enabled */,
14560 0 /* internal */, 0);
14561 }
14562
14563 /* strace command implementation. Creates a static tracepoint. */
14564
14565 static void
14566 strace_command (const char *arg, int from_tty)
14567 {
14568 struct breakpoint_ops *ops;
14569 event_location_up location;
14570
14571 /* Decide if we are dealing with a static tracepoint marker (`-m'),
14572 or with a normal static tracepoint. */
14573 if (arg && startswith (arg, "-m") && isspace (arg[2]))
14574 {
14575 ops = &strace_marker_breakpoint_ops;
14576 location = new_linespec_location (&arg, symbol_name_match_type::FULL);
14577 }
14578 else
14579 {
14580 ops = &tracepoint_breakpoint_ops;
14581 location = string_to_event_location (&arg, current_language);
14582 }
14583
14584 create_breakpoint (get_current_arch (),
14585 location.get (),
14586 NULL, 0, arg, 1 /* parse arg */,
14587 0 /* tempflag */,
14588 bp_static_tracepoint /* type_wanted */,
14589 0 /* Ignore count */,
14590 pending_break_support,
14591 ops,
14592 from_tty,
14593 1 /* enabled */,
14594 0 /* internal */, 0);
14595 }
14596
14597 /* Set up a fake reader function that gets command lines from a linked
14598 list that was acquired during tracepoint uploading. */
14599
14600 static struct uploaded_tp *this_utp;
14601 static int next_cmd;
14602
14603 static char *
14604 read_uploaded_action (void)
14605 {
14606 char *rslt = nullptr;
14607
14608 if (next_cmd < this_utp->cmd_strings.size ())
14609 {
14610 rslt = this_utp->cmd_strings[next_cmd].get ();
14611 next_cmd++;
14612 }
14613
14614 return rslt;
14615 }
14616
14617 /* Given information about a tracepoint as recorded on a target (which
14618 can be either a live system or a trace file), attempt to create an
14619 equivalent GDB tracepoint. This is not a reliable process, since
14620 the target does not necessarily have all the information used when
14621 the tracepoint was originally defined. */
14622
14623 struct tracepoint *
14624 create_tracepoint_from_upload (struct uploaded_tp *utp)
14625 {
14626 const char *addr_str;
14627 char small_buf[100];
14628 struct tracepoint *tp;
14629
14630 if (utp->at_string)
14631 addr_str = utp->at_string.get ();
14632 else
14633 {
14634 /* In the absence of a source location, fall back to raw
14635 address. Since there is no way to confirm that the address
14636 means the same thing as when the trace was started, warn the
14637 user. */
14638 warning (_("Uploaded tracepoint %d has no "
14639 "source location, using raw address"),
14640 utp->number);
14641 xsnprintf (small_buf, sizeof (small_buf), "*%s", hex_string (utp->addr));
14642 addr_str = small_buf;
14643 }
14644
14645 /* There's not much we can do with a sequence of bytecodes. */
14646 if (utp->cond && !utp->cond_string)
14647 warning (_("Uploaded tracepoint %d condition "
14648 "has no source form, ignoring it"),
14649 utp->number);
14650
14651 event_location_up location = string_to_event_location (&addr_str,
14652 current_language);
14653 if (!create_breakpoint (get_current_arch (),
14654 location.get (),
14655 utp->cond_string.get (), -1, addr_str,
14656 0 /* parse cond/thread */,
14657 0 /* tempflag */,
14658 utp->type /* type_wanted */,
14659 0 /* Ignore count */,
14660 pending_break_support,
14661 &tracepoint_breakpoint_ops,
14662 0 /* from_tty */,
14663 utp->enabled /* enabled */,
14664 0 /* internal */,
14665 CREATE_BREAKPOINT_FLAGS_INSERTED))
14666 return NULL;
14667
14668 /* Get the tracepoint we just created. */
14669 tp = get_tracepoint (tracepoint_count);
14670 gdb_assert (tp != NULL);
14671
14672 if (utp->pass > 0)
14673 {
14674 xsnprintf (small_buf, sizeof (small_buf), "%d %d", utp->pass,
14675 tp->number);
14676
14677 trace_pass_command (small_buf, 0);
14678 }
14679
14680 /* If we have uploaded versions of the original commands, set up a
14681 special-purpose "reader" function and call the usual command line
14682 reader, then pass the result to the breakpoint command-setting
14683 function. */
14684 if (!utp->cmd_strings.empty ())
14685 {
14686 counted_command_line cmd_list;
14687
14688 this_utp = utp;
14689 next_cmd = 0;
14690
14691 cmd_list = read_command_lines_1 (read_uploaded_action, 1, NULL);
14692
14693 breakpoint_set_commands (tp, std::move (cmd_list));
14694 }
14695 else if (!utp->actions.empty ()
14696 || !utp->step_actions.empty ())
14697 warning (_("Uploaded tracepoint %d actions "
14698 "have no source form, ignoring them"),
14699 utp->number);
14700
14701 /* Copy any status information that might be available. */
14702 tp->hit_count = utp->hit_count;
14703 tp->traceframe_usage = utp->traceframe_usage;
14704
14705 return tp;
14706 }
14707
14708 /* Print information on tracepoint number TPNUM_EXP, or all if
14709 omitted. */
14710
14711 static void
14712 info_tracepoints_command (const char *args, int from_tty)
14713 {
14714 struct ui_out *uiout = current_uiout;
14715 int num_printed;
14716
14717 num_printed = breakpoint_1 (args, 0, is_tracepoint);
14718
14719 if (num_printed == 0)
14720 {
14721 if (args == NULL || *args == '\0')
14722 uiout->message ("No tracepoints.\n");
14723 else
14724 uiout->message ("No tracepoint matching '%s'.\n", args);
14725 }
14726
14727 default_collect_info ();
14728 }
14729
14730 /* The 'enable trace' command enables tracepoints.
14731 Not supported by all targets. */
14732 static void
14733 enable_trace_command (const char *args, int from_tty)
14734 {
14735 enable_command (args, from_tty);
14736 }
14737
14738 /* The 'disable trace' command disables tracepoints.
14739 Not supported by all targets. */
14740 static void
14741 disable_trace_command (const char *args, int from_tty)
14742 {
14743 disable_command (args, from_tty);
14744 }
14745
14746 /* Remove a tracepoint (or all if no argument). */
14747 static void
14748 delete_trace_command (const char *arg, int from_tty)
14749 {
14750 struct breakpoint *b, *b_tmp;
14751
14752 dont_repeat ();
14753
14754 if (arg == 0)
14755 {
14756 int breaks_to_delete = 0;
14757
14758 /* Delete all breakpoints if no argument.
14759 Do not delete internal or call-dummy breakpoints, these
14760 have to be deleted with an explicit breakpoint number
14761 argument. */
14762 ALL_TRACEPOINTS (b)
14763 if (is_tracepoint (b) && user_breakpoint_p (b))
14764 {
14765 breaks_to_delete = 1;
14766 break;
14767 }
14768
14769 /* Ask user only if there are some breakpoints to delete. */
14770 if (!from_tty
14771 || (breaks_to_delete && query (_("Delete all tracepoints? "))))
14772 {
14773 ALL_BREAKPOINTS_SAFE (b, b_tmp)
14774 if (is_tracepoint (b) && user_breakpoint_p (b))
14775 delete_breakpoint (b);
14776 }
14777 }
14778 else
14779 map_breakpoint_numbers
14780 (arg, [&] (breakpoint *br)
14781 {
14782 iterate_over_related_breakpoints (br, delete_breakpoint);
14783 });
14784 }
14785
14786 /* Helper function for trace_pass_command. */
14787
14788 static void
14789 trace_pass_set_count (struct tracepoint *tp, int count, int from_tty)
14790 {
14791 tp->pass_count = count;
14792 gdb::observers::breakpoint_modified.notify (tp);
14793 if (from_tty)
14794 printf_filtered (_("Setting tracepoint %d's passcount to %d\n"),
14795 tp->number, count);
14796 }
14797
14798 /* Set passcount for tracepoint.
14799
14800 First command argument is passcount, second is tracepoint number.
14801 If tracepoint number omitted, apply to most recently defined.
14802 Also accepts special argument "all". */
14803
14804 static void
14805 trace_pass_command (const char *args, int from_tty)
14806 {
14807 struct tracepoint *t1;
14808 ULONGEST count;
14809
14810 if (args == 0 || *args == 0)
14811 error (_("passcount command requires an "
14812 "argument (count + optional TP num)"));
14813
14814 count = strtoulst (args, &args, 10); /* Count comes first, then TP num. */
14815
14816 args = skip_spaces (args);
14817 if (*args && strncasecmp (args, "all", 3) == 0)
14818 {
14819 struct breakpoint *b;
14820
14821 args += 3; /* Skip special argument "all". */
14822 if (*args)
14823 error (_("Junk at end of arguments."));
14824
14825 ALL_TRACEPOINTS (b)
14826 {
14827 t1 = (struct tracepoint *) b;
14828 trace_pass_set_count (t1, count, from_tty);
14829 }
14830 }
14831 else if (*args == '\0')
14832 {
14833 t1 = get_tracepoint_by_number (&args, NULL);
14834 if (t1)
14835 trace_pass_set_count (t1, count, from_tty);
14836 }
14837 else
14838 {
14839 number_or_range_parser parser (args);
14840 while (!parser.finished ())
14841 {
14842 t1 = get_tracepoint_by_number (&args, &parser);
14843 if (t1)
14844 trace_pass_set_count (t1, count, from_tty);
14845 }
14846 }
14847 }
14848
14849 struct tracepoint *
14850 get_tracepoint (int num)
14851 {
14852 struct breakpoint *t;
14853
14854 ALL_TRACEPOINTS (t)
14855 if (t->number == num)
14856 return (struct tracepoint *) t;
14857
14858 return NULL;
14859 }
14860
14861 /* Find the tracepoint with the given target-side number (which may be
14862 different from the tracepoint number after disconnecting and
14863 reconnecting). */
14864
14865 struct tracepoint *
14866 get_tracepoint_by_number_on_target (int num)
14867 {
14868 struct breakpoint *b;
14869
14870 ALL_TRACEPOINTS (b)
14871 {
14872 struct tracepoint *t = (struct tracepoint *) b;
14873
14874 if (t->number_on_target == num)
14875 return t;
14876 }
14877
14878 return NULL;
14879 }
14880
14881 /* Utility: parse a tracepoint number and look it up in the list.
14882 If STATE is not NULL, use, get_number_or_range_state and ignore ARG.
14883 If the argument is missing, the most recent tracepoint
14884 (tracepoint_count) is returned. */
14885
14886 struct tracepoint *
14887 get_tracepoint_by_number (const char **arg,
14888 number_or_range_parser *parser)
14889 {
14890 struct breakpoint *t;
14891 int tpnum;
14892 const char *instring = arg == NULL ? NULL : *arg;
14893
14894 if (parser != NULL)
14895 {
14896 gdb_assert (!parser->finished ());
14897 tpnum = parser->get_number ();
14898 }
14899 else if (arg == NULL || *arg == NULL || ! **arg)
14900 tpnum = tracepoint_count;
14901 else
14902 tpnum = get_number (arg);
14903
14904 if (tpnum <= 0)
14905 {
14906 if (instring && *instring)
14907 printf_filtered (_("bad tracepoint number at or near '%s'\n"),
14908 instring);
14909 else
14910 printf_filtered (_("No previous tracepoint\n"));
14911 return NULL;
14912 }
14913
14914 ALL_TRACEPOINTS (t)
14915 if (t->number == tpnum)
14916 {
14917 return (struct tracepoint *) t;
14918 }
14919
14920 printf_unfiltered ("No tracepoint number %d.\n", tpnum);
14921 return NULL;
14922 }
14923
14924 void
14925 print_recreate_thread (struct breakpoint *b, struct ui_file *fp)
14926 {
14927 if (b->thread != -1)
14928 fprintf_unfiltered (fp, " thread %d", b->thread);
14929
14930 if (b->task != 0)
14931 fprintf_unfiltered (fp, " task %d", b->task);
14932
14933 fprintf_unfiltered (fp, "\n");
14934 }
14935
14936 /* Save information on user settable breakpoints (watchpoints, etc) to
14937 a new script file named FILENAME. If FILTER is non-NULL, call it
14938 on each breakpoint and only include the ones for which it returns
14939 non-zero. */
14940
14941 static void
14942 save_breakpoints (const char *filename, int from_tty,
14943 int (*filter) (const struct breakpoint *))
14944 {
14945 struct breakpoint *tp;
14946 int any = 0;
14947 int extra_trace_bits = 0;
14948
14949 if (filename == 0 || *filename == 0)
14950 error (_("Argument required (file name in which to save)"));
14951
14952 /* See if we have anything to save. */
14953 ALL_BREAKPOINTS (tp)
14954 {
14955 /* Skip internal and momentary breakpoints. */
14956 if (!user_breakpoint_p (tp))
14957 continue;
14958
14959 /* If we have a filter, only save the breakpoints it accepts. */
14960 if (filter && !filter (tp))
14961 continue;
14962
14963 any = 1;
14964
14965 if (is_tracepoint (tp))
14966 {
14967 extra_trace_bits = 1;
14968
14969 /* We can stop searching. */
14970 break;
14971 }
14972 }
14973
14974 if (!any)
14975 {
14976 warning (_("Nothing to save."));
14977 return;
14978 }
14979
14980 gdb::unique_xmalloc_ptr<char> expanded_filename (tilde_expand (filename));
14981
14982 stdio_file fp;
14983
14984 if (!fp.open (expanded_filename.get (), "w"))
14985 error (_("Unable to open file '%s' for saving (%s)"),
14986 expanded_filename.get (), safe_strerror (errno));
14987
14988 if (extra_trace_bits)
14989 save_trace_state_variables (&fp);
14990
14991 ALL_BREAKPOINTS (tp)
14992 {
14993 /* Skip internal and momentary breakpoints. */
14994 if (!user_breakpoint_p (tp))
14995 continue;
14996
14997 /* If we have a filter, only save the breakpoints it accepts. */
14998 if (filter && !filter (tp))
14999 continue;
15000
15001 tp->ops->print_recreate (tp, &fp);
15002
15003 /* Note, we can't rely on tp->number for anything, as we can't
15004 assume the recreated breakpoint numbers will match. Use $bpnum
15005 instead. */
15006
15007 if (tp->cond_string)
15008 fp.printf (" condition $bpnum %s\n", tp->cond_string);
15009
15010 if (tp->ignore_count)
15011 fp.printf (" ignore $bpnum %d\n", tp->ignore_count);
15012
15013 if (tp->type != bp_dprintf && tp->commands)
15014 {
15015 fp.puts (" commands\n");
15016
15017 current_uiout->redirect (&fp);
15018 try
15019 {
15020 print_command_lines (current_uiout, tp->commands.get (), 2);
15021 }
15022 catch (const gdb_exception &ex)
15023 {
15024 current_uiout->redirect (NULL);
15025 throw;
15026 }
15027
15028 current_uiout->redirect (NULL);
15029 fp.puts (" end\n");
15030 }
15031
15032 if (tp->enable_state == bp_disabled)
15033 fp.puts ("disable $bpnum\n");
15034
15035 /* If this is a multi-location breakpoint, check if the locations
15036 should be individually disabled. Watchpoint locations are
15037 special, and not user visible. */
15038 if (!is_watchpoint (tp) && tp->loc && tp->loc->next)
15039 {
15040 struct bp_location *loc;
15041 int n = 1;
15042
15043 for (loc = tp->loc; loc != NULL; loc = loc->next, n++)
15044 if (!loc->enabled)
15045 fp.printf ("disable $bpnum.%d\n", n);
15046 }
15047 }
15048
15049 if (extra_trace_bits && *default_collect)
15050 fp.printf ("set default-collect %s\n", default_collect);
15051
15052 if (from_tty)
15053 printf_filtered (_("Saved to file '%s'.\n"), expanded_filename.get ());
15054 }
15055
15056 /* The `save breakpoints' command. */
15057
15058 static void
15059 save_breakpoints_command (const char *args, int from_tty)
15060 {
15061 save_breakpoints (args, from_tty, NULL);
15062 }
15063
15064 /* The `save tracepoints' command. */
15065
15066 static void
15067 save_tracepoints_command (const char *args, int from_tty)
15068 {
15069 save_breakpoints (args, from_tty, is_tracepoint);
15070 }
15071
15072 /* Create a vector of all tracepoints. */
15073
15074 std::vector<breakpoint *>
15075 all_tracepoints (void)
15076 {
15077 std::vector<breakpoint *> tp_vec;
15078 struct breakpoint *tp;
15079
15080 ALL_TRACEPOINTS (tp)
15081 {
15082 tp_vec.push_back (tp);
15083 }
15084
15085 return tp_vec;
15086 }
15087
15088 \f
15089 /* This help string is used to consolidate all the help string for specifying
15090 locations used by several commands. */
15091
15092 #define LOCATION_HELP_STRING \
15093 "Linespecs are colon-separated lists of location parameters, such as\n\
15094 source filename, function name, label name, and line number.\n\
15095 Example: To specify the start of a label named \"the_top\" in the\n\
15096 function \"fact\" in the file \"factorial.c\", use\n\
15097 \"factorial.c:fact:the_top\".\n\
15098 \n\
15099 Address locations begin with \"*\" and specify an exact address in the\n\
15100 program. Example: To specify the fourth byte past the start function\n\
15101 \"main\", use \"*main + 4\".\n\
15102 \n\
15103 Explicit locations are similar to linespecs but use an option/argument\n\
15104 syntax to specify location parameters.\n\
15105 Example: To specify the start of the label named \"the_top\" in the\n\
15106 function \"fact\" in the file \"factorial.c\", use \"-source factorial.c\n\
15107 -function fact -label the_top\".\n\
15108 \n\
15109 By default, a specified function is matched against the program's\n\
15110 functions in all scopes. For C++, this means in all namespaces and\n\
15111 classes. For Ada, this means in all packages. E.g., in C++,\n\
15112 \"func()\" matches \"A::func()\", \"A::B::func()\", etc. The\n\
15113 \"-qualified\" flag overrides this behavior, making GDB interpret the\n\
15114 specified name as a complete fully-qualified name instead."
15115
15116 /* This help string is used for the break, hbreak, tbreak and thbreak
15117 commands. It is defined as a macro to prevent duplication.
15118 COMMAND should be a string constant containing the name of the
15119 command. */
15120
15121 #define BREAK_ARGS_HELP(command) \
15122 command" [PROBE_MODIFIER] [LOCATION] [thread THREADNUM] [if CONDITION]\n\
15123 PROBE_MODIFIER shall be present if the command is to be placed in a\n\
15124 probe point. Accepted values are `-probe' (for a generic, automatically\n\
15125 guessed probe type), `-probe-stap' (for a SystemTap probe) or \n\
15126 `-probe-dtrace' (for a DTrace probe).\n\
15127 LOCATION may be a linespec, address, or explicit location as described\n\
15128 below.\n\
15129 \n\
15130 With no LOCATION, uses current execution address of the selected\n\
15131 stack frame. This is useful for breaking on return to a stack frame.\n\
15132 \n\
15133 THREADNUM is the number from \"info threads\".\n\
15134 CONDITION is a boolean expression.\n\
15135 \n" LOCATION_HELP_STRING "\n\n\
15136 Multiple breakpoints at one place are permitted, and useful if their\n\
15137 conditions are different.\n\
15138 \n\
15139 Do \"help breakpoints\" for info on other commands dealing with breakpoints."
15140
15141 /* List of subcommands for "catch". */
15142 static struct cmd_list_element *catch_cmdlist;
15143
15144 /* List of subcommands for "tcatch". */
15145 static struct cmd_list_element *tcatch_cmdlist;
15146
15147 void
15148 add_catch_command (const char *name, const char *docstring,
15149 cmd_const_sfunc_ftype *sfunc,
15150 completer_ftype *completer,
15151 void *user_data_catch,
15152 void *user_data_tcatch)
15153 {
15154 struct cmd_list_element *command;
15155
15156 command = add_cmd (name, class_breakpoint, docstring,
15157 &catch_cmdlist);
15158 set_cmd_sfunc (command, sfunc);
15159 set_cmd_context (command, user_data_catch);
15160 set_cmd_completer (command, completer);
15161
15162 command = add_cmd (name, class_breakpoint, docstring,
15163 &tcatch_cmdlist);
15164 set_cmd_sfunc (command, sfunc);
15165 set_cmd_context (command, user_data_tcatch);
15166 set_cmd_completer (command, completer);
15167 }
15168
15169 static void
15170 save_command (const char *arg, int from_tty)
15171 {
15172 printf_unfiltered (_("\"save\" must be followed by "
15173 "the name of a save subcommand.\n"));
15174 help_list (save_cmdlist, "save ", all_commands, gdb_stdout);
15175 }
15176
15177 struct breakpoint *
15178 iterate_over_breakpoints (int (*callback) (struct breakpoint *, void *),
15179 void *data)
15180 {
15181 struct breakpoint *b, *b_tmp;
15182
15183 ALL_BREAKPOINTS_SAFE (b, b_tmp)
15184 {
15185 if ((*callback) (b, data))
15186 return b;
15187 }
15188
15189 return NULL;
15190 }
15191
15192 /* Zero if any of the breakpoint's locations could be a location where
15193 functions have been inlined, nonzero otherwise. */
15194
15195 static int
15196 is_non_inline_function (struct breakpoint *b)
15197 {
15198 /* The shared library event breakpoint is set on the address of a
15199 non-inline function. */
15200 if (b->type == bp_shlib_event)
15201 return 1;
15202
15203 return 0;
15204 }
15205
15206 /* Nonzero if the specified PC cannot be a location where functions
15207 have been inlined. */
15208
15209 int
15210 pc_at_non_inline_function (const address_space *aspace, CORE_ADDR pc,
15211 const struct target_waitstatus *ws)
15212 {
15213 struct breakpoint *b;
15214 struct bp_location *bl;
15215
15216 ALL_BREAKPOINTS (b)
15217 {
15218 if (!is_non_inline_function (b))
15219 continue;
15220
15221 for (bl = b->loc; bl != NULL; bl = bl->next)
15222 {
15223 if (!bl->shlib_disabled
15224 && bpstat_check_location (bl, aspace, pc, ws))
15225 return 1;
15226 }
15227 }
15228
15229 return 0;
15230 }
15231
15232 /* Remove any references to OBJFILE which is going to be freed. */
15233
15234 void
15235 breakpoint_free_objfile (struct objfile *objfile)
15236 {
15237 struct bp_location **locp, *loc;
15238
15239 ALL_BP_LOCATIONS (loc, locp)
15240 if (loc->symtab != NULL && SYMTAB_OBJFILE (loc->symtab) == objfile)
15241 loc->symtab = NULL;
15242 }
15243
15244 void
15245 initialize_breakpoint_ops (void)
15246 {
15247 static int initialized = 0;
15248
15249 struct breakpoint_ops *ops;
15250
15251 if (initialized)
15252 return;
15253 initialized = 1;
15254
15255 /* The breakpoint_ops structure to be inherit by all kinds of
15256 breakpoints (real breakpoints, i.e., user "break" breakpoints,
15257 internal and momentary breakpoints, etc.). */
15258 ops = &bkpt_base_breakpoint_ops;
15259 *ops = base_breakpoint_ops;
15260 ops->re_set = bkpt_re_set;
15261 ops->insert_location = bkpt_insert_location;
15262 ops->remove_location = bkpt_remove_location;
15263 ops->breakpoint_hit = bkpt_breakpoint_hit;
15264 ops->create_sals_from_location = bkpt_create_sals_from_location;
15265 ops->create_breakpoints_sal = bkpt_create_breakpoints_sal;
15266 ops->decode_location = bkpt_decode_location;
15267
15268 /* The breakpoint_ops structure to be used in regular breakpoints. */
15269 ops = &bkpt_breakpoint_ops;
15270 *ops = bkpt_base_breakpoint_ops;
15271 ops->re_set = bkpt_re_set;
15272 ops->resources_needed = bkpt_resources_needed;
15273 ops->print_it = bkpt_print_it;
15274 ops->print_mention = bkpt_print_mention;
15275 ops->print_recreate = bkpt_print_recreate;
15276
15277 /* Ranged breakpoints. */
15278 ops = &ranged_breakpoint_ops;
15279 *ops = bkpt_breakpoint_ops;
15280 ops->breakpoint_hit = breakpoint_hit_ranged_breakpoint;
15281 ops->resources_needed = resources_needed_ranged_breakpoint;
15282 ops->print_it = print_it_ranged_breakpoint;
15283 ops->print_one = print_one_ranged_breakpoint;
15284 ops->print_one_detail = print_one_detail_ranged_breakpoint;
15285 ops->print_mention = print_mention_ranged_breakpoint;
15286 ops->print_recreate = print_recreate_ranged_breakpoint;
15287
15288 /* Internal breakpoints. */
15289 ops = &internal_breakpoint_ops;
15290 *ops = bkpt_base_breakpoint_ops;
15291 ops->re_set = internal_bkpt_re_set;
15292 ops->check_status = internal_bkpt_check_status;
15293 ops->print_it = internal_bkpt_print_it;
15294 ops->print_mention = internal_bkpt_print_mention;
15295
15296 /* Momentary breakpoints. */
15297 ops = &momentary_breakpoint_ops;
15298 *ops = bkpt_base_breakpoint_ops;
15299 ops->re_set = momentary_bkpt_re_set;
15300 ops->check_status = momentary_bkpt_check_status;
15301 ops->print_it = momentary_bkpt_print_it;
15302 ops->print_mention = momentary_bkpt_print_mention;
15303
15304 /* Probe breakpoints. */
15305 ops = &bkpt_probe_breakpoint_ops;
15306 *ops = bkpt_breakpoint_ops;
15307 ops->insert_location = bkpt_probe_insert_location;
15308 ops->remove_location = bkpt_probe_remove_location;
15309 ops->create_sals_from_location = bkpt_probe_create_sals_from_location;
15310 ops->decode_location = bkpt_probe_decode_location;
15311
15312 /* Watchpoints. */
15313 ops = &watchpoint_breakpoint_ops;
15314 *ops = base_breakpoint_ops;
15315 ops->re_set = re_set_watchpoint;
15316 ops->insert_location = insert_watchpoint;
15317 ops->remove_location = remove_watchpoint;
15318 ops->breakpoint_hit = breakpoint_hit_watchpoint;
15319 ops->check_status = check_status_watchpoint;
15320 ops->resources_needed = resources_needed_watchpoint;
15321 ops->works_in_software_mode = works_in_software_mode_watchpoint;
15322 ops->print_it = print_it_watchpoint;
15323 ops->print_mention = print_mention_watchpoint;
15324 ops->print_recreate = print_recreate_watchpoint;
15325 ops->explains_signal = explains_signal_watchpoint;
15326
15327 /* Masked watchpoints. */
15328 ops = &masked_watchpoint_breakpoint_ops;
15329 *ops = watchpoint_breakpoint_ops;
15330 ops->insert_location = insert_masked_watchpoint;
15331 ops->remove_location = remove_masked_watchpoint;
15332 ops->resources_needed = resources_needed_masked_watchpoint;
15333 ops->works_in_software_mode = works_in_software_mode_masked_watchpoint;
15334 ops->print_it = print_it_masked_watchpoint;
15335 ops->print_one_detail = print_one_detail_masked_watchpoint;
15336 ops->print_mention = print_mention_masked_watchpoint;
15337 ops->print_recreate = print_recreate_masked_watchpoint;
15338
15339 /* Tracepoints. */
15340 ops = &tracepoint_breakpoint_ops;
15341 *ops = base_breakpoint_ops;
15342 ops->re_set = tracepoint_re_set;
15343 ops->breakpoint_hit = tracepoint_breakpoint_hit;
15344 ops->print_one_detail = tracepoint_print_one_detail;
15345 ops->print_mention = tracepoint_print_mention;
15346 ops->print_recreate = tracepoint_print_recreate;
15347 ops->create_sals_from_location = tracepoint_create_sals_from_location;
15348 ops->create_breakpoints_sal = tracepoint_create_breakpoints_sal;
15349 ops->decode_location = tracepoint_decode_location;
15350
15351 /* Probe tracepoints. */
15352 ops = &tracepoint_probe_breakpoint_ops;
15353 *ops = tracepoint_breakpoint_ops;
15354 ops->create_sals_from_location = tracepoint_probe_create_sals_from_location;
15355 ops->decode_location = tracepoint_probe_decode_location;
15356
15357 /* Static tracepoints with marker (`-m'). */
15358 ops = &strace_marker_breakpoint_ops;
15359 *ops = tracepoint_breakpoint_ops;
15360 ops->create_sals_from_location = strace_marker_create_sals_from_location;
15361 ops->create_breakpoints_sal = strace_marker_create_breakpoints_sal;
15362 ops->decode_location = strace_marker_decode_location;
15363
15364 /* Fork catchpoints. */
15365 ops = &catch_fork_breakpoint_ops;
15366 *ops = base_breakpoint_ops;
15367 ops->insert_location = insert_catch_fork;
15368 ops->remove_location = remove_catch_fork;
15369 ops->breakpoint_hit = breakpoint_hit_catch_fork;
15370 ops->print_it = print_it_catch_fork;
15371 ops->print_one = print_one_catch_fork;
15372 ops->print_mention = print_mention_catch_fork;
15373 ops->print_recreate = print_recreate_catch_fork;
15374
15375 /* Vfork catchpoints. */
15376 ops = &catch_vfork_breakpoint_ops;
15377 *ops = base_breakpoint_ops;
15378 ops->insert_location = insert_catch_vfork;
15379 ops->remove_location = remove_catch_vfork;
15380 ops->breakpoint_hit = breakpoint_hit_catch_vfork;
15381 ops->print_it = print_it_catch_vfork;
15382 ops->print_one = print_one_catch_vfork;
15383 ops->print_mention = print_mention_catch_vfork;
15384 ops->print_recreate = print_recreate_catch_vfork;
15385
15386 /* Exec catchpoints. */
15387 ops = &catch_exec_breakpoint_ops;
15388 *ops = base_breakpoint_ops;
15389 ops->insert_location = insert_catch_exec;
15390 ops->remove_location = remove_catch_exec;
15391 ops->breakpoint_hit = breakpoint_hit_catch_exec;
15392 ops->print_it = print_it_catch_exec;
15393 ops->print_one = print_one_catch_exec;
15394 ops->print_mention = print_mention_catch_exec;
15395 ops->print_recreate = print_recreate_catch_exec;
15396
15397 /* Solib-related catchpoints. */
15398 ops = &catch_solib_breakpoint_ops;
15399 *ops = base_breakpoint_ops;
15400 ops->insert_location = insert_catch_solib;
15401 ops->remove_location = remove_catch_solib;
15402 ops->breakpoint_hit = breakpoint_hit_catch_solib;
15403 ops->check_status = check_status_catch_solib;
15404 ops->print_it = print_it_catch_solib;
15405 ops->print_one = print_one_catch_solib;
15406 ops->print_mention = print_mention_catch_solib;
15407 ops->print_recreate = print_recreate_catch_solib;
15408
15409 ops = &dprintf_breakpoint_ops;
15410 *ops = bkpt_base_breakpoint_ops;
15411 ops->re_set = dprintf_re_set;
15412 ops->resources_needed = bkpt_resources_needed;
15413 ops->print_it = bkpt_print_it;
15414 ops->print_mention = bkpt_print_mention;
15415 ops->print_recreate = dprintf_print_recreate;
15416 ops->after_condition_true = dprintf_after_condition_true;
15417 ops->breakpoint_hit = dprintf_breakpoint_hit;
15418 }
15419
15420 /* Chain containing all defined "enable breakpoint" subcommands. */
15421
15422 static struct cmd_list_element *enablebreaklist = NULL;
15423
15424 /* See breakpoint.h. */
15425
15426 cmd_list_element *commands_cmd_element = nullptr;
15427
15428 void
15429 _initialize_breakpoint (void)
15430 {
15431 struct cmd_list_element *c;
15432
15433 initialize_breakpoint_ops ();
15434
15435 gdb::observers::solib_unloaded.attach (disable_breakpoints_in_unloaded_shlib);
15436 gdb::observers::free_objfile.attach (disable_breakpoints_in_freed_objfile);
15437 gdb::observers::memory_changed.attach (invalidate_bp_value_on_memory_change);
15438
15439 breakpoint_chain = 0;
15440 /* Don't bother to call set_breakpoint_count. $bpnum isn't useful
15441 before a breakpoint is set. */
15442 breakpoint_count = 0;
15443
15444 tracepoint_count = 0;
15445
15446 add_com ("ignore", class_breakpoint, ignore_command, _("\
15447 Set ignore-count of breakpoint number N to COUNT.\n\
15448 Usage is `ignore N COUNT'."));
15449
15450 commands_cmd_element = add_com ("commands", class_breakpoint,
15451 commands_command, _("\
15452 Set commands to be executed when the given breakpoints are hit.\n\
15453 Give a space-separated breakpoint list as argument after \"commands\".\n\
15454 A list element can be a breakpoint number (e.g. `5') or a range of numbers\n\
15455 (e.g. `5-7').\n\
15456 With no argument, the targeted breakpoint is the last one set.\n\
15457 The commands themselves follow starting on the next line.\n\
15458 Type a line containing \"end\" to indicate the end of them.\n\
15459 Give \"silent\" as the first line to make the breakpoint silent;\n\
15460 then no output is printed when it is hit, except what the commands print."));
15461
15462 c = add_com ("condition", class_breakpoint, condition_command, _("\
15463 Specify breakpoint number N to break only if COND is true.\n\
15464 Usage is `condition N COND', where N is an integer and COND is an\n\
15465 expression to be evaluated whenever breakpoint N is reached."));
15466 set_cmd_completer (c, condition_completer);
15467
15468 c = add_com ("tbreak", class_breakpoint, tbreak_command, _("\
15469 Set a temporary breakpoint.\n\
15470 Like \"break\" except the breakpoint is only temporary,\n\
15471 so it will be deleted when hit. Equivalent to \"break\" followed\n\
15472 by using \"enable delete\" on the breakpoint number.\n\
15473 \n"
15474 BREAK_ARGS_HELP ("tbreak")));
15475 set_cmd_completer (c, location_completer);
15476
15477 c = add_com ("hbreak", class_breakpoint, hbreak_command, _("\
15478 Set a hardware assisted breakpoint.\n\
15479 Like \"break\" except the breakpoint requires hardware support,\n\
15480 some target hardware may not have this support.\n\
15481 \n"
15482 BREAK_ARGS_HELP ("hbreak")));
15483 set_cmd_completer (c, location_completer);
15484
15485 c = add_com ("thbreak", class_breakpoint, thbreak_command, _("\
15486 Set a temporary hardware assisted breakpoint.\n\
15487 Like \"hbreak\" except the breakpoint is only temporary,\n\
15488 so it will be deleted when hit.\n\
15489 \n"
15490 BREAK_ARGS_HELP ("thbreak")));
15491 set_cmd_completer (c, location_completer);
15492
15493 add_prefix_cmd ("enable", class_breakpoint, enable_command, _("\
15494 Enable some breakpoints.\n\
15495 Give breakpoint numbers (separated by spaces) as arguments.\n\
15496 With no subcommand, breakpoints are enabled until you command otherwise.\n\
15497 This is used to cancel the effect of the \"disable\" command.\n\
15498 With a subcommand you can enable temporarily."),
15499 &enablelist, "enable ", 1, &cmdlist);
15500
15501 add_com_alias ("en", "enable", class_breakpoint, 1);
15502
15503 add_prefix_cmd ("breakpoints", class_breakpoint, enable_command, _("\
15504 Enable some breakpoints.\n\
15505 Give breakpoint numbers (separated by spaces) as arguments.\n\
15506 This is used to cancel the effect of the \"disable\" command.\n\
15507 May be abbreviated to simply \"enable\"."),
15508 &enablebreaklist, "enable breakpoints ", 1, &enablelist);
15509
15510 add_cmd ("once", no_class, enable_once_command, _("\
15511 Enable breakpoints for one hit. Give breakpoint numbers.\n\
15512 If a breakpoint is hit while enabled in this fashion, it becomes disabled."),
15513 &enablebreaklist);
15514
15515 add_cmd ("delete", no_class, enable_delete_command, _("\
15516 Enable breakpoints and delete when hit. Give breakpoint numbers.\n\
15517 If a breakpoint is hit while enabled in this fashion, it is deleted."),
15518 &enablebreaklist);
15519
15520 add_cmd ("count", no_class, enable_count_command, _("\
15521 Enable breakpoints for COUNT hits. Give count and then breakpoint numbers.\n\
15522 If a breakpoint is hit while enabled in this fashion,\n\
15523 the count is decremented; when it reaches zero, the breakpoint is disabled."),
15524 &enablebreaklist);
15525
15526 add_cmd ("delete", no_class, enable_delete_command, _("\
15527 Enable breakpoints and delete when hit. Give breakpoint numbers.\n\
15528 If a breakpoint is hit while enabled in this fashion, it is deleted."),
15529 &enablelist);
15530
15531 add_cmd ("once", no_class, enable_once_command, _("\
15532 Enable breakpoints for one hit. Give breakpoint numbers.\n\
15533 If a breakpoint is hit while enabled in this fashion, it becomes disabled."),
15534 &enablelist);
15535
15536 add_cmd ("count", no_class, enable_count_command, _("\
15537 Enable breakpoints for COUNT hits. Give count and then breakpoint numbers.\n\
15538 If a breakpoint is hit while enabled in this fashion,\n\
15539 the count is decremented; when it reaches zero, the breakpoint is disabled."),
15540 &enablelist);
15541
15542 add_prefix_cmd ("disable", class_breakpoint, disable_command, _("\
15543 Disable some breakpoints.\n\
15544 Arguments are breakpoint numbers with spaces in between.\n\
15545 To disable all breakpoints, give no argument.\n\
15546 A disabled breakpoint is not forgotten, but has no effect until re-enabled."),
15547 &disablelist, "disable ", 1, &cmdlist);
15548 add_com_alias ("dis", "disable", class_breakpoint, 1);
15549 add_com_alias ("disa", "disable", class_breakpoint, 1);
15550
15551 add_cmd ("breakpoints", class_alias, disable_command, _("\
15552 Disable some breakpoints.\n\
15553 Arguments are breakpoint numbers with spaces in between.\n\
15554 To disable all breakpoints, give no argument.\n\
15555 A disabled breakpoint is not forgotten, but has no effect until re-enabled.\n\
15556 This command may be abbreviated \"disable\"."),
15557 &disablelist);
15558
15559 add_prefix_cmd ("delete", class_breakpoint, delete_command, _("\
15560 Delete some breakpoints or auto-display expressions.\n\
15561 Arguments are breakpoint numbers with spaces in between.\n\
15562 To delete all breakpoints, give no argument.\n\
15563 \n\
15564 Also a prefix command for deletion of other GDB objects.\n\
15565 The \"unset\" command is also an alias for \"delete\"."),
15566 &deletelist, "delete ", 1, &cmdlist);
15567 add_com_alias ("d", "delete", class_breakpoint, 1);
15568 add_com_alias ("del", "delete", class_breakpoint, 1);
15569
15570 add_cmd ("breakpoints", class_alias, delete_command, _("\
15571 Delete some breakpoints or auto-display expressions.\n\
15572 Arguments are breakpoint numbers with spaces in between.\n\
15573 To delete all breakpoints, give no argument.\n\
15574 This command may be abbreviated \"delete\"."),
15575 &deletelist);
15576
15577 add_com ("clear", class_breakpoint, clear_command, _("\
15578 Clear breakpoint at specified location.\n\
15579 Argument may be a linespec, explicit, or address location as described below.\n\
15580 \n\
15581 With no argument, clears all breakpoints in the line that the selected frame\n\
15582 is executing in.\n"
15583 "\n" LOCATION_HELP_STRING "\n\n\
15584 See also the \"delete\" command which clears breakpoints by number."));
15585 add_com_alias ("cl", "clear", class_breakpoint, 1);
15586
15587 c = add_com ("break", class_breakpoint, break_command, _("\
15588 Set breakpoint at specified location.\n"
15589 BREAK_ARGS_HELP ("break")));
15590 set_cmd_completer (c, location_completer);
15591
15592 add_com_alias ("b", "break", class_run, 1);
15593 add_com_alias ("br", "break", class_run, 1);
15594 add_com_alias ("bre", "break", class_run, 1);
15595 add_com_alias ("brea", "break", class_run, 1);
15596
15597 if (dbx_commands)
15598 {
15599 add_abbrev_prefix_cmd ("stop", class_breakpoint, stop_command, _("\
15600 Break in function/address or break at a line in the current file."),
15601 &stoplist, "stop ", 1, &cmdlist);
15602 add_cmd ("in", class_breakpoint, stopin_command,
15603 _("Break in function or address."), &stoplist);
15604 add_cmd ("at", class_breakpoint, stopat_command,
15605 _("Break at a line in the current file."), &stoplist);
15606 add_com ("status", class_info, info_breakpoints_command, _("\
15607 Status of user-settable breakpoints, or breakpoint number NUMBER.\n\
15608 The \"Type\" column indicates one of:\n\
15609 \tbreakpoint - normal breakpoint\n\
15610 \twatchpoint - watchpoint\n\
15611 The \"Disp\" column contains one of \"keep\", \"del\", or \"dis\" to indicate\n\
15612 the disposition of the breakpoint after it gets hit. \"dis\" means that the\n\
15613 breakpoint will be disabled. The \"Address\" and \"What\" columns indicate the\n\
15614 address and file/line number respectively.\n\
15615 \n\
15616 Convenience variable \"$_\" and default examine address for \"x\"\n\
15617 are set to the address of the last breakpoint listed unless the command\n\
15618 is prefixed with \"server \".\n\n\
15619 Convenience variable \"$bpnum\" contains the number of the last\n\
15620 breakpoint set."));
15621 }
15622
15623 add_info ("breakpoints", info_breakpoints_command, _("\
15624 Status of specified breakpoints (all user-settable breakpoints if no argument).\n\
15625 The \"Type\" column indicates one of:\n\
15626 \tbreakpoint - normal breakpoint\n\
15627 \twatchpoint - watchpoint\n\
15628 The \"Disp\" column contains one of \"keep\", \"del\", or \"dis\" to indicate\n\
15629 the disposition of the breakpoint after it gets hit. \"dis\" means that the\n\
15630 breakpoint will be disabled. The \"Address\" and \"What\" columns indicate the\n\
15631 address and file/line number respectively.\n\
15632 \n\
15633 Convenience variable \"$_\" and default examine address for \"x\"\n\
15634 are set to the address of the last breakpoint listed unless the command\n\
15635 is prefixed with \"server \".\n\n\
15636 Convenience variable \"$bpnum\" contains the number of the last\n\
15637 breakpoint set."));
15638
15639 add_info_alias ("b", "breakpoints", 1);
15640
15641 add_cmd ("breakpoints", class_maintenance, maintenance_info_breakpoints, _("\
15642 Status of all breakpoints, or breakpoint number NUMBER.\n\
15643 The \"Type\" column indicates one of:\n\
15644 \tbreakpoint - normal breakpoint\n\
15645 \twatchpoint - watchpoint\n\
15646 \tlongjmp - internal breakpoint used to step through longjmp()\n\
15647 \tlongjmp resume - internal breakpoint at the target of longjmp()\n\
15648 \tuntil - internal breakpoint used by the \"until\" command\n\
15649 \tfinish - internal breakpoint used by the \"finish\" command\n\
15650 The \"Disp\" column contains one of \"keep\", \"del\", or \"dis\" to indicate\n\
15651 the disposition of the breakpoint after it gets hit. \"dis\" means that the\n\
15652 breakpoint will be disabled. The \"Address\" and \"What\" columns indicate the\n\
15653 address and file/line number respectively.\n\
15654 \n\
15655 Convenience variable \"$_\" and default examine address for \"x\"\n\
15656 are set to the address of the last breakpoint listed unless the command\n\
15657 is prefixed with \"server \".\n\n\
15658 Convenience variable \"$bpnum\" contains the number of the last\n\
15659 breakpoint set."),
15660 &maintenanceinfolist);
15661
15662 add_prefix_cmd ("catch", class_breakpoint, catch_command, _("\
15663 Set catchpoints to catch events."),
15664 &catch_cmdlist, "catch ",
15665 0/*allow-unknown*/, &cmdlist);
15666
15667 add_prefix_cmd ("tcatch", class_breakpoint, tcatch_command, _("\
15668 Set temporary catchpoints to catch events."),
15669 &tcatch_cmdlist, "tcatch ",
15670 0/*allow-unknown*/, &cmdlist);
15671
15672 add_catch_command ("fork", _("Catch calls to fork."),
15673 catch_fork_command_1,
15674 NULL,
15675 (void *) (uintptr_t) catch_fork_permanent,
15676 (void *) (uintptr_t) catch_fork_temporary);
15677 add_catch_command ("vfork", _("Catch calls to vfork."),
15678 catch_fork_command_1,
15679 NULL,
15680 (void *) (uintptr_t) catch_vfork_permanent,
15681 (void *) (uintptr_t) catch_vfork_temporary);
15682 add_catch_command ("exec", _("Catch calls to exec."),
15683 catch_exec_command_1,
15684 NULL,
15685 CATCH_PERMANENT,
15686 CATCH_TEMPORARY);
15687 add_catch_command ("load", _("Catch loads of shared libraries.\n\
15688 Usage: catch load [REGEX]\n\
15689 If REGEX is given, only stop for libraries matching the regular expression."),
15690 catch_load_command_1,
15691 NULL,
15692 CATCH_PERMANENT,
15693 CATCH_TEMPORARY);
15694 add_catch_command ("unload", _("Catch unloads of shared libraries.\n\
15695 Usage: catch unload [REGEX]\n\
15696 If REGEX is given, only stop for libraries matching the regular expression."),
15697 catch_unload_command_1,
15698 NULL,
15699 CATCH_PERMANENT,
15700 CATCH_TEMPORARY);
15701
15702 c = add_com ("watch", class_breakpoint, watch_command, _("\
15703 Set a watchpoint for an expression.\n\
15704 Usage: watch [-l|-location] EXPRESSION\n\
15705 A watchpoint stops execution of your program whenever the value of\n\
15706 an expression changes.\n\
15707 If -l or -location is given, this evaluates EXPRESSION and watches\n\
15708 the memory to which it refers."));
15709 set_cmd_completer (c, expression_completer);
15710
15711 c = add_com ("rwatch", class_breakpoint, rwatch_command, _("\
15712 Set a read watchpoint for an expression.\n\
15713 Usage: rwatch [-l|-location] EXPRESSION\n\
15714 A watchpoint stops execution of your program whenever the value of\n\
15715 an expression is read.\n\
15716 If -l or -location is given, this evaluates EXPRESSION and watches\n\
15717 the memory to which it refers."));
15718 set_cmd_completer (c, expression_completer);
15719
15720 c = add_com ("awatch", class_breakpoint, awatch_command, _("\
15721 Set a watchpoint for an expression.\n\
15722 Usage: awatch [-l|-location] EXPRESSION\n\
15723 A watchpoint stops execution of your program whenever the value of\n\
15724 an expression is either read or written.\n\
15725 If -l or -location is given, this evaluates EXPRESSION and watches\n\
15726 the memory to which it refers."));
15727 set_cmd_completer (c, expression_completer);
15728
15729 add_info ("watchpoints", info_watchpoints_command, _("\
15730 Status of specified watchpoints (all watchpoints if no argument)."));
15731
15732 /* XXX: cagney/2005-02-23: This should be a boolean, and should
15733 respond to changes - contrary to the description. */
15734 add_setshow_zinteger_cmd ("can-use-hw-watchpoints", class_support,
15735 &can_use_hw_watchpoints, _("\
15736 Set debugger's willingness to use watchpoint hardware."), _("\
15737 Show debugger's willingness to use watchpoint hardware."), _("\
15738 If zero, gdb will not use hardware for new watchpoints, even if\n\
15739 such is available. (However, any hardware watchpoints that were\n\
15740 created before setting this to nonzero, will continue to use watchpoint\n\
15741 hardware.)"),
15742 NULL,
15743 show_can_use_hw_watchpoints,
15744 &setlist, &showlist);
15745
15746 can_use_hw_watchpoints = 1;
15747
15748 /* Tracepoint manipulation commands. */
15749
15750 c = add_com ("trace", class_breakpoint, trace_command, _("\
15751 Set a tracepoint at specified location.\n\
15752 \n"
15753 BREAK_ARGS_HELP ("trace") "\n\
15754 Do \"help tracepoints\" for info on other tracepoint commands."));
15755 set_cmd_completer (c, location_completer);
15756
15757 add_com_alias ("tp", "trace", class_alias, 0);
15758 add_com_alias ("tr", "trace", class_alias, 1);
15759 add_com_alias ("tra", "trace", class_alias, 1);
15760 add_com_alias ("trac", "trace", class_alias, 1);
15761
15762 c = add_com ("ftrace", class_breakpoint, ftrace_command, _("\
15763 Set a fast tracepoint at specified location.\n\
15764 \n"
15765 BREAK_ARGS_HELP ("ftrace") "\n\
15766 Do \"help tracepoints\" for info on other tracepoint commands."));
15767 set_cmd_completer (c, location_completer);
15768
15769 c = add_com ("strace", class_breakpoint, strace_command, _("\
15770 Set a static tracepoint at location or marker.\n\
15771 \n\
15772 strace [LOCATION] [if CONDITION]\n\
15773 LOCATION may be a linespec, explicit, or address location (described below) \n\
15774 or -m MARKER_ID.\n\n\
15775 If a marker id is specified, probe the marker with that name. With\n\
15776 no LOCATION, uses current execution address of the selected stack frame.\n\
15777 Static tracepoints accept an extra collect action -- ``collect $_sdata''.\n\
15778 This collects arbitrary user data passed in the probe point call to the\n\
15779 tracing library. You can inspect it when analyzing the trace buffer,\n\
15780 by printing the $_sdata variable like any other convenience variable.\n\
15781 \n\
15782 CONDITION is a boolean expression.\n\
15783 \n" LOCATION_HELP_STRING "\n\n\
15784 Multiple tracepoints at one place are permitted, and useful if their\n\
15785 conditions are different.\n\
15786 \n\
15787 Do \"help breakpoints\" for info on other commands dealing with breakpoints.\n\
15788 Do \"help tracepoints\" for info on other tracepoint commands."));
15789 set_cmd_completer (c, location_completer);
15790
15791 add_info ("tracepoints", info_tracepoints_command, _("\
15792 Status of specified tracepoints (all tracepoints if no argument).\n\
15793 Convenience variable \"$tpnum\" contains the number of the\n\
15794 last tracepoint set."));
15795
15796 add_info_alias ("tp", "tracepoints", 1);
15797
15798 add_cmd ("tracepoints", class_trace, delete_trace_command, _("\
15799 Delete specified tracepoints.\n\
15800 Arguments are tracepoint numbers, separated by spaces.\n\
15801 No argument means delete all tracepoints."),
15802 &deletelist);
15803 add_alias_cmd ("tr", "tracepoints", class_trace, 1, &deletelist);
15804
15805 c = add_cmd ("tracepoints", class_trace, disable_trace_command, _("\
15806 Disable specified tracepoints.\n\
15807 Arguments are tracepoint numbers, separated by spaces.\n\
15808 No argument means disable all tracepoints."),
15809 &disablelist);
15810 deprecate_cmd (c, "disable");
15811
15812 c = add_cmd ("tracepoints", class_trace, enable_trace_command, _("\
15813 Enable specified tracepoints.\n\
15814 Arguments are tracepoint numbers, separated by spaces.\n\
15815 No argument means enable all tracepoints."),
15816 &enablelist);
15817 deprecate_cmd (c, "enable");
15818
15819 add_com ("passcount", class_trace, trace_pass_command, _("\
15820 Set the passcount for a tracepoint.\n\
15821 The trace will end when the tracepoint has been passed 'count' times.\n\
15822 Usage: passcount COUNT TPNUM, where TPNUM may also be \"all\";\n\
15823 if TPNUM is omitted, passcount refers to the last tracepoint defined."));
15824
15825 add_prefix_cmd ("save", class_breakpoint, save_command,
15826 _("Save breakpoint definitions as a script."),
15827 &save_cmdlist, "save ",
15828 0/*allow-unknown*/, &cmdlist);
15829
15830 c = add_cmd ("breakpoints", class_breakpoint, save_breakpoints_command, _("\
15831 Save current breakpoint definitions as a script.\n\
15832 This includes all types of breakpoints (breakpoints, watchpoints,\n\
15833 catchpoints, tracepoints). Use the 'source' command in another debug\n\
15834 session to restore them."),
15835 &save_cmdlist);
15836 set_cmd_completer (c, filename_completer);
15837
15838 c = add_cmd ("tracepoints", class_trace, save_tracepoints_command, _("\
15839 Save current tracepoint definitions as a script.\n\
15840 Use the 'source' command in another debug session to restore them."),
15841 &save_cmdlist);
15842 set_cmd_completer (c, filename_completer);
15843
15844 c = add_com_alias ("save-tracepoints", "save tracepoints", class_trace, 0);
15845 deprecate_cmd (c, "save tracepoints");
15846
15847 add_prefix_cmd ("breakpoint", class_maintenance, set_breakpoint_cmd, _("\
15848 Breakpoint specific settings\n\
15849 Configure various breakpoint-specific variables such as\n\
15850 pending breakpoint behavior"),
15851 &breakpoint_set_cmdlist, "set breakpoint ",
15852 0/*allow-unknown*/, &setlist);
15853 add_prefix_cmd ("breakpoint", class_maintenance, show_breakpoint_cmd, _("\
15854 Breakpoint specific settings\n\
15855 Configure various breakpoint-specific variables such as\n\
15856 pending breakpoint behavior"),
15857 &breakpoint_show_cmdlist, "show breakpoint ",
15858 0/*allow-unknown*/, &showlist);
15859
15860 add_setshow_auto_boolean_cmd ("pending", no_class,
15861 &pending_break_support, _("\
15862 Set debugger's behavior regarding pending breakpoints."), _("\
15863 Show debugger's behavior regarding pending breakpoints."), _("\
15864 If on, an unrecognized breakpoint location will cause gdb to create a\n\
15865 pending breakpoint. If off, an unrecognized breakpoint location results in\n\
15866 an error. If auto, an unrecognized breakpoint location results in a\n\
15867 user-query to see if a pending breakpoint should be created."),
15868 NULL,
15869 show_pending_break_support,
15870 &breakpoint_set_cmdlist,
15871 &breakpoint_show_cmdlist);
15872
15873 pending_break_support = AUTO_BOOLEAN_AUTO;
15874
15875 add_setshow_boolean_cmd ("auto-hw", no_class,
15876 &automatic_hardware_breakpoints, _("\
15877 Set automatic usage of hardware breakpoints."), _("\
15878 Show automatic usage of hardware breakpoints."), _("\
15879 If set, the debugger will automatically use hardware breakpoints for\n\
15880 breakpoints set with \"break\" but falling in read-only memory. If not set,\n\
15881 a warning will be emitted for such breakpoints."),
15882 NULL,
15883 show_automatic_hardware_breakpoints,
15884 &breakpoint_set_cmdlist,
15885 &breakpoint_show_cmdlist);
15886
15887 add_setshow_boolean_cmd ("always-inserted", class_support,
15888 &always_inserted_mode, _("\
15889 Set mode for inserting breakpoints."), _("\
15890 Show mode for inserting breakpoints."), _("\
15891 When this mode is on, breakpoints are inserted immediately as soon as\n\
15892 they're created, kept inserted even when execution stops, and removed\n\
15893 only when the user deletes them. When this mode is off (the default),\n\
15894 breakpoints are inserted only when execution continues, and removed\n\
15895 when execution stops."),
15896 NULL,
15897 &show_always_inserted_mode,
15898 &breakpoint_set_cmdlist,
15899 &breakpoint_show_cmdlist);
15900
15901 add_setshow_enum_cmd ("condition-evaluation", class_breakpoint,
15902 condition_evaluation_enums,
15903 &condition_evaluation_mode_1, _("\
15904 Set mode of breakpoint condition evaluation."), _("\
15905 Show mode of breakpoint condition evaluation."), _("\
15906 When this is set to \"host\", breakpoint conditions will be\n\
15907 evaluated on the host's side by GDB. When it is set to \"target\",\n\
15908 breakpoint conditions will be downloaded to the target (if the target\n\
15909 supports such feature) and conditions will be evaluated on the target's side.\n\
15910 If this is set to \"auto\" (default), this will be automatically set to\n\
15911 \"target\" if it supports condition evaluation, otherwise it will\n\
15912 be set to \"gdb\""),
15913 &set_condition_evaluation_mode,
15914 &show_condition_evaluation_mode,
15915 &breakpoint_set_cmdlist,
15916 &breakpoint_show_cmdlist);
15917
15918 add_com ("break-range", class_breakpoint, break_range_command, _("\
15919 Set a breakpoint for an address range.\n\
15920 break-range START-LOCATION, END-LOCATION\n\
15921 where START-LOCATION and END-LOCATION can be one of the following:\n\
15922 LINENUM, for that line in the current file,\n\
15923 FILE:LINENUM, for that line in that file,\n\
15924 +OFFSET, for that number of lines after the current line\n\
15925 or the start of the range\n\
15926 FUNCTION, for the first line in that function,\n\
15927 FILE:FUNCTION, to distinguish among like-named static functions.\n\
15928 *ADDRESS, for the instruction at that address.\n\
15929 \n\
15930 The breakpoint will stop execution of the inferior whenever it executes\n\
15931 an instruction at any address within the [START-LOCATION, END-LOCATION]\n\
15932 range (including START-LOCATION and END-LOCATION)."));
15933
15934 c = add_com ("dprintf", class_breakpoint, dprintf_command, _("\
15935 Set a dynamic printf at specified location.\n\
15936 dprintf location,format string,arg1,arg2,...\n\
15937 location may be a linespec, explicit, or address location.\n"
15938 "\n" LOCATION_HELP_STRING));
15939 set_cmd_completer (c, location_completer);
15940
15941 add_setshow_enum_cmd ("dprintf-style", class_support,
15942 dprintf_style_enums, &dprintf_style, _("\
15943 Set the style of usage for dynamic printf."), _("\
15944 Show the style of usage for dynamic printf."), _("\
15945 This setting chooses how GDB will do a dynamic printf.\n\
15946 If the value is \"gdb\", then the printing is done by GDB to its own\n\
15947 console, as with the \"printf\" command.\n\
15948 If the value is \"call\", the print is done by calling a function in your\n\
15949 program; by default printf(), but you can choose a different function or\n\
15950 output stream by setting dprintf-function and dprintf-channel."),
15951 update_dprintf_commands, NULL,
15952 &setlist, &showlist);
15953
15954 dprintf_function = xstrdup ("printf");
15955 add_setshow_string_cmd ("dprintf-function", class_support,
15956 &dprintf_function, _("\
15957 Set the function to use for dynamic printf"), _("\
15958 Show the function to use for dynamic printf"), NULL,
15959 update_dprintf_commands, NULL,
15960 &setlist, &showlist);
15961
15962 dprintf_channel = xstrdup ("");
15963 add_setshow_string_cmd ("dprintf-channel", class_support,
15964 &dprintf_channel, _("\
15965 Set the channel to use for dynamic printf"), _("\
15966 Show the channel to use for dynamic printf"), NULL,
15967 update_dprintf_commands, NULL,
15968 &setlist, &showlist);
15969
15970 add_setshow_boolean_cmd ("disconnected-dprintf", no_class,
15971 &disconnected_dprintf, _("\
15972 Set whether dprintf continues after GDB disconnects."), _("\
15973 Show whether dprintf continues after GDB disconnects."), _("\
15974 Use this to let dprintf commands continue to hit and produce output\n\
15975 even if GDB disconnects or detaches from the target."),
15976 NULL,
15977 NULL,
15978 &setlist, &showlist);
15979
15980 add_com ("agent-printf", class_vars, agent_printf_command, _("\
15981 agent-printf \"printf format string\", arg1, arg2, arg3, ..., argn\n\
15982 (target agent only) This is useful for formatted output in user-defined commands."));
15983
15984 automatic_hardware_breakpoints = 1;
15985
15986 gdb::observers::about_to_proceed.attach (breakpoint_about_to_proceed);
15987 gdb::observers::thread_exit.attach (remove_threaded_breakpoints);
15988 }