Turn deprecated_value_modifiable into method
[binutils-gdb.git] / gdb / breakpoint.c
1 /* Everything about breakpoints, for GDB.
2
3 Copyright (C) 1986-2023 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 "gdbsupport/gdb_regex.h"
60 #include "probe.h"
61 #include "cli/cli-utils.h"
62 #include "stack.h"
63 #include "ax-gdb.h"
64 #include "dummy-frame.h"
65 #include "interps.h"
66 #include "gdbsupport/format.h"
67 #include "thread-fsm.h"
68 #include "tid-parse.h"
69 #include "cli/cli-style.h"
70 #include "cli/cli-decode.h"
71
72 /* readline include files */
73 #include "readline/tilde.h"
74
75 /* readline defines this. */
76 #undef savestring
77
78 #include "mi/mi-common.h"
79 #include "extension.h"
80 #include <algorithm>
81 #include "progspace-and-thread.h"
82 #include "gdbsupport/array-view.h"
83 #include "gdbsupport/gdb_optional.h"
84
85 /* Prototypes for local functions. */
86
87 static void map_breakpoint_numbers (const char *,
88 gdb::function_view<void (breakpoint *)>);
89
90 static void
91 create_sals_from_location_spec_default (location_spec *locspec,
92 linespec_result *canonical);
93
94 static void create_breakpoints_sal (struct gdbarch *,
95 struct linespec_result *,
96 gdb::unique_xmalloc_ptr<char>,
97 gdb::unique_xmalloc_ptr<char>,
98 enum bptype,
99 enum bpdisp, int, int,
100 int,
101 int, int, int, unsigned);
102
103 static int can_use_hardware_watchpoint
104 (const std::vector<value_ref_ptr> &vals);
105
106 static void mention (const breakpoint *);
107
108 static breakpoint *add_to_breakpoint_chain (std::unique_ptr<breakpoint> &&b);
109
110 static breakpoint *add_to_breakpoint_chain (std::unique_ptr<breakpoint> &&b);
111
112 static struct breakpoint *
113 momentary_breakpoint_from_master (struct breakpoint *orig,
114 enum bptype type,
115 int loc_enabled, int thread);
116
117 static void breakpoint_adjustment_warning (CORE_ADDR, CORE_ADDR, int, bool);
118
119 static CORE_ADDR adjust_breakpoint_address (struct gdbarch *gdbarch,
120 CORE_ADDR bpaddr,
121 enum bptype bptype,
122 struct program_space *pspace);
123
124 static bool watchpoint_locations_match (const struct bp_location *loc1,
125 const struct bp_location *loc2);
126
127 static bool breakpoint_locations_match (const struct bp_location *loc1,
128 const struct bp_location *loc2,
129 bool sw_hw_bps_match = false);
130
131 static bool breakpoint_location_address_match (struct bp_location *bl,
132 const struct address_space *aspace,
133 CORE_ADDR addr);
134
135 static bool breakpoint_location_address_range_overlap (struct bp_location *,
136 const address_space *,
137 CORE_ADDR, int);
138
139 static int remove_breakpoint (struct bp_location *);
140 static int remove_breakpoint_1 (struct bp_location *, enum remove_bp_reason);
141
142 static enum print_stop_action print_bp_stop_message (bpstat *bs);
143
144 static int hw_breakpoint_used_count (void);
145
146 static int hw_watchpoint_use_count (struct breakpoint *);
147
148 static int hw_watchpoint_used_count_others (struct breakpoint *except,
149 enum bptype type,
150 int *other_type_used);
151
152 static void enable_breakpoint_disp (struct breakpoint *, enum bpdisp,
153 int count);
154
155 static void decref_bp_location (struct bp_location **loc);
156
157 static std::vector<symtab_and_line> bkpt_probe_decode_location_spec
158 (struct breakpoint *b,
159 location_spec *locspec,
160 struct program_space *search_pspace);
161
162 static bool bl_address_is_meaningful (bp_location *loc);
163
164 static int find_loc_num_by_location (const bp_location *loc);
165
166 /* update_global_location_list's modes of operation wrt to whether to
167 insert locations now. */
168 enum ugll_insert_mode
169 {
170 /* Don't insert any breakpoint locations into the inferior, only
171 remove already-inserted locations that no longer should be
172 inserted. Functions that delete a breakpoint or breakpoints
173 should specify this mode, so that deleting a breakpoint doesn't
174 have the side effect of inserting the locations of other
175 breakpoints that are marked not-inserted, but should_be_inserted
176 returns true on them.
177
178 This behavior is useful is situations close to tear-down -- e.g.,
179 after an exec, while the target still has execution, but
180 breakpoint shadows of the previous executable image should *NOT*
181 be restored to the new image; or before detaching, where the
182 target still has execution and wants to delete breakpoints from
183 GDB's lists, and all breakpoints had already been removed from
184 the inferior. */
185 UGLL_DONT_INSERT,
186
187 /* May insert breakpoints iff breakpoints_should_be_inserted_now
188 claims breakpoints should be inserted now. */
189 UGLL_MAY_INSERT,
190
191 /* Insert locations now, irrespective of
192 breakpoints_should_be_inserted_now. E.g., say all threads are
193 stopped right now, and the user did "continue". We need to
194 insert breakpoints _before_ resuming the target, but
195 UGLL_MAY_INSERT wouldn't insert them, because
196 breakpoints_should_be_inserted_now returns false at that point,
197 as no thread is running yet. */
198 UGLL_INSERT
199 };
200
201 static void update_global_location_list (enum ugll_insert_mode);
202
203 static void update_global_location_list_nothrow (enum ugll_insert_mode);
204
205 static void insert_breakpoint_locations (void);
206
207 static void trace_pass_command (const char *, int);
208
209 static void set_tracepoint_count (int num);
210
211 static bool is_masked_watchpoint (const struct breakpoint *b);
212
213 /* Return true if B refers to a static tracepoint set by marker ("-m"),
214 zero otherwise. */
215
216 static bool strace_marker_p (struct breakpoint *b);
217
218 static void bkpt_probe_create_sals_from_location_spec
219 (location_spec *locspec,
220 struct linespec_result *canonical);
221 static void tracepoint_probe_create_sals_from_location_spec
222 (location_spec *locspec,
223 struct linespec_result *canonical);
224
225 const struct breakpoint_ops code_breakpoint_ops =
226 {
227 create_sals_from_location_spec_default,
228 create_breakpoints_sal,
229 };
230
231 /* Breakpoints set on probes. */
232 static const struct breakpoint_ops bkpt_probe_breakpoint_ops =
233 {
234 bkpt_probe_create_sals_from_location_spec,
235 create_breakpoints_sal,
236 };
237
238 /* Tracepoints set on probes. */
239 static const struct breakpoint_ops tracepoint_probe_breakpoint_ops =
240 {
241 tracepoint_probe_create_sals_from_location_spec,
242 create_breakpoints_sal,
243 };
244
245 /* Implementation of abstract dtors. These must exist to satisfy the
246 linker. */
247
248 breakpoint::~breakpoint ()
249 {
250 }
251
252 code_breakpoint::~code_breakpoint ()
253 {
254 }
255
256 catchpoint::~catchpoint ()
257 {
258 }
259
260 /* The structure to be used in regular breakpoints. */
261 struct ordinary_breakpoint : public code_breakpoint
262 {
263 using code_breakpoint::code_breakpoint;
264
265 int resources_needed (const struct bp_location *) override;
266 enum print_stop_action print_it (const bpstat *bs) const override;
267 void print_mention () const override;
268 void print_recreate (struct ui_file *fp) const override;
269 };
270
271 /* Internal breakpoints. These typically have a lifetime the same as
272 the program, and they end up installed on the breakpoint chain with
273 a negative breakpoint number. They're visible in "maint info
274 breakpoints", but not "info breakpoints". */
275 struct internal_breakpoint : public code_breakpoint
276 {
277 internal_breakpoint (struct gdbarch *gdbarch,
278 enum bptype type, CORE_ADDR address)
279 : code_breakpoint (gdbarch, type)
280 {
281 symtab_and_line sal;
282 sal.pc = address;
283 sal.section = find_pc_overlay (sal.pc);
284 sal.pspace = current_program_space;
285 add_location (sal);
286
287 pspace = current_program_space;
288 disposition = disp_donttouch;
289 }
290
291 void re_set () override;
292 void check_status (struct bpstat *bs) override;
293 enum print_stop_action print_it (const bpstat *bs) const override;
294 void print_mention () const override;
295 };
296
297 /* Momentary breakpoints. These typically have a lifetime of some run
298 control command only, are always thread-specific, and have 0 for
299 breakpoint number. I.e., there can be many momentary breakpoints
300 on the breakpoint chain and they all same the same number (zero).
301 They're visible in "maint info breakpoints", but not "info
302 breakpoints". */
303 struct momentary_breakpoint : public code_breakpoint
304 {
305 momentary_breakpoint (struct gdbarch *gdbarch_, enum bptype bptype,
306 program_space *pspace_,
307 const struct frame_id &frame_id_,
308 int thread_)
309 : code_breakpoint (gdbarch_, bptype)
310 {
311 /* If FRAME_ID is valid, it should be a real frame, not an inlined
312 or tail-called one. */
313 gdb_assert (!frame_id_artificial_p (frame_id));
314
315 /* Momentary breakpoints are always thread-specific. */
316 gdb_assert (thread_ > 0);
317
318 pspace = pspace_;
319 enable_state = bp_enabled;
320 disposition = disp_donttouch;
321 frame_id = frame_id_;
322 thread = thread_;
323 }
324
325 void re_set () override;
326 void check_status (struct bpstat *bs) override;
327 enum print_stop_action print_it (const bpstat *bs) const override;
328 void print_mention () const override;
329 };
330
331 /* DPrintf breakpoints. */
332 struct dprintf_breakpoint : public ordinary_breakpoint
333 {
334 using ordinary_breakpoint::ordinary_breakpoint;
335
336 void re_set () override;
337 int breakpoint_hit (const struct bp_location *bl,
338 const address_space *aspace,
339 CORE_ADDR bp_addr,
340 const target_waitstatus &ws) override;
341 void print_recreate (struct ui_file *fp) const override;
342 void after_condition_true (struct bpstat *bs) override;
343 };
344
345 /* Ranged breakpoints. */
346 struct ranged_breakpoint : public ordinary_breakpoint
347 {
348 explicit ranged_breakpoint (struct gdbarch *gdbarch,
349 const symtab_and_line &sal_start,
350 int length,
351 location_spec_up start_locspec,
352 location_spec_up end_locspec)
353 : ordinary_breakpoint (gdbarch, bp_hardware_breakpoint)
354 {
355 bp_location *bl = add_location (sal_start);
356 bl->length = length;
357
358 disposition = disp_donttouch;
359
360 locspec = std::move (start_locspec);
361 locspec_range_end = std::move (end_locspec);
362 }
363
364 int breakpoint_hit (const struct bp_location *bl,
365 const address_space *aspace,
366 CORE_ADDR bp_addr,
367 const target_waitstatus &ws) override;
368 int resources_needed (const struct bp_location *) override;
369 enum print_stop_action print_it (const bpstat *bs) const override;
370 bool print_one (bp_location **) const override;
371 void print_one_detail (struct ui_out *) const override;
372 void print_mention () const override;
373 void print_recreate (struct ui_file *fp) const override;
374 };
375
376 /* Static tracepoints with marker (`-m'). */
377 struct static_marker_tracepoint : public tracepoint
378 {
379 using tracepoint::tracepoint;
380
381 std::vector<symtab_and_line> decode_location_spec
382 (struct location_spec *locspec,
383 struct program_space *search_pspace) override;
384 };
385
386 /* The style in which to perform a dynamic printf. This is a user
387 option because different output options have different tradeoffs;
388 if GDB does the printing, there is better error handling if there
389 is a problem with any of the arguments, but using an inferior
390 function lets you have special-purpose printers and sending of
391 output to the same place as compiled-in print functions. */
392
393 static const char dprintf_style_gdb[] = "gdb";
394 static const char dprintf_style_call[] = "call";
395 static const char dprintf_style_agent[] = "agent";
396 static const char *const dprintf_style_enums[] = {
397 dprintf_style_gdb,
398 dprintf_style_call,
399 dprintf_style_agent,
400 NULL
401 };
402 static const char *dprintf_style = dprintf_style_gdb;
403
404 /* The function to use for dynamic printf if the preferred style is to
405 call into the inferior. The value is simply a string that is
406 copied into the command, so it can be anything that GDB can
407 evaluate to a callable address, not necessarily a function name. */
408
409 static std::string dprintf_function = "printf";
410
411 /* The channel to use for dynamic printf if the preferred style is to
412 call into the inferior; if a nonempty string, it will be passed to
413 the call as the first argument, with the format string as the
414 second. As with the dprintf function, this can be anything that
415 GDB knows how to evaluate, so in addition to common choices like
416 "stderr", this could be an app-specific expression like
417 "mystreams[curlogger]". */
418
419 static std::string dprintf_channel;
420
421 /* True if dprintf commands should continue to operate even if GDB
422 has disconnected. */
423 static bool disconnected_dprintf = true;
424
425 struct command_line *
426 breakpoint_commands (struct breakpoint *b)
427 {
428 return b->commands ? b->commands.get () : NULL;
429 }
430
431 /* Flag indicating that a command has proceeded the inferior past the
432 current breakpoint. */
433
434 static bool breakpoint_proceeded;
435
436 const char *
437 bpdisp_text (enum bpdisp disp)
438 {
439 /* NOTE: the following values are a part of MI protocol and
440 represent values of 'disp' field returned when inferior stops at
441 a breakpoint. */
442 static const char * const bpdisps[] = {"del", "dstp", "dis", "keep"};
443
444 return bpdisps[(int) disp];
445 }
446
447 /* Prototypes for exported functions. */
448 /* If FALSE, gdb will not use hardware support for watchpoints, even
449 if such is available. */
450 static int can_use_hw_watchpoints;
451
452 static void
453 show_can_use_hw_watchpoints (struct ui_file *file, int from_tty,
454 struct cmd_list_element *c,
455 const char *value)
456 {
457 gdb_printf (file,
458 _("Debugger's willingness to use "
459 "watchpoint hardware is %s.\n"),
460 value);
461 }
462
463 /* If AUTO_BOOLEAN_FALSE, gdb will not attempt to create pending breakpoints.
464 If AUTO_BOOLEAN_TRUE, gdb will automatically create pending breakpoints
465 for unrecognized breakpoint locations.
466 If AUTO_BOOLEAN_AUTO, gdb will query when breakpoints are unrecognized. */
467 static enum auto_boolean pending_break_support;
468 static void
469 show_pending_break_support (struct ui_file *file, int from_tty,
470 struct cmd_list_element *c,
471 const char *value)
472 {
473 gdb_printf (file,
474 _("Debugger's behavior regarding "
475 "pending breakpoints is %s.\n"),
476 value);
477 }
478
479 /* If true, gdb will automatically use hardware breakpoints for breakpoints
480 set with "break" but falling in read-only memory.
481 If false, gdb will warn about such breakpoints, but won't automatically
482 use hardware breakpoints. */
483 static bool automatic_hardware_breakpoints;
484 static void
485 show_automatic_hardware_breakpoints (struct ui_file *file, int from_tty,
486 struct cmd_list_element *c,
487 const char *value)
488 {
489 gdb_printf (file,
490 _("Automatic usage of hardware breakpoints is %s.\n"),
491 value);
492 }
493
494 /* If on, GDB keeps breakpoints inserted even if the inferior is
495 stopped, and immediately inserts any new breakpoints as soon as
496 they're created. If off (default), GDB keeps breakpoints off of
497 the target as long as possible. That is, it delays inserting
498 breakpoints until the next resume, and removes them again when the
499 target fully stops. This is a bit safer in case GDB crashes while
500 processing user input. */
501 static bool always_inserted_mode = false;
502
503 static void
504 show_always_inserted_mode (struct ui_file *file, int from_tty,
505 struct cmd_list_element *c, const char *value)
506 {
507 gdb_printf (file, _("Always inserted breakpoint mode is %s.\n"),
508 value);
509 }
510
511 /* See breakpoint.h. */
512
513 int
514 breakpoints_should_be_inserted_now (void)
515 {
516 if (gdbarch_has_global_breakpoints (target_gdbarch ()))
517 {
518 /* If breakpoints are global, they should be inserted even if no
519 thread under gdb's control is running, or even if there are
520 no threads under GDB's control yet. */
521 return 1;
522 }
523 else
524 {
525 if (always_inserted_mode)
526 {
527 /* The user wants breakpoints inserted even if all threads
528 are stopped. */
529 return 1;
530 }
531
532 for (inferior *inf : all_inferiors ())
533 if (inf->has_execution ()
534 && threads_are_executing (inf->process_target ()))
535 return 1;
536
537 /* Don't remove breakpoints yet if, even though all threads are
538 stopped, we still have events to process. */
539 for (thread_info *tp : all_non_exited_threads ())
540 if (tp->resumed () && tp->has_pending_waitstatus ())
541 return 1;
542 }
543 return 0;
544 }
545
546 static const char condition_evaluation_both[] = "host or target";
547
548 /* Modes for breakpoint condition evaluation. */
549 static const char condition_evaluation_auto[] = "auto";
550 static const char condition_evaluation_host[] = "host";
551 static const char condition_evaluation_target[] = "target";
552 static const char *const condition_evaluation_enums[] = {
553 condition_evaluation_auto,
554 condition_evaluation_host,
555 condition_evaluation_target,
556 NULL
557 };
558
559 /* Global that holds the current mode for breakpoint condition evaluation. */
560 static const char *condition_evaluation_mode_1 = condition_evaluation_auto;
561
562 /* Global that we use to display information to the user (gets its value from
563 condition_evaluation_mode_1. */
564 static const char *condition_evaluation_mode = condition_evaluation_auto;
565
566 /* Translate a condition evaluation mode MODE into either "host"
567 or "target". This is used mostly to translate from "auto" to the
568 real setting that is being used. It returns the translated
569 evaluation mode. */
570
571 static const char *
572 translate_condition_evaluation_mode (const char *mode)
573 {
574 if (mode == condition_evaluation_auto)
575 {
576 if (target_supports_evaluation_of_breakpoint_conditions ())
577 return condition_evaluation_target;
578 else
579 return condition_evaluation_host;
580 }
581 else
582 return mode;
583 }
584
585 /* Discovers what condition_evaluation_auto translates to. */
586
587 static const char *
588 breakpoint_condition_evaluation_mode (void)
589 {
590 return translate_condition_evaluation_mode (condition_evaluation_mode);
591 }
592
593 /* Return true if GDB should evaluate breakpoint conditions or false
594 otherwise. */
595
596 static bool
597 gdb_evaluates_breakpoint_condition_p (void)
598 {
599 const char *mode = breakpoint_condition_evaluation_mode ();
600
601 return (mode == condition_evaluation_host);
602 }
603
604 /* Are we executing breakpoint commands? */
605 static int executing_breakpoint_commands;
606
607 /* Are overlay event breakpoints enabled? */
608 static int overlay_events_enabled;
609
610 /* See description in breakpoint.h. */
611 bool target_exact_watchpoints = false;
612
613 /* Walk the following statement or block through all breakpoints.
614 ALL_BREAKPOINTS_SAFE does so even if the statement deletes the
615 current breakpoint. */
616
617 #define ALL_BREAKPOINTS_SAFE(B,TMP) \
618 for (B = breakpoint_chain; \
619 B ? (TMP=B->next, 1): 0; \
620 B = TMP)
621
622 /* Chains of all breakpoints defined. */
623
624 static struct breakpoint *breakpoint_chain;
625
626 /* See breakpoint.h. */
627
628 breakpoint_range
629 all_breakpoints ()
630 {
631 return breakpoint_range (breakpoint_chain);
632 }
633
634 /* See breakpoint.h. */
635
636 breakpoint_safe_range
637 all_breakpoints_safe ()
638 {
639 return breakpoint_safe_range (all_breakpoints ());
640 }
641
642 /* See breakpoint.h. */
643
644 tracepoint_range
645 all_tracepoints ()
646 {
647 return tracepoint_range (breakpoint_chain);
648 }
649
650 /* Array is sorted by bp_location_is_less_than - primarily by the ADDRESS. */
651
652 static std::vector<bp_location *> bp_locations;
653
654 /* See breakpoint.h. */
655
656 const std::vector<bp_location *> &
657 all_bp_locations ()
658 {
659 return bp_locations;
660 }
661
662 /* Range to iterate over breakpoint locations at a given address. */
663
664 struct bp_locations_at_addr_range
665 {
666 using iterator = std::vector<bp_location *>::iterator;
667
668 bp_locations_at_addr_range (CORE_ADDR addr)
669 {
670 struct compare
671 {
672 bool operator() (const bp_location *loc, CORE_ADDR addr_) const
673 { return loc->address < addr_; }
674
675 bool operator() (CORE_ADDR addr_, const bp_location *loc) const
676 { return addr_ < loc->address; }
677 };
678
679 auto it_pair = std::equal_range (bp_locations.begin (), bp_locations.end (),
680 addr, compare ());
681
682 m_begin = it_pair.first;
683 m_end = it_pair.second;
684 }
685
686 iterator begin () const
687 { return m_begin; }
688
689 iterator end () const
690 { return m_end; }
691
692 private:
693 iterator m_begin;
694 iterator m_end;
695 };
696
697 /* Return a range to iterate over all breakpoint locations exactly at address
698 ADDR.
699
700 If it's needed to iterate multiple times on the same range, it's possible
701 to save the range in a local variable and use it multiple times:
702
703 auto range = all_bp_locations_at_addr (addr);
704
705 for (bp_location *loc : range)
706 // use loc
707
708 for (bp_location *loc : range)
709 // use loc
710
711 This saves a bit of time, as it avoids re-doing the binary searches to find
712 the range's boundaries. Just remember not to change the bp_locations vector
713 in the mean time, as it could make the range's iterators stale. */
714
715 static bp_locations_at_addr_range
716 all_bp_locations_at_addr (CORE_ADDR addr)
717 {
718 return bp_locations_at_addr_range (addr);
719 }
720
721 /* Maximum alignment offset between bp_target_info.PLACED_ADDRESS and
722 ADDRESS for the current elements of BP_LOCATIONS which get a valid
723 result from bp_location_has_shadow. You can use it for roughly
724 limiting the subrange of BP_LOCATIONS to scan for shadow bytes for
725 an address you need to read. */
726
727 static CORE_ADDR bp_locations_placed_address_before_address_max;
728
729 /* Maximum offset plus alignment between bp_target_info.PLACED_ADDRESS
730 + bp_target_info.SHADOW_LEN and ADDRESS for the current elements of
731 BP_LOCATIONS which get a valid result from bp_location_has_shadow.
732 You can use it for roughly limiting the subrange of BP_LOCATIONS to
733 scan for shadow bytes for an address you need to read. */
734
735 static CORE_ADDR bp_locations_shadow_len_after_address_max;
736
737 /* The locations that no longer correspond to any breakpoint, unlinked
738 from the bp_locations array, but for which a hit may still be
739 reported by a target. */
740 static std::vector<bp_location *> moribund_locations;
741
742 /* Number of last breakpoint made. */
743
744 static int breakpoint_count;
745
746 /* The value of `breakpoint_count' before the last command that
747 created breakpoints. If the last (break-like) command created more
748 than one breakpoint, then the difference between BREAKPOINT_COUNT
749 and PREV_BREAKPOINT_COUNT is more than one. */
750 static int prev_breakpoint_count;
751
752 /* Number of last tracepoint made. */
753
754 static int tracepoint_count;
755
756 static struct cmd_list_element *breakpoint_set_cmdlist;
757 static struct cmd_list_element *breakpoint_show_cmdlist;
758 struct cmd_list_element *save_cmdlist;
759
760 /* Return whether a breakpoint is an active enabled breakpoint. */
761 static bool
762 breakpoint_enabled (struct breakpoint *b)
763 {
764 return (b->enable_state == bp_enabled);
765 }
766
767 /* Set breakpoint count to NUM. */
768
769 static void
770 set_breakpoint_count (int num)
771 {
772 prev_breakpoint_count = breakpoint_count;
773 breakpoint_count = num;
774 set_internalvar_integer (lookup_internalvar ("bpnum"), num);
775 }
776
777 /* Used by `start_rbreak_breakpoints' below, to record the current
778 breakpoint count before "rbreak" creates any breakpoint. */
779 static int rbreak_start_breakpoint_count;
780
781 /* Called at the start an "rbreak" command to record the first
782 breakpoint made. */
783
784 scoped_rbreak_breakpoints::scoped_rbreak_breakpoints ()
785 {
786 rbreak_start_breakpoint_count = breakpoint_count;
787 }
788
789 /* Called at the end of an "rbreak" command to record the last
790 breakpoint made. */
791
792 scoped_rbreak_breakpoints::~scoped_rbreak_breakpoints ()
793 {
794 prev_breakpoint_count = rbreak_start_breakpoint_count;
795 }
796
797 /* Used in run_command to zero the hit count when a new run starts. */
798
799 void
800 clear_breakpoint_hit_counts (void)
801 {
802 for (breakpoint *b : all_breakpoints ())
803 b->hit_count = 0;
804 }
805
806 \f
807 /* Return the breakpoint with the specified number, or NULL
808 if the number does not refer to an existing breakpoint. */
809
810 struct breakpoint *
811 get_breakpoint (int num)
812 {
813 for (breakpoint *b : all_breakpoints ())
814 if (b->number == num)
815 return b;
816
817 return nullptr;
818 }
819
820 /* Return TRUE if NUM refer to an existing breakpoint that has
821 multiple code locations. */
822
823 static bool
824 has_multiple_locations (int num)
825 {
826 for (breakpoint *b : all_breakpoints ())
827 if (b->number == num)
828 return b->loc != nullptr && b->loc->next != nullptr;
829
830 return false;
831 }
832
833 \f
834
835 /* Mark locations as "conditions have changed" in case the target supports
836 evaluating conditions on its side. */
837
838 static void
839 mark_breakpoint_modified (struct breakpoint *b)
840 {
841 /* This is only meaningful if the target is
842 evaluating conditions and if the user has
843 opted for condition evaluation on the target's
844 side. */
845 if (gdb_evaluates_breakpoint_condition_p ()
846 || !target_supports_evaluation_of_breakpoint_conditions ())
847 return;
848
849 if (!is_breakpoint (b))
850 return;
851
852 for (bp_location *loc : b->locations ())
853 loc->condition_changed = condition_modified;
854 }
855
856 /* Mark location as "conditions have changed" in case the target supports
857 evaluating conditions on its side. */
858
859 static void
860 mark_breakpoint_location_modified (struct bp_location *loc)
861 {
862 /* This is only meaningful if the target is
863 evaluating conditions and if the user has
864 opted for condition evaluation on the target's
865 side. */
866 if (gdb_evaluates_breakpoint_condition_p ()
867 || !target_supports_evaluation_of_breakpoint_conditions ())
868
869 return;
870
871 if (!is_breakpoint (loc->owner))
872 return;
873
874 loc->condition_changed = condition_modified;
875 }
876
877 /* Sets the condition-evaluation mode using the static global
878 condition_evaluation_mode. */
879
880 static void
881 set_condition_evaluation_mode (const char *args, int from_tty,
882 struct cmd_list_element *c)
883 {
884 const char *old_mode, *new_mode;
885
886 if ((condition_evaluation_mode_1 == condition_evaluation_target)
887 && !target_supports_evaluation_of_breakpoint_conditions ())
888 {
889 condition_evaluation_mode_1 = condition_evaluation_mode;
890 warning (_("Target does not support breakpoint condition evaluation.\n"
891 "Using host evaluation mode instead."));
892 return;
893 }
894
895 new_mode = translate_condition_evaluation_mode (condition_evaluation_mode_1);
896 old_mode = translate_condition_evaluation_mode (condition_evaluation_mode);
897
898 /* Flip the switch. Flip it even if OLD_MODE == NEW_MODE as one of the
899 settings was "auto". */
900 condition_evaluation_mode = condition_evaluation_mode_1;
901
902 /* Only update the mode if the user picked a different one. */
903 if (new_mode != old_mode)
904 {
905 /* If the user switched to a different evaluation mode, we
906 need to synch the changes with the target as follows:
907
908 "host" -> "target": Send all (valid) conditions to the target.
909 "target" -> "host": Remove all the conditions from the target.
910 */
911
912 if (new_mode == condition_evaluation_target)
913 {
914 /* Mark everything modified and synch conditions with the
915 target. */
916 for (bp_location *loc : all_bp_locations ())
917 mark_breakpoint_location_modified (loc);
918 }
919 else
920 {
921 /* Manually mark non-duplicate locations to synch conditions
922 with the target. We do this to remove all the conditions the
923 target knows about. */
924 for (bp_location *loc : all_bp_locations ())
925 if (is_breakpoint (loc->owner) && loc->inserted)
926 loc->needs_update = 1;
927 }
928
929 /* Do the update. */
930 update_global_location_list (UGLL_MAY_INSERT);
931 }
932
933 return;
934 }
935
936 /* Shows the current mode of breakpoint condition evaluation. Explicitly shows
937 what "auto" is translating to. */
938
939 static void
940 show_condition_evaluation_mode (struct ui_file *file, int from_tty,
941 struct cmd_list_element *c, const char *value)
942 {
943 if (condition_evaluation_mode == condition_evaluation_auto)
944 gdb_printf (file,
945 _("Breakpoint condition evaluation "
946 "mode is %s (currently %s).\n"),
947 value,
948 breakpoint_condition_evaluation_mode ());
949 else
950 gdb_printf (file, _("Breakpoint condition evaluation mode is %s.\n"),
951 value);
952 }
953
954 /* Parse COND_STRING in the context of LOC and set as the condition
955 expression of LOC. BP_NUM is the number of LOC's owner, LOC_NUM is
956 the number of LOC within its owner. In case of parsing error, mark
957 LOC as DISABLED_BY_COND. In case of success, unset DISABLED_BY_COND. */
958
959 static void
960 set_breakpoint_location_condition (const char *cond_string, bp_location *loc,
961 int bp_num, int loc_num)
962 {
963 bool has_junk = false;
964 try
965 {
966 expression_up new_exp = parse_exp_1 (&cond_string, loc->address,
967 block_for_pc (loc->address), 0);
968 if (*cond_string != 0)
969 has_junk = true;
970 else
971 {
972 loc->cond = std::move (new_exp);
973 if (loc->disabled_by_cond && loc->enabled)
974 gdb_printf (_("Breakpoint %d's condition is now valid at "
975 "location %d, enabling.\n"),
976 bp_num, loc_num);
977
978 loc->disabled_by_cond = false;
979 }
980 }
981 catch (const gdb_exception_error &e)
982 {
983 if (loc->enabled)
984 {
985 /* Warn if a user-enabled location is now becoming disabled-by-cond.
986 BP_NUM is 0 if the breakpoint is being defined for the first
987 time using the "break ... if ..." command, and non-zero if
988 already defined. */
989 if (bp_num != 0)
990 warning (_("failed to validate condition at location %d.%d, "
991 "disabling:\n %s"), bp_num, loc_num, e.what ());
992 else
993 warning (_("failed to validate condition at location %d, "
994 "disabling:\n %s"), loc_num, e.what ());
995 }
996
997 loc->disabled_by_cond = true;
998 }
999
1000 if (has_junk)
1001 error (_("Garbage '%s' follows condition"), cond_string);
1002 }
1003
1004 void
1005 set_breakpoint_condition (struct breakpoint *b, const char *exp,
1006 int from_tty, bool force)
1007 {
1008 if (*exp == 0)
1009 {
1010 b->cond_string.reset ();
1011
1012 if (is_watchpoint (b))
1013 gdb::checked_static_cast<watchpoint *> (b)->cond_exp.reset ();
1014 else
1015 {
1016 int loc_num = 1;
1017 for (bp_location *loc : b->locations ())
1018 {
1019 loc->cond.reset ();
1020 if (loc->disabled_by_cond && loc->enabled)
1021 gdb_printf (_("Breakpoint %d's condition is now valid at "
1022 "location %d, enabling.\n"),
1023 b->number, loc_num);
1024 loc->disabled_by_cond = false;
1025 loc_num++;
1026
1027 /* No need to free the condition agent expression
1028 bytecode (if we have one). We will handle this
1029 when we go through update_global_location_list. */
1030 }
1031 }
1032
1033 if (from_tty)
1034 gdb_printf (_("Breakpoint %d now unconditional.\n"), b->number);
1035 }
1036 else
1037 {
1038 if (is_watchpoint (b))
1039 {
1040 innermost_block_tracker tracker;
1041 const char *arg = exp;
1042 expression_up new_exp = parse_exp_1 (&arg, 0, 0, 0, &tracker);
1043 if (*arg != 0)
1044 error (_("Junk at end of expression"));
1045 watchpoint *w = gdb::checked_static_cast<watchpoint *> (b);
1046 w->cond_exp = std::move (new_exp);
1047 w->cond_exp_valid_block = tracker.block ();
1048 }
1049 else
1050 {
1051 /* Parse and set condition expressions. We make two passes.
1052 In the first, we parse the condition string to see if it
1053 is valid in at least one location. If so, the condition
1054 would be accepted. So we go ahead and set the locations'
1055 conditions. In case no valid case is found, we throw
1056 the error and the condition string will be rejected.
1057 This two-pass approach is taken to avoid setting the
1058 state of locations in case of a reject. */
1059 for (bp_location *loc : b->locations ())
1060 {
1061 try
1062 {
1063 const char *arg = exp;
1064 parse_exp_1 (&arg, loc->address,
1065 block_for_pc (loc->address), 0);
1066 if (*arg != 0)
1067 error (_("Junk at end of expression"));
1068 break;
1069 }
1070 catch (const gdb_exception_error &e)
1071 {
1072 /* Condition string is invalid. If this happens to
1073 be the last loc, abandon (if not forced) or continue
1074 (if forced). */
1075 if (loc->next == nullptr && !force)
1076 throw;
1077 }
1078 }
1079
1080 /* If we reach here, the condition is valid at some locations. */
1081 int loc_num = 1;
1082 for (bp_location *loc : b->locations ())
1083 {
1084 set_breakpoint_location_condition (exp, loc, b->number, loc_num);
1085 loc_num++;
1086 }
1087 }
1088
1089 /* We know that the new condition parsed successfully. The
1090 condition string of the breakpoint can be safely updated. */
1091 b->cond_string = make_unique_xstrdup (exp);
1092 b->condition_not_parsed = 0;
1093 }
1094 mark_breakpoint_modified (b);
1095
1096 gdb::observers::breakpoint_modified.notify (b);
1097 }
1098
1099 /* See breakpoint.h. */
1100
1101 void
1102 set_breakpoint_condition (int bpnum, const char *exp, int from_tty,
1103 bool force)
1104 {
1105 for (breakpoint *b : all_breakpoints ())
1106 if (b->number == bpnum)
1107 {
1108 /* Check if this breakpoint has a "stop" method implemented in an
1109 extension language. This method and conditions entered into GDB
1110 from the CLI are mutually exclusive. */
1111 const struct extension_language_defn *extlang
1112 = get_breakpoint_cond_ext_lang (b, EXT_LANG_NONE);
1113
1114 if (extlang != NULL)
1115 {
1116 error (_("Only one stop condition allowed. There is currently"
1117 " a %s stop condition defined for this breakpoint."),
1118 ext_lang_capitalized_name (extlang));
1119 }
1120 set_breakpoint_condition (b, exp, from_tty, force);
1121
1122 if (is_breakpoint (b))
1123 update_global_location_list (UGLL_MAY_INSERT);
1124
1125 return;
1126 }
1127
1128 error (_("No breakpoint number %d."), bpnum);
1129 }
1130
1131 /* The options for the "condition" command. */
1132
1133 struct condition_command_opts
1134 {
1135 /* For "-force". */
1136 bool force_condition = false;
1137 };
1138
1139 static const gdb::option::option_def condition_command_option_defs[] = {
1140
1141 gdb::option::flag_option_def<condition_command_opts> {
1142 "force",
1143 [] (condition_command_opts *opts) { return &opts->force_condition; },
1144 N_("Set the condition even if it is invalid for all current locations."),
1145 },
1146
1147 };
1148
1149 /* Create an option_def_group for the "condition" options, with
1150 CC_OPTS as context. */
1151
1152 static inline gdb::option::option_def_group
1153 make_condition_command_options_def_group (condition_command_opts *cc_opts)
1154 {
1155 return {{condition_command_option_defs}, cc_opts};
1156 }
1157
1158 /* Completion for the "condition" command. */
1159
1160 static void
1161 condition_completer (struct cmd_list_element *cmd,
1162 completion_tracker &tracker,
1163 const char *text, const char * /*word*/)
1164 {
1165 bool has_no_arguments = (*text == '\0');
1166 condition_command_opts cc_opts;
1167 const auto group = make_condition_command_options_def_group (&cc_opts);
1168 if (gdb::option::complete_options
1169 (tracker, &text, gdb::option::PROCESS_OPTIONS_UNKNOWN_IS_ERROR, group))
1170 return;
1171
1172 text = skip_spaces (text);
1173 const char *space = skip_to_space (text);
1174 if (*space == '\0')
1175 {
1176 int len;
1177
1178 if (text[0] == '$')
1179 {
1180 tracker.advance_custom_word_point_by (1);
1181 /* We don't support completion of history indices. */
1182 if (!isdigit (text[1]))
1183 complete_internalvar (tracker, &text[1]);
1184 return;
1185 }
1186
1187 /* Suggest the "-force" flag if no arguments are given. If
1188 arguments were passed, they either already include the flag,
1189 or we are beyond the point of suggesting it because it's
1190 positionally the first argument. */
1191 if (has_no_arguments)
1192 gdb::option::complete_on_all_options (tracker, group);
1193
1194 /* We're completing the breakpoint number. */
1195 len = strlen (text);
1196
1197 for (breakpoint *b : all_breakpoints ())
1198 {
1199 char number[50];
1200
1201 xsnprintf (number, sizeof (number), "%d", b->number);
1202
1203 if (strncmp (number, text, len) == 0)
1204 tracker.add_completion (make_unique_xstrdup (number));
1205 }
1206
1207 return;
1208 }
1209
1210 /* We're completing the expression part. Skip the breakpoint num. */
1211 const char *exp_start = skip_spaces (space);
1212 tracker.advance_custom_word_point_by (exp_start - text);
1213 text = exp_start;
1214 const char *word = advance_to_expression_complete_word_point (tracker, text);
1215 expression_completer (cmd, tracker, text, word);
1216 }
1217
1218 /* condition N EXP -- set break condition of breakpoint N to EXP. */
1219
1220 static void
1221 condition_command (const char *arg, int from_tty)
1222 {
1223 const char *p;
1224 int bnum;
1225
1226 if (arg == 0)
1227 error_no_arg (_("breakpoint number"));
1228
1229 p = arg;
1230
1231 /* Check if the "-force" flag was passed. */
1232 condition_command_opts cc_opts;
1233 const auto group = make_condition_command_options_def_group (&cc_opts);
1234 gdb::option::process_options
1235 (&p, gdb::option::PROCESS_OPTIONS_UNKNOWN_IS_ERROR, group);
1236
1237 bnum = get_number (&p);
1238 if (bnum == 0)
1239 error (_("Bad breakpoint argument: '%s'"), arg);
1240
1241 set_breakpoint_condition (bnum, p, from_tty, cc_opts.force_condition);
1242 }
1243
1244 /* Check that COMMAND do not contain commands that are suitable
1245 only for tracepoints and not suitable for ordinary breakpoints.
1246 Throw if any such commands is found. */
1247
1248 static void
1249 check_no_tracepoint_commands (struct command_line *commands)
1250 {
1251 struct command_line *c;
1252
1253 for (c = commands; c; c = c->next)
1254 {
1255 if (c->control_type == while_stepping_control)
1256 error (_("The 'while-stepping' command can "
1257 "only be used for tracepoints"));
1258
1259 check_no_tracepoint_commands (c->body_list_0.get ());
1260 check_no_tracepoint_commands (c->body_list_1.get ());
1261
1262 /* Not that command parsing removes leading whitespace and comment
1263 lines and also empty lines. So, we only need to check for
1264 command directly. */
1265 if (strstr (c->line, "collect ") == c->line)
1266 error (_("The 'collect' command can only be used for tracepoints"));
1267
1268 if (strstr (c->line, "teval ") == c->line)
1269 error (_("The 'teval' command can only be used for tracepoints"));
1270 }
1271 }
1272
1273 struct longjmp_breakpoint : public momentary_breakpoint
1274 {
1275 using momentary_breakpoint::momentary_breakpoint;
1276
1277 ~longjmp_breakpoint () override;
1278 };
1279
1280 /* Encapsulate tests for different types of tracepoints. */
1281
1282 static bool
1283 is_tracepoint_type (bptype type)
1284 {
1285 return (type == bp_tracepoint
1286 || type == bp_fast_tracepoint
1287 || type == bp_static_tracepoint
1288 || type == bp_static_marker_tracepoint);
1289 }
1290
1291 /* See breakpoint.h. */
1292
1293 bool
1294 is_tracepoint (const struct breakpoint *b)
1295 {
1296 return is_tracepoint_type (b->type);
1297 }
1298
1299 /* Factory function to create an appropriate instance of breakpoint given
1300 TYPE. */
1301
1302 template<typename... Arg>
1303 static std::unique_ptr<code_breakpoint>
1304 new_breakpoint_from_type (struct gdbarch *gdbarch, bptype type,
1305 Arg&&... args)
1306 {
1307 code_breakpoint *b;
1308
1309 switch (type)
1310 {
1311 case bp_breakpoint:
1312 case bp_hardware_breakpoint:
1313 b = new ordinary_breakpoint (gdbarch, type,
1314 std::forward<Arg> (args)...);
1315 break;
1316
1317 case bp_fast_tracepoint:
1318 case bp_static_tracepoint:
1319 case bp_tracepoint:
1320 b = new tracepoint (gdbarch, type,
1321 std::forward<Arg> (args)...);
1322 break;
1323
1324 case bp_static_marker_tracepoint:
1325 b = new static_marker_tracepoint (gdbarch, type,
1326 std::forward<Arg> (args)...);
1327 break;
1328
1329 case bp_dprintf:
1330 b = new dprintf_breakpoint (gdbarch, type,
1331 std::forward<Arg> (args)...);
1332 break;
1333
1334 default:
1335 gdb_assert_not_reached ("invalid type");
1336 }
1337
1338 return std::unique_ptr<code_breakpoint> (b);
1339 }
1340
1341 /* A helper function that validates that COMMANDS are valid for a
1342 breakpoint. This function will throw an exception if a problem is
1343 found. */
1344
1345 static void
1346 validate_commands_for_breakpoint (struct breakpoint *b,
1347 struct command_line *commands)
1348 {
1349 if (is_tracepoint (b))
1350 {
1351 struct tracepoint *t = (struct tracepoint *) b;
1352 struct command_line *c;
1353 struct command_line *while_stepping = 0;
1354
1355 /* Reset the while-stepping step count. The previous commands
1356 might have included a while-stepping action, while the new
1357 ones might not. */
1358 t->step_count = 0;
1359
1360 /* We need to verify that each top-level element of commands is
1361 valid for tracepoints, that there's at most one
1362 while-stepping element, and that the while-stepping's body
1363 has valid tracing commands excluding nested while-stepping.
1364 We also need to validate the tracepoint action line in the
1365 context of the tracepoint --- validate_actionline actually
1366 has side effects, like setting the tracepoint's
1367 while-stepping STEP_COUNT, in addition to checking if the
1368 collect/teval actions parse and make sense in the
1369 tracepoint's context. */
1370 for (c = commands; c; c = c->next)
1371 {
1372 if (c->control_type == while_stepping_control)
1373 {
1374 if (b->type == bp_fast_tracepoint)
1375 error (_("The 'while-stepping' command "
1376 "cannot be used for fast tracepoint"));
1377 else if (b->type == bp_static_tracepoint
1378 || b->type == bp_static_marker_tracepoint)
1379 error (_("The 'while-stepping' command "
1380 "cannot be used for static tracepoint"));
1381
1382 if (while_stepping)
1383 error (_("The 'while-stepping' command "
1384 "can be used only once"));
1385 else
1386 while_stepping = c;
1387 }
1388
1389 validate_actionline (c->line, b);
1390 }
1391 if (while_stepping)
1392 {
1393 struct command_line *c2;
1394
1395 gdb_assert (while_stepping->body_list_1 == nullptr);
1396 c2 = while_stepping->body_list_0.get ();
1397 for (; c2; c2 = c2->next)
1398 {
1399 if (c2->control_type == while_stepping_control)
1400 error (_("The 'while-stepping' command cannot be nested"));
1401 }
1402 }
1403 }
1404 else
1405 {
1406 check_no_tracepoint_commands (commands);
1407 }
1408 }
1409
1410 /* Return a vector of all the static tracepoints set at ADDR. The
1411 caller is responsible for releasing the vector. */
1412
1413 std::vector<breakpoint *>
1414 static_tracepoints_here (CORE_ADDR addr)
1415 {
1416 std::vector<breakpoint *> found;
1417
1418 for (breakpoint *b : all_breakpoints ())
1419 if (b->type == bp_static_tracepoint
1420 || b->type == bp_static_marker_tracepoint)
1421 {
1422 for (bp_location *loc : b->locations ())
1423 if (loc->address == addr)
1424 found.push_back (b);
1425 }
1426
1427 return found;
1428 }
1429
1430 /* Set the command list of B to COMMANDS. If breakpoint is tracepoint,
1431 validate that only allowed commands are included. */
1432
1433 void
1434 breakpoint_set_commands (struct breakpoint *b,
1435 counted_command_line &&commands)
1436 {
1437 validate_commands_for_breakpoint (b, commands.get ());
1438
1439 b->commands = std::move (commands);
1440 gdb::observers::breakpoint_modified.notify (b);
1441 }
1442
1443 /* Set the internal `silent' flag on the breakpoint. Note that this
1444 is not the same as the "silent" that may appear in the breakpoint's
1445 commands. */
1446
1447 void
1448 breakpoint_set_silent (struct breakpoint *b, int silent)
1449 {
1450 int old_silent = b->silent;
1451
1452 b->silent = silent;
1453 if (old_silent != silent)
1454 gdb::observers::breakpoint_modified.notify (b);
1455 }
1456
1457 /* See breakpoint.h. */
1458
1459 void
1460 breakpoint_set_thread (struct breakpoint *b, int thread)
1461 {
1462 /* It is invalid to set the thread field to anything other than -1 (which
1463 means no thread restriction) if a task restriction is already in
1464 place. */
1465 gdb_assert (thread == -1 || b->task == -1);
1466
1467 int old_thread = b->thread;
1468
1469 b->thread = thread;
1470 if (old_thread != thread)
1471 gdb::observers::breakpoint_modified.notify (b);
1472 }
1473
1474 /* See breakpoint.h. */
1475
1476 void
1477 breakpoint_set_task (struct breakpoint *b, int task)
1478 {
1479 /* It is invalid to set the task field to anything other than -1 (which
1480 means no task restriction) if a thread restriction is already in
1481 place. */
1482 gdb_assert (task == -1 || b->thread == -1);
1483
1484 int old_task = b->task;
1485
1486 b->task = task;
1487 if (old_task != task)
1488 gdb::observers::breakpoint_modified.notify (b);
1489 }
1490
1491 static void
1492 commands_command_1 (const char *arg, int from_tty,
1493 struct command_line *control)
1494 {
1495 counted_command_line cmd;
1496 /* cmd_read will be true once we have read cmd. Note that cmd might still be
1497 NULL after the call to read_command_lines if the user provides an empty
1498 list of command by just typing "end". */
1499 bool cmd_read = false;
1500
1501 std::string new_arg;
1502
1503 if (arg == NULL || !*arg)
1504 {
1505 /* Argument not explicitly given. Synthesize it. */
1506 if (breakpoint_count - prev_breakpoint_count > 1)
1507 new_arg = string_printf ("%d-%d", prev_breakpoint_count + 1,
1508 breakpoint_count);
1509 else if (breakpoint_count > 0)
1510 new_arg = string_printf ("%d", breakpoint_count);
1511 }
1512 else
1513 {
1514 /* Create a copy of ARG. This is needed because the "commands"
1515 command may be coming from a script. In that case, the read
1516 line buffer is going to be overwritten in the lambda of
1517 'map_breakpoint_numbers' below when reading the next line
1518 before we are are done parsing the breakpoint numbers. */
1519 new_arg = arg;
1520 }
1521 arg = new_arg.c_str ();
1522
1523 map_breakpoint_numbers
1524 (arg, [&] (breakpoint *b)
1525 {
1526 if (!cmd_read)
1527 {
1528 gdb_assert (cmd == NULL);
1529 if (control != NULL)
1530 cmd = control->body_list_0;
1531 else
1532 {
1533 std::string str
1534 = string_printf (_("Type commands for breakpoint(s) "
1535 "%s, one per line."),
1536 arg);
1537
1538 auto do_validate = [=] (const char *line)
1539 {
1540 validate_actionline (line, b);
1541 };
1542 gdb::function_view<void (const char *)> validator;
1543 if (is_tracepoint (b))
1544 validator = do_validate;
1545
1546 cmd = read_command_lines (str.c_str (), from_tty, 1, validator);
1547 }
1548 cmd_read = true;
1549 }
1550
1551 /* If a breakpoint was on the list more than once, we don't need to
1552 do anything. */
1553 if (b->commands != cmd)
1554 {
1555 validate_commands_for_breakpoint (b, cmd.get ());
1556 b->commands = cmd;
1557 gdb::observers::breakpoint_modified.notify (b);
1558 }
1559 });
1560 }
1561
1562 static void
1563 commands_command (const char *arg, int from_tty)
1564 {
1565 commands_command_1 (arg, from_tty, NULL);
1566 }
1567
1568 /* Like commands_command, but instead of reading the commands from
1569 input stream, takes them from an already parsed command structure.
1570
1571 This is used by cli-script.c to DTRT with breakpoint commands
1572 that are part of if and while bodies. */
1573 enum command_control_type
1574 commands_from_control_command (const char *arg, struct command_line *cmd)
1575 {
1576 commands_command_1 (arg, 0, cmd);
1577 return simple_control;
1578 }
1579
1580 /* Return true if BL->TARGET_INFO contains valid information. */
1581
1582 static bool
1583 bp_location_has_shadow (struct bp_location *bl)
1584 {
1585 if (bl->loc_type != bp_loc_software_breakpoint)
1586 return false;
1587 if (!bl->inserted)
1588 return false;
1589 if (bl->target_info.shadow_len == 0)
1590 /* BL isn't valid, or doesn't shadow memory. */
1591 return false;
1592 return true;
1593 }
1594
1595 /* Update BUF, which is LEN bytes read from the target address
1596 MEMADDR, by replacing a memory breakpoint with its shadowed
1597 contents.
1598
1599 If READBUF is not NULL, this buffer must not overlap with the of
1600 the breakpoint location's shadow_contents buffer. Otherwise, a
1601 failed assertion internal error will be raised. */
1602
1603 static void
1604 one_breakpoint_xfer_memory (gdb_byte *readbuf, gdb_byte *writebuf,
1605 const gdb_byte *writebuf_org,
1606 ULONGEST memaddr, LONGEST len,
1607 struct bp_target_info *target_info,
1608 struct gdbarch *gdbarch)
1609 {
1610 /* Now do full processing of the found relevant range of elements. */
1611 CORE_ADDR bp_addr = 0;
1612 int bp_size = 0;
1613 int bptoffset = 0;
1614
1615 if (!breakpoint_address_match (target_info->placed_address_space, 0,
1616 current_program_space->aspace, 0))
1617 {
1618 /* The breakpoint is inserted in a different address space. */
1619 return;
1620 }
1621
1622 /* Addresses and length of the part of the breakpoint that
1623 we need to copy. */
1624 bp_addr = target_info->placed_address;
1625 bp_size = target_info->shadow_len;
1626
1627 if (bp_addr + bp_size <= memaddr)
1628 {
1629 /* The breakpoint is entirely before the chunk of memory we are
1630 reading. */
1631 return;
1632 }
1633
1634 if (bp_addr >= memaddr + len)
1635 {
1636 /* The breakpoint is entirely after the chunk of memory we are
1637 reading. */
1638 return;
1639 }
1640
1641 /* Offset within shadow_contents. */
1642 if (bp_addr < memaddr)
1643 {
1644 /* Only copy the second part of the breakpoint. */
1645 bp_size -= memaddr - bp_addr;
1646 bptoffset = memaddr - bp_addr;
1647 bp_addr = memaddr;
1648 }
1649
1650 if (bp_addr + bp_size > memaddr + len)
1651 {
1652 /* Only copy the first part of the breakpoint. */
1653 bp_size -= (bp_addr + bp_size) - (memaddr + len);
1654 }
1655
1656 if (readbuf != NULL)
1657 {
1658 /* Verify that the readbuf buffer does not overlap with the
1659 shadow_contents buffer. */
1660 gdb_assert (target_info->shadow_contents >= readbuf + len
1661 || readbuf >= (target_info->shadow_contents
1662 + target_info->shadow_len));
1663
1664 /* Update the read buffer with this inserted breakpoint's
1665 shadow. */
1666 memcpy (readbuf + bp_addr - memaddr,
1667 target_info->shadow_contents + bptoffset, bp_size);
1668 }
1669 else
1670 {
1671 const unsigned char *bp;
1672 CORE_ADDR addr = target_info->reqstd_address;
1673 int placed_size;
1674
1675 /* Update the shadow with what we want to write to memory. */
1676 memcpy (target_info->shadow_contents + bptoffset,
1677 writebuf_org + bp_addr - memaddr, bp_size);
1678
1679 /* Determine appropriate breakpoint contents and size for this
1680 address. */
1681 bp = gdbarch_breakpoint_from_pc (gdbarch, &addr, &placed_size);
1682
1683 /* Update the final write buffer with this inserted
1684 breakpoint's INSN. */
1685 memcpy (writebuf + bp_addr - memaddr, bp + bptoffset, bp_size);
1686 }
1687 }
1688
1689 /* Update BUF, which is LEN bytes read from the target address MEMADDR,
1690 by replacing any memory breakpoints with their shadowed contents.
1691
1692 If READBUF is not NULL, this buffer must not overlap with any of
1693 the breakpoint location's shadow_contents buffers. Otherwise,
1694 a failed assertion internal error will be raised.
1695
1696 The range of shadowed area by each bp_location is:
1697 bl->address - bp_locations_placed_address_before_address_max
1698 up to bl->address + bp_locations_shadow_len_after_address_max
1699 The range we were requested to resolve shadows for is:
1700 memaddr ... memaddr + len
1701 Thus the safe cutoff boundaries for performance optimization are
1702 memaddr + len <= (bl->address
1703 - bp_locations_placed_address_before_address_max)
1704 and:
1705 bl->address + bp_locations_shadow_len_after_address_max <= memaddr */
1706
1707 void
1708 breakpoint_xfer_memory (gdb_byte *readbuf, gdb_byte *writebuf,
1709 const gdb_byte *writebuf_org,
1710 ULONGEST memaddr, LONGEST len)
1711 {
1712 /* Left boundary, right boundary and median element of our binary
1713 search. */
1714 unsigned bc_l, bc_r, bc;
1715
1716 /* Find BC_L which is a leftmost element which may affect BUF
1717 content. It is safe to report lower value but a failure to
1718 report higher one. */
1719
1720 bc_l = 0;
1721 bc_r = bp_locations.size ();
1722 while (bc_l + 1 < bc_r)
1723 {
1724 struct bp_location *bl;
1725
1726 bc = (bc_l + bc_r) / 2;
1727 bl = bp_locations[bc];
1728
1729 /* Check first BL->ADDRESS will not overflow due to the added
1730 constant. Then advance the left boundary only if we are sure
1731 the BC element can in no way affect the BUF content (MEMADDR
1732 to MEMADDR + LEN range).
1733
1734 Use the BP_LOCATIONS_SHADOW_LEN_AFTER_ADDRESS_MAX safety
1735 offset so that we cannot miss a breakpoint with its shadow
1736 range tail still reaching MEMADDR. */
1737
1738 if ((bl->address + bp_locations_shadow_len_after_address_max
1739 >= bl->address)
1740 && (bl->address + bp_locations_shadow_len_after_address_max
1741 <= memaddr))
1742 bc_l = bc;
1743 else
1744 bc_r = bc;
1745 }
1746
1747 /* Due to the binary search above, we need to make sure we pick the
1748 first location that's at BC_L's address. E.g., if there are
1749 multiple locations at the same address, BC_L may end up pointing
1750 at a duplicate location, and miss the "master"/"inserted"
1751 location. Say, given locations L1, L2 and L3 at addresses A and
1752 B:
1753
1754 L1@A, L2@A, L3@B, ...
1755
1756 BC_L could end up pointing at location L2, while the "master"
1757 location could be L1. Since the `loc->inserted' flag is only set
1758 on "master" locations, we'd forget to restore the shadow of L1
1759 and L2. */
1760 while (bc_l > 0
1761 && bp_locations[bc_l]->address == bp_locations[bc_l - 1]->address)
1762 bc_l--;
1763
1764 /* Now do full processing of the found relevant range of elements. */
1765
1766 for (bc = bc_l; bc < bp_locations.size (); bc++)
1767 {
1768 struct bp_location *bl = bp_locations[bc];
1769
1770 /* bp_location array has BL->OWNER always non-NULL. */
1771 if (bl->owner->type == bp_none)
1772 warning (_("reading through apparently deleted breakpoint #%d?"),
1773 bl->owner->number);
1774
1775 /* Performance optimization: any further element can no longer affect BUF
1776 content. */
1777
1778 if (bl->address >= bp_locations_placed_address_before_address_max
1779 && (memaddr + len
1780 <= (bl->address
1781 - bp_locations_placed_address_before_address_max)))
1782 break;
1783
1784 if (!bp_location_has_shadow (bl))
1785 continue;
1786
1787 one_breakpoint_xfer_memory (readbuf, writebuf, writebuf_org,
1788 memaddr, len, &bl->target_info, bl->gdbarch);
1789 }
1790 }
1791
1792 /* See breakpoint.h. */
1793
1794 bool
1795 is_breakpoint (const struct breakpoint *bpt)
1796 {
1797 return (bpt->type == bp_breakpoint
1798 || bpt->type == bp_hardware_breakpoint
1799 || bpt->type == bp_dprintf);
1800 }
1801
1802 /* Return true if BPT is of any hardware watchpoint kind. */
1803
1804 static bool
1805 is_hardware_watchpoint (const struct breakpoint *bpt)
1806 {
1807 return (bpt->type == bp_hardware_watchpoint
1808 || bpt->type == bp_read_watchpoint
1809 || bpt->type == bp_access_watchpoint);
1810 }
1811
1812 /* See breakpoint.h. */
1813
1814 bool
1815 is_watchpoint (const struct breakpoint *bpt)
1816 {
1817 return (is_hardware_watchpoint (bpt)
1818 || bpt->type == bp_watchpoint);
1819 }
1820
1821 /* Returns true if the current thread and its running state are safe
1822 to evaluate or update watchpoint B. Watchpoints on local
1823 expressions need to be evaluated in the context of the thread that
1824 was current when the watchpoint was created, and, that thread needs
1825 to be stopped to be able to select the correct frame context.
1826 Watchpoints on global expressions can be evaluated on any thread,
1827 and in any state. It is presently left to the target allowing
1828 memory accesses when threads are running. */
1829
1830 static bool
1831 watchpoint_in_thread_scope (struct watchpoint *b)
1832 {
1833 return (b->pspace == current_program_space
1834 && (b->watchpoint_thread == null_ptid
1835 || (inferior_ptid == b->watchpoint_thread
1836 && !inferior_thread ()->executing ())));
1837 }
1838
1839 /* Set watchpoint B to disp_del_at_next_stop, even including its possible
1840 associated bp_watchpoint_scope breakpoint. */
1841
1842 static void
1843 watchpoint_del_at_next_stop (struct watchpoint *w)
1844 {
1845 if (w->related_breakpoint != w)
1846 {
1847 gdb_assert (w->related_breakpoint->type == bp_watchpoint_scope);
1848 gdb_assert (w->related_breakpoint->related_breakpoint == w);
1849 w->related_breakpoint->disposition = disp_del_at_next_stop;
1850 w->related_breakpoint->related_breakpoint = w->related_breakpoint;
1851 w->related_breakpoint = w;
1852 }
1853 w->disposition = disp_del_at_next_stop;
1854 }
1855
1856 /* Extract a bitfield value from value VAL using the bit parameters contained in
1857 watchpoint W. */
1858
1859 static struct value *
1860 extract_bitfield_from_watchpoint_value (struct watchpoint *w, struct value *val)
1861 {
1862 struct value *bit_val;
1863
1864 if (val == NULL)
1865 return NULL;
1866
1867 bit_val = allocate_value (val->type ());
1868
1869 unpack_value_bitfield (bit_val,
1870 w->val_bitpos,
1871 w->val_bitsize,
1872 value_contents_for_printing (val).data (),
1873 val->offset (),
1874 val);
1875
1876 return bit_val;
1877 }
1878
1879 /* Allocate a dummy location and add it to B. This is required
1880 because bpstat_stop_status requires a location to be able to report
1881 stops. */
1882
1883 static void
1884 add_dummy_location (struct breakpoint *b,
1885 struct program_space *pspace)
1886 {
1887 gdb_assert (b->loc == NULL);
1888
1889 b->loc = new bp_location (b, bp_loc_other);
1890 b->loc->pspace = pspace;
1891 }
1892
1893 /* Assuming that B is a watchpoint:
1894 - Reparse watchpoint expression, if REPARSE is true
1895 - Evaluate expression and store the result in B->val
1896 - Evaluate the condition if there is one, and store the result
1897 in b->loc->cond.
1898 - Update the list of values that must be watched in B->loc.
1899
1900 If the watchpoint disposition is disp_del_at_next_stop, then do
1901 nothing. If this is local watchpoint that is out of scope, delete
1902 it.
1903
1904 Even with `set breakpoint always-inserted on' the watchpoints are
1905 removed + inserted on each stop here. Normal breakpoints must
1906 never be removed because they might be missed by a running thread
1907 when debugging in non-stop mode. On the other hand, hardware
1908 watchpoints (is_hardware_watchpoint; processed here) are specific
1909 to each LWP since they are stored in each LWP's hardware debug
1910 registers. Therefore, such LWP must be stopped first in order to
1911 be able to modify its hardware watchpoints.
1912
1913 Hardware watchpoints must be reset exactly once after being
1914 presented to the user. It cannot be done sooner, because it would
1915 reset the data used to present the watchpoint hit to the user. And
1916 it must not be done later because it could display the same single
1917 watchpoint hit during multiple GDB stops. Note that the latter is
1918 relevant only to the hardware watchpoint types bp_read_watchpoint
1919 and bp_access_watchpoint. False hit by bp_hardware_watchpoint is
1920 not user-visible - its hit is suppressed if the memory content has
1921 not changed.
1922
1923 The following constraints influence the location where we can reset
1924 hardware watchpoints:
1925
1926 * target_stopped_by_watchpoint and target_stopped_data_address are
1927 called several times when GDB stops.
1928
1929 [linux]
1930 * Multiple hardware watchpoints can be hit at the same time,
1931 causing GDB to stop. GDB only presents one hardware watchpoint
1932 hit at a time as the reason for stopping, and all the other hits
1933 are presented later, one after the other, each time the user
1934 requests the execution to be resumed. Execution is not resumed
1935 for the threads still having pending hit event stored in
1936 LWP_INFO->STATUS. While the watchpoint is already removed from
1937 the inferior on the first stop the thread hit event is kept being
1938 reported from its cached value by linux_nat_stopped_data_address
1939 until the real thread resume happens after the watchpoint gets
1940 presented and thus its LWP_INFO->STATUS gets reset.
1941
1942 Therefore the hardware watchpoint hit can get safely reset on the
1943 watchpoint removal from inferior. */
1944
1945 static void
1946 update_watchpoint (struct watchpoint *b, bool reparse)
1947 {
1948 bool within_current_scope;
1949
1950 /* If this is a local watchpoint, we only want to check if the
1951 watchpoint frame is in scope if the current thread is the thread
1952 that was used to create the watchpoint. */
1953 if (!watchpoint_in_thread_scope (b))
1954 return;
1955
1956 if (b->disposition == disp_del_at_next_stop)
1957 return;
1958
1959 gdb::optional<scoped_restore_selected_frame> restore_frame;
1960
1961 /* Determine if the watchpoint is within scope. */
1962 if (b->exp_valid_block == NULL)
1963 within_current_scope = true;
1964 else
1965 {
1966 frame_info_ptr fi = get_current_frame ();
1967 struct gdbarch *frame_arch = get_frame_arch (fi);
1968 CORE_ADDR frame_pc = get_frame_pc (fi);
1969
1970 /* If we're at a point where the stack has been destroyed
1971 (e.g. in a function epilogue), unwinding may not work
1972 properly. Do not attempt to recreate locations at this
1973 point. See similar comments in watchpoint_check. */
1974 if (gdbarch_stack_frame_destroyed_p (frame_arch, frame_pc))
1975 return;
1976
1977 /* Save the current frame's ID so we can restore it after
1978 evaluating the watchpoint expression on its own frame. */
1979 /* FIXME drow/2003-09-09: It would be nice if evaluate_expression
1980 took a frame parameter, so that we didn't have to change the
1981 selected frame. */
1982 restore_frame.emplace ();
1983
1984 fi = frame_find_by_id (b->watchpoint_frame);
1985 within_current_scope = (fi != NULL);
1986 if (within_current_scope)
1987 select_frame (fi);
1988 }
1989
1990 /* We don't free locations. They are stored in the bp_location array
1991 and update_global_location_list will eventually delete them and
1992 remove breakpoints if needed. */
1993 b->loc = NULL;
1994
1995 if (within_current_scope && reparse)
1996 {
1997 const char *s;
1998
1999 b->exp.reset ();
2000 s = (b->exp_string_reparse
2001 ? b->exp_string_reparse.get ()
2002 : b->exp_string.get ());
2003 b->exp = parse_exp_1 (&s, 0, b->exp_valid_block, 0);
2004 /* If the meaning of expression itself changed, the old value is
2005 no longer relevant. We don't want to report a watchpoint hit
2006 to the user when the old value and the new value may actually
2007 be completely different objects. */
2008 b->val = NULL;
2009 b->val_valid = false;
2010
2011 /* Note that unlike with breakpoints, the watchpoint's condition
2012 expression is stored in the breakpoint object, not in the
2013 locations (re)created below. */
2014 if (b->cond_string != NULL)
2015 {
2016 b->cond_exp.reset ();
2017
2018 s = b->cond_string.get ();
2019 b->cond_exp = parse_exp_1 (&s, 0, b->cond_exp_valid_block, 0);
2020 }
2021 }
2022
2023 /* If we failed to parse the expression, for example because
2024 it refers to a global variable in a not-yet-loaded shared library,
2025 don't try to insert watchpoint. We don't automatically delete
2026 such watchpoint, though, since failure to parse expression
2027 is different from out-of-scope watchpoint. */
2028 if (!target_has_execution ())
2029 {
2030 /* Without execution, memory can't change. No use to try and
2031 set watchpoint locations. The watchpoint will be reset when
2032 the target gains execution, through breakpoint_re_set. */
2033 if (!can_use_hw_watchpoints)
2034 {
2035 if (b->works_in_software_mode ())
2036 b->type = bp_watchpoint;
2037 else
2038 error (_("Can't set read/access watchpoint when "
2039 "hardware watchpoints are disabled."));
2040 }
2041 }
2042 else if (within_current_scope && b->exp)
2043 {
2044 std::vector<value_ref_ptr> val_chain;
2045 struct value *v, *result;
2046 struct program_space *frame_pspace;
2047
2048 fetch_subexp_value (b->exp.get (), b->exp->op.get (), &v, &result,
2049 &val_chain, false);
2050
2051 /* Avoid setting b->val if it's already set. The meaning of
2052 b->val is 'the last value' user saw, and we should update
2053 it only if we reported that last value to user. As it
2054 happens, the code that reports it updates b->val directly.
2055 We don't keep track of the memory value for masked
2056 watchpoints. */
2057 if (!b->val_valid && !is_masked_watchpoint (b))
2058 {
2059 if (b->val_bitsize != 0)
2060 v = extract_bitfield_from_watchpoint_value (b, v);
2061 b->val = release_value (v);
2062 b->val_valid = true;
2063 }
2064
2065 frame_pspace = get_frame_program_space (get_selected_frame (NULL));
2066
2067 /* Look at each value on the value chain. */
2068 gdb_assert (!val_chain.empty ());
2069 for (const value_ref_ptr &iter : val_chain)
2070 {
2071 v = iter.get ();
2072
2073 /* If it's a memory location, and GDB actually needed
2074 its contents to evaluate the expression, then we
2075 must watch it. If the first value returned is
2076 still lazy, that means an error occurred reading it;
2077 watch it anyway in case it becomes readable. */
2078 if (VALUE_LVAL (v) == lval_memory
2079 && (v == val_chain[0] || ! value_lazy (v)))
2080 {
2081 struct type *vtype = check_typedef (v->type ());
2082
2083 /* We only watch structs and arrays if user asked
2084 for it explicitly, never if they just happen to
2085 appear in the middle of some value chain. */
2086 if (v == result
2087 || (vtype->code () != TYPE_CODE_STRUCT
2088 && vtype->code () != TYPE_CODE_ARRAY))
2089 {
2090 CORE_ADDR addr;
2091 enum target_hw_bp_type type;
2092 struct bp_location *loc, **tmp;
2093 int bitpos = 0, bitsize = 0;
2094
2095 if (v->bitsize () != 0)
2096 {
2097 /* Extract the bit parameters out from the bitfield
2098 sub-expression. */
2099 bitpos = v->bitpos ();
2100 bitsize = v->bitsize ();
2101 }
2102 else if (v == result && b->val_bitsize != 0)
2103 {
2104 /* If VAL_BITSIZE != 0 then RESULT is actually a bitfield
2105 lvalue whose bit parameters are saved in the fields
2106 VAL_BITPOS and VAL_BITSIZE. */
2107 bitpos = b->val_bitpos;
2108 bitsize = b->val_bitsize;
2109 }
2110
2111 addr = value_address (v);
2112 if (bitsize != 0)
2113 {
2114 /* Skip the bytes that don't contain the bitfield. */
2115 addr += bitpos / 8;
2116 }
2117
2118 type = hw_write;
2119 if (b->type == bp_read_watchpoint)
2120 type = hw_read;
2121 else if (b->type == bp_access_watchpoint)
2122 type = hw_access;
2123
2124 loc = b->allocate_location ();
2125 for (tmp = &(b->loc); *tmp != NULL; tmp = &((*tmp)->next))
2126 ;
2127 *tmp = loc;
2128 loc->gdbarch = v->type ()->arch ();
2129
2130 loc->pspace = frame_pspace;
2131 loc->address
2132 = gdbarch_remove_non_address_bits (loc->gdbarch, addr);
2133
2134 if (bitsize != 0)
2135 {
2136 /* Just cover the bytes that make up the bitfield. */
2137 loc->length = ((bitpos % 8) + bitsize + 7) / 8;
2138 }
2139 else
2140 loc->length = v->type ()->length ();
2141
2142 loc->watchpoint_type = type;
2143 }
2144 }
2145 }
2146
2147 /* Change the type of breakpoint between hardware assisted or
2148 an ordinary watchpoint depending on the hardware support and
2149 free hardware slots. Recheck the number of free hardware slots
2150 as the value chain may have changed. */
2151 {
2152 int reg_cnt;
2153 enum bp_loc_type loc_type;
2154
2155 reg_cnt = can_use_hardware_watchpoint (val_chain);
2156
2157 if (reg_cnt)
2158 {
2159 int i, target_resources_ok, other_type_used;
2160 enum bptype type;
2161
2162 /* Use an exact watchpoint when there's only one memory region to be
2163 watched, and only one debug register is needed to watch it. */
2164 b->exact = target_exact_watchpoints && reg_cnt == 1;
2165
2166 /* We need to determine how many resources are already
2167 used for all other hardware watchpoints plus this one
2168 to see if we still have enough resources to also fit
2169 this watchpoint in as well. */
2170
2171 /* If this is a software watchpoint, we try to turn it
2172 to a hardware one -- count resources as if B was of
2173 hardware watchpoint type. */
2174 type = b->type;
2175 if (type == bp_watchpoint)
2176 type = bp_hardware_watchpoint;
2177
2178 /* This watchpoint may or may not have been placed on
2179 the list yet at this point (it won't be in the list
2180 if we're trying to create it for the first time,
2181 through watch_command), so always account for it
2182 manually. */
2183
2184 /* Count resources used by all watchpoints except B. */
2185 i = hw_watchpoint_used_count_others (b, type, &other_type_used);
2186
2187 /* Add in the resources needed for B. */
2188 i += hw_watchpoint_use_count (b);
2189
2190 target_resources_ok
2191 = target_can_use_hardware_watchpoint (type, i, other_type_used);
2192 if (target_resources_ok <= 0)
2193 {
2194 bool sw_mode = b->works_in_software_mode ();
2195
2196 if (target_resources_ok == 0 && !sw_mode)
2197 error (_("Target does not support this type of "
2198 "hardware watchpoint."));
2199 else if (target_resources_ok < 0 && !sw_mode)
2200 error (_("There are not enough available hardware "
2201 "resources for this watchpoint."));
2202
2203 /* Downgrade to software watchpoint. */
2204 b->type = bp_watchpoint;
2205 }
2206 else
2207 {
2208 /* If this was a software watchpoint, we've just
2209 found we have enough resources to turn it to a
2210 hardware watchpoint. Otherwise, this is a
2211 nop. */
2212 b->type = type;
2213 }
2214 }
2215 else if (!b->works_in_software_mode ())
2216 {
2217 if (!can_use_hw_watchpoints)
2218 error (_("Can't set read/access watchpoint when "
2219 "hardware watchpoints are disabled."));
2220 else
2221 error (_("Expression cannot be implemented with "
2222 "read/access watchpoint."));
2223 }
2224 else
2225 b->type = bp_watchpoint;
2226
2227 loc_type = (b->type == bp_watchpoint? bp_loc_software_watchpoint
2228 : bp_loc_hardware_watchpoint);
2229 for (bp_location *bl : b->locations ())
2230 bl->loc_type = loc_type;
2231 }
2232
2233 /* If a software watchpoint is not watching any memory, then the
2234 above left it without any location set up. But,
2235 bpstat_stop_status requires a location to be able to report
2236 stops, so make sure there's at least a dummy one. */
2237 if (b->type == bp_watchpoint && b->loc == NULL)
2238 add_dummy_location (b, frame_pspace);
2239 }
2240 else if (!within_current_scope)
2241 {
2242 gdb_printf (_("\
2243 Watchpoint %d deleted because the program has left the block\n\
2244 in which its expression is valid.\n"),
2245 b->number);
2246 watchpoint_del_at_next_stop (b);
2247 }
2248 }
2249
2250 /* Returns true iff breakpoint location should be
2251 inserted in the inferior. We don't differentiate the type of BL's owner
2252 (breakpoint vs. tracepoint), although insert_location in tracepoint's
2253 breakpoint_ops is not defined, because in insert_bp_location,
2254 tracepoint's insert_location will not be called. */
2255
2256 static bool
2257 should_be_inserted (struct bp_location *bl)
2258 {
2259 if (bl->owner == NULL || !breakpoint_enabled (bl->owner))
2260 return false;
2261
2262 if (bl->owner->disposition == disp_del_at_next_stop)
2263 return false;
2264
2265 if (!bl->enabled || bl->disabled_by_cond
2266 || bl->shlib_disabled || bl->duplicate)
2267 return false;
2268
2269 if (user_breakpoint_p (bl->owner) && bl->pspace->executing_startup)
2270 return false;
2271
2272 /* This is set for example, when we're attached to the parent of a
2273 vfork, and have detached from the child. The child is running
2274 free, and we expect it to do an exec or exit, at which point the
2275 OS makes the parent schedulable again (and the target reports
2276 that the vfork is done). Until the child is done with the shared
2277 memory region, do not insert breakpoints in the parent, otherwise
2278 the child could still trip on the parent's breakpoints. Since
2279 the parent is blocked anyway, it won't miss any breakpoint. */
2280 if (bl->pspace->breakpoints_not_allowed)
2281 return false;
2282
2283 /* Don't insert a breakpoint if we're trying to step past its
2284 location, except if the breakpoint is a single-step breakpoint,
2285 and the breakpoint's thread is the thread which is stepping past
2286 a breakpoint. */
2287 if ((bl->loc_type == bp_loc_software_breakpoint
2288 || bl->loc_type == bp_loc_hardware_breakpoint)
2289 && stepping_past_instruction_at (bl->pspace->aspace,
2290 bl->address)
2291 /* The single-step breakpoint may be inserted at the location
2292 we're trying to step if the instruction branches to itself.
2293 However, the instruction won't be executed at all and it may
2294 break the semantics of the instruction, for example, the
2295 instruction is a conditional branch or updates some flags.
2296 We can't fix it unless GDB is able to emulate the instruction
2297 or switch to displaced stepping. */
2298 && !(bl->owner->type == bp_single_step
2299 && thread_is_stepping_over_breakpoint (bl->owner->thread)))
2300 {
2301 infrun_debug_printf ("skipping breakpoint: stepping past insn at: %s",
2302 paddress (bl->gdbarch, bl->address));
2303 return false;
2304 }
2305
2306 /* Don't insert watchpoints if we're trying to step past the
2307 instruction that triggered one. */
2308 if ((bl->loc_type == bp_loc_hardware_watchpoint)
2309 && stepping_past_nonsteppable_watchpoint ())
2310 {
2311 infrun_debug_printf ("stepping past non-steppable watchpoint. "
2312 "skipping watchpoint at %s:%d",
2313 paddress (bl->gdbarch, bl->address), bl->length);
2314 return false;
2315 }
2316
2317 return true;
2318 }
2319
2320 /* Same as should_be_inserted but does the check assuming
2321 that the location is not duplicated. */
2322
2323 static bool
2324 unduplicated_should_be_inserted (struct bp_location *bl)
2325 {
2326 scoped_restore restore_bl_duplicate
2327 = make_scoped_restore (&bl->duplicate, 0);
2328
2329 return should_be_inserted (bl);
2330 }
2331
2332 /* Parses a conditional described by an expression COND into an
2333 agent expression bytecode suitable for evaluation
2334 by the bytecode interpreter. Return NULL if there was
2335 any error during parsing. */
2336
2337 static agent_expr_up
2338 parse_cond_to_aexpr (CORE_ADDR scope, struct expression *cond)
2339 {
2340 if (cond == NULL)
2341 return NULL;
2342
2343 agent_expr_up aexpr;
2344
2345 /* We don't want to stop processing, so catch any errors
2346 that may show up. */
2347 try
2348 {
2349 aexpr = gen_eval_for_expr (scope, cond);
2350 }
2351
2352 catch (const gdb_exception_error &ex)
2353 {
2354 /* If we got here, it means the condition could not be parsed to a valid
2355 bytecode expression and thus can't be evaluated on the target's side.
2356 It's no use iterating through the conditions. */
2357 }
2358
2359 /* We have a valid agent expression. */
2360 return aexpr;
2361 }
2362
2363 /* Based on location BL, create a list of breakpoint conditions to be
2364 passed on to the target. If we have duplicated locations with different
2365 conditions, we will add such conditions to the list. The idea is that the
2366 target will evaluate the list of conditions and will only notify GDB when
2367 one of them is true. */
2368
2369 static void
2370 build_target_condition_list (struct bp_location *bl)
2371 {
2372 bool null_condition_or_parse_error = false;
2373 int modified = bl->needs_update;
2374
2375 /* Release conditions left over from a previous insert. */
2376 bl->target_info.conditions.clear ();
2377
2378 /* This is only meaningful if the target is
2379 evaluating conditions and if the user has
2380 opted for condition evaluation on the target's
2381 side. */
2382 if (gdb_evaluates_breakpoint_condition_p ()
2383 || !target_supports_evaluation_of_breakpoint_conditions ())
2384 return;
2385
2386 auto loc_range = all_bp_locations_at_addr (bl->address);
2387
2388 /* Do a first pass to check for locations with no assigned
2389 conditions or conditions that fail to parse to a valid agent
2390 expression bytecode. If any of these happen, then it's no use to
2391 send conditions to the target since this location will always
2392 trigger and generate a response back to GDB. Note we consider
2393 all locations at the same address irrespective of type, i.e.,
2394 even if the locations aren't considered duplicates (e.g.,
2395 software breakpoint and hardware breakpoint at the same
2396 address). */
2397 for (bp_location *loc : loc_range)
2398 {
2399 if (is_breakpoint (loc->owner) && loc->pspace->num == bl->pspace->num)
2400 {
2401 if (modified)
2402 {
2403 /* Re-parse the conditions since something changed. In that
2404 case we already freed the condition bytecodes (see
2405 force_breakpoint_reinsertion). We just
2406 need to parse the condition to bytecodes again. */
2407 loc->cond_bytecode = parse_cond_to_aexpr (bl->address,
2408 loc->cond.get ());
2409 }
2410
2411 /* If we have a NULL bytecode expression, it means something
2412 went wrong or we have a null condition expression. */
2413 if (!loc->cond_bytecode)
2414 {
2415 null_condition_or_parse_error = true;
2416 break;
2417 }
2418 }
2419 }
2420
2421 /* If any of these happened, it means we will have to evaluate the conditions
2422 for the location's address on gdb's side. It is no use keeping bytecodes
2423 for all the other duplicate locations, thus we free all of them here.
2424
2425 This is so we have a finer control over which locations' conditions are
2426 being evaluated by GDB or the remote stub. */
2427 if (null_condition_or_parse_error)
2428 {
2429 for (bp_location *loc : loc_range)
2430 {
2431 if (is_breakpoint (loc->owner) && loc->pspace->num == bl->pspace->num)
2432 {
2433 /* Only go as far as the first NULL bytecode is
2434 located. */
2435 if (!loc->cond_bytecode)
2436 return;
2437
2438 loc->cond_bytecode.reset ();
2439 }
2440 }
2441 }
2442
2443 /* No NULL conditions or failed bytecode generation. Build a
2444 condition list for this location's address. If we have software
2445 and hardware locations at the same address, they aren't
2446 considered duplicates, but we still marge all the conditions
2447 anyway, as it's simpler, and doesn't really make a practical
2448 difference. */
2449 for (bp_location *loc : loc_range)
2450 if (loc->cond
2451 && is_breakpoint (loc->owner)
2452 && loc->pspace->num == bl->pspace->num
2453 && loc->owner->enable_state == bp_enabled
2454 && loc->enabled
2455 && !loc->disabled_by_cond)
2456 {
2457 /* Add the condition to the vector. This will be used later
2458 to send the conditions to the target. */
2459 bl->target_info.conditions.push_back (loc->cond_bytecode.get ());
2460 }
2461
2462 return;
2463 }
2464
2465 /* Parses a command described by string CMD into an agent expression
2466 bytecode suitable for evaluation by the bytecode interpreter.
2467 Return NULL if there was any error during parsing. */
2468
2469 static agent_expr_up
2470 parse_cmd_to_aexpr (CORE_ADDR scope, char *cmd)
2471 {
2472 const char *cmdrest;
2473 const char *format_start, *format_end;
2474 struct gdbarch *gdbarch = get_current_arch ();
2475
2476 if (cmd == NULL)
2477 return NULL;
2478
2479 cmdrest = cmd;
2480
2481 if (*cmdrest == ',')
2482 ++cmdrest;
2483 cmdrest = skip_spaces (cmdrest);
2484
2485 if (*cmdrest++ != '"')
2486 error (_("No format string following the location"));
2487
2488 format_start = cmdrest;
2489
2490 format_pieces fpieces (&cmdrest);
2491
2492 format_end = cmdrest;
2493
2494 if (*cmdrest++ != '"')
2495 error (_("Bad format string, non-terminated '\"'."));
2496
2497 cmdrest = skip_spaces (cmdrest);
2498
2499 if (!(*cmdrest == ',' || *cmdrest == '\0'))
2500 error (_("Invalid argument syntax"));
2501
2502 if (*cmdrest == ',')
2503 cmdrest++;
2504 cmdrest = skip_spaces (cmdrest);
2505
2506 /* For each argument, make an expression. */
2507
2508 std::vector<struct expression *> argvec;
2509 while (*cmdrest != '\0')
2510 {
2511 const char *cmd1;
2512
2513 cmd1 = cmdrest;
2514 expression_up expr = parse_exp_1 (&cmd1, scope, block_for_pc (scope), 1);
2515 argvec.push_back (expr.release ());
2516 cmdrest = cmd1;
2517 if (*cmdrest == ',')
2518 ++cmdrest;
2519 }
2520
2521 agent_expr_up aexpr;
2522
2523 /* We don't want to stop processing, so catch any errors
2524 that may show up. */
2525 try
2526 {
2527 aexpr = gen_printf (scope, gdbarch, 0, 0,
2528 format_start, format_end - format_start,
2529 argvec.size (), argvec.data ());
2530 }
2531 catch (const gdb_exception_error &ex)
2532 {
2533 /* If we got here, it means the command could not be parsed to a valid
2534 bytecode expression and thus can't be evaluated on the target's side.
2535 It's no use iterating through the other commands. */
2536 }
2537
2538 /* We have a valid agent expression, return it. */
2539 return aexpr;
2540 }
2541
2542 /* Based on location BL, create a list of breakpoint commands to be
2543 passed on to the target. If we have duplicated locations with
2544 different commands, we will add any such to the list. */
2545
2546 static void
2547 build_target_command_list (struct bp_location *bl)
2548 {
2549 bool null_command_or_parse_error = false;
2550 int modified = bl->needs_update;
2551
2552 /* Clear commands left over from a previous insert. */
2553 bl->target_info.tcommands.clear ();
2554
2555 if (!target_can_run_breakpoint_commands ())
2556 return;
2557
2558 /* For now, limit to agent-style dprintf breakpoints. */
2559 if (dprintf_style != dprintf_style_agent)
2560 return;
2561
2562 auto loc_range = all_bp_locations_at_addr (bl->address);
2563
2564 /* For now, if we have any location at the same address that isn't a
2565 dprintf, don't install the target-side commands, as that would
2566 make the breakpoint not be reported to the core, and we'd lose
2567 control. */
2568 for (bp_location *loc : loc_range)
2569 if (is_breakpoint (loc->owner)
2570 && loc->pspace->num == bl->pspace->num
2571 && loc->owner->type != bp_dprintf)
2572 return;
2573
2574 /* Do a first pass to check for locations with no assigned
2575 conditions or conditions that fail to parse to a valid agent expression
2576 bytecode. If any of these happen, then it's no use to send conditions
2577 to the target since this location will always trigger and generate a
2578 response back to GDB. */
2579 for (bp_location *loc : loc_range)
2580 {
2581 if (is_breakpoint (loc->owner) && loc->pspace->num == bl->pspace->num)
2582 {
2583 if (modified)
2584 {
2585 /* Re-parse the commands since something changed. In that
2586 case we already freed the command bytecodes (see
2587 force_breakpoint_reinsertion). We just
2588 need to parse the command to bytecodes again. */
2589 loc->cmd_bytecode
2590 = parse_cmd_to_aexpr (bl->address,
2591 loc->owner->extra_string.get ());
2592 }
2593
2594 /* If we have a NULL bytecode expression, it means something
2595 went wrong or we have a null command expression. */
2596 if (!loc->cmd_bytecode)
2597 {
2598 null_command_or_parse_error = true;
2599 break;
2600 }
2601 }
2602 }
2603
2604 /* If anything failed, then we're not doing target-side commands,
2605 and so clean up. */
2606 if (null_command_or_parse_error)
2607 {
2608 for (bp_location *loc : loc_range)
2609 if (is_breakpoint (loc->owner)
2610 && loc->pspace->num == bl->pspace->num)
2611 {
2612 /* Only go as far as the first NULL bytecode is
2613 located. */
2614 if (loc->cmd_bytecode == NULL)
2615 return;
2616
2617 loc->cmd_bytecode.reset ();
2618 }
2619 }
2620
2621 /* No NULL commands or failed bytecode generation. Build a command
2622 list for all duplicate locations at this location's address.
2623 Note that here we must care for whether the breakpoint location
2624 types are considered duplicates, otherwise, say, if we have a
2625 software and hardware location at the same address, the target
2626 could end up running the commands twice. For the moment, we only
2627 support targets-side commands with dprintf, but it doesn't hurt
2628 to be pedantically correct in case that changes. */
2629 for (bp_location *loc : loc_range)
2630 if (breakpoint_locations_match (bl, loc)
2631 && loc->owner->extra_string
2632 && is_breakpoint (loc->owner)
2633 && loc->pspace->num == bl->pspace->num
2634 && loc->owner->enable_state == bp_enabled
2635 && loc->enabled
2636 && !loc->disabled_by_cond)
2637 {
2638 /* Add the command to the vector. This will be used later
2639 to send the commands to the target. */
2640 bl->target_info.tcommands.push_back (loc->cmd_bytecode.get ());
2641 }
2642
2643 bl->target_info.persist = 0;
2644 /* Maybe flag this location as persistent. */
2645 if (bl->owner->type == bp_dprintf && disconnected_dprintf)
2646 bl->target_info.persist = 1;
2647 }
2648
2649 /* Return the kind of breakpoint on address *ADDR. Get the kind
2650 of breakpoint according to ADDR except single-step breakpoint.
2651 Get the kind of single-step breakpoint according to the current
2652 registers state. */
2653
2654 static int
2655 breakpoint_kind (const struct bp_location *bl, CORE_ADDR *addr)
2656 {
2657 if (bl->owner->type == bp_single_step)
2658 {
2659 struct thread_info *thr = find_thread_global_id (bl->owner->thread);
2660 struct regcache *regcache;
2661
2662 regcache = get_thread_regcache (thr);
2663
2664 return gdbarch_breakpoint_kind_from_current_state (bl->gdbarch,
2665 regcache, addr);
2666 }
2667 else
2668 return gdbarch_breakpoint_kind_from_pc (bl->gdbarch, addr);
2669 }
2670
2671 /* Rethrow the currently handled exception, if it's a TARGET_CLOSE_ERROR.
2672 E is either the currently handled exception, or a copy, or a sliced copy,
2673 so we can't rethrow that one, but we can use it to inspect the properties
2674 of the currently handled exception. */
2675
2676 static void
2677 rethrow_on_target_close_error (const gdb_exception &e)
2678 {
2679 if (e.reason == 0)
2680 return;
2681 /* Can't set the breakpoint. */
2682
2683 if (e.error != TARGET_CLOSE_ERROR)
2684 return;
2685
2686 /* If the target has closed then it will have deleted any breakpoints
2687 inserted within the target inferior, as a result any further attempts
2688 to interact with the breakpoint objects is not possible. Just rethrow
2689 the error. Don't use e to rethrow, to prevent object slicing of the
2690 exception. */
2691 throw;
2692 }
2693
2694 /* Insert a low-level "breakpoint" of some type. BL is the breakpoint
2695 location. Any error messages are printed to TMP_ERROR_STREAM; and
2696 DISABLED_BREAKS, and HW_BREAKPOINT_ERROR are used to report problems.
2697 Returns 0 for success, 1 if the bp_location type is not supported or
2698 -1 for failure.
2699
2700 NOTE drow/2003-09-09: This routine could be broken down to an
2701 object-style method for each breakpoint or catchpoint type. */
2702 static int
2703 insert_bp_location (struct bp_location *bl,
2704 struct ui_file *tmp_error_stream,
2705 int *disabled_breaks,
2706 int *hw_breakpoint_error,
2707 int *hw_bp_error_explained_already)
2708 {
2709 gdb_exception bp_excpt;
2710
2711 if (!should_be_inserted (bl) || (bl->inserted && !bl->needs_update))
2712 return 0;
2713
2714 /* Note we don't initialize bl->target_info, as that wipes out
2715 the breakpoint location's shadow_contents if the breakpoint
2716 is still inserted at that location. This in turn breaks
2717 target_read_memory which depends on these buffers when
2718 a memory read is requested at the breakpoint location:
2719 Once the target_info has been wiped, we fail to see that
2720 we have a breakpoint inserted at that address and thus
2721 read the breakpoint instead of returning the data saved in
2722 the breakpoint location's shadow contents. */
2723 bl->target_info.reqstd_address = bl->address;
2724 bl->target_info.placed_address_space = bl->pspace->aspace;
2725 bl->target_info.length = bl->length;
2726
2727 /* When working with target-side conditions, we must pass all the conditions
2728 for the same breakpoint address down to the target since GDB will not
2729 insert those locations. With a list of breakpoint conditions, the target
2730 can decide when to stop and notify GDB. */
2731
2732 if (is_breakpoint (bl->owner))
2733 {
2734 build_target_condition_list (bl);
2735 build_target_command_list (bl);
2736 /* Reset the modification marker. */
2737 bl->needs_update = 0;
2738 }
2739
2740 /* If "set breakpoint auto-hw" is "on" and a software breakpoint was
2741 set at a read-only address, then a breakpoint location will have
2742 been changed to hardware breakpoint before we get here. If it is
2743 "off" however, error out before actually trying to insert the
2744 breakpoint, with a nicer error message. */
2745 if (bl->loc_type == bp_loc_software_breakpoint
2746 && !automatic_hardware_breakpoints)
2747 {
2748 mem_region *mr = lookup_mem_region (bl->address);
2749
2750 if (mr != nullptr && mr->attrib.mode != MEM_RW)
2751 {
2752 gdb_printf (tmp_error_stream,
2753 _("Cannot insert breakpoint %d.\n"
2754 "Cannot set software breakpoint "
2755 "at read-only address %s\n"),
2756 bl->owner->number,
2757 paddress (bl->gdbarch, bl->address));
2758 return 1;
2759 }
2760 }
2761
2762 if (bl->loc_type == bp_loc_software_breakpoint
2763 || bl->loc_type == bp_loc_hardware_breakpoint)
2764 {
2765 /* First check to see if we have to handle an overlay. */
2766 if (overlay_debugging == ovly_off
2767 || bl->section == NULL
2768 || !(section_is_overlay (bl->section)))
2769 {
2770 /* No overlay handling: just set the breakpoint. */
2771 try
2772 {
2773 int val;
2774
2775 val = bl->owner->insert_location (bl);
2776 if (val)
2777 bp_excpt = gdb_exception {RETURN_ERROR, GENERIC_ERROR};
2778 }
2779 catch (gdb_exception &e)
2780 {
2781 rethrow_on_target_close_error (e);
2782 bp_excpt = std::move (e);
2783 }
2784 }
2785 else
2786 {
2787 /* This breakpoint is in an overlay section.
2788 Shall we set a breakpoint at the LMA? */
2789 if (!overlay_events_enabled)
2790 {
2791 /* Yes -- overlay event support is not active,
2792 so we must try to set a breakpoint at the LMA.
2793 This will not work for a hardware breakpoint. */
2794 if (bl->loc_type == bp_loc_hardware_breakpoint)
2795 warning (_("hardware breakpoint %d not supported in overlay!"),
2796 bl->owner->number);
2797 else
2798 {
2799 CORE_ADDR addr = overlay_unmapped_address (bl->address,
2800 bl->section);
2801 /* Set a software (trap) breakpoint at the LMA. */
2802 bl->overlay_target_info = bl->target_info;
2803 bl->overlay_target_info.reqstd_address = addr;
2804
2805 /* No overlay handling: just set the breakpoint. */
2806 try
2807 {
2808 int val;
2809
2810 bl->overlay_target_info.kind
2811 = breakpoint_kind (bl, &addr);
2812 bl->overlay_target_info.placed_address = addr;
2813 val = target_insert_breakpoint (bl->gdbarch,
2814 &bl->overlay_target_info);
2815 if (val)
2816 bp_excpt
2817 = gdb_exception {RETURN_ERROR, GENERIC_ERROR};
2818 }
2819 catch (gdb_exception &e)
2820 {
2821 rethrow_on_target_close_error (e);
2822 bp_excpt = std::move (e);
2823 }
2824
2825 if (bp_excpt.reason != 0)
2826 gdb_printf (tmp_error_stream,
2827 "Overlay breakpoint %d "
2828 "failed: in ROM?\n",
2829 bl->owner->number);
2830 }
2831 }
2832 /* Shall we set a breakpoint at the VMA? */
2833 if (section_is_mapped (bl->section))
2834 {
2835 /* Yes. This overlay section is mapped into memory. */
2836 try
2837 {
2838 int val;
2839
2840 val = bl->owner->insert_location (bl);
2841 if (val)
2842 bp_excpt = gdb_exception {RETURN_ERROR, GENERIC_ERROR};
2843 }
2844 catch (gdb_exception &e)
2845 {
2846 rethrow_on_target_close_error (e);
2847 bp_excpt = std::move (e);
2848 }
2849 }
2850 else
2851 {
2852 /* No. This breakpoint will not be inserted.
2853 No error, but do not mark the bp as 'inserted'. */
2854 return 0;
2855 }
2856 }
2857
2858 if (bp_excpt.reason != 0)
2859 {
2860 /* Can't set the breakpoint. */
2861 gdb_assert (bl->owner != nullptr);
2862
2863 /* In some cases, we might not be able to insert a
2864 breakpoint in a shared library that has already been
2865 removed, but we have not yet processed the shlib unload
2866 event. Unfortunately, some targets that implement
2867 breakpoint insertion themselves can't tell why the
2868 breakpoint insertion failed (e.g., the remote target
2869 doesn't define error codes), so we must treat generic
2870 errors as memory errors. */
2871 if (bp_excpt.reason == RETURN_ERROR
2872 && (bp_excpt.error == GENERIC_ERROR
2873 || bp_excpt.error == MEMORY_ERROR)
2874 && bl->loc_type == bp_loc_software_breakpoint
2875 && (solib_name_from_address (bl->pspace, bl->address)
2876 || shared_objfile_contains_address_p (bl->pspace,
2877 bl->address)))
2878 {
2879 /* See also: disable_breakpoints_in_shlibs. */
2880 bl->shlib_disabled = 1;
2881 gdb::observers::breakpoint_modified.notify (bl->owner);
2882 if (!*disabled_breaks)
2883 {
2884 gdb_printf (tmp_error_stream,
2885 "Cannot insert breakpoint %d.\n",
2886 bl->owner->number);
2887 gdb_printf (tmp_error_stream,
2888 "Temporarily disabling shared "
2889 "library breakpoints:\n");
2890 }
2891 *disabled_breaks = 1;
2892 gdb_printf (tmp_error_stream,
2893 "breakpoint #%d\n", bl->owner->number);
2894 return 0;
2895 }
2896 else
2897 {
2898 if (bl->loc_type == bp_loc_hardware_breakpoint)
2899 {
2900 *hw_breakpoint_error = 1;
2901 *hw_bp_error_explained_already = bp_excpt.message != NULL;
2902 gdb_printf (tmp_error_stream,
2903 "Cannot insert hardware breakpoint %d%s",
2904 bl->owner->number,
2905 bp_excpt.message ? ":" : ".\n");
2906 if (bp_excpt.message != NULL)
2907 gdb_printf (tmp_error_stream, "%s.\n",
2908 bp_excpt.what ());
2909 }
2910 else
2911 {
2912 if (bp_excpt.message == NULL)
2913 {
2914 std::string message
2915 = memory_error_message (TARGET_XFER_E_IO,
2916 bl->gdbarch, bl->address);
2917
2918 gdb_printf (tmp_error_stream,
2919 "Cannot insert breakpoint %d.\n"
2920 "%s\n",
2921 bl->owner->number, message.c_str ());
2922 }
2923 else
2924 {
2925 gdb_printf (tmp_error_stream,
2926 "Cannot insert breakpoint %d: %s\n",
2927 bl->owner->number,
2928 bp_excpt.what ());
2929 }
2930 }
2931 return 1;
2932
2933 }
2934 }
2935 else
2936 bl->inserted = 1;
2937
2938 return 0;
2939 }
2940
2941 else if (bl->loc_type == bp_loc_hardware_watchpoint
2942 /* NOTE drow/2003-09-08: This state only exists for removing
2943 watchpoints. It's not clear that it's necessary... */
2944 && bl->owner->disposition != disp_del_at_next_stop)
2945 {
2946 int val;
2947
2948 val = bl->owner->insert_location (bl);
2949
2950 /* If trying to set a read-watchpoint, and it turns out it's not
2951 supported, try emulating one with an access watchpoint. */
2952 if (val == 1 && bl->watchpoint_type == hw_read)
2953 {
2954 /* But don't try to insert it, if there's already another
2955 hw_access location that would be considered a duplicate
2956 of this one. */
2957 for (bp_location *loc : all_bp_locations ())
2958 if (loc != bl
2959 && loc->watchpoint_type == hw_access
2960 && watchpoint_locations_match (bl, loc))
2961 {
2962 bl->duplicate = 1;
2963 bl->inserted = 1;
2964 bl->target_info = loc->target_info;
2965 bl->watchpoint_type = hw_access;
2966 val = 0;
2967 break;
2968 }
2969
2970 if (val == 1)
2971 {
2972 bl->watchpoint_type = hw_access;
2973 val = bl->owner->insert_location (bl);
2974
2975 if (val)
2976 /* Back to the original value. */
2977 bl->watchpoint_type = hw_read;
2978 }
2979 }
2980
2981 bl->inserted = (val == 0);
2982 }
2983
2984 else if (bl->owner->type == bp_catchpoint)
2985 {
2986 int val;
2987
2988 val = bl->owner->insert_location (bl);
2989 if (val)
2990 {
2991 bl->owner->enable_state = bp_disabled;
2992
2993 if (val == 1)
2994 warning (_("\
2995 Error inserting catchpoint %d: Your system does not support this type\n\
2996 of catchpoint."), bl->owner->number);
2997 else
2998 warning (_("Error inserting catchpoint %d."), bl->owner->number);
2999 }
3000
3001 bl->inserted = (val == 0);
3002
3003 /* We've already printed an error message if there was a problem
3004 inserting this catchpoint, and we've disabled the catchpoint,
3005 so just return success. */
3006 return 0;
3007 }
3008
3009 return 0;
3010 }
3011
3012 /* This function is called when program space PSPACE is about to be
3013 deleted. It takes care of updating breakpoints to not reference
3014 PSPACE anymore. */
3015
3016 void
3017 breakpoint_program_space_exit (struct program_space *pspace)
3018 {
3019 /* Remove any breakpoint that was set through this program space. */
3020 for (breakpoint *b : all_breakpoints_safe ())
3021 if (b->pspace == pspace)
3022 delete_breakpoint (b);
3023
3024 /* Breakpoints set through other program spaces could have locations
3025 bound to PSPACE as well. Remove those. */
3026 for (bp_location *loc : all_bp_locations ())
3027 {
3028 struct bp_location *tmp;
3029
3030 if (loc->pspace == pspace)
3031 {
3032 /* ALL_BP_LOCATIONS bp_location has LOC->OWNER always non-NULL. */
3033 if (loc->owner->loc == loc)
3034 loc->owner->loc = loc->next;
3035 else
3036 for (tmp = loc->owner->loc; tmp->next != NULL; tmp = tmp->next)
3037 if (tmp->next == loc)
3038 {
3039 tmp->next = loc->next;
3040 break;
3041 }
3042 }
3043 }
3044
3045 /* Now update the global location list to permanently delete the
3046 removed locations above. */
3047 update_global_location_list (UGLL_DONT_INSERT);
3048 }
3049
3050 /* Make sure all breakpoints are inserted in inferior.
3051 Throws exception on any error.
3052 A breakpoint that is already inserted won't be inserted
3053 again, so calling this function twice is safe. */
3054 void
3055 insert_breakpoints (void)
3056 {
3057 for (breakpoint *bpt : all_breakpoints ())
3058 if (is_hardware_watchpoint (bpt))
3059 {
3060 struct watchpoint *w = (struct watchpoint *) bpt;
3061
3062 update_watchpoint (w, false /* don't reparse. */);
3063 }
3064
3065 /* Updating watchpoints creates new locations, so update the global
3066 location list. Explicitly tell ugll to insert locations and
3067 ignore breakpoints_always_inserted_mode. Also,
3068 update_global_location_list tries to "upgrade" software
3069 breakpoints to hardware breakpoints to handle "set breakpoint
3070 auto-hw", so we need to call it even if we don't have new
3071 locations. */
3072 update_global_location_list (UGLL_INSERT);
3073 }
3074
3075 /* This is used when we need to synch breakpoint conditions between GDB and the
3076 target. It is the case with deleting and disabling of breakpoints when using
3077 always-inserted mode. */
3078
3079 static void
3080 update_inserted_breakpoint_locations (void)
3081 {
3082 int error_flag = 0;
3083 int val = 0;
3084 int disabled_breaks = 0;
3085 int hw_breakpoint_error = 0;
3086 int hw_bp_details_reported = 0;
3087
3088 string_file tmp_error_stream;
3089
3090 /* Explicitly mark the warning -- this will only be printed if
3091 there was an error. */
3092 tmp_error_stream.puts ("Warning:\n");
3093
3094 scoped_restore_current_pspace_and_thread restore_pspace_thread;
3095
3096 for (bp_location *bl : all_bp_locations ())
3097 {
3098 /* We only want to update software breakpoints and hardware
3099 breakpoints. */
3100 if (!is_breakpoint (bl->owner))
3101 continue;
3102
3103 /* We only want to update locations that are already inserted
3104 and need updating. This is to avoid unwanted insertion during
3105 deletion of breakpoints. */
3106 if (!bl->inserted || !bl->needs_update)
3107 continue;
3108
3109 switch_to_program_space_and_thread (bl->pspace);
3110
3111 /* For targets that support global breakpoints, there's no need
3112 to select an inferior to insert breakpoint to. In fact, even
3113 if we aren't attached to any process yet, we should still
3114 insert breakpoints. */
3115 if (!gdbarch_has_global_breakpoints (target_gdbarch ())
3116 && (inferior_ptid == null_ptid || !target_has_execution ()))
3117 continue;
3118
3119 val = insert_bp_location (bl, &tmp_error_stream, &disabled_breaks,
3120 &hw_breakpoint_error, &hw_bp_details_reported);
3121 if (val)
3122 error_flag = val;
3123 }
3124
3125 if (error_flag)
3126 {
3127 target_terminal::ours_for_output ();
3128 error_stream (tmp_error_stream);
3129 }
3130 }
3131
3132 /* Used when starting or continuing the program. */
3133
3134 static void
3135 insert_breakpoint_locations (void)
3136 {
3137 int error_flag = 0;
3138 int val = 0;
3139 int disabled_breaks = 0;
3140 int hw_breakpoint_error = 0;
3141 int hw_bp_error_explained_already = 0;
3142
3143 string_file tmp_error_stream;
3144
3145 /* Explicitly mark the warning -- this will only be printed if
3146 there was an error. */
3147 tmp_error_stream.puts ("Warning:\n");
3148
3149 scoped_restore_current_pspace_and_thread restore_pspace_thread;
3150
3151 for (bp_location *bl : all_bp_locations ())
3152 {
3153 if (!should_be_inserted (bl) || (bl->inserted && !bl->needs_update))
3154 continue;
3155
3156 /* There is no point inserting thread-specific breakpoints if
3157 the thread no longer exists. ALL_BP_LOCATIONS bp_location
3158 has BL->OWNER always non-NULL. */
3159 if (bl->owner->thread != -1
3160 && !valid_global_thread_id (bl->owner->thread))
3161 continue;
3162
3163 switch_to_program_space_and_thread (bl->pspace);
3164
3165 /* For targets that support global breakpoints, there's no need
3166 to select an inferior to insert breakpoint to. In fact, even
3167 if we aren't attached to any process yet, we should still
3168 insert breakpoints. */
3169 if (!gdbarch_has_global_breakpoints (target_gdbarch ())
3170 && (inferior_ptid == null_ptid || !target_has_execution ()))
3171 continue;
3172
3173 val = insert_bp_location (bl, &tmp_error_stream, &disabled_breaks,
3174 &hw_breakpoint_error, &hw_bp_error_explained_already);
3175 if (val)
3176 error_flag = val;
3177 }
3178
3179 /* If we failed to insert all locations of a watchpoint, remove
3180 them, as half-inserted watchpoint is of limited use. */
3181 for (breakpoint *bpt : all_breakpoints ())
3182 {
3183 bool some_failed = false;
3184
3185 if (!is_hardware_watchpoint (bpt))
3186 continue;
3187
3188 if (!breakpoint_enabled (bpt))
3189 continue;
3190
3191 if (bpt->disposition == disp_del_at_next_stop)
3192 continue;
3193
3194 for (bp_location *loc : bpt->locations ())
3195 if (!loc->inserted && should_be_inserted (loc))
3196 {
3197 some_failed = true;
3198 break;
3199 }
3200
3201 if (some_failed)
3202 {
3203 for (bp_location *loc : bpt->locations ())
3204 if (loc->inserted)
3205 remove_breakpoint (loc);
3206
3207 hw_breakpoint_error = 1;
3208 tmp_error_stream.printf ("Could not insert "
3209 "hardware watchpoint %d.\n",
3210 bpt->number);
3211 error_flag = -1;
3212 }
3213 }
3214
3215 if (error_flag)
3216 {
3217 /* If a hardware breakpoint or watchpoint was inserted, add a
3218 message about possibly exhausted resources. */
3219 if (hw_breakpoint_error && !hw_bp_error_explained_already)
3220 {
3221 tmp_error_stream.printf ("Could not insert hardware breakpoints:\n\
3222 You may have requested too many hardware breakpoints/watchpoints.\n");
3223 }
3224 target_terminal::ours_for_output ();
3225 error_stream (tmp_error_stream);
3226 }
3227 }
3228
3229 /* Used when the program stops.
3230 Returns zero if successful, or non-zero if there was a problem
3231 removing a breakpoint location. */
3232
3233 int
3234 remove_breakpoints (void)
3235 {
3236 int val = 0;
3237
3238 for (bp_location *bl : all_bp_locations ())
3239 if (bl->inserted && !is_tracepoint (bl->owner))
3240 val |= remove_breakpoint (bl);
3241
3242 return val;
3243 }
3244
3245 /* When a thread exits, remove breakpoints that are related to
3246 that thread. */
3247
3248 static void
3249 remove_threaded_breakpoints (struct thread_info *tp, int silent)
3250 {
3251 for (breakpoint *b : all_breakpoints_safe ())
3252 {
3253 if (b->thread == tp->global_num && user_breakpoint_p (b))
3254 {
3255 b->disposition = disp_del_at_next_stop;
3256
3257 gdb_printf (_("\
3258 Thread-specific breakpoint %d deleted - thread %s no longer in the thread list.\n"),
3259 b->number, print_thread_id (tp));
3260
3261 /* Hide it from the user. */
3262 b->number = 0;
3263 }
3264 }
3265 }
3266
3267 /* See breakpoint.h. */
3268
3269 void
3270 remove_breakpoints_inf (inferior *inf)
3271 {
3272 int val;
3273
3274 for (bp_location *bl : all_bp_locations ())
3275 {
3276 if (bl->pspace != inf->pspace)
3277 continue;
3278
3279 if (bl->inserted && !bl->target_info.persist)
3280 {
3281 val = remove_breakpoint (bl);
3282 if (val != 0)
3283 return;
3284 }
3285 }
3286 }
3287
3288 static int internal_breakpoint_number = -1;
3289
3290 /* Set the breakpoint number of B, depending on the value of INTERNAL.
3291 If INTERNAL is non-zero, the breakpoint number will be populated
3292 from internal_breakpoint_number and that variable decremented.
3293 Otherwise the breakpoint number will be populated from
3294 breakpoint_count and that value incremented. Internal breakpoints
3295 do not set the internal var bpnum. */
3296 static void
3297 set_breakpoint_number (int internal, struct breakpoint *b)
3298 {
3299 if (internal)
3300 b->number = internal_breakpoint_number--;
3301 else
3302 {
3303 set_breakpoint_count (breakpoint_count + 1);
3304 b->number = breakpoint_count;
3305 }
3306 }
3307
3308 /* Create a TYPE breakpoint on ADDRESS from an object file with GDBARCH. */
3309
3310 static struct breakpoint *
3311 create_internal_breakpoint (struct gdbarch *gdbarch,
3312 CORE_ADDR address, enum bptype type)
3313 {
3314 std::unique_ptr<internal_breakpoint> b
3315 (new internal_breakpoint (gdbarch, type, address));
3316
3317 b->number = internal_breakpoint_number--;
3318
3319 return add_to_breakpoint_chain (std::move (b));
3320 }
3321
3322 /* Create a TYPE breakpoint on minimal symbol MSYM from an object file with
3323 GDBARCH. */
3324
3325 static struct breakpoint *
3326 create_internal_breakpoint (struct gdbarch *gdbarch,
3327 struct bound_minimal_symbol &msym, enum bptype type)
3328 {
3329 CORE_ADDR address;
3330
3331 address = msym.value_address ();
3332
3333 address = gdbarch_convert_from_func_ptr_addr
3334 (gdbarch, address, current_inferior ()->top_target ());
3335
3336 /* Note that we're not using gdbarch_addr_bits_remove here, because that's
3337 related to addresses in $pc. We're getting the address from the
3338 minimal symbol table. */
3339
3340 /* Is gdbarch_deprecated_function_start_offset needed here? Or is that dealt
3341 with elsewhere? Needs testing on vax. */
3342
3343 if (gdbarch_skip_entrypoint_p (gdbarch))
3344 address = gdbarch_skip_entrypoint (gdbarch, address);
3345
3346 return create_internal_breakpoint (gdbarch, address, type);
3347 }
3348
3349 static const char *const longjmp_names[] =
3350 {
3351 "longjmp", "_longjmp", "siglongjmp", "_siglongjmp"
3352 };
3353 #define NUM_LONGJMP_NAMES ARRAY_SIZE(longjmp_names)
3354
3355 /* Per-objfile data private to breakpoint.c. */
3356 struct breakpoint_objfile_data
3357 {
3358 /* Minimal symbol for "_ovly_debug_event" (if any). */
3359 struct bound_minimal_symbol overlay_msym;
3360
3361 /* Minimal symbol(s) for "longjmp", "siglongjmp", etc. (if any). */
3362 struct bound_minimal_symbol longjmp_msym[NUM_LONGJMP_NAMES];
3363
3364 /* True if we have looked for longjmp probes. */
3365 int longjmp_searched = 0;
3366
3367 /* SystemTap probe points for longjmp (if any). These are non-owning
3368 references. */
3369 std::vector<probe *> longjmp_probes;
3370
3371 /* Minimal symbol for "std::terminate()" (if any). */
3372 struct bound_minimal_symbol terminate_msym;
3373
3374 /* Minimal symbol for "_Unwind_DebugHook" (if any). */
3375 struct bound_minimal_symbol exception_msym;
3376
3377 /* True if we have looked for exception probes. */
3378 int exception_searched = 0;
3379
3380 /* SystemTap probe points for unwinding (if any). These are non-owning
3381 references. */
3382 std::vector<probe *> exception_probes;
3383 };
3384
3385 static const registry<objfile>::key<breakpoint_objfile_data>
3386 breakpoint_objfile_key;
3387
3388 /* Minimal symbol not found sentinel. */
3389 static struct minimal_symbol msym_not_found;
3390
3391 /* Returns TRUE if MSYM point to the "not found" sentinel. */
3392
3393 static bool
3394 msym_not_found_p (const struct minimal_symbol *msym)
3395 {
3396 return msym == &msym_not_found;
3397 }
3398
3399 /* Return per-objfile data needed by breakpoint.c.
3400 Allocate the data if necessary. */
3401
3402 static struct breakpoint_objfile_data *
3403 get_breakpoint_objfile_data (struct objfile *objfile)
3404 {
3405 struct breakpoint_objfile_data *bp_objfile_data;
3406
3407 bp_objfile_data = breakpoint_objfile_key.get (objfile);
3408 if (bp_objfile_data == NULL)
3409 bp_objfile_data = breakpoint_objfile_key.emplace (objfile);
3410 return bp_objfile_data;
3411 }
3412
3413 static void
3414 create_overlay_event_breakpoint (void)
3415 {
3416 const char *const func_name = "_ovly_debug_event";
3417
3418 for (objfile *objfile : current_program_space->objfiles ())
3419 {
3420 struct breakpoint *b;
3421 struct breakpoint_objfile_data *bp_objfile_data;
3422 CORE_ADDR addr;
3423
3424 bp_objfile_data = get_breakpoint_objfile_data (objfile);
3425
3426 if (msym_not_found_p (bp_objfile_data->overlay_msym.minsym))
3427 continue;
3428
3429 if (bp_objfile_data->overlay_msym.minsym == NULL)
3430 {
3431 struct bound_minimal_symbol m;
3432
3433 m = lookup_minimal_symbol_text (func_name, objfile);
3434 if (m.minsym == NULL)
3435 {
3436 /* Avoid future lookups in this objfile. */
3437 bp_objfile_data->overlay_msym.minsym = &msym_not_found;
3438 continue;
3439 }
3440 bp_objfile_data->overlay_msym = m;
3441 }
3442
3443 addr = bp_objfile_data->overlay_msym.value_address ();
3444 b = create_internal_breakpoint (objfile->arch (), addr,
3445 bp_overlay_event);
3446 b->locspec = new_explicit_location_spec_function (func_name);
3447
3448 if (overlay_debugging == ovly_auto)
3449 {
3450 b->enable_state = bp_enabled;
3451 overlay_events_enabled = 1;
3452 }
3453 else
3454 {
3455 b->enable_state = bp_disabled;
3456 overlay_events_enabled = 0;
3457 }
3458 }
3459 }
3460
3461 /* Install a master longjmp breakpoint for OBJFILE using a probe. Return
3462 true if a breakpoint was installed. */
3463
3464 static bool
3465 create_longjmp_master_breakpoint_probe (objfile *objfile)
3466 {
3467 struct gdbarch *gdbarch = objfile->arch ();
3468 struct breakpoint_objfile_data *bp_objfile_data
3469 = get_breakpoint_objfile_data (objfile);
3470
3471 if (!bp_objfile_data->longjmp_searched)
3472 {
3473 std::vector<probe *> ret
3474 = find_probes_in_objfile (objfile, "libc", "longjmp");
3475
3476 if (!ret.empty ())
3477 {
3478 /* We are only interested in checking one element. */
3479 probe *p = ret[0];
3480
3481 if (!p->can_evaluate_arguments ())
3482 {
3483 /* We cannot use the probe interface here,
3484 because it does not know how to evaluate
3485 arguments. */
3486 ret.clear ();
3487 }
3488 }
3489 bp_objfile_data->longjmp_probes = ret;
3490 bp_objfile_data->longjmp_searched = 1;
3491 }
3492
3493 if (bp_objfile_data->longjmp_probes.empty ())
3494 return false;
3495
3496 for (probe *p : bp_objfile_data->longjmp_probes)
3497 {
3498 struct breakpoint *b;
3499
3500 b = create_internal_breakpoint (gdbarch,
3501 p->get_relocated_address (objfile),
3502 bp_longjmp_master);
3503 b->locspec = new_probe_location_spec ("-probe-stap libc:longjmp");
3504 b->enable_state = bp_disabled;
3505 }
3506
3507 return true;
3508 }
3509
3510 /* Install master longjmp breakpoints for OBJFILE using longjmp_names.
3511 Return true if at least one breakpoint was installed. */
3512
3513 static bool
3514 create_longjmp_master_breakpoint_names (objfile *objfile)
3515 {
3516 struct gdbarch *gdbarch = objfile->arch ();
3517 if (!gdbarch_get_longjmp_target_p (gdbarch))
3518 return false;
3519
3520 struct breakpoint_objfile_data *bp_objfile_data
3521 = get_breakpoint_objfile_data (objfile);
3522 unsigned int installed_bp = 0;
3523
3524 for (int i = 0; i < NUM_LONGJMP_NAMES; i++)
3525 {
3526 struct breakpoint *b;
3527 const char *func_name;
3528 CORE_ADDR addr;
3529
3530 if (msym_not_found_p (bp_objfile_data->longjmp_msym[i].minsym))
3531 continue;
3532
3533 func_name = longjmp_names[i];
3534 if (bp_objfile_data->longjmp_msym[i].minsym == NULL)
3535 {
3536 struct bound_minimal_symbol m;
3537
3538 m = lookup_minimal_symbol_text (func_name, objfile);
3539 if (m.minsym == NULL)
3540 {
3541 /* Prevent future lookups in this objfile. */
3542 bp_objfile_data->longjmp_msym[i].minsym = &msym_not_found;
3543 continue;
3544 }
3545 bp_objfile_data->longjmp_msym[i] = m;
3546 }
3547
3548 addr = bp_objfile_data->longjmp_msym[i].value_address ();
3549 b = create_internal_breakpoint (gdbarch, addr, bp_longjmp_master);
3550 b->locspec = new_explicit_location_spec_function (func_name);
3551 b->enable_state = bp_disabled;
3552 installed_bp++;
3553 }
3554
3555 return installed_bp > 0;
3556 }
3557
3558 /* Create a master longjmp breakpoint. */
3559
3560 static void
3561 create_longjmp_master_breakpoint (void)
3562 {
3563 scoped_restore_current_program_space restore_pspace;
3564
3565 for (struct program_space *pspace : program_spaces)
3566 {
3567 set_current_program_space (pspace);
3568
3569 for (objfile *obj : current_program_space->objfiles ())
3570 {
3571 /* Skip separate debug object, it's handled in the loop below. */
3572 if (obj->separate_debug_objfile_backlink != nullptr)
3573 continue;
3574
3575 /* Try a probe kind breakpoint on main objfile. */
3576 if (create_longjmp_master_breakpoint_probe (obj))
3577 continue;
3578
3579 /* Try longjmp_names kind breakpoints on main and separate_debug
3580 objfiles. */
3581 for (objfile *debug_objfile : obj->separate_debug_objfiles ())
3582 if (create_longjmp_master_breakpoint_names (debug_objfile))
3583 break;
3584 }
3585 }
3586 }
3587
3588 /* Create a master std::terminate breakpoint. */
3589 static void
3590 create_std_terminate_master_breakpoint (void)
3591 {
3592 const char *const func_name = "std::terminate()";
3593
3594 scoped_restore_current_program_space restore_pspace;
3595
3596 for (struct program_space *pspace : program_spaces)
3597 {
3598 set_current_program_space (pspace);
3599
3600 for (objfile *objfile : current_program_space->objfiles ())
3601 {
3602 struct breakpoint *b;
3603 struct breakpoint_objfile_data *bp_objfile_data;
3604
3605 bp_objfile_data = get_breakpoint_objfile_data (objfile);
3606
3607 if (msym_not_found_p (bp_objfile_data->terminate_msym.minsym))
3608 continue;
3609
3610 if (bp_objfile_data->terminate_msym.minsym == NULL)
3611 {
3612 struct bound_minimal_symbol m;
3613
3614 m = lookup_minimal_symbol (func_name, NULL, objfile);
3615 if (m.minsym == NULL || (m.minsym->type () != mst_text
3616 && m.minsym->type () != mst_file_text))
3617 {
3618 /* Prevent future lookups in this objfile. */
3619 bp_objfile_data->terminate_msym.minsym = &msym_not_found;
3620 continue;
3621 }
3622 bp_objfile_data->terminate_msym = m;
3623 }
3624
3625 b = create_internal_breakpoint (objfile->arch (),
3626 bp_objfile_data->terminate_msym,
3627 bp_std_terminate_master);
3628 b->locspec = new_explicit_location_spec_function (func_name);
3629 b->enable_state = bp_disabled;
3630 }
3631 }
3632 }
3633
3634 /* Install a master breakpoint on the unwinder's debug hook for OBJFILE using a
3635 probe. Return true if a breakpoint was installed. */
3636
3637 static bool
3638 create_exception_master_breakpoint_probe (objfile *objfile)
3639 {
3640 struct breakpoint *b;
3641 struct gdbarch *gdbarch;
3642 struct breakpoint_objfile_data *bp_objfile_data;
3643
3644 bp_objfile_data = get_breakpoint_objfile_data (objfile);
3645
3646 /* We prefer the SystemTap probe point if it exists. */
3647 if (!bp_objfile_data->exception_searched)
3648 {
3649 std::vector<probe *> ret
3650 = find_probes_in_objfile (objfile, "libgcc", "unwind");
3651
3652 if (!ret.empty ())
3653 {
3654 /* We are only interested in checking one element. */
3655 probe *p = ret[0];
3656
3657 if (!p->can_evaluate_arguments ())
3658 {
3659 /* We cannot use the probe interface here, because it does
3660 not know how to evaluate arguments. */
3661 ret.clear ();
3662 }
3663 }
3664 bp_objfile_data->exception_probes = ret;
3665 bp_objfile_data->exception_searched = 1;
3666 }
3667
3668 if (bp_objfile_data->exception_probes.empty ())
3669 return false;
3670
3671 gdbarch = objfile->arch ();
3672
3673 for (probe *p : bp_objfile_data->exception_probes)
3674 {
3675 b = create_internal_breakpoint (gdbarch,
3676 p->get_relocated_address (objfile),
3677 bp_exception_master);
3678 b->locspec = new_probe_location_spec ("-probe-stap libgcc:unwind");
3679 b->enable_state = bp_disabled;
3680 }
3681
3682 return true;
3683 }
3684
3685 /* Install a master breakpoint on the unwinder's debug hook for OBJFILE using
3686 _Unwind_DebugHook. Return true if a breakpoint was installed. */
3687
3688 static bool
3689 create_exception_master_breakpoint_hook (objfile *objfile)
3690 {
3691 const char *const func_name = "_Unwind_DebugHook";
3692 struct breakpoint *b;
3693 struct gdbarch *gdbarch;
3694 struct breakpoint_objfile_data *bp_objfile_data;
3695
3696 bp_objfile_data = get_breakpoint_objfile_data (objfile);
3697
3698 if (msym_not_found_p (bp_objfile_data->exception_msym.minsym))
3699 return false;
3700
3701 gdbarch = objfile->arch ();
3702
3703 if (bp_objfile_data->exception_msym.minsym == NULL)
3704 {
3705 struct bound_minimal_symbol debug_hook;
3706
3707 debug_hook = lookup_minimal_symbol (func_name, NULL, objfile);
3708 if (debug_hook.minsym == NULL)
3709 {
3710 bp_objfile_data->exception_msym.minsym = &msym_not_found;
3711 return false;
3712 }
3713
3714 bp_objfile_data->exception_msym = debug_hook;
3715 }
3716
3717 b = create_internal_breakpoint (gdbarch, bp_objfile_data->exception_msym,
3718 bp_exception_master);
3719 b->locspec = new_explicit_location_spec_function (func_name);
3720 b->enable_state = bp_disabled;
3721
3722 return true;
3723 }
3724
3725 /* Install a master breakpoint on the unwinder's debug hook. */
3726
3727 static void
3728 create_exception_master_breakpoint (void)
3729 {
3730 for (objfile *obj : current_program_space->objfiles ())
3731 {
3732 /* Skip separate debug object. */
3733 if (obj->separate_debug_objfile_backlink)
3734 continue;
3735
3736 /* Try a probe kind breakpoint. */
3737 if (create_exception_master_breakpoint_probe (obj))
3738 continue;
3739
3740 /* Iterate over main and separate debug objects and try an
3741 _Unwind_DebugHook kind breakpoint. */
3742 for (objfile *debug_objfile : obj->separate_debug_objfiles ())
3743 if (create_exception_master_breakpoint_hook (debug_objfile))
3744 break;
3745 }
3746 }
3747
3748 /* Does B have a location spec? */
3749
3750 static bool
3751 breakpoint_location_spec_empty_p (const struct breakpoint *b)
3752 {
3753 return (b->locspec != nullptr && b->locspec->empty_p ());
3754 }
3755
3756 void
3757 update_breakpoints_after_exec (void)
3758 {
3759 /* We're about to delete breakpoints from GDB's lists. If the
3760 INSERTED flag is true, GDB will try to lift the breakpoints by
3761 writing the breakpoints' "shadow contents" back into memory. The
3762 "shadow contents" are NOT valid after an exec, so GDB should not
3763 do that. Instead, the target is responsible from marking
3764 breakpoints out as soon as it detects an exec. We don't do that
3765 here instead, because there may be other attempts to delete
3766 breakpoints after detecting an exec and before reaching here. */
3767 for (bp_location *bploc : all_bp_locations ())
3768 if (bploc->pspace == current_program_space)
3769 gdb_assert (!bploc->inserted);
3770
3771 for (breakpoint *b : all_breakpoints_safe ())
3772 {
3773 if (b->pspace != current_program_space)
3774 continue;
3775
3776 /* Solib breakpoints must be explicitly reset after an exec(). */
3777 if (b->type == bp_shlib_event)
3778 {
3779 delete_breakpoint (b);
3780 continue;
3781 }
3782
3783 /* JIT breakpoints must be explicitly reset after an exec(). */
3784 if (b->type == bp_jit_event)
3785 {
3786 delete_breakpoint (b);
3787 continue;
3788 }
3789
3790 /* Thread event breakpoints must be set anew after an exec(),
3791 as must overlay event and longjmp master breakpoints. */
3792 if (b->type == bp_thread_event || b->type == bp_overlay_event
3793 || b->type == bp_longjmp_master || b->type == bp_std_terminate_master
3794 || b->type == bp_exception_master)
3795 {
3796 delete_breakpoint (b);
3797 continue;
3798 }
3799
3800 /* Step-resume breakpoints are meaningless after an exec(). */
3801 if (b->type == bp_step_resume || b->type == bp_hp_step_resume)
3802 {
3803 delete_breakpoint (b);
3804 continue;
3805 }
3806
3807 /* Just like single-step breakpoints. */
3808 if (b->type == bp_single_step)
3809 {
3810 delete_breakpoint (b);
3811 continue;
3812 }
3813
3814 /* Longjmp and longjmp-resume breakpoints are also meaningless
3815 after an exec. */
3816 if (b->type == bp_longjmp || b->type == bp_longjmp_resume
3817 || b->type == bp_longjmp_call_dummy
3818 || b->type == bp_exception || b->type == bp_exception_resume)
3819 {
3820 delete_breakpoint (b);
3821 continue;
3822 }
3823
3824 if (b->type == bp_catchpoint)
3825 {
3826 /* For now, none of the bp_catchpoint breakpoints need to
3827 do anything at this point. In the future, if some of
3828 the catchpoints need to something, we will need to add
3829 a new method, and call this method from here. */
3830 continue;
3831 }
3832
3833 /* bp_finish is a special case. The only way we ought to be able
3834 to see one of these when an exec() has happened, is if the user
3835 caught a vfork, and then said "finish". Ordinarily a finish just
3836 carries them to the call-site of the current callee, by setting
3837 a temporary bp there and resuming. But in this case, the finish
3838 will carry them entirely through the vfork & exec.
3839
3840 We don't want to allow a bp_finish to remain inserted now. But
3841 we can't safely delete it, 'cause finish_command has a handle to
3842 the bp on a bpstat, and will later want to delete it. There's a
3843 chance (and I've seen it happen) that if we delete the bp_finish
3844 here, that its storage will get reused by the time finish_command
3845 gets 'round to deleting the "use to be a bp_finish" breakpoint.
3846 We really must allow finish_command to delete a bp_finish.
3847
3848 In the absence of a general solution for the "how do we know
3849 it's safe to delete something others may have handles to?"
3850 problem, what we'll do here is just uninsert the bp_finish, and
3851 let finish_command delete it.
3852
3853 (We know the bp_finish is "doomed" in the sense that it's
3854 momentary, and will be deleted as soon as finish_command sees
3855 the inferior stopped. So it doesn't matter that the bp's
3856 address is probably bogus in the new a.out, unlike e.g., the
3857 solib breakpoints.) */
3858
3859 if (b->type == bp_finish)
3860 {
3861 continue;
3862 }
3863
3864 /* Without a symbolic address, we have little hope of the
3865 pre-exec() address meaning the same thing in the post-exec()
3866 a.out. */
3867 if (breakpoint_location_spec_empty_p (b))
3868 {
3869 delete_breakpoint (b);
3870 continue;
3871 }
3872 }
3873 }
3874
3875 int
3876 detach_breakpoints (ptid_t ptid)
3877 {
3878 int val = 0;
3879 scoped_restore save_inferior_ptid = make_scoped_restore (&inferior_ptid);
3880 struct inferior *inf = current_inferior ();
3881
3882 if (ptid.pid () == inferior_ptid.pid ())
3883 error (_("Cannot detach breakpoints of inferior_ptid"));
3884
3885 /* Set inferior_ptid; remove_breakpoint_1 uses this global. */
3886 inferior_ptid = ptid;
3887 for (bp_location *bl : all_bp_locations ())
3888 {
3889 if (bl->pspace != inf->pspace)
3890 continue;
3891
3892 /* This function must physically remove breakpoints locations
3893 from the specified ptid, without modifying the breakpoint
3894 package's state. Locations of type bp_loc_other and
3895 bp_loc_software_watchpoint are only maintained at GDB side,
3896 so there is no need to remove them. Moreover, removing these
3897 would modify the breakpoint package's state. */
3898 if (bl->loc_type == bp_loc_other
3899 || bl->loc_type == bp_loc_software_watchpoint)
3900 continue;
3901
3902 if (bl->inserted)
3903 val |= remove_breakpoint_1 (bl, DETACH_BREAKPOINT);
3904 }
3905
3906 return val;
3907 }
3908
3909 /* Remove the breakpoint location BL from the current address space.
3910 Note that this is used to detach breakpoints from a child fork.
3911 When we get here, the child isn't in the inferior list, and neither
3912 do we have objects to represent its address space --- we should
3913 *not* look at bl->pspace->aspace here. */
3914
3915 static int
3916 remove_breakpoint_1 (struct bp_location *bl, enum remove_bp_reason reason)
3917 {
3918 int val;
3919
3920 /* BL is never in moribund_locations by our callers. */
3921 gdb_assert (bl->owner != NULL);
3922
3923 /* The type of none suggests that owner is actually deleted.
3924 This should not ever happen. */
3925 gdb_assert (bl->owner->type != bp_none);
3926
3927 if (bl->loc_type == bp_loc_software_breakpoint
3928 || bl->loc_type == bp_loc_hardware_breakpoint)
3929 {
3930 /* "Normal" instruction breakpoint: either the standard
3931 trap-instruction bp (bp_breakpoint), or a
3932 bp_hardware_breakpoint. */
3933
3934 /* First check to see if we have to handle an overlay. */
3935 if (overlay_debugging == ovly_off
3936 || bl->section == NULL
3937 || !(section_is_overlay (bl->section)))
3938 {
3939 /* No overlay handling: just remove the breakpoint. */
3940
3941 /* If we're trying to uninsert a memory breakpoint that we
3942 know is set in a dynamic object that is marked
3943 shlib_disabled, then either the dynamic object was
3944 removed with "remove-symbol-file" or with
3945 "nosharedlibrary". In the former case, we don't know
3946 whether another dynamic object might have loaded over the
3947 breakpoint's address -- the user might well let us know
3948 about it next with add-symbol-file (the whole point of
3949 add-symbol-file is letting the user manually maintain a
3950 list of dynamically loaded objects). If we have the
3951 breakpoint's shadow memory, that is, this is a software
3952 breakpoint managed by GDB, check whether the breakpoint
3953 is still inserted in memory, to avoid overwriting wrong
3954 code with stale saved shadow contents. Note that HW
3955 breakpoints don't have shadow memory, as they're
3956 implemented using a mechanism that is not dependent on
3957 being able to modify the target's memory, and as such
3958 they should always be removed. */
3959 if (bl->shlib_disabled
3960 && bl->target_info.shadow_len != 0
3961 && !memory_validate_breakpoint (bl->gdbarch, &bl->target_info))
3962 val = 0;
3963 else
3964 val = bl->owner->remove_location (bl, reason);
3965 }
3966 else
3967 {
3968 /* This breakpoint is in an overlay section.
3969 Did we set a breakpoint at the LMA? */
3970 if (!overlay_events_enabled)
3971 {
3972 /* Yes -- overlay event support is not active, so we
3973 should have set a breakpoint at the LMA. Remove it.
3974 */
3975 /* Ignore any failures: if the LMA is in ROM, we will
3976 have already warned when we failed to insert it. */
3977 if (bl->loc_type == bp_loc_hardware_breakpoint)
3978 target_remove_hw_breakpoint (bl->gdbarch,
3979 &bl->overlay_target_info);
3980 else
3981 target_remove_breakpoint (bl->gdbarch,
3982 &bl->overlay_target_info,
3983 reason);
3984 }
3985 /* Did we set a breakpoint at the VMA?
3986 If so, we will have marked the breakpoint 'inserted'. */
3987 if (bl->inserted)
3988 {
3989 /* Yes -- remove it. Previously we did not bother to
3990 remove the breakpoint if the section had been
3991 unmapped, but let's not rely on that being safe. We
3992 don't know what the overlay manager might do. */
3993
3994 /* However, we should remove *software* breakpoints only
3995 if the section is still mapped, or else we overwrite
3996 wrong code with the saved shadow contents. */
3997 if (bl->loc_type == bp_loc_hardware_breakpoint
3998 || section_is_mapped (bl->section))
3999 val = bl->owner->remove_location (bl, reason);
4000 else
4001 val = 0;
4002 }
4003 else
4004 {
4005 /* No -- not inserted, so no need to remove. No error. */
4006 val = 0;
4007 }
4008 }
4009
4010 /* In some cases, we might not be able to remove a breakpoint in
4011 a shared library that has already been removed, but we have
4012 not yet processed the shlib unload event. Similarly for an
4013 unloaded add-symbol-file object - the user might not yet have
4014 had the chance to remove-symbol-file it. shlib_disabled will
4015 be set if the library/object has already been removed, but
4016 the breakpoint hasn't been uninserted yet, e.g., after
4017 "nosharedlibrary" or "remove-symbol-file" with breakpoints
4018 always-inserted mode. */
4019 if (val
4020 && (bl->loc_type == bp_loc_software_breakpoint
4021 && (bl->shlib_disabled
4022 || solib_name_from_address (bl->pspace, bl->address)
4023 || shared_objfile_contains_address_p (bl->pspace,
4024 bl->address))))
4025 val = 0;
4026
4027 if (val)
4028 return val;
4029 bl->inserted = (reason == DETACH_BREAKPOINT);
4030 }
4031 else if (bl->loc_type == bp_loc_hardware_watchpoint)
4032 {
4033 bl->inserted = (reason == DETACH_BREAKPOINT);
4034 bl->owner->remove_location (bl, reason);
4035
4036 /* Failure to remove any of the hardware watchpoints comes here. */
4037 if (reason == REMOVE_BREAKPOINT && bl->inserted)
4038 warning (_("Could not remove hardware watchpoint %d."),
4039 bl->owner->number);
4040 }
4041 else if (bl->owner->type == bp_catchpoint
4042 && breakpoint_enabled (bl->owner)
4043 && !bl->duplicate)
4044 {
4045 val = bl->owner->remove_location (bl, reason);
4046 if (val)
4047 return val;
4048
4049 bl->inserted = (reason == DETACH_BREAKPOINT);
4050 }
4051
4052 return 0;
4053 }
4054
4055 static int
4056 remove_breakpoint (struct bp_location *bl)
4057 {
4058 /* BL is never in moribund_locations by our callers. */
4059 gdb_assert (bl->owner != NULL);
4060
4061 /* The type of none suggests that owner is actually deleted.
4062 This should not ever happen. */
4063 gdb_assert (bl->owner->type != bp_none);
4064
4065 scoped_restore_current_pspace_and_thread restore_pspace_thread;
4066
4067 switch_to_program_space_and_thread (bl->pspace);
4068
4069 return remove_breakpoint_1 (bl, REMOVE_BREAKPOINT);
4070 }
4071
4072 /* Clear the "inserted" flag in all breakpoints. */
4073
4074 void
4075 mark_breakpoints_out (void)
4076 {
4077 for (bp_location *bl : all_bp_locations ())
4078 if (bl->pspace == current_program_space)
4079 bl->inserted = 0;
4080 }
4081
4082 /* Clear the "inserted" flag in all breakpoints and delete any
4083 breakpoints which should go away between runs of the program.
4084
4085 Plus other such housekeeping that has to be done for breakpoints
4086 between runs.
4087
4088 Note: this function gets called at the end of a run (by
4089 generic_mourn_inferior) and when a run begins (by
4090 init_wait_for_inferior). */
4091
4092
4093
4094 void
4095 breakpoint_init_inferior (enum inf_context context)
4096 {
4097 struct program_space *pspace = current_program_space;
4098
4099 /* If breakpoint locations are shared across processes, then there's
4100 nothing to do. */
4101 if (gdbarch_has_global_breakpoints (target_gdbarch ()))
4102 return;
4103
4104 mark_breakpoints_out ();
4105
4106 for (breakpoint *b : all_breakpoints_safe ())
4107 {
4108 if (b->loc && b->loc->pspace != pspace)
4109 continue;
4110
4111 switch (b->type)
4112 {
4113 case bp_call_dummy:
4114 case bp_longjmp_call_dummy:
4115
4116 /* If the call dummy breakpoint is at the entry point it will
4117 cause problems when the inferior is rerun, so we better get
4118 rid of it. */
4119
4120 case bp_watchpoint_scope:
4121
4122 /* Also get rid of scope breakpoints. */
4123
4124 case bp_shlib_event:
4125
4126 /* Also remove solib event breakpoints. Their addresses may
4127 have changed since the last time we ran the program.
4128 Actually we may now be debugging against different target;
4129 and so the solib backend that installed this breakpoint may
4130 not be used in by the target. E.g.,
4131
4132 (gdb) file prog-linux
4133 (gdb) run # native linux target
4134 ...
4135 (gdb) kill
4136 (gdb) file prog-win.exe
4137 (gdb) tar rem :9999 # remote Windows gdbserver.
4138 */
4139
4140 case bp_step_resume:
4141
4142 /* Also remove step-resume breakpoints. */
4143
4144 case bp_single_step:
4145
4146 /* Also remove single-step breakpoints. */
4147
4148 delete_breakpoint (b);
4149 break;
4150
4151 case bp_watchpoint:
4152 case bp_hardware_watchpoint:
4153 case bp_read_watchpoint:
4154 case bp_access_watchpoint:
4155 {
4156 struct watchpoint *w = (struct watchpoint *) b;
4157
4158 /* Likewise for watchpoints on local expressions. */
4159 if (w->exp_valid_block != NULL)
4160 delete_breakpoint (b);
4161 else
4162 {
4163 /* Get rid of existing locations, which are no longer
4164 valid. New ones will be created in
4165 update_watchpoint, when the inferior is restarted.
4166 The next update_global_location_list call will
4167 garbage collect them. */
4168 b->loc = NULL;
4169
4170 if (context == inf_starting)
4171 {
4172 /* Reset val field to force reread of starting value in
4173 insert_breakpoints. */
4174 w->val.reset (nullptr);
4175 w->val_valid = false;
4176 }
4177 }
4178 }
4179 break;
4180 default:
4181 break;
4182 }
4183 }
4184
4185 /* Get rid of the moribund locations. */
4186 for (bp_location *bl : moribund_locations)
4187 decref_bp_location (&bl);
4188 moribund_locations.clear ();
4189 }
4190
4191 /* These functions concern about actual breakpoints inserted in the
4192 target --- to e.g. check if we need to do decr_pc adjustment or if
4193 we need to hop over the bkpt --- so we check for address space
4194 match, not program space. */
4195
4196 /* breakpoint_here_p (PC) returns non-zero if an enabled breakpoint
4197 exists at PC. It returns ordinary_breakpoint_here if it's an
4198 ordinary breakpoint, or permanent_breakpoint_here if it's a
4199 permanent breakpoint.
4200 - When continuing from a location with an ordinary breakpoint, we
4201 actually single step once before calling insert_breakpoints.
4202 - When continuing from a location with a permanent breakpoint, we
4203 need to use the `SKIP_PERMANENT_BREAKPOINT' macro, provided by
4204 the target, to advance the PC past the breakpoint. */
4205
4206 enum breakpoint_here
4207 breakpoint_here_p (const address_space *aspace, CORE_ADDR pc)
4208 {
4209 bool any_breakpoint_here = false;
4210
4211 for (bp_location *bl : all_bp_locations ())
4212 {
4213 if (bl->loc_type != bp_loc_software_breakpoint
4214 && bl->loc_type != bp_loc_hardware_breakpoint)
4215 continue;
4216
4217 /* ALL_BP_LOCATIONS bp_location has BL->OWNER always non-NULL. */
4218 if ((breakpoint_enabled (bl->owner)
4219 || bl->permanent)
4220 && breakpoint_location_address_match (bl, aspace, pc))
4221 {
4222 if (overlay_debugging
4223 && section_is_overlay (bl->section)
4224 && !section_is_mapped (bl->section))
4225 continue; /* unmapped overlay -- can't be a match */
4226 else if (bl->permanent)
4227 return permanent_breakpoint_here;
4228 else
4229 any_breakpoint_here = true;
4230 }
4231 }
4232
4233 return any_breakpoint_here ? ordinary_breakpoint_here : no_breakpoint_here;
4234 }
4235
4236 /* See breakpoint.h. */
4237
4238 int
4239 breakpoint_in_range_p (const address_space *aspace,
4240 CORE_ADDR addr, ULONGEST len)
4241 {
4242 for (bp_location *bl : all_bp_locations ())
4243 {
4244 if (bl->loc_type != bp_loc_software_breakpoint
4245 && bl->loc_type != bp_loc_hardware_breakpoint)
4246 continue;
4247
4248 if ((breakpoint_enabled (bl->owner)
4249 || bl->permanent)
4250 && breakpoint_location_address_range_overlap (bl, aspace,
4251 addr, len))
4252 {
4253 if (overlay_debugging
4254 && section_is_overlay (bl->section)
4255 && !section_is_mapped (bl->section))
4256 {
4257 /* Unmapped overlay -- can't be a match. */
4258 continue;
4259 }
4260
4261 return 1;
4262 }
4263 }
4264
4265 return 0;
4266 }
4267
4268 /* Return true if there's a moribund breakpoint at PC. */
4269
4270 int
4271 moribund_breakpoint_here_p (const address_space *aspace, CORE_ADDR pc)
4272 {
4273 for (bp_location *loc : moribund_locations)
4274 if (breakpoint_location_address_match (loc, aspace, pc))
4275 return 1;
4276
4277 return 0;
4278 }
4279
4280 /* Returns true iff BL is inserted at PC, in address space ASPACE. */
4281
4282 static bool
4283 bp_location_inserted_here_p (const struct bp_location *bl,
4284 const address_space *aspace, CORE_ADDR pc)
4285 {
4286 if (bl->inserted
4287 && breakpoint_address_match (bl->pspace->aspace, bl->address,
4288 aspace, pc))
4289 {
4290 /* An unmapped overlay can't be a match. */
4291 return !(overlay_debugging
4292 && section_is_overlay (bl->section)
4293 && !section_is_mapped (bl->section));
4294 }
4295 return false;
4296 }
4297
4298 /* Returns non-zero iff there's a breakpoint inserted at PC. */
4299
4300 int
4301 breakpoint_inserted_here_p (const address_space *aspace, CORE_ADDR pc)
4302 {
4303 for (bp_location *bl : all_bp_locations_at_addr (pc))
4304 {
4305 if (bl->loc_type != bp_loc_software_breakpoint
4306 && bl->loc_type != bp_loc_hardware_breakpoint)
4307 continue;
4308
4309 if (bp_location_inserted_here_p (bl, aspace, pc))
4310 return 1;
4311 }
4312 return 0;
4313 }
4314
4315 /* This function returns non-zero iff there is a software breakpoint
4316 inserted at PC. */
4317
4318 int
4319 software_breakpoint_inserted_here_p (const address_space *aspace,
4320 CORE_ADDR pc)
4321 {
4322 for (bp_location *bl : all_bp_locations_at_addr (pc))
4323 {
4324 if (bl->loc_type != bp_loc_software_breakpoint)
4325 continue;
4326
4327 if (bp_location_inserted_here_p (bl, aspace, pc))
4328 return 1;
4329 }
4330
4331 return 0;
4332 }
4333
4334 /* See breakpoint.h. */
4335
4336 int
4337 hardware_breakpoint_inserted_here_p (const address_space *aspace,
4338 CORE_ADDR pc)
4339 {
4340 for (bp_location *bl : all_bp_locations_at_addr (pc))
4341 {
4342 if (bl->loc_type != bp_loc_hardware_breakpoint)
4343 continue;
4344
4345 if (bp_location_inserted_here_p (bl, aspace, pc))
4346 return 1;
4347 }
4348
4349 return 0;
4350 }
4351
4352 int
4353 hardware_watchpoint_inserted_in_range (const address_space *aspace,
4354 CORE_ADDR addr, ULONGEST len)
4355 {
4356 for (breakpoint *bpt : all_breakpoints ())
4357 {
4358 if (bpt->type != bp_hardware_watchpoint
4359 && bpt->type != bp_access_watchpoint)
4360 continue;
4361
4362 if (!breakpoint_enabled (bpt))
4363 continue;
4364
4365 for (bp_location *loc : bpt->locations ())
4366 if (loc->pspace->aspace == aspace && loc->inserted)
4367 {
4368 CORE_ADDR l, h;
4369
4370 /* Check for intersection. */
4371 l = std::max<CORE_ADDR> (loc->address, addr);
4372 h = std::min<CORE_ADDR> (loc->address + loc->length, addr + len);
4373 if (l < h)
4374 return 1;
4375 }
4376 }
4377 return 0;
4378 }
4379
4380 /* See breakpoint.h. */
4381
4382 bool
4383 is_catchpoint (struct breakpoint *b)
4384 {
4385 return (b->type == bp_catchpoint);
4386 }
4387
4388 /* Clear a bpstat so that it says we are not at any breakpoint.
4389 Also free any storage that is part of a bpstat. */
4390
4391 void
4392 bpstat_clear (bpstat **bsp)
4393 {
4394 bpstat *p;
4395 bpstat *q;
4396
4397 if (bsp == 0)
4398 return;
4399 p = *bsp;
4400 while (p != NULL)
4401 {
4402 q = p->next;
4403 delete p;
4404 p = q;
4405 }
4406 *bsp = NULL;
4407 }
4408
4409 bpstat::bpstat (const bpstat &other)
4410 : next (NULL),
4411 bp_location_at (other.bp_location_at),
4412 breakpoint_at (other.breakpoint_at),
4413 commands (other.commands),
4414 print (other.print),
4415 stop (other.stop),
4416 print_it (other.print_it)
4417 {
4418 if (other.old_val != NULL)
4419 old_val = release_value (value_copy (other.old_val.get ()));
4420 }
4421
4422 /* Return a copy of a bpstat. Like "bs1 = bs2" but all storage that
4423 is part of the bpstat is copied as well. */
4424
4425 bpstat *
4426 bpstat_copy (bpstat *bs)
4427 {
4428 bpstat *p = nullptr;
4429 bpstat *tmp;
4430 bpstat *retval = nullptr;
4431
4432 if (bs == NULL)
4433 return bs;
4434
4435 for (; bs != NULL; bs = bs->next)
4436 {
4437 tmp = new bpstat (*bs);
4438
4439 if (p == NULL)
4440 /* This is the first thing in the chain. */
4441 retval = tmp;
4442 else
4443 p->next = tmp;
4444 p = tmp;
4445 }
4446 p->next = NULL;
4447 return retval;
4448 }
4449
4450 /* Find the bpstat associated with this breakpoint. */
4451
4452 bpstat *
4453 bpstat_find_breakpoint (bpstat *bsp, struct breakpoint *breakpoint)
4454 {
4455 if (bsp == NULL)
4456 return NULL;
4457
4458 for (; bsp != NULL; bsp = bsp->next)
4459 {
4460 if (bsp->breakpoint_at == breakpoint)
4461 return bsp;
4462 }
4463 return NULL;
4464 }
4465
4466 /* See breakpoint.h. */
4467
4468 bool
4469 bpstat_explains_signal (bpstat *bsp, enum gdb_signal sig)
4470 {
4471 for (; bsp != NULL; bsp = bsp->next)
4472 {
4473 if (bsp->breakpoint_at == NULL)
4474 {
4475 /* A moribund location can never explain a signal other than
4476 GDB_SIGNAL_TRAP. */
4477 if (sig == GDB_SIGNAL_TRAP)
4478 return true;
4479 }
4480 else
4481 {
4482 if (bsp->breakpoint_at->explains_signal (sig))
4483 return true;
4484 }
4485 }
4486
4487 return false;
4488 }
4489
4490 /* See breakpoint.h. */
4491
4492 int
4493 bpstat_num (bpstat **bsp, int *num)
4494 {
4495 struct breakpoint *b;
4496
4497 if ((*bsp) == NULL)
4498 return 0; /* No more breakpoint values */
4499
4500 /* We assume we'll never have several bpstats that correspond to a
4501 single breakpoint -- otherwise, this function might return the
4502 same number more than once and this will look ugly. */
4503 b = (*bsp)->breakpoint_at;
4504 *bsp = (*bsp)->next;
4505 if (b == NULL)
4506 return -1; /* breakpoint that's been deleted since */
4507
4508 *num = b->number; /* We have its number */
4509 return 1;
4510 }
4511
4512 /* See breakpoint.h */
4513
4514 int
4515 bpstat_locno (const bpstat *bs)
4516 {
4517 const struct breakpoint *b = bs->breakpoint_at;
4518 const struct bp_location *bl = bs->bp_location_at.get ();
4519
4520 int locno = 0;
4521
4522 if (b != nullptr && b->loc != nullptr && b->loc->next != nullptr)
4523 {
4524 const bp_location *bl_i;
4525
4526 for (bl_i = b->loc;
4527 bl_i != bl && bl_i->next != nullptr;
4528 bl_i = bl_i->next)
4529 locno++;
4530
4531 if (bl_i == bl)
4532 locno++;
4533 else
4534 {
4535 warning (_("location number not found for breakpoint %d address %s."),
4536 b->number, paddress (bl->gdbarch, bl->address));
4537 locno = 0;
4538 }
4539 }
4540
4541 return locno;
4542 }
4543
4544 /* See breakpoint.h. */
4545
4546 void
4547 print_num_locno (const bpstat *bs, struct ui_out *uiout)
4548 {
4549 struct breakpoint *b = bs->breakpoint_at;
4550
4551 if (b == nullptr)
4552 uiout->text (_("deleted breakpoint"));
4553 else
4554 {
4555 uiout->field_signed ("bkptno", b->number);
4556
4557 int locno = bpstat_locno (bs);
4558 if (locno != 0)
4559 uiout->message (".%pF", signed_field ("locno", locno));
4560 }
4561 }
4562
4563 /* See breakpoint.h. */
4564
4565 void
4566 bpstat_clear_actions (void)
4567 {
4568 bpstat *bs;
4569
4570 if (inferior_ptid == null_ptid)
4571 return;
4572
4573 thread_info *tp = inferior_thread ();
4574 for (bs = tp->control.stop_bpstat; bs != NULL; bs = bs->next)
4575 {
4576 bs->commands = NULL;
4577 bs->old_val.reset (nullptr);
4578 }
4579 }
4580
4581 /* Called when a command is about to proceed the inferior. */
4582
4583 static void
4584 breakpoint_about_to_proceed (void)
4585 {
4586 if (inferior_ptid != null_ptid)
4587 {
4588 struct thread_info *tp = inferior_thread ();
4589
4590 /* Allow inferior function calls in breakpoint commands to not
4591 interrupt the command list. When the call finishes
4592 successfully, the inferior will be standing at the same
4593 breakpoint as if nothing happened. */
4594 if (tp->control.in_infcall)
4595 return;
4596 }
4597
4598 breakpoint_proceeded = 1;
4599 }
4600
4601 /* Return true iff CMD as the first line of a command sequence is `silent'
4602 or its equivalent. */
4603
4604 static bool
4605 command_line_is_silent (struct command_line *cmd)
4606 {
4607 return cmd && (strcmp ("silent", cmd->line) == 0);
4608 }
4609
4610 /* Sets the $_hit_bpnum and $_hit_locno to bpnum and locno.
4611 A locno 0 is changed to 1 to e.g. let the user do
4612 (gdb) disable $_hit_bpnum.$_hit_locno
4613 for a single location breakpoint. */
4614
4615 static void
4616 set_hit_convenience_vars (int bpnum, int locno)
4617 {
4618 set_internalvar_integer (lookup_internalvar ("_hit_bpnum"), bpnum);
4619 set_internalvar_integer (lookup_internalvar ("_hit_locno"),
4620 (locno > 0 ? locno : 1));
4621 }
4622
4623 /* Execute all the commands associated with all the breakpoints at
4624 this location. Any of these commands could cause the process to
4625 proceed beyond this point, etc. We look out for such changes by
4626 checking the global "breakpoint_proceeded" after each command.
4627
4628 Returns true if a breakpoint command resumed the inferior. In that
4629 case, it is the caller's responsibility to recall it again with the
4630 bpstat of the current thread. */
4631
4632 static bool
4633 bpstat_do_actions_1 (bpstat **bsp)
4634 {
4635 bpstat *bs;
4636 bool again = false;
4637
4638 /* Avoid endless recursion if a `source' command is contained
4639 in bs->commands. */
4640 if (executing_breakpoint_commands)
4641 return false;
4642
4643 scoped_restore save_executing
4644 = make_scoped_restore (&executing_breakpoint_commands, 1);
4645
4646 scoped_restore preventer = prevent_dont_repeat ();
4647
4648 /* This pointer will iterate over the list of bpstat's. */
4649 bs = *bsp;
4650
4651 /* The $_hit_* convenience variables are set before running the
4652 commands of BS. In case we have several bs, after the loop,
4653 we set again the variables to the first printed bpnum and locno.
4654 For multiple breakpoints, this ensures the variables are set to the
4655 breakpoint printed for the user. */
4656 int printed_hit_bpnum = -1;
4657 int printed_hit_locno = -1;
4658
4659 breakpoint_proceeded = 0;
4660 for (; bs != NULL; bs = bs->next)
4661 {
4662 struct command_line *cmd = NULL;
4663
4664 /* Set the _hit_* convenience variables before running BS's commands. */
4665 {
4666 const struct breakpoint *b = bs->breakpoint_at;
4667 if (b != nullptr)
4668 {
4669 int locno = bpstat_locno (bs);
4670
4671 set_hit_convenience_vars (b->number, locno);
4672 if (printed_hit_locno == -1 && bs->print)
4673 {
4674 printed_hit_bpnum = b->number;
4675 printed_hit_locno = locno;
4676 }
4677 }
4678 }
4679
4680 /* Take ownership of the BSP's command tree, if it has one.
4681
4682 The command tree could legitimately contain commands like
4683 'step' and 'next', which call clear_proceed_status, which
4684 frees the bpstat BS and its command tree. To make sure this doesn't
4685 free the tree we're executing out from under us, we need to
4686 take ownership of the tree ourselves. Since a given bpstat's
4687 commands are only executed once, we don't need to copy it; we
4688 can clear the pointer in the bpstat, and make sure we free
4689 the tree when we're done. */
4690 counted_command_line ccmd = bs->commands;
4691 bs->commands = NULL;
4692 if (ccmd != NULL)
4693 cmd = ccmd.get ();
4694 if (command_line_is_silent (cmd))
4695 {
4696 /* The action has been already done by bpstat_stop_status. */
4697 cmd = cmd->next;
4698 }
4699
4700 while (cmd != NULL)
4701 {
4702 execute_control_command (cmd);
4703 /* After execute_control_command, if breakpoint_proceeded is true,
4704 BS has been freed and cannot be accessed anymore. */
4705
4706 if (breakpoint_proceeded)
4707 break;
4708 else
4709 cmd = cmd->next;
4710 }
4711
4712 if (breakpoint_proceeded)
4713 {
4714 if (current_ui->async)
4715 /* If we are in async mode, then the target might be still
4716 running, not stopped at any breakpoint, so nothing for
4717 us to do here -- just return to the event loop. */
4718 ;
4719 else
4720 /* In sync mode, when execute_control_command returns
4721 we're already standing on the next breakpoint.
4722 Breakpoint commands for that stop were not run, since
4723 execute_command does not run breakpoint commands --
4724 only command_line_handler does, but that one is not
4725 involved in execution of breakpoint commands. So, we
4726 can now execute breakpoint commands. It should be
4727 noted that making execute_command do bpstat actions is
4728 not an option -- in this case we'll have recursive
4729 invocation of bpstat for each breakpoint with a
4730 command, and can easily blow up GDB stack. Instead, we
4731 return true, which will trigger the caller to recall us
4732 with the new stop_bpstat. */
4733 again = true;
4734 break;
4735 }
4736 }
4737
4738 /* Now that we have executed the commands of all bs, set the _hit_*
4739 convenience variables to the printed values. */
4740 if (printed_hit_locno != -1)
4741 set_hit_convenience_vars (printed_hit_bpnum, printed_hit_locno);
4742
4743 return again;
4744 }
4745
4746 /* Helper for bpstat_do_actions. Get the current thread, if there's
4747 one, is alive and has execution. Return NULL otherwise. */
4748
4749 static thread_info *
4750 get_bpstat_thread ()
4751 {
4752 if (inferior_ptid == null_ptid || !target_has_execution ())
4753 return NULL;
4754
4755 thread_info *tp = inferior_thread ();
4756 if (tp->state == THREAD_EXITED || tp->executing ())
4757 return NULL;
4758 return tp;
4759 }
4760
4761 void
4762 bpstat_do_actions (void)
4763 {
4764 auto cleanup_if_error = make_scope_exit (bpstat_clear_actions);
4765 thread_info *tp;
4766
4767 /* Do any commands attached to breakpoint we are stopped at. */
4768 while ((tp = get_bpstat_thread ()) != NULL)
4769 {
4770 /* Since in sync mode, bpstat_do_actions may resume the
4771 inferior, and only return when it is stopped at the next
4772 breakpoint, we keep doing breakpoint actions until it returns
4773 false to indicate the inferior was not resumed. */
4774 if (!bpstat_do_actions_1 (&tp->control.stop_bpstat))
4775 break;
4776 }
4777
4778 cleanup_if_error.release ();
4779 }
4780
4781 /* Print out the (old or new) value associated with a watchpoint. */
4782
4783 static void
4784 watchpoint_value_print (struct value *val, struct ui_file *stream)
4785 {
4786 if (val == NULL)
4787 fprintf_styled (stream, metadata_style.style (), _("<unreadable>"));
4788 else
4789 {
4790 struct value_print_options opts;
4791 get_user_print_options (&opts);
4792 value_print (val, stream, &opts);
4793 }
4794 }
4795
4796 /* Print the "Thread ID hit" part of "Thread ID hit Breakpoint N" if
4797 debugging multiple threads. */
4798
4799 void
4800 maybe_print_thread_hit_breakpoint (struct ui_out *uiout)
4801 {
4802 if (uiout->is_mi_like_p ())
4803 return;
4804
4805 uiout->text ("\n");
4806
4807 if (show_thread_that_caused_stop ())
4808 {
4809 struct thread_info *thr = inferior_thread ();
4810
4811 uiout->text ("Thread ");
4812 uiout->field_string ("thread-id", print_thread_id (thr));
4813
4814 const char *name = thread_name (thr);
4815 if (name != NULL)
4816 {
4817 uiout->text (" \"");
4818 uiout->field_string ("name", name);
4819 uiout->text ("\"");
4820 }
4821
4822 uiout->text (" hit ");
4823 }
4824 }
4825
4826 /* Generic routine for printing messages indicating why we
4827 stopped. The behavior of this function depends on the value
4828 'print_it' in the bpstat structure. Under some circumstances we
4829 may decide not to print anything here and delegate the task to
4830 normal_stop(). */
4831
4832 static enum print_stop_action
4833 print_bp_stop_message (bpstat *bs)
4834 {
4835 switch (bs->print_it)
4836 {
4837 case print_it_noop:
4838 /* Nothing should be printed for this bpstat entry. */
4839 return PRINT_UNKNOWN;
4840 break;
4841
4842 case print_it_done:
4843 /* We still want to print the frame, but we already printed the
4844 relevant messages. */
4845 return PRINT_SRC_AND_LOC;
4846 break;
4847
4848 case print_it_normal:
4849 {
4850 struct breakpoint *b = bs->breakpoint_at;
4851
4852 /* bs->breakpoint_at can be NULL if it was a momentary breakpoint
4853 which has since been deleted. */
4854 if (b == NULL)
4855 return PRINT_UNKNOWN;
4856
4857 /* Normal case. Call the breakpoint's print_it method. */
4858 return b->print_it (bs);
4859 }
4860 break;
4861
4862 default:
4863 internal_error (_("print_bp_stop_message: unrecognized enum value"));
4864 break;
4865 }
4866 }
4867
4868 /* See breakpoint.h. */
4869
4870 void
4871 print_solib_event (bool is_catchpoint)
4872 {
4873 bool any_deleted = !current_program_space->deleted_solibs.empty ();
4874 bool any_added = !current_program_space->added_solibs.empty ();
4875
4876 if (!is_catchpoint)
4877 {
4878 if (any_added || any_deleted)
4879 current_uiout->text (_("Stopped due to shared library event:\n"));
4880 else
4881 current_uiout->text (_("Stopped due to shared library event (no "
4882 "libraries added or removed)\n"));
4883 }
4884
4885 if (current_uiout->is_mi_like_p ())
4886 current_uiout->field_string ("reason",
4887 async_reason_lookup (EXEC_ASYNC_SOLIB_EVENT));
4888
4889 if (any_deleted)
4890 {
4891 current_uiout->text (_(" Inferior unloaded "));
4892 ui_out_emit_list list_emitter (current_uiout, "removed");
4893 for (int ix = 0; ix < current_program_space->deleted_solibs.size (); ix++)
4894 {
4895 const std::string &name = current_program_space->deleted_solibs[ix];
4896
4897 if (ix > 0)
4898 current_uiout->text (" ");
4899 current_uiout->field_string ("library", name);
4900 current_uiout->text ("\n");
4901 }
4902 }
4903
4904 if (any_added)
4905 {
4906 current_uiout->text (_(" Inferior loaded "));
4907 ui_out_emit_list list_emitter (current_uiout, "added");
4908 bool first = true;
4909 for (so_list *iter : current_program_space->added_solibs)
4910 {
4911 if (!first)
4912 current_uiout->text (" ");
4913 first = false;
4914 current_uiout->field_string ("library", iter->so_name);
4915 current_uiout->text ("\n");
4916 }
4917 }
4918 }
4919
4920 /* Print a message indicating what happened. This is called from
4921 normal_stop(). The input to this routine is the head of the bpstat
4922 list - a list of the eventpoints that caused this stop. KIND is
4923 the target_waitkind for the stopping event. This
4924 routine calls the generic print routine for printing a message
4925 about reasons for stopping. This will print (for example) the
4926 "Breakpoint n," part of the output. The return value of this
4927 routine is one of:
4928
4929 PRINT_UNKNOWN: Means we printed nothing.
4930 PRINT_SRC_AND_LOC: Means we printed something, and expect subsequent
4931 code to print the location. An example is
4932 "Breakpoint 1, " which should be followed by
4933 the location.
4934 PRINT_SRC_ONLY: Means we printed something, but there is no need
4935 to also print the location part of the message.
4936 An example is the catch/throw messages, which
4937 don't require a location appended to the end.
4938 PRINT_NOTHING: We have done some printing and we don't need any
4939 further info to be printed. */
4940
4941 enum print_stop_action
4942 bpstat_print (bpstat *bs, target_waitkind kind)
4943 {
4944 enum print_stop_action val;
4945
4946 /* Maybe another breakpoint in the chain caused us to stop.
4947 (Currently all watchpoints go on the bpstat whether hit or not.
4948 That probably could (should) be changed, provided care is taken
4949 with respect to bpstat_explains_signal). */
4950 for (; bs; bs = bs->next)
4951 {
4952 val = print_bp_stop_message (bs);
4953 if (val == PRINT_SRC_ONLY
4954 || val == PRINT_SRC_AND_LOC
4955 || val == PRINT_NOTHING)
4956 return val;
4957 }
4958
4959 /* If we had hit a shared library event breakpoint,
4960 print_bp_stop_message would print out this message. If we hit an
4961 OS-level shared library event, do the same thing. */
4962 if (kind == TARGET_WAITKIND_LOADED)
4963 {
4964 print_solib_event (false);
4965 return PRINT_NOTHING;
4966 }
4967
4968 /* We reached the end of the chain, or we got a null BS to start
4969 with and nothing was printed. */
4970 return PRINT_UNKNOWN;
4971 }
4972
4973 /* Evaluate the boolean expression EXP and return the result. */
4974
4975 static bool
4976 breakpoint_cond_eval (expression *exp)
4977 {
4978 scoped_value_mark mark;
4979 return value_true (evaluate_expression (exp));
4980 }
4981
4982 /* Allocate a new bpstat. Link it to the FIFO list by BS_LINK_POINTER. */
4983
4984 bpstat::bpstat (struct bp_location *bl, bpstat ***bs_link_pointer)
4985 : next (NULL),
4986 bp_location_at (bp_location_ref_ptr::new_reference (bl)),
4987 breakpoint_at (bl->owner),
4988 commands (NULL),
4989 print (0),
4990 stop (0),
4991 print_it (print_it_normal)
4992 {
4993 **bs_link_pointer = this;
4994 *bs_link_pointer = &next;
4995 }
4996
4997 bpstat::bpstat ()
4998 : next (NULL),
4999 breakpoint_at (NULL),
5000 commands (NULL),
5001 print (0),
5002 stop (0),
5003 print_it (print_it_normal)
5004 {
5005 }
5006 \f
5007 /* The target has stopped with waitstatus WS. Check if any hardware
5008 watchpoints have triggered, according to the target. */
5009
5010 int
5011 watchpoints_triggered (const target_waitstatus &ws)
5012 {
5013 bool stopped_by_watchpoint = target_stopped_by_watchpoint ();
5014 CORE_ADDR addr;
5015
5016 if (!stopped_by_watchpoint)
5017 {
5018 /* We were not stopped by a watchpoint. Mark all watchpoints
5019 as not triggered. */
5020 for (breakpoint *b : all_breakpoints ())
5021 if (is_hardware_watchpoint (b))
5022 {
5023 struct watchpoint *w = (struct watchpoint *) b;
5024
5025 w->watchpoint_triggered = watch_triggered_no;
5026 }
5027
5028 return 0;
5029 }
5030
5031 if (!target_stopped_data_address (current_inferior ()->top_target (), &addr))
5032 {
5033 /* We were stopped by a watchpoint, but we don't know where.
5034 Mark all watchpoints as unknown. */
5035 for (breakpoint *b : all_breakpoints ())
5036 if (is_hardware_watchpoint (b))
5037 {
5038 struct watchpoint *w = (struct watchpoint *) b;
5039
5040 w->watchpoint_triggered = watch_triggered_unknown;
5041 }
5042
5043 return 1;
5044 }
5045
5046 /* The target could report the data address. Mark watchpoints
5047 affected by this data address as triggered, and all others as not
5048 triggered. */
5049
5050 for (breakpoint *b : all_breakpoints ())
5051 if (is_hardware_watchpoint (b))
5052 {
5053 struct watchpoint *w = (struct watchpoint *) b;
5054
5055 w->watchpoint_triggered = watch_triggered_no;
5056 for (bp_location *loc : b->locations ())
5057 {
5058 if (is_masked_watchpoint (b))
5059 {
5060 CORE_ADDR newaddr = addr & w->hw_wp_mask;
5061 CORE_ADDR start = loc->address & w->hw_wp_mask;
5062
5063 if (newaddr == start)
5064 {
5065 w->watchpoint_triggered = watch_triggered_yes;
5066 break;
5067 }
5068 }
5069 /* Exact match not required. Within range is sufficient. */
5070 else if (target_watchpoint_addr_within_range
5071 (current_inferior ()->top_target (), addr, loc->address,
5072 loc->length))
5073 {
5074 w->watchpoint_triggered = watch_triggered_yes;
5075 break;
5076 }
5077 }
5078 }
5079
5080 return 1;
5081 }
5082
5083 /* Possible return values for watchpoint_check. */
5084 enum wp_check_result
5085 {
5086 /* The watchpoint has been deleted. */
5087 WP_DELETED = 1,
5088
5089 /* The value has changed. */
5090 WP_VALUE_CHANGED = 2,
5091
5092 /* The value has not changed. */
5093 WP_VALUE_NOT_CHANGED = 3,
5094
5095 /* Ignore this watchpoint, no matter if the value changed or not. */
5096 WP_IGNORE = 4,
5097 };
5098
5099 #define BP_TEMPFLAG 1
5100 #define BP_HARDWAREFLAG 2
5101
5102 /* Evaluate watchpoint condition expression and check if its value
5103 changed. */
5104
5105 static wp_check_result
5106 watchpoint_check (bpstat *bs)
5107 {
5108 struct watchpoint *b;
5109 frame_info_ptr fr;
5110 bool within_current_scope;
5111
5112 /* BS is built from an existing struct breakpoint. */
5113 gdb_assert (bs->breakpoint_at != NULL);
5114 b = (struct watchpoint *) bs->breakpoint_at;
5115
5116 /* If this is a local watchpoint, we only want to check if the
5117 watchpoint frame is in scope if the current thread is the thread
5118 that was used to create the watchpoint. */
5119 if (!watchpoint_in_thread_scope (b))
5120 return WP_IGNORE;
5121
5122 if (b->exp_valid_block == NULL)
5123 within_current_scope = true;
5124 else
5125 {
5126 frame_info_ptr frame = get_current_frame ();
5127 struct gdbarch *frame_arch = get_frame_arch (frame);
5128 CORE_ADDR frame_pc = get_frame_pc (frame);
5129
5130 /* stack_frame_destroyed_p() returns a non-zero value if we're
5131 still in the function but the stack frame has already been
5132 invalidated. Since we can't rely on the values of local
5133 variables after the stack has been destroyed, we are treating
5134 the watchpoint in that state as `not changed' without further
5135 checking. Don't mark watchpoints as changed if the current
5136 frame is in an epilogue - even if they are in some other
5137 frame, our view of the stack is likely to be wrong and
5138 frame_find_by_id could error out. */
5139 if (gdbarch_stack_frame_destroyed_p (frame_arch, frame_pc))
5140 return WP_IGNORE;
5141
5142 fr = frame_find_by_id (b->watchpoint_frame);
5143 within_current_scope = (fr != NULL);
5144
5145 /* If we've gotten confused in the unwinder, we might have
5146 returned a frame that can't describe this variable. */
5147 if (within_current_scope)
5148 {
5149 struct symbol *function;
5150
5151 function = get_frame_function (fr);
5152 if (function == NULL
5153 || !contained_in (b->exp_valid_block, function->value_block ()))
5154 within_current_scope = false;
5155 }
5156
5157 if (within_current_scope)
5158 /* If we end up stopping, the current frame will get selected
5159 in normal_stop. So this call to select_frame won't affect
5160 the user. */
5161 select_frame (fr);
5162 }
5163
5164 if (within_current_scope)
5165 {
5166 /* We use value_{,free_to_}mark because it could be a *long*
5167 time before we return to the command level and call
5168 free_all_values. We can't call free_all_values because we
5169 might be in the middle of evaluating a function call. */
5170
5171 struct value *mark;
5172 struct value *new_val;
5173
5174 if (is_masked_watchpoint (b))
5175 /* Since we don't know the exact trigger address (from
5176 stopped_data_address), just tell the user we've triggered
5177 a mask watchpoint. */
5178 return WP_VALUE_CHANGED;
5179
5180 mark = value_mark ();
5181 fetch_subexp_value (b->exp.get (), b->exp->op.get (), &new_val,
5182 NULL, NULL, false);
5183
5184 if (b->val_bitsize != 0)
5185 new_val = extract_bitfield_from_watchpoint_value (b, new_val);
5186
5187 /* We use value_equal_contents instead of value_equal because
5188 the latter coerces an array to a pointer, thus comparing just
5189 the address of the array instead of its contents. This is
5190 not what we want. */
5191 if ((b->val != NULL) != (new_val != NULL)
5192 || (b->val != NULL && !value_equal_contents (b->val.get (),
5193 new_val)))
5194 {
5195 bs->old_val = b->val;
5196 b->val = release_value (new_val);
5197 b->val_valid = true;
5198 if (new_val != NULL)
5199 value_free_to_mark (mark);
5200 return WP_VALUE_CHANGED;
5201 }
5202 else
5203 {
5204 /* Nothing changed. */
5205 value_free_to_mark (mark);
5206 return WP_VALUE_NOT_CHANGED;
5207 }
5208 }
5209 else
5210 {
5211 /* This seems like the only logical thing to do because
5212 if we temporarily ignored the watchpoint, then when
5213 we reenter the block in which it is valid it contains
5214 garbage (in the case of a function, it may have two
5215 garbage values, one before and one after the prologue).
5216 So we can't even detect the first assignment to it and
5217 watch after that (since the garbage may or may not equal
5218 the first value assigned). */
5219 /* We print all the stop information in
5220 breakpointprint_it, but in this case, by the time we
5221 call breakpoint->print_it this bp will be deleted
5222 already. So we have no choice but print the information
5223 here. */
5224
5225 SWITCH_THRU_ALL_UIS ()
5226 {
5227 struct ui_out *uiout = current_uiout;
5228
5229 if (uiout->is_mi_like_p ())
5230 uiout->field_string
5231 ("reason", async_reason_lookup (EXEC_ASYNC_WATCHPOINT_SCOPE));
5232 uiout->message ("\nWatchpoint %pF deleted because the program has "
5233 "left the block in\n"
5234 "which its expression is valid.\n",
5235 signed_field ("wpnum", b->number));
5236 }
5237
5238 /* Make sure the watchpoint's commands aren't executed. */
5239 b->commands = NULL;
5240 watchpoint_del_at_next_stop (b);
5241
5242 return WP_DELETED;
5243 }
5244 }
5245
5246 /* Return true if it looks like target has stopped due to hitting
5247 breakpoint location BL. This function does not check if we should
5248 stop, only if BL explains the stop. */
5249
5250 static bool
5251 bpstat_check_location (const struct bp_location *bl,
5252 const address_space *aspace, CORE_ADDR bp_addr,
5253 const target_waitstatus &ws)
5254 {
5255 struct breakpoint *b = bl->owner;
5256
5257 /* BL is from an existing breakpoint. */
5258 gdb_assert (b != NULL);
5259
5260 return b->breakpoint_hit (bl, aspace, bp_addr, ws);
5261 }
5262
5263 /* Determine if the watched values have actually changed, and we
5264 should stop. If not, set BS->stop to false. */
5265
5266 static void
5267 bpstat_check_watchpoint (bpstat *bs)
5268 {
5269 const struct bp_location *bl;
5270 struct watchpoint *b;
5271
5272 /* BS is built for existing struct breakpoint. */
5273 bl = bs->bp_location_at.get ();
5274 gdb_assert (bl != NULL);
5275 b = (struct watchpoint *) bs->breakpoint_at;
5276 gdb_assert (b != NULL);
5277
5278 {
5279 bool must_check_value = false;
5280
5281 if (b->type == bp_watchpoint)
5282 /* For a software watchpoint, we must always check the
5283 watched value. */
5284 must_check_value = true;
5285 else if (b->watchpoint_triggered == watch_triggered_yes)
5286 /* We have a hardware watchpoint (read, write, or access)
5287 and the target earlier reported an address watched by
5288 this watchpoint. */
5289 must_check_value = true;
5290 else if (b->watchpoint_triggered == watch_triggered_unknown
5291 && b->type == bp_hardware_watchpoint)
5292 /* We were stopped by a hardware watchpoint, but the target could
5293 not report the data address. We must check the watchpoint's
5294 value. Access and read watchpoints are out of luck; without
5295 a data address, we can't figure it out. */
5296 must_check_value = true;
5297
5298 if (must_check_value)
5299 {
5300 wp_check_result e;
5301
5302 try
5303 {
5304 e = watchpoint_check (bs);
5305 }
5306 catch (const gdb_exception &ex)
5307 {
5308 exception_fprintf (gdb_stderr, ex,
5309 "Error evaluating expression "
5310 "for watchpoint %d\n",
5311 b->number);
5312
5313 SWITCH_THRU_ALL_UIS ()
5314 {
5315 gdb_printf (_("Watchpoint %d deleted.\n"),
5316 b->number);
5317 }
5318 watchpoint_del_at_next_stop (b);
5319 e = WP_DELETED;
5320 }
5321
5322 switch (e)
5323 {
5324 case WP_DELETED:
5325 /* We've already printed what needs to be printed. */
5326 bs->print_it = print_it_done;
5327 /* Stop. */
5328 break;
5329 case WP_IGNORE:
5330 bs->print_it = print_it_noop;
5331 bs->stop = false;
5332 break;
5333 case WP_VALUE_CHANGED:
5334 if (b->type == bp_read_watchpoint)
5335 {
5336 /* There are two cases to consider here:
5337
5338 1. We're watching the triggered memory for reads.
5339 In that case, trust the target, and always report
5340 the watchpoint hit to the user. Even though
5341 reads don't cause value changes, the value may
5342 have changed since the last time it was read, and
5343 since we're not trapping writes, we will not see
5344 those, and as such we should ignore our notion of
5345 old value.
5346
5347 2. We're watching the triggered memory for both
5348 reads and writes. There are two ways this may
5349 happen:
5350
5351 2.1. This is a target that can't break on data
5352 reads only, but can break on accesses (reads or
5353 writes), such as e.g., x86. We detect this case
5354 at the time we try to insert read watchpoints.
5355
5356 2.2. Otherwise, the target supports read
5357 watchpoints, but, the user set an access or write
5358 watchpoint watching the same memory as this read
5359 watchpoint.
5360
5361 If we're watching memory writes as well as reads,
5362 ignore watchpoint hits when we find that the
5363 value hasn't changed, as reads don't cause
5364 changes. This still gives false positives when
5365 the program writes the same value to memory as
5366 what there was already in memory (we will confuse
5367 it for a read), but it's much better than
5368 nothing. */
5369
5370 int other_write_watchpoint = 0;
5371
5372 if (bl->watchpoint_type == hw_read)
5373 {
5374 for (breakpoint *other_b : all_breakpoints ())
5375 if (other_b->type == bp_hardware_watchpoint
5376 || other_b->type == bp_access_watchpoint)
5377 {
5378 struct watchpoint *other_w =
5379 (struct watchpoint *) other_b;
5380
5381 if (other_w->watchpoint_triggered
5382 == watch_triggered_yes)
5383 {
5384 other_write_watchpoint = 1;
5385 break;
5386 }
5387 }
5388 }
5389
5390 if (other_write_watchpoint
5391 || bl->watchpoint_type == hw_access)
5392 {
5393 /* We're watching the same memory for writes,
5394 and the value changed since the last time we
5395 updated it, so this trap must be for a write.
5396 Ignore it. */
5397 bs->print_it = print_it_noop;
5398 bs->stop = false;
5399 }
5400 }
5401 break;
5402 case WP_VALUE_NOT_CHANGED:
5403 if (b->type == bp_hardware_watchpoint
5404 || b->type == bp_watchpoint)
5405 {
5406 /* Don't stop: write watchpoints shouldn't fire if
5407 the value hasn't changed. */
5408 bs->print_it = print_it_noop;
5409 bs->stop = false;
5410 }
5411 /* Stop. */
5412 break;
5413 default:
5414 /* Can't happen. */
5415 break;
5416 }
5417 }
5418 else /* !must_check_value */
5419 {
5420 /* This is a case where some watchpoint(s) triggered, but
5421 not at the address of this watchpoint, or else no
5422 watchpoint triggered after all. So don't print
5423 anything for this watchpoint. */
5424 bs->print_it = print_it_noop;
5425 bs->stop = false;
5426 }
5427 }
5428 }
5429
5430 /* For breakpoints that are currently marked as telling gdb to stop,
5431 check conditions (condition proper, frame, thread and ignore count)
5432 of breakpoint referred to by BS. If we should not stop for this
5433 breakpoint, set BS->stop to 0. */
5434
5435 static void
5436 bpstat_check_breakpoint_conditions (bpstat *bs, thread_info *thread)
5437 {
5438 INFRUN_SCOPED_DEBUG_ENTER_EXIT;
5439
5440 const struct bp_location *bl;
5441 struct breakpoint *b;
5442 /* Assume stop. */
5443 bool condition_result = true;
5444 struct expression *cond;
5445
5446 gdb_assert (bs->stop);
5447
5448 /* BS is built for existing struct breakpoint. */
5449 bl = bs->bp_location_at.get ();
5450 gdb_assert (bl != NULL);
5451 b = bs->breakpoint_at;
5452 gdb_assert (b != NULL);
5453
5454 infrun_debug_printf ("thread = %s, breakpoint %d.%d",
5455 thread->ptid.to_string ().c_str (),
5456 b->number, find_loc_num_by_location (bl));
5457
5458 /* Even if the target evaluated the condition on its end and notified GDB, we
5459 need to do so again since GDB does not know if we stopped due to a
5460 breakpoint or a single step breakpoint. */
5461
5462 if (frame_id_p (b->frame_id)
5463 && b->frame_id != get_stack_frame_id (get_current_frame ()))
5464 {
5465 infrun_debug_printf ("incorrect frame %s not %s, not stopping",
5466 get_stack_frame_id (get_current_frame ()).to_string ().c_str (),
5467 b->frame_id.to_string ().c_str ());
5468 bs->stop = false;
5469 return;
5470 }
5471
5472 /* If this is a thread/task-specific breakpoint, don't waste cpu
5473 evaluating the condition if this isn't the specified
5474 thread/task. */
5475 if ((b->thread != -1 && b->thread != thread->global_num)
5476 || (b->task != -1 && b->task != ada_get_task_number (thread)))
5477 {
5478 infrun_debug_printf ("incorrect thread or task, not stopping");
5479 bs->stop = false;
5480 return;
5481 }
5482
5483 /* Evaluate extension language breakpoints that have a "stop" method
5484 implemented. */
5485 bs->stop = breakpoint_ext_lang_cond_says_stop (b);
5486
5487 if (is_watchpoint (b))
5488 {
5489 struct watchpoint *w = (struct watchpoint *) b;
5490
5491 cond = w->cond_exp.get ();
5492 }
5493 else
5494 cond = bl->cond.get ();
5495
5496 if (cond != nullptr && b->disposition != disp_del_at_next_stop)
5497 {
5498 bool within_current_scope = true;
5499 struct watchpoint * w;
5500
5501 /* We use scoped_value_mark because it could be a long time
5502 before we return to the command level and call
5503 free_all_values. We can't call free_all_values because we
5504 might be in the middle of evaluating a function call. */
5505 scoped_value_mark mark;
5506
5507 if (is_watchpoint (b))
5508 w = (struct watchpoint *) b;
5509 else
5510 w = NULL;
5511
5512 /* Need to select the frame, with all that implies so that
5513 the conditions will have the right context. Because we
5514 use the frame, we will not see an inlined function's
5515 variables when we arrive at a breakpoint at the start
5516 of the inlined function; the current frame will be the
5517 call site. */
5518 if (w == NULL || w->cond_exp_valid_block == NULL)
5519 select_frame (get_current_frame ());
5520 else
5521 {
5522 frame_info_ptr frame;
5523
5524 /* For local watchpoint expressions, which particular
5525 instance of a local is being watched matters, so we
5526 keep track of the frame to evaluate the expression
5527 in. To evaluate the condition however, it doesn't
5528 really matter which instantiation of the function
5529 where the condition makes sense triggers the
5530 watchpoint. This allows an expression like "watch
5531 global if q > 10" set in `func', catch writes to
5532 global on all threads that call `func', or catch
5533 writes on all recursive calls of `func' by a single
5534 thread. We simply always evaluate the condition in
5535 the innermost frame that's executing where it makes
5536 sense to evaluate the condition. It seems
5537 intuitive. */
5538 frame = block_innermost_frame (w->cond_exp_valid_block);
5539 if (frame != NULL)
5540 select_frame (frame);
5541 else
5542 within_current_scope = false;
5543 }
5544 if (within_current_scope)
5545 {
5546 try
5547 {
5548 condition_result = breakpoint_cond_eval (cond);
5549 }
5550 catch (const gdb_exception &ex)
5551 {
5552 exception_fprintf (gdb_stderr, ex,
5553 "Error in testing breakpoint condition:\n");
5554 }
5555 }
5556 else
5557 {
5558 warning (_("Watchpoint condition cannot be tested "
5559 "in the current scope"));
5560 /* If we failed to set the right context for this
5561 watchpoint, unconditionally report it. */
5562 }
5563 /* FIXME-someday, should give breakpoint #. */
5564 }
5565
5566 if (cond != nullptr && !condition_result)
5567 {
5568 infrun_debug_printf ("condition_result = false, not stopping");
5569 bs->stop = false;
5570 return;
5571 }
5572 else if (b->ignore_count > 0)
5573 {
5574 infrun_debug_printf ("ignore count %d, not stopping",
5575 b->ignore_count);
5576 b->ignore_count--;
5577 bs->stop = false;
5578 /* Increase the hit count even though we don't stop. */
5579 ++(b->hit_count);
5580 gdb::observers::breakpoint_modified.notify (b);
5581 return;
5582 }
5583
5584 if (bs->stop)
5585 infrun_debug_printf ("stopping at this breakpoint");
5586 else
5587 infrun_debug_printf ("not stopping at this breakpoint");
5588 }
5589
5590 /* Returns true if we need to track moribund locations of LOC's type
5591 on the current target. */
5592
5593 static bool
5594 need_moribund_for_location_type (const struct bp_location *loc)
5595 {
5596 return ((loc->loc_type == bp_loc_software_breakpoint
5597 && !target_supports_stopped_by_sw_breakpoint ())
5598 || (loc->loc_type == bp_loc_hardware_breakpoint
5599 && !target_supports_stopped_by_hw_breakpoint ()));
5600 }
5601
5602 /* See breakpoint.h. */
5603
5604 bpstat *
5605 build_bpstat_chain (const address_space *aspace, CORE_ADDR bp_addr,
5606 const target_waitstatus &ws)
5607 {
5608 bpstat *bs_head = nullptr, **bs_link = &bs_head;
5609
5610 for (breakpoint *b : all_breakpoints ())
5611 {
5612 if (!breakpoint_enabled (b))
5613 continue;
5614
5615 for (bp_location *bl : b->locations ())
5616 {
5617 /* For hardware watchpoints, we look only at the first
5618 location. The watchpoint_check function will work on the
5619 entire expression, not the individual locations. For
5620 read watchpoints, the watchpoints_triggered function has
5621 checked all locations already. */
5622 if (b->type == bp_hardware_watchpoint && bl != b->loc)
5623 break;
5624
5625 if (!bl->enabled || bl->disabled_by_cond || bl->shlib_disabled)
5626 continue;
5627
5628 if (!bpstat_check_location (bl, aspace, bp_addr, ws))
5629 continue;
5630
5631 /* Come here if it's a watchpoint, or if the break address
5632 matches. */
5633
5634 bpstat *bs = new bpstat (bl, &bs_link); /* Alloc a bpstat to
5635 explain stop. */
5636
5637 /* Assume we stop. Should we find a watchpoint that is not
5638 actually triggered, or if the condition of the breakpoint
5639 evaluates as false, we'll reset 'stop' to 0. */
5640 bs->stop = true;
5641 bs->print = true;
5642
5643 /* If this is a scope breakpoint, mark the associated
5644 watchpoint as triggered so that we will handle the
5645 out-of-scope event. We'll get to the watchpoint next
5646 iteration. */
5647 if (b->type == bp_watchpoint_scope && b->related_breakpoint != b)
5648 {
5649 struct watchpoint *w = (struct watchpoint *) b->related_breakpoint;
5650
5651 w->watchpoint_triggered = watch_triggered_yes;
5652 }
5653 }
5654 }
5655
5656 /* Check if a moribund breakpoint explains the stop. */
5657 if (!target_supports_stopped_by_sw_breakpoint ()
5658 || !target_supports_stopped_by_hw_breakpoint ())
5659 {
5660 for (bp_location *loc : moribund_locations)
5661 {
5662 if (breakpoint_location_address_match (loc, aspace, bp_addr)
5663 && need_moribund_for_location_type (loc))
5664 {
5665 bpstat *bs = new bpstat (loc, &bs_link);
5666 /* For hits of moribund locations, we should just proceed. */
5667 bs->stop = false;
5668 bs->print = false;
5669 bs->print_it = print_it_noop;
5670 }
5671 }
5672 }
5673
5674 return bs_head;
5675 }
5676
5677 /* See breakpoint.h. */
5678
5679 bpstat *
5680 bpstat_stop_status (const address_space *aspace,
5681 CORE_ADDR bp_addr, thread_info *thread,
5682 const target_waitstatus &ws,
5683 bpstat *stop_chain)
5684 {
5685 struct breakpoint *b = NULL;
5686 /* First item of allocated bpstat's. */
5687 bpstat *bs_head = stop_chain;
5688 bpstat *bs;
5689 int need_remove_insert;
5690 int removed_any;
5691
5692 /* First, build the bpstat chain with locations that explain a
5693 target stop, while being careful to not set the target running,
5694 as that may invalidate locations (in particular watchpoint
5695 locations are recreated). Resuming will happen here with
5696 breakpoint conditions or watchpoint expressions that include
5697 inferior function calls. */
5698 if (bs_head == NULL)
5699 bs_head = build_bpstat_chain (aspace, bp_addr, ws);
5700
5701 /* A bit of special processing for shlib breakpoints. We need to
5702 process solib loading here, so that the lists of loaded and
5703 unloaded libraries are correct before we handle "catch load" and
5704 "catch unload". */
5705 for (bs = bs_head; bs != NULL; bs = bs->next)
5706 {
5707 if (bs->breakpoint_at && bs->breakpoint_at->type == bp_shlib_event)
5708 {
5709 handle_solib_event ();
5710 break;
5711 }
5712 }
5713
5714 /* Now go through the locations that caused the target to stop, and
5715 check whether we're interested in reporting this stop to higher
5716 layers, or whether we should resume the target transparently. */
5717
5718 removed_any = 0;
5719
5720 for (bs = bs_head; bs != NULL; bs = bs->next)
5721 {
5722 if (!bs->stop)
5723 continue;
5724
5725 b = bs->breakpoint_at;
5726 b->check_status (bs);
5727 if (bs->stop)
5728 {
5729 bpstat_check_breakpoint_conditions (bs, thread);
5730
5731 if (bs->stop)
5732 {
5733 ++(b->hit_count);
5734
5735 /* We will stop here. */
5736 if (b->disposition == disp_disable)
5737 {
5738 --(b->enable_count);
5739 if (b->enable_count <= 0)
5740 b->enable_state = bp_disabled;
5741 removed_any = 1;
5742 }
5743 gdb::observers::breakpoint_modified.notify (b);
5744 if (b->silent)
5745 bs->print = false;
5746 bs->commands = b->commands;
5747 if (command_line_is_silent (bs->commands
5748 ? bs->commands.get () : NULL))
5749 bs->print = false;
5750
5751 b->after_condition_true (bs);
5752 }
5753
5754 }
5755
5756 /* Print nothing for this entry if we don't stop or don't
5757 print. */
5758 if (!bs->stop || !bs->print)
5759 bs->print_it = print_it_noop;
5760 }
5761
5762 /* If we aren't stopping, the value of some hardware watchpoint may
5763 not have changed, but the intermediate memory locations we are
5764 watching may have. Don't bother if we're stopping; this will get
5765 done later. */
5766 need_remove_insert = 0;
5767 if (! bpstat_causes_stop (bs_head))
5768 for (bs = bs_head; bs != NULL; bs = bs->next)
5769 if (!bs->stop
5770 && bs->breakpoint_at
5771 && is_hardware_watchpoint (bs->breakpoint_at))
5772 {
5773 struct watchpoint *w = (struct watchpoint *) bs->breakpoint_at;
5774
5775 update_watchpoint (w, false /* don't reparse. */);
5776 need_remove_insert = 1;
5777 }
5778
5779 if (need_remove_insert)
5780 update_global_location_list (UGLL_MAY_INSERT);
5781 else if (removed_any)
5782 update_global_location_list (UGLL_DONT_INSERT);
5783
5784 return bs_head;
5785 }
5786
5787 /* See breakpoint.h. */
5788
5789 bpstat *
5790 bpstat_stop_status_nowatch (const address_space *aspace, CORE_ADDR bp_addr,
5791 thread_info *thread, const target_waitstatus &ws)
5792 {
5793 gdb_assert (!target_stopped_by_watchpoint ());
5794
5795 /* Clear all watchpoints' 'watchpoint_triggered' value from a
5796 previous stop to avoid confusing bpstat_stop_status. */
5797 watchpoints_triggered (ws);
5798
5799 return bpstat_stop_status (aspace, bp_addr, thread, ws);
5800 }
5801
5802 static void
5803 handle_jit_event (CORE_ADDR address)
5804 {
5805 struct gdbarch *gdbarch;
5806
5807 infrun_debug_printf ("handling bp_jit_event");
5808
5809 /* Switch terminal for any messages produced by
5810 breakpoint_re_set. */
5811 target_terminal::ours_for_output ();
5812
5813 gdbarch = get_frame_arch (get_current_frame ());
5814 /* This event is caused by a breakpoint set in `jit_breakpoint_re_set`,
5815 thus it is expected that its objectfile can be found through
5816 minimal symbol lookup. If it doesn't work (and assert fails), it
5817 most likely means that `jit_breakpoint_re_set` was changes and this
5818 function needs to be updated too. */
5819 bound_minimal_symbol jit_bp_sym = lookup_minimal_symbol_by_pc (address);
5820 gdb_assert (jit_bp_sym.objfile != nullptr);
5821 objfile *objfile = jit_bp_sym.objfile;
5822 if (objfile->separate_debug_objfile_backlink)
5823 objfile = objfile->separate_debug_objfile_backlink;
5824 jit_event_handler (gdbarch, objfile);
5825
5826 target_terminal::inferior ();
5827 }
5828
5829 /* Prepare WHAT final decision for infrun. */
5830
5831 /* Decide what infrun needs to do with this bpstat. */
5832
5833 struct bpstat_what
5834 bpstat_what (bpstat *bs_head)
5835 {
5836 struct bpstat_what retval;
5837 bpstat *bs;
5838
5839 retval.main_action = BPSTAT_WHAT_KEEP_CHECKING;
5840 retval.call_dummy = STOP_NONE;
5841 retval.is_longjmp = false;
5842
5843 for (bs = bs_head; bs != NULL; bs = bs->next)
5844 {
5845 /* Extract this BS's action. After processing each BS, we check
5846 if its action overrides all we've seem so far. */
5847 enum bpstat_what_main_action this_action = BPSTAT_WHAT_KEEP_CHECKING;
5848 enum bptype bptype;
5849
5850 if (bs->breakpoint_at == NULL)
5851 {
5852 /* I suspect this can happen if it was a momentary
5853 breakpoint which has since been deleted. */
5854 bptype = bp_none;
5855 }
5856 else
5857 bptype = bs->breakpoint_at->type;
5858
5859 switch (bptype)
5860 {
5861 case bp_none:
5862 break;
5863 case bp_breakpoint:
5864 case bp_hardware_breakpoint:
5865 case bp_single_step:
5866 case bp_until:
5867 case bp_finish:
5868 case bp_shlib_event:
5869 if (bs->stop)
5870 {
5871 if (bs->print)
5872 this_action = BPSTAT_WHAT_STOP_NOISY;
5873 else
5874 this_action = BPSTAT_WHAT_STOP_SILENT;
5875 }
5876 else
5877 this_action = BPSTAT_WHAT_SINGLE;
5878 break;
5879 case bp_watchpoint:
5880 case bp_hardware_watchpoint:
5881 case bp_read_watchpoint:
5882 case bp_access_watchpoint:
5883 if (bs->stop)
5884 {
5885 if (bs->print)
5886 this_action = BPSTAT_WHAT_STOP_NOISY;
5887 else
5888 this_action = BPSTAT_WHAT_STOP_SILENT;
5889 }
5890 else
5891 {
5892 /* There was a watchpoint, but we're not stopping.
5893 This requires no further action. */
5894 }
5895 break;
5896 case bp_longjmp:
5897 case bp_longjmp_call_dummy:
5898 case bp_exception:
5899 if (bs->stop)
5900 {
5901 this_action = BPSTAT_WHAT_SET_LONGJMP_RESUME;
5902 retval.is_longjmp = bptype != bp_exception;
5903 }
5904 else
5905 this_action = BPSTAT_WHAT_SINGLE;
5906 break;
5907 case bp_longjmp_resume:
5908 case bp_exception_resume:
5909 if (bs->stop)
5910 {
5911 this_action = BPSTAT_WHAT_CLEAR_LONGJMP_RESUME;
5912 retval.is_longjmp = bptype == bp_longjmp_resume;
5913 }
5914 else
5915 this_action = BPSTAT_WHAT_SINGLE;
5916 break;
5917 case bp_step_resume:
5918 if (bs->stop)
5919 this_action = BPSTAT_WHAT_STEP_RESUME;
5920 else
5921 {
5922 /* It is for the wrong frame. */
5923 this_action = BPSTAT_WHAT_SINGLE;
5924 }
5925 break;
5926 case bp_hp_step_resume:
5927 if (bs->stop)
5928 this_action = BPSTAT_WHAT_HP_STEP_RESUME;
5929 else
5930 {
5931 /* It is for the wrong frame. */
5932 this_action = BPSTAT_WHAT_SINGLE;
5933 }
5934 break;
5935 case bp_watchpoint_scope:
5936 case bp_thread_event:
5937 case bp_overlay_event:
5938 case bp_longjmp_master:
5939 case bp_std_terminate_master:
5940 case bp_exception_master:
5941 this_action = BPSTAT_WHAT_SINGLE;
5942 break;
5943 case bp_catchpoint:
5944 if (bs->stop)
5945 {
5946 if (bs->print)
5947 this_action = BPSTAT_WHAT_STOP_NOISY;
5948 else
5949 this_action = BPSTAT_WHAT_STOP_SILENT;
5950 }
5951 else
5952 {
5953 /* Some catchpoints are implemented with breakpoints.
5954 For those, we need to step over the breakpoint. */
5955 if (bs->bp_location_at->loc_type == bp_loc_software_breakpoint
5956 || bs->bp_location_at->loc_type == bp_loc_hardware_breakpoint)
5957 this_action = BPSTAT_WHAT_SINGLE;
5958 }
5959 break;
5960 case bp_jit_event:
5961 this_action = BPSTAT_WHAT_SINGLE;
5962 break;
5963 case bp_call_dummy:
5964 /* Make sure the action is stop (silent or noisy),
5965 so infrun.c pops the dummy frame. */
5966 retval.call_dummy = STOP_STACK_DUMMY;
5967 this_action = BPSTAT_WHAT_STOP_SILENT;
5968 break;
5969 case bp_std_terminate:
5970 /* Make sure the action is stop (silent or noisy),
5971 so infrun.c pops the dummy frame. */
5972 retval.call_dummy = STOP_STD_TERMINATE;
5973 this_action = BPSTAT_WHAT_STOP_SILENT;
5974 break;
5975 case bp_tracepoint:
5976 case bp_fast_tracepoint:
5977 case bp_static_tracepoint:
5978 case bp_static_marker_tracepoint:
5979 /* Tracepoint hits should not be reported back to GDB, and
5980 if one got through somehow, it should have been filtered
5981 out already. */
5982 internal_error (_("bpstat_what: tracepoint encountered"));
5983 break;
5984 case bp_gnu_ifunc_resolver:
5985 /* Step over it (and insert bp_gnu_ifunc_resolver_return). */
5986 this_action = BPSTAT_WHAT_SINGLE;
5987 break;
5988 case bp_gnu_ifunc_resolver_return:
5989 /* The breakpoint will be removed, execution will restart from the
5990 PC of the former breakpoint. */
5991 this_action = BPSTAT_WHAT_KEEP_CHECKING;
5992 break;
5993
5994 case bp_dprintf:
5995 if (bs->stop)
5996 this_action = BPSTAT_WHAT_STOP_SILENT;
5997 else
5998 this_action = BPSTAT_WHAT_SINGLE;
5999 break;
6000
6001 default:
6002 internal_error (_("bpstat_what: unhandled bptype %d"), (int) bptype);
6003 }
6004
6005 retval.main_action = std::max (retval.main_action, this_action);
6006 }
6007
6008 return retval;
6009 }
6010
6011 void
6012 bpstat_run_callbacks (bpstat *bs_head)
6013 {
6014 bpstat *bs;
6015
6016 for (bs = bs_head; bs != NULL; bs = bs->next)
6017 {
6018 struct breakpoint *b = bs->breakpoint_at;
6019
6020 if (b == NULL)
6021 continue;
6022 switch (b->type)
6023 {
6024 case bp_jit_event:
6025 handle_jit_event (bs->bp_location_at->address);
6026 break;
6027 case bp_gnu_ifunc_resolver:
6028 gnu_ifunc_resolver_stop ((code_breakpoint *) b);
6029 break;
6030 case bp_gnu_ifunc_resolver_return:
6031 gnu_ifunc_resolver_return_stop ((code_breakpoint *) b);
6032 break;
6033 }
6034 }
6035 }
6036
6037 /* See breakpoint.h. */
6038
6039 bool
6040 bpstat_should_step ()
6041 {
6042 for (breakpoint *b : all_breakpoints ())
6043 if (breakpoint_enabled (b) && b->type == bp_watchpoint && b->loc != NULL)
6044 return true;
6045
6046 return false;
6047 }
6048
6049 /* See breakpoint.h. */
6050
6051 bool
6052 bpstat_causes_stop (bpstat *bs)
6053 {
6054 for (; bs != NULL; bs = bs->next)
6055 if (bs->stop)
6056 return true;
6057
6058 return false;
6059 }
6060
6061 \f
6062
6063 /* Compute a number of spaces suitable to indent the next line
6064 so it starts at the position corresponding to the table column
6065 named COL_NAME in the currently active table of UIOUT. */
6066
6067 static int
6068 wrap_indent_at_field (struct ui_out *uiout, const char *col_name)
6069 {
6070 int i, total_width, width, align;
6071 const char *text;
6072
6073 total_width = 0;
6074 for (i = 1; uiout->query_table_field (i, &width, &align, &text); i++)
6075 {
6076 if (strcmp (text, col_name) == 0)
6077 return total_width;
6078
6079 total_width += width + 1;
6080 }
6081
6082 return 0;
6083 }
6084
6085 /* Determine if the locations of this breakpoint will have their conditions
6086 evaluated by the target, host or a mix of both. Returns the following:
6087
6088 "host": Host evals condition.
6089 "host or target": Host or Target evals condition.
6090 "target": Target evals condition.
6091 */
6092
6093 static const char *
6094 bp_condition_evaluator (const breakpoint *b)
6095 {
6096 char host_evals = 0;
6097 char target_evals = 0;
6098
6099 if (!b)
6100 return NULL;
6101
6102 if (!is_breakpoint (b))
6103 return NULL;
6104
6105 if (gdb_evaluates_breakpoint_condition_p ()
6106 || !target_supports_evaluation_of_breakpoint_conditions ())
6107 return condition_evaluation_host;
6108
6109 for (bp_location *bl : b->locations ())
6110 {
6111 if (bl->cond_bytecode)
6112 target_evals++;
6113 else
6114 host_evals++;
6115 }
6116
6117 if (host_evals && target_evals)
6118 return condition_evaluation_both;
6119 else if (target_evals)
6120 return condition_evaluation_target;
6121 else
6122 return condition_evaluation_host;
6123 }
6124
6125 /* Determine the breakpoint location's condition evaluator. This is
6126 similar to bp_condition_evaluator, but for locations. */
6127
6128 static const char *
6129 bp_location_condition_evaluator (const struct bp_location *bl)
6130 {
6131 if (bl && !is_breakpoint (bl->owner))
6132 return NULL;
6133
6134 if (gdb_evaluates_breakpoint_condition_p ()
6135 || !target_supports_evaluation_of_breakpoint_conditions ())
6136 return condition_evaluation_host;
6137
6138 if (bl && bl->cond_bytecode)
6139 return condition_evaluation_target;
6140 else
6141 return condition_evaluation_host;
6142 }
6143
6144 /* Print the LOC location out of the list of B->LOC locations. */
6145
6146 static void
6147 print_breakpoint_location (const breakpoint *b,
6148 struct bp_location *loc)
6149 {
6150 struct ui_out *uiout = current_uiout;
6151
6152 scoped_restore_current_program_space restore_pspace;
6153
6154 if (loc != NULL && loc->shlib_disabled)
6155 loc = NULL;
6156
6157 if (loc != NULL)
6158 set_current_program_space (loc->pspace);
6159
6160 if (b->display_canonical)
6161 uiout->field_string ("what", b->locspec->to_string ());
6162 else if (loc && loc->symtab)
6163 {
6164 const struct symbol *sym = loc->symbol;
6165
6166 if (sym)
6167 {
6168 uiout->text ("in ");
6169 uiout->field_string ("func", sym->print_name (),
6170 function_name_style.style ());
6171 uiout->text (" ");
6172 uiout->wrap_hint (wrap_indent_at_field (uiout, "what"));
6173 uiout->text ("at ");
6174 }
6175 uiout->field_string ("file",
6176 symtab_to_filename_for_display (loc->symtab),
6177 file_name_style.style ());
6178 uiout->text (":");
6179
6180 if (uiout->is_mi_like_p ())
6181 uiout->field_string ("fullname", symtab_to_fullname (loc->symtab));
6182
6183 uiout->field_signed ("line", loc->line_number);
6184 }
6185 else if (loc)
6186 {
6187 string_file stb;
6188
6189 print_address_symbolic (loc->gdbarch, loc->address, &stb,
6190 demangle, "");
6191 uiout->field_stream ("at", stb);
6192 }
6193 else
6194 {
6195 uiout->field_string ("pending", b->locspec->to_string ());
6196 /* If extra_string is available, it could be holding a condition
6197 or dprintf arguments. In either case, make sure it is printed,
6198 too, but only for non-MI streams. */
6199 if (!uiout->is_mi_like_p () && b->extra_string != NULL)
6200 {
6201 if (b->type == bp_dprintf)
6202 uiout->text (",");
6203 else
6204 uiout->text (" ");
6205 uiout->text (b->extra_string.get ());
6206 }
6207 }
6208
6209 if (loc && is_breakpoint (b)
6210 && breakpoint_condition_evaluation_mode () == condition_evaluation_target
6211 && bp_condition_evaluator (b) == condition_evaluation_both)
6212 {
6213 uiout->text (" (");
6214 uiout->field_string ("evaluated-by",
6215 bp_location_condition_evaluator (loc));
6216 uiout->text (")");
6217 }
6218 }
6219
6220 static const char *
6221 bptype_string (enum bptype type)
6222 {
6223 struct ep_type_description
6224 {
6225 enum bptype type;
6226 const char *description;
6227 };
6228 static struct ep_type_description bptypes[] =
6229 {
6230 {bp_none, "?deleted?"},
6231 {bp_breakpoint, "breakpoint"},
6232 {bp_hardware_breakpoint, "hw breakpoint"},
6233 {bp_single_step, "sw single-step"},
6234 {bp_until, "until"},
6235 {bp_finish, "finish"},
6236 {bp_watchpoint, "watchpoint"},
6237 {bp_hardware_watchpoint, "hw watchpoint"},
6238 {bp_read_watchpoint, "read watchpoint"},
6239 {bp_access_watchpoint, "acc watchpoint"},
6240 {bp_longjmp, "longjmp"},
6241 {bp_longjmp_resume, "longjmp resume"},
6242 {bp_longjmp_call_dummy, "longjmp for call dummy"},
6243 {bp_exception, "exception"},
6244 {bp_exception_resume, "exception resume"},
6245 {bp_step_resume, "step resume"},
6246 {bp_hp_step_resume, "high-priority step resume"},
6247 {bp_watchpoint_scope, "watchpoint scope"},
6248 {bp_call_dummy, "call dummy"},
6249 {bp_std_terminate, "std::terminate"},
6250 {bp_shlib_event, "shlib events"},
6251 {bp_thread_event, "thread events"},
6252 {bp_overlay_event, "overlay events"},
6253 {bp_longjmp_master, "longjmp master"},
6254 {bp_std_terminate_master, "std::terminate master"},
6255 {bp_exception_master, "exception master"},
6256 {bp_catchpoint, "catchpoint"},
6257 {bp_tracepoint, "tracepoint"},
6258 {bp_fast_tracepoint, "fast tracepoint"},
6259 {bp_static_tracepoint, "static tracepoint"},
6260 {bp_static_marker_tracepoint, "static marker tracepoint"},
6261 {bp_dprintf, "dprintf"},
6262 {bp_jit_event, "jit events"},
6263 {bp_gnu_ifunc_resolver, "STT_GNU_IFUNC resolver"},
6264 {bp_gnu_ifunc_resolver_return, "STT_GNU_IFUNC resolver return"},
6265 };
6266
6267 if (((int) type >= (sizeof (bptypes) / sizeof (bptypes[0])))
6268 || ((int) type != bptypes[(int) type].type))
6269 internal_error (_("bptypes table does not describe type #%d."),
6270 (int) type);
6271
6272 return bptypes[(int) type].description;
6273 }
6274
6275 /* For MI, output a field named 'thread-groups' with a list as the value.
6276 For CLI, prefix the list with the string 'inf'. */
6277
6278 static void
6279 output_thread_groups (struct ui_out *uiout,
6280 const char *field_name,
6281 const std::vector<int> &inf_nums,
6282 int mi_only)
6283 {
6284 int is_mi = uiout->is_mi_like_p ();
6285
6286 /* For backward compatibility, don't display inferiors in CLI unless
6287 there are several. Always display them for MI. */
6288 if (!is_mi && mi_only)
6289 return;
6290
6291 ui_out_emit_list list_emitter (uiout, field_name);
6292
6293 for (size_t i = 0; i < inf_nums.size (); i++)
6294 {
6295 if (is_mi)
6296 {
6297 char mi_group[10];
6298
6299 xsnprintf (mi_group, sizeof (mi_group), "i%d", inf_nums[i]);
6300 uiout->field_string (NULL, mi_group);
6301 }
6302 else
6303 {
6304 if (i == 0)
6305 uiout->text (" inf ");
6306 else
6307 uiout->text (", ");
6308
6309 uiout->text (plongest (inf_nums[i]));
6310 }
6311 }
6312 }
6313
6314 /* See breakpoint.h. */
6315
6316 bool fix_breakpoint_script_output_globally = false;
6317
6318 /* Print B to gdb_stdout. If RAW_LOC, print raw breakpoint locations
6319 instead of going via breakpoint_ops::print_one. This makes "maint
6320 info breakpoints" show the software breakpoint locations of
6321 catchpoints, which are considered internal implementation
6322 detail. Returns true if RAW_LOC is false and if the breakpoint's
6323 print_one method did something; false otherwise. */
6324
6325 static bool
6326 print_one_breakpoint_location (struct breakpoint *b,
6327 struct bp_location *loc,
6328 int loc_number,
6329 struct bp_location **last_loc,
6330 int allflag, bool raw_loc)
6331 {
6332 struct command_line *l;
6333 static char bpenables[] = "nynny";
6334
6335 struct ui_out *uiout = current_uiout;
6336 bool header_of_multiple = false;
6337 bool part_of_multiple = (loc != NULL);
6338 struct value_print_options opts;
6339
6340 get_user_print_options (&opts);
6341
6342 gdb_assert (!loc || loc_number != 0);
6343 /* See comment in print_one_breakpoint concerning treatment of
6344 breakpoints with single disabled location. */
6345 if (loc == NULL
6346 && (b->loc != NULL
6347 && (b->loc->next != NULL
6348 || !b->loc->enabled || b->loc->disabled_by_cond)))
6349 header_of_multiple = true;
6350 if (loc == NULL)
6351 loc = b->loc;
6352
6353 annotate_record ();
6354
6355 /* 1 */
6356 annotate_field (0);
6357 if (part_of_multiple)
6358 uiout->field_fmt ("number", "%d.%d", b->number, loc_number);
6359 else
6360 uiout->field_signed ("number", b->number);
6361
6362 /* 2 */
6363 annotate_field (1);
6364 if (part_of_multiple)
6365 uiout->field_skip ("type");
6366 else
6367 uiout->field_string ("type", bptype_string (b->type));
6368
6369 /* 3 */
6370 annotate_field (2);
6371 if (part_of_multiple)
6372 uiout->field_skip ("disp");
6373 else
6374 uiout->field_string ("disp", bpdisp_text (b->disposition));
6375
6376 /* 4 */
6377 annotate_field (3);
6378 if (part_of_multiple)
6379 {
6380 /* For locations that are disabled because of an invalid
6381 condition, display "N*" on the CLI, where "*" refers to a
6382 footnote below the table. For MI, simply display a "N"
6383 without a footnote. On the CLI, for enabled locations whose
6384 breakpoint is disabled, display "y-". */
6385 auto get_enable_state = [uiout, loc] () -> const char *
6386 {
6387 if (uiout->is_mi_like_p ())
6388 {
6389 if (loc->disabled_by_cond)
6390 return "N";
6391 else if (!loc->enabled)
6392 return "n";
6393 else
6394 return "y";
6395 }
6396 else
6397 {
6398 if (loc->disabled_by_cond)
6399 return "N*";
6400 else if (!loc->enabled)
6401 return "n";
6402 else if (!breakpoint_enabled (loc->owner))
6403 return "y-";
6404 else
6405 return "y";
6406 }
6407 };
6408 uiout->field_string ("enabled", get_enable_state ());
6409 }
6410 else
6411 uiout->field_fmt ("enabled", "%c", bpenables[(int) b->enable_state]);
6412
6413 /* 5 and 6 */
6414 bool result = false;
6415 if (!raw_loc && b->print_one (last_loc))
6416 result = true;
6417 else
6418 {
6419 if (is_watchpoint (b))
6420 {
6421 struct watchpoint *w = (struct watchpoint *) b;
6422
6423 /* Field 4, the address, is omitted (which makes the columns
6424 not line up too nicely with the headers, but the effect
6425 is relatively readable). */
6426 if (opts.addressprint)
6427 uiout->field_skip ("addr");
6428 annotate_field (5);
6429 uiout->field_string ("what", w->exp_string.get ());
6430 }
6431 else if (!is_catchpoint (b) || is_exception_catchpoint (b)
6432 || is_ada_exception_catchpoint (b))
6433 {
6434 if (opts.addressprint)
6435 {
6436 annotate_field (4);
6437 if (header_of_multiple)
6438 uiout->field_string ("addr", "<MULTIPLE>",
6439 metadata_style.style ());
6440 else if (b->loc == NULL || loc->shlib_disabled)
6441 uiout->field_string ("addr", "<PENDING>",
6442 metadata_style.style ());
6443 else
6444 uiout->field_core_addr ("addr",
6445 loc->gdbarch, loc->address);
6446 }
6447 annotate_field (5);
6448 if (!header_of_multiple)
6449 print_breakpoint_location (b, loc);
6450 if (b->loc)
6451 *last_loc = b->loc;
6452 }
6453 }
6454
6455 if (loc != NULL && !header_of_multiple)
6456 {
6457 std::vector<int> inf_nums;
6458 int mi_only = 1;
6459
6460 for (inferior *inf : all_inferiors ())
6461 {
6462 if (inf->pspace == loc->pspace)
6463 inf_nums.push_back (inf->num);
6464 }
6465
6466 /* For backward compatibility, don't display inferiors in CLI unless
6467 there are several. Always display for MI. */
6468 if (allflag
6469 || (!gdbarch_has_global_breakpoints (target_gdbarch ())
6470 && (program_spaces.size () > 1
6471 || number_of_inferiors () > 1)
6472 /* LOC is for existing B, it cannot be in
6473 moribund_locations and thus having NULL OWNER. */
6474 && loc->owner->type != bp_catchpoint))
6475 mi_only = 0;
6476 output_thread_groups (uiout, "thread-groups", inf_nums, mi_only);
6477 }
6478
6479 /* In the MI output, each location of a thread or task specific
6480 breakpoint includes the relevant thread or task ID. This is done for
6481 backwards compatibility reasons.
6482
6483 For the CLI output, the thread/task information is printed on a
6484 separate line, see the 'stop only in thread' and 'stop only in task'
6485 output below. */
6486 if (!header_of_multiple && uiout->is_mi_like_p ())
6487 {
6488 if (b->thread != -1)
6489 uiout->field_signed ("thread", b->thread);
6490 else if (b->task != -1)
6491 uiout->field_signed ("task", b->task);
6492 }
6493
6494 uiout->text ("\n");
6495
6496 if (!part_of_multiple)
6497 b->print_one_detail (uiout);
6498
6499 if (part_of_multiple && frame_id_p (b->frame_id))
6500 {
6501 annotate_field (6);
6502 uiout->text ("\tstop only in stack frame at ");
6503 /* FIXME: cagney/2002-12-01: Shouldn't be poking around inside
6504 the frame ID. */
6505 uiout->field_core_addr ("frame",
6506 b->gdbarch, b->frame_id.stack_addr);
6507 uiout->text ("\n");
6508 }
6509
6510 if (!part_of_multiple && b->cond_string)
6511 {
6512 annotate_field (7);
6513 if (is_tracepoint (b))
6514 uiout->text ("\ttrace only if ");
6515 else
6516 uiout->text ("\tstop only if ");
6517 uiout->field_string ("cond", b->cond_string.get ());
6518
6519 /* Print whether the target is doing the breakpoint's condition
6520 evaluation. If GDB is doing the evaluation, don't print anything. */
6521 if (is_breakpoint (b)
6522 && breakpoint_condition_evaluation_mode ()
6523 == condition_evaluation_target)
6524 {
6525 uiout->message (" (%pF evals)",
6526 string_field ("evaluated-by",
6527 bp_condition_evaluator (b)));
6528 }
6529 uiout->text ("\n");
6530 }
6531
6532 if (!part_of_multiple && b->thread != -1)
6533 {
6534 /* FIXME should make an annotation for this. */
6535 uiout->text ("\tstop only in thread ");
6536 if (uiout->is_mi_like_p ())
6537 uiout->field_signed ("thread", b->thread);
6538 else
6539 {
6540 struct thread_info *thr = find_thread_global_id (b->thread);
6541
6542 uiout->field_string ("thread", print_thread_id (thr));
6543 }
6544 uiout->text ("\n");
6545 }
6546
6547 if (!part_of_multiple && b->task != -1)
6548 {
6549 uiout->text ("\tstop only in task ");
6550 uiout->field_signed ("task", b->task);
6551 uiout->text ("\n");
6552 }
6553
6554 if (!part_of_multiple)
6555 {
6556 if (b->hit_count)
6557 {
6558 /* FIXME should make an annotation for this. */
6559 if (is_catchpoint (b))
6560 uiout->text ("\tcatchpoint");
6561 else if (is_tracepoint (b))
6562 uiout->text ("\ttracepoint");
6563 else
6564 uiout->text ("\tbreakpoint");
6565 uiout->text (" already hit ");
6566 uiout->field_signed ("times", b->hit_count);
6567 if (b->hit_count == 1)
6568 uiout->text (" time\n");
6569 else
6570 uiout->text (" times\n");
6571 }
6572 else
6573 {
6574 /* Output the count also if it is zero, but only if this is mi. */
6575 if (uiout->is_mi_like_p ())
6576 uiout->field_signed ("times", b->hit_count);
6577 }
6578 }
6579
6580 if (!part_of_multiple && b->ignore_count)
6581 {
6582 annotate_field (8);
6583 uiout->message ("\tignore next %pF hits\n",
6584 signed_field ("ignore", b->ignore_count));
6585 }
6586
6587 /* Note that an enable count of 1 corresponds to "enable once"
6588 behavior, which is reported by the combination of enablement and
6589 disposition, so we don't need to mention it here. */
6590 if (!part_of_multiple && b->enable_count > 1)
6591 {
6592 annotate_field (8);
6593 uiout->text ("\tdisable after ");
6594 /* Tweak the wording to clarify that ignore and enable counts
6595 are distinct, and have additive effect. */
6596 if (b->ignore_count)
6597 uiout->text ("additional ");
6598 else
6599 uiout->text ("next ");
6600 uiout->field_signed ("enable", b->enable_count);
6601 uiout->text (" hits\n");
6602 }
6603
6604 if (!part_of_multiple && is_tracepoint (b))
6605 {
6606 struct tracepoint *tp = (struct tracepoint *) b;
6607
6608 if (tp->traceframe_usage)
6609 {
6610 uiout->text ("\ttrace buffer usage ");
6611 uiout->field_signed ("traceframe-usage", tp->traceframe_usage);
6612 uiout->text (" bytes\n");
6613 }
6614 }
6615
6616 l = b->commands ? b->commands.get () : NULL;
6617 if (!part_of_multiple && l)
6618 {
6619 annotate_field (9);
6620
6621 bool use_fixed_output =
6622 (uiout->test_flags (fix_breakpoint_script_output)
6623 || fix_breakpoint_script_output_globally);
6624
6625 gdb::optional<ui_out_emit_tuple> tuple_emitter;
6626 gdb::optional<ui_out_emit_list> list_emitter;
6627
6628 if (use_fixed_output)
6629 list_emitter.emplace (uiout, "script");
6630 else
6631 tuple_emitter.emplace (uiout, "script");
6632
6633 print_command_lines (uiout, l, 4);
6634 }
6635
6636 if (is_tracepoint (b))
6637 {
6638 struct tracepoint *t = (struct tracepoint *) b;
6639
6640 if (!part_of_multiple && t->pass_count)
6641 {
6642 annotate_field (10);
6643 uiout->text ("\tpass count ");
6644 uiout->field_signed ("pass", t->pass_count);
6645 uiout->text (" \n");
6646 }
6647
6648 /* Don't display it when tracepoint or tracepoint location is
6649 pending. */
6650 if (!header_of_multiple && loc != NULL && !loc->shlib_disabled)
6651 {
6652 annotate_field (11);
6653
6654 if (uiout->is_mi_like_p ())
6655 uiout->field_string ("installed",
6656 loc->inserted ? "y" : "n");
6657 else
6658 {
6659 if (loc->inserted)
6660 uiout->text ("\t");
6661 else
6662 uiout->text ("\tnot ");
6663 uiout->text ("installed on target\n");
6664 }
6665 }
6666 }
6667
6668 if (uiout->is_mi_like_p () && !part_of_multiple)
6669 {
6670 if (is_watchpoint (b))
6671 {
6672 struct watchpoint *w = (struct watchpoint *) b;
6673
6674 uiout->field_string ("original-location", w->exp_string.get ());
6675 }
6676 else if (b->locspec != nullptr)
6677 {
6678 const char *str = b->locspec->to_string ();
6679 if (str != nullptr)
6680 uiout->field_string ("original-location", str);
6681 }
6682 }
6683
6684 return result;
6685 }
6686
6687 /* See breakpoint.h. */
6688
6689 bool fix_multi_location_breakpoint_output_globally = false;
6690
6691 static void
6692 print_one_breakpoint (struct breakpoint *b,
6693 struct bp_location **last_loc,
6694 int allflag)
6695 {
6696 struct ui_out *uiout = current_uiout;
6697 bool use_fixed_output
6698 = (uiout->test_flags (fix_multi_location_breakpoint_output)
6699 || fix_multi_location_breakpoint_output_globally);
6700
6701 gdb::optional<ui_out_emit_tuple> bkpt_tuple_emitter (gdb::in_place, uiout, "bkpt");
6702 bool printed = print_one_breakpoint_location (b, NULL, 0, last_loc,
6703 allflag, false);
6704
6705 /* The mi2 broken format: the main breakpoint tuple ends here, the locations
6706 are outside. */
6707 if (!use_fixed_output)
6708 bkpt_tuple_emitter.reset ();
6709
6710 /* If this breakpoint has custom print function,
6711 it's already printed. Otherwise, print individual
6712 locations, if any. */
6713 if (!printed || allflag)
6714 {
6715 /* If breakpoint has a single location that is disabled, we
6716 print it as if it had several locations, since otherwise it's
6717 hard to represent "breakpoint enabled, location disabled"
6718 situation.
6719
6720 Note that while hardware watchpoints have several locations
6721 internally, that's not a property exposed to users.
6722
6723 Likewise, while catchpoints may be implemented with
6724 breakpoints (e.g., catch throw), that's not a property
6725 exposed to users. We do however display the internal
6726 breakpoint locations with "maint info breakpoints". */
6727 if (!is_hardware_watchpoint (b)
6728 && (!is_catchpoint (b) || is_exception_catchpoint (b)
6729 || is_ada_exception_catchpoint (b))
6730 && (allflag
6731 || (b->loc && (b->loc->next
6732 || !b->loc->enabled
6733 || b->loc->disabled_by_cond))))
6734 {
6735 gdb::optional<ui_out_emit_list> locations_list;
6736
6737 /* For MI version <= 2, keep the behavior where GDB outputs an invalid
6738 MI record. For later versions, place breakpoint locations in a
6739 list. */
6740 if (uiout->is_mi_like_p () && use_fixed_output)
6741 locations_list.emplace (uiout, "locations");
6742
6743 int n = 1;
6744 for (bp_location *loc : b->locations ())
6745 {
6746 ui_out_emit_tuple loc_tuple_emitter (uiout, NULL);
6747 print_one_breakpoint_location (b, loc, n, last_loc,
6748 allflag, allflag);
6749 n++;
6750 }
6751 }
6752 }
6753 }
6754
6755 static int
6756 breakpoint_address_bits (struct breakpoint *b)
6757 {
6758 int print_address_bits = 0;
6759
6760 for (bp_location *loc : b->locations ())
6761 {
6762 if (!bl_address_is_meaningful (loc))
6763 continue;
6764
6765 int addr_bit = gdbarch_addr_bit (loc->gdbarch);
6766 if (addr_bit > print_address_bits)
6767 print_address_bits = addr_bit;
6768 }
6769
6770 return print_address_bits;
6771 }
6772
6773 /* See breakpoint.h. */
6774
6775 void
6776 print_breakpoint (breakpoint *b)
6777 {
6778 struct bp_location *dummy_loc = NULL;
6779 print_one_breakpoint (b, &dummy_loc, 0);
6780 }
6781
6782 /* Return true if this breakpoint was set by the user, false if it is
6783 internal or momentary. */
6784
6785 int
6786 user_breakpoint_p (struct breakpoint *b)
6787 {
6788 return b->number > 0;
6789 }
6790
6791 /* See breakpoint.h. */
6792
6793 int
6794 pending_breakpoint_p (struct breakpoint *b)
6795 {
6796 return b->loc == NULL;
6797 }
6798
6799 /* Print information on breakpoints (including watchpoints and tracepoints).
6800
6801 If non-NULL, BP_NUM_LIST is a list of numbers and number ranges as
6802 understood by number_or_range_parser. Only breakpoints included in this
6803 list are then printed.
6804
6805 If SHOW_INTERNAL is true, print internal breakpoints.
6806
6807 If FILTER is non-NULL, call it on each breakpoint and only include the
6808 ones for which it returns true.
6809
6810 Return the total number of breakpoints listed. */
6811
6812 static int
6813 breakpoint_1 (const char *bp_num_list, bool show_internal,
6814 bool (*filter) (const struct breakpoint *))
6815 {
6816 struct bp_location *last_loc = NULL;
6817 int nr_printable_breakpoints;
6818 struct value_print_options opts;
6819 int print_address_bits = 0;
6820 int print_type_col_width = 14;
6821 struct ui_out *uiout = current_uiout;
6822 bool has_disabled_by_cond_location = false;
6823
6824 get_user_print_options (&opts);
6825
6826 /* Compute the number of rows in the table, as well as the size
6827 required for address fields. */
6828 nr_printable_breakpoints = 0;
6829 for (breakpoint *b : all_breakpoints ())
6830 {
6831 /* If we have a filter, only list the breakpoints it accepts. */
6832 if (filter && !filter (b))
6833 continue;
6834
6835 /* If we have a BP_NUM_LIST string, it is a list of breakpoints to
6836 accept. Skip the others. */
6837 if (bp_num_list != NULL && *bp_num_list != '\0')
6838 {
6839 if (show_internal && parse_and_eval_long (bp_num_list) != b->number)
6840 continue;
6841 if (!show_internal && !number_is_in_list (bp_num_list, b->number))
6842 continue;
6843 }
6844
6845 if (show_internal || user_breakpoint_p (b))
6846 {
6847 int addr_bit, type_len;
6848
6849 addr_bit = breakpoint_address_bits (b);
6850 if (addr_bit > print_address_bits)
6851 print_address_bits = addr_bit;
6852
6853 type_len = strlen (bptype_string (b->type));
6854 if (type_len > print_type_col_width)
6855 print_type_col_width = type_len;
6856
6857 nr_printable_breakpoints++;
6858 }
6859 }
6860
6861 {
6862 ui_out_emit_table table_emitter (uiout,
6863 opts.addressprint ? 6 : 5,
6864 nr_printable_breakpoints,
6865 "BreakpointTable");
6866
6867 if (nr_printable_breakpoints > 0)
6868 annotate_breakpoints_headers ();
6869 if (nr_printable_breakpoints > 0)
6870 annotate_field (0);
6871 uiout->table_header (7, ui_left, "number", "Num"); /* 1 */
6872 if (nr_printable_breakpoints > 0)
6873 annotate_field (1);
6874 uiout->table_header (print_type_col_width, ui_left, "type", "Type"); /* 2 */
6875 if (nr_printable_breakpoints > 0)
6876 annotate_field (2);
6877 uiout->table_header (4, ui_left, "disp", "Disp"); /* 3 */
6878 if (nr_printable_breakpoints > 0)
6879 annotate_field (3);
6880 uiout->table_header (3, ui_left, "enabled", "Enb"); /* 4 */
6881 if (opts.addressprint)
6882 {
6883 if (nr_printable_breakpoints > 0)
6884 annotate_field (4);
6885 if (print_address_bits <= 32)
6886 uiout->table_header (10, ui_left, "addr", "Address"); /* 5 */
6887 else
6888 uiout->table_header (18, ui_left, "addr", "Address"); /* 5 */
6889 }
6890 if (nr_printable_breakpoints > 0)
6891 annotate_field (5);
6892 uiout->table_header (40, ui_noalign, "what", "What"); /* 6 */
6893 uiout->table_body ();
6894 if (nr_printable_breakpoints > 0)
6895 annotate_breakpoints_table ();
6896
6897 for (breakpoint *b : all_breakpoints ())
6898 {
6899 QUIT;
6900 /* If we have a filter, only list the breakpoints it accepts. */
6901 if (filter && !filter (b))
6902 continue;
6903
6904 /* If we have a BP_NUM_LIST string, it is a list of breakpoints to
6905 accept. Skip the others. */
6906
6907 if (bp_num_list != NULL && *bp_num_list != '\0')
6908 {
6909 if (show_internal) /* maintenance info breakpoint */
6910 {
6911 if (parse_and_eval_long (bp_num_list) != b->number)
6912 continue;
6913 }
6914 else /* all others */
6915 {
6916 if (!number_is_in_list (bp_num_list, b->number))
6917 continue;
6918 }
6919 }
6920 /* We only print out user settable breakpoints unless the
6921 show_internal is set. */
6922 if (show_internal || user_breakpoint_p (b))
6923 {
6924 print_one_breakpoint (b, &last_loc, show_internal);
6925 for (bp_location *loc : b->locations ())
6926 if (loc->disabled_by_cond)
6927 has_disabled_by_cond_location = true;
6928 }
6929 }
6930 }
6931
6932 if (nr_printable_breakpoints == 0)
6933 {
6934 /* If there's a filter, let the caller decide how to report
6935 empty list. */
6936 if (!filter)
6937 {
6938 if (bp_num_list == NULL || *bp_num_list == '\0')
6939 uiout->message ("No breakpoints or watchpoints.\n");
6940 else
6941 uiout->message ("No breakpoint or watchpoint matching '%s'.\n",
6942 bp_num_list);
6943 }
6944 }
6945 else
6946 {
6947 if (last_loc && !server_command)
6948 set_next_address (last_loc->gdbarch, last_loc->address);
6949
6950 if (has_disabled_by_cond_location && !uiout->is_mi_like_p ())
6951 uiout->message (_("(*): Breakpoint condition is invalid at this "
6952 "location.\n"));
6953 }
6954
6955 /* FIXME? Should this be moved up so that it is only called when
6956 there have been breakpoints? */
6957 annotate_breakpoints_table_end ();
6958
6959 return nr_printable_breakpoints;
6960 }
6961
6962 /* Display the value of default-collect in a way that is generally
6963 compatible with the breakpoint list. */
6964
6965 static void
6966 default_collect_info (void)
6967 {
6968 struct ui_out *uiout = current_uiout;
6969
6970 /* If it has no value (which is frequently the case), say nothing; a
6971 message like "No default-collect." gets in user's face when it's
6972 not wanted. */
6973 if (default_collect.empty ())
6974 return;
6975
6976 /* The following phrase lines up nicely with per-tracepoint collect
6977 actions. */
6978 uiout->text ("default collect ");
6979 uiout->field_string ("default-collect", default_collect);
6980 uiout->text (" \n");
6981 }
6982
6983 static void
6984 info_breakpoints_command (const char *args, int from_tty)
6985 {
6986 breakpoint_1 (args, false, NULL);
6987
6988 default_collect_info ();
6989 }
6990
6991 static void
6992 info_watchpoints_command (const char *args, int from_tty)
6993 {
6994 int num_printed = breakpoint_1 (args, false, is_watchpoint);
6995 struct ui_out *uiout = current_uiout;
6996
6997 if (num_printed == 0)
6998 {
6999 if (args == NULL || *args == '\0')
7000 uiout->message ("No watchpoints.\n");
7001 else
7002 uiout->message ("No watchpoint matching '%s'.\n", args);
7003 }
7004 }
7005
7006 static void
7007 maintenance_info_breakpoints (const char *args, int from_tty)
7008 {
7009 breakpoint_1 (args, true, NULL);
7010
7011 default_collect_info ();
7012 }
7013
7014 static bool
7015 breakpoint_has_pc (struct breakpoint *b,
7016 struct program_space *pspace,
7017 CORE_ADDR pc, struct obj_section *section)
7018 {
7019 for (bp_location *bl : b->locations ())
7020 {
7021 if (bl->pspace == pspace
7022 && bl->address == pc
7023 && (!overlay_debugging || bl->section == section))
7024 return true;
7025 }
7026 return false;
7027 }
7028
7029 /* See breakpoint.h. */
7030
7031 void
7032 describe_other_breakpoints (struct gdbarch *gdbarch,
7033 struct program_space *pspace, CORE_ADDR pc,
7034 struct obj_section *section, int thread)
7035 {
7036 int others = 0;
7037
7038 for (breakpoint *b : all_breakpoints ())
7039 others += (user_breakpoint_p (b)
7040 && breakpoint_has_pc (b, pspace, pc, section));
7041
7042 if (others > 0)
7043 {
7044 if (others == 1)
7045 gdb_printf (_("Note: breakpoint "));
7046 else /* if (others == ???) */
7047 gdb_printf (_("Note: breakpoints "));
7048 for (breakpoint *b : all_breakpoints ())
7049 if (user_breakpoint_p (b) && breakpoint_has_pc (b, pspace, pc, section))
7050 {
7051 others--;
7052 gdb_printf ("%d", b->number);
7053 if (b->thread == -1 && thread != -1)
7054 gdb_printf (" (all threads)");
7055 else if (b->thread != -1)
7056 {
7057 struct thread_info *thr = find_thread_global_id (b->thread);
7058 gdb_printf (" (thread %s)", print_thread_id (thr));
7059 }
7060 else if (b->task != -1)
7061 gdb_printf (" (task %d)", b->task);
7062 gdb_printf ("%s%s ",
7063 ((b->enable_state == bp_disabled
7064 || b->enable_state == bp_call_disabled)
7065 ? " (disabled)"
7066 : ""),
7067 (others > 1) ? ","
7068 : ((others == 1) ? " and" : ""));
7069 }
7070 current_uiout->message (_("also set at pc %ps.\n"),
7071 styled_string (address_style.style (),
7072 paddress (gdbarch, pc)));
7073 }
7074 }
7075 \f
7076
7077 /* Return true iff it is meaningful to use the address member of LOC.
7078 For some breakpoint types, the locations' address members are
7079 irrelevant and it makes no sense to attempt to compare them to
7080 other addresses (or use them for any other purpose either).
7081
7082 More specifically, software watchpoints and catchpoints that are
7083 not backed by breakpoints always have a zero valued location
7084 address and we don't want to mark breakpoints of any of these types
7085 to be a duplicate of an actual breakpoint location at address
7086 zero. */
7087
7088 static bool
7089 bl_address_is_meaningful (bp_location *loc)
7090 {
7091 return loc->loc_type != bp_loc_other;
7092 }
7093
7094 /* Assuming LOC1 and LOC2's owners are hardware watchpoints, returns
7095 true if LOC1 and LOC2 represent the same watchpoint location. */
7096
7097 static bool
7098 watchpoint_locations_match (const struct bp_location *loc1,
7099 const struct bp_location *loc2)
7100 {
7101 struct watchpoint *w1 = (struct watchpoint *) loc1->owner;
7102 struct watchpoint *w2 = (struct watchpoint *) loc2->owner;
7103
7104 /* Both of them must exist. */
7105 gdb_assert (w1 != NULL);
7106 gdb_assert (w2 != NULL);
7107
7108 /* If the target can evaluate the condition expression in hardware,
7109 then we we need to insert both watchpoints even if they are at
7110 the same place. Otherwise the watchpoint will only trigger when
7111 the condition of whichever watchpoint was inserted evaluates to
7112 true, not giving a chance for GDB to check the condition of the
7113 other watchpoint. */
7114 if ((w1->cond_exp
7115 && target_can_accel_watchpoint_condition (loc1->address,
7116 loc1->length,
7117 loc1->watchpoint_type,
7118 w1->cond_exp.get ()))
7119 || (w2->cond_exp
7120 && target_can_accel_watchpoint_condition (loc2->address,
7121 loc2->length,
7122 loc2->watchpoint_type,
7123 w2->cond_exp.get ())))
7124 return false;
7125
7126 /* Note that this checks the owner's type, not the location's. In
7127 case the target does not support read watchpoints, but does
7128 support access watchpoints, we'll have bp_read_watchpoint
7129 watchpoints with hw_access locations. Those should be considered
7130 duplicates of hw_read locations. The hw_read locations will
7131 become hw_access locations later. */
7132 return (loc1->owner->type == loc2->owner->type
7133 && loc1->pspace->aspace == loc2->pspace->aspace
7134 && loc1->address == loc2->address
7135 && loc1->length == loc2->length);
7136 }
7137
7138 /* See breakpoint.h. */
7139
7140 int
7141 breakpoint_address_match (const address_space *aspace1, CORE_ADDR addr1,
7142 const address_space *aspace2, CORE_ADDR addr2)
7143 {
7144 return ((gdbarch_has_global_breakpoints (target_gdbarch ())
7145 || aspace1 == aspace2)
7146 && addr1 == addr2);
7147 }
7148
7149 /* Returns true if {ASPACE2,ADDR2} falls within the range determined by
7150 {ASPACE1,ADDR1,LEN1}. In most targets, this can only be true if ASPACE1
7151 matches ASPACE2. On targets that have global breakpoints, the address
7152 space doesn't really matter. */
7153
7154 static bool
7155 breakpoint_address_match_range (const address_space *aspace1,
7156 CORE_ADDR addr1,
7157 int len1, const address_space *aspace2,
7158 CORE_ADDR addr2)
7159 {
7160 return ((gdbarch_has_global_breakpoints (target_gdbarch ())
7161 || aspace1 == aspace2)
7162 && addr2 >= addr1 && addr2 < addr1 + len1);
7163 }
7164
7165 /* Returns true if {ASPACE,ADDR} matches the breakpoint BL. BL may be
7166 a ranged breakpoint. In most targets, a match happens only if ASPACE
7167 matches the breakpoint's address space. On targets that have global
7168 breakpoints, the address space doesn't really matter. */
7169
7170 static bool
7171 breakpoint_location_address_match (struct bp_location *bl,
7172 const address_space *aspace,
7173 CORE_ADDR addr)
7174 {
7175 return (breakpoint_address_match (bl->pspace->aspace, bl->address,
7176 aspace, addr)
7177 || (bl->length
7178 && breakpoint_address_match_range (bl->pspace->aspace,
7179 bl->address, bl->length,
7180 aspace, addr)));
7181 }
7182
7183 /* Returns true if the [ADDR,ADDR+LEN) range in ASPACE overlaps
7184 breakpoint BL. BL may be a ranged breakpoint. In most targets, a
7185 match happens only if ASPACE matches the breakpoint's address
7186 space. On targets that have global breakpoints, the address space
7187 doesn't really matter. */
7188
7189 static bool
7190 breakpoint_location_address_range_overlap (struct bp_location *bl,
7191 const address_space *aspace,
7192 CORE_ADDR addr, int len)
7193 {
7194 if (gdbarch_has_global_breakpoints (target_gdbarch ())
7195 || bl->pspace->aspace == aspace)
7196 {
7197 int bl_len = bl->length != 0 ? bl->length : 1;
7198
7199 if (mem_ranges_overlap (addr, len, bl->address, bl_len))
7200 return 1;
7201 }
7202 return 0;
7203 }
7204
7205 /* If LOC1 and LOC2's owners are not tracepoints, returns false directly.
7206 Then, if LOC1 and LOC2 represent the same tracepoint location, returns
7207 true, otherwise returns false. */
7208
7209 static bool
7210 tracepoint_locations_match (const struct bp_location *loc1,
7211 const struct bp_location *loc2)
7212 {
7213 if (is_tracepoint (loc1->owner) && is_tracepoint (loc2->owner))
7214 /* Since tracepoint locations are never duplicated with others', tracepoint
7215 locations at the same address of different tracepoints are regarded as
7216 different locations. */
7217 return (loc1->address == loc2->address && loc1->owner == loc2->owner);
7218 else
7219 return false;
7220 }
7221
7222 /* Assuming LOC1 and LOC2's types' have meaningful target addresses
7223 (bl_address_is_meaningful), returns true if LOC1 and LOC2 represent
7224 the same location. If SW_HW_BPS_MATCH is true, then software
7225 breakpoint locations and hardware breakpoint locations match,
7226 otherwise they don't. */
7227
7228 static bool
7229 breakpoint_locations_match (const struct bp_location *loc1,
7230 const struct bp_location *loc2,
7231 bool sw_hw_bps_match)
7232 {
7233 int hw_point1, hw_point2;
7234
7235 /* Both of them must not be in moribund_locations. */
7236 gdb_assert (loc1->owner != NULL);
7237 gdb_assert (loc2->owner != NULL);
7238
7239 hw_point1 = is_hardware_watchpoint (loc1->owner);
7240 hw_point2 = is_hardware_watchpoint (loc2->owner);
7241
7242 if (hw_point1 != hw_point2)
7243 return false;
7244 else if (hw_point1)
7245 return watchpoint_locations_match (loc1, loc2);
7246 else if (is_tracepoint (loc1->owner) || is_tracepoint (loc2->owner))
7247 return tracepoint_locations_match (loc1, loc2);
7248 else
7249 /* We compare bp_location.length in order to cover ranged
7250 breakpoints. Keep this in sync with
7251 bp_location_is_less_than. */
7252 return (breakpoint_address_match (loc1->pspace->aspace, loc1->address,
7253 loc2->pspace->aspace, loc2->address)
7254 && (loc1->loc_type == loc2->loc_type || sw_hw_bps_match)
7255 && loc1->length == loc2->length);
7256 }
7257
7258 static void
7259 breakpoint_adjustment_warning (CORE_ADDR from_addr, CORE_ADDR to_addr,
7260 int bnum, bool have_bnum)
7261 {
7262 /* The longest string possibly returned by hex_string_custom
7263 is 50 chars. These must be at least that big for safety. */
7264 char astr1[64];
7265 char astr2[64];
7266
7267 strcpy (astr1, hex_string_custom ((unsigned long) from_addr, 8));
7268 strcpy (astr2, hex_string_custom ((unsigned long) to_addr, 8));
7269 if (have_bnum)
7270 warning (_("Breakpoint %d address previously adjusted from %s to %s."),
7271 bnum, astr1, astr2);
7272 else
7273 warning (_("Breakpoint address adjusted from %s to %s."), astr1, astr2);
7274 }
7275
7276 /* Adjust a breakpoint's address to account for architectural
7277 constraints on breakpoint placement. Return the adjusted address.
7278 Note: Very few targets require this kind of adjustment. For most
7279 targets, this function is simply the identity function. */
7280
7281 static CORE_ADDR
7282 adjust_breakpoint_address (struct gdbarch *gdbarch,
7283 CORE_ADDR bpaddr, enum bptype bptype,
7284 struct program_space *pspace)
7285 {
7286 gdb_assert (pspace != nullptr);
7287
7288 if (bptype == bp_watchpoint
7289 || bptype == bp_hardware_watchpoint
7290 || bptype == bp_read_watchpoint
7291 || bptype == bp_access_watchpoint
7292 || bptype == bp_catchpoint)
7293 {
7294 /* Watchpoints and the various bp_catch_* eventpoints should not
7295 have their addresses modified. */
7296 return bpaddr;
7297 }
7298 else if (bptype == bp_single_step)
7299 {
7300 /* Single-step breakpoints should not have their addresses
7301 modified. If there's any architectural constrain that
7302 applies to this address, then it should have already been
7303 taken into account when the breakpoint was created in the
7304 first place. If we didn't do this, stepping through e.g.,
7305 Thumb-2 IT blocks would break. */
7306 return bpaddr;
7307 }
7308 else
7309 {
7310 CORE_ADDR adjusted_bpaddr = bpaddr;
7311
7312 /* Some targets have architectural constraints on the placement
7313 of breakpoint instructions. Obtain the adjusted address. */
7314 if (gdbarch_adjust_breakpoint_address_p (gdbarch))
7315 {
7316 /* Targets that implement this adjustment function will likely
7317 inspect either the symbol table, target memory at BPADDR, or
7318 even state registers, so ensure a suitable thread (and its
7319 associated program space) are currently selected. */
7320 scoped_restore_current_pspace_and_thread restore_pspace_thread;
7321 switch_to_program_space_and_thread (pspace);
7322 adjusted_bpaddr
7323 = gdbarch_adjust_breakpoint_address (gdbarch, bpaddr);
7324 }
7325
7326 adjusted_bpaddr
7327 = gdbarch_remove_non_address_bits (gdbarch, adjusted_bpaddr);
7328
7329 /* An adjusted breakpoint address can significantly alter
7330 a user's expectations. Print a warning if an adjustment
7331 is required. */
7332 if (adjusted_bpaddr != bpaddr)
7333 breakpoint_adjustment_warning (bpaddr, adjusted_bpaddr, 0, false);
7334
7335 return adjusted_bpaddr;
7336 }
7337 }
7338
7339 static bp_loc_type
7340 bp_location_from_bp_type (bptype type)
7341 {
7342 switch (type)
7343 {
7344 case bp_breakpoint:
7345 case bp_single_step:
7346 case bp_until:
7347 case bp_finish:
7348 case bp_longjmp:
7349 case bp_longjmp_resume:
7350 case bp_longjmp_call_dummy:
7351 case bp_exception:
7352 case bp_exception_resume:
7353 case bp_step_resume:
7354 case bp_hp_step_resume:
7355 case bp_watchpoint_scope:
7356 case bp_call_dummy:
7357 case bp_std_terminate:
7358 case bp_shlib_event:
7359 case bp_thread_event:
7360 case bp_overlay_event:
7361 case bp_jit_event:
7362 case bp_longjmp_master:
7363 case bp_std_terminate_master:
7364 case bp_exception_master:
7365 case bp_gnu_ifunc_resolver:
7366 case bp_gnu_ifunc_resolver_return:
7367 case bp_dprintf:
7368 return bp_loc_software_breakpoint;
7369 case bp_hardware_breakpoint:
7370 return bp_loc_hardware_breakpoint;
7371 case bp_hardware_watchpoint:
7372 case bp_read_watchpoint:
7373 case bp_access_watchpoint:
7374 return bp_loc_hardware_watchpoint;
7375 case bp_watchpoint:
7376 return bp_loc_software_watchpoint;
7377 case bp_catchpoint:
7378 case bp_tracepoint:
7379 case bp_fast_tracepoint:
7380 case bp_static_tracepoint:
7381 case bp_static_marker_tracepoint:
7382 return bp_loc_other;
7383 default:
7384 internal_error (_("unknown breakpoint type"));
7385 }
7386 }
7387
7388 bp_location::bp_location (breakpoint *owner, bp_loc_type type)
7389 {
7390 this->owner = owner;
7391 this->cond_bytecode = NULL;
7392 this->shlib_disabled = 0;
7393 this->enabled = 1;
7394 this->disabled_by_cond = false;
7395
7396 this->loc_type = type;
7397
7398 if (this->loc_type == bp_loc_software_breakpoint
7399 || this->loc_type == bp_loc_hardware_breakpoint)
7400 mark_breakpoint_location_modified (this);
7401
7402 incref ();
7403 }
7404
7405 bp_location::bp_location (breakpoint *owner)
7406 : bp_location::bp_location (owner,
7407 bp_location_from_bp_type (owner->type))
7408 {
7409 }
7410
7411 /* Decrement reference count. If the reference count reaches 0,
7412 destroy the bp_location. Sets *BLP to NULL. */
7413
7414 static void
7415 decref_bp_location (struct bp_location **blp)
7416 {
7417 bp_location_ref_policy::decref (*blp);
7418 *blp = NULL;
7419 }
7420
7421 /* Add breakpoint B at the end of the global breakpoint chain. */
7422
7423 static breakpoint *
7424 add_to_breakpoint_chain (std::unique_ptr<breakpoint> &&b)
7425 {
7426 struct breakpoint *b1;
7427 struct breakpoint *result = b.get ();
7428
7429 /* Add this breakpoint to the end of the chain so that a list of
7430 breakpoints will come out in order of increasing numbers. */
7431
7432 b1 = breakpoint_chain;
7433 if (b1 == 0)
7434 breakpoint_chain = b.release ();
7435 else
7436 {
7437 while (b1->next)
7438 b1 = b1->next;
7439 b1->next = b.release ();
7440 }
7441
7442 return result;
7443 }
7444
7445 /* Initialize loc->function_name. */
7446
7447 static void
7448 set_breakpoint_location_function (struct bp_location *loc)
7449 {
7450 gdb_assert (loc->owner != NULL);
7451
7452 if (loc->owner->type == bp_breakpoint
7453 || loc->owner->type == bp_hardware_breakpoint
7454 || is_tracepoint (loc->owner))
7455 {
7456 const char *function_name;
7457
7458 if (loc->msymbol != NULL
7459 && (loc->msymbol->type () == mst_text_gnu_ifunc
7460 || loc->msymbol->type () == mst_data_gnu_ifunc))
7461 {
7462 struct breakpoint *b = loc->owner;
7463
7464 function_name = loc->msymbol->linkage_name ();
7465
7466 if (b->type == bp_breakpoint && b->loc == loc
7467 && loc->next == NULL && b->related_breakpoint == b)
7468 {
7469 /* Create only the whole new breakpoint of this type but do not
7470 mess more complicated breakpoints with multiple locations. */
7471 b->type = bp_gnu_ifunc_resolver;
7472 /* Remember the resolver's address for use by the return
7473 breakpoint. */
7474 loc->related_address = loc->address;
7475 }
7476 }
7477 else
7478 find_pc_partial_function (loc->address, &function_name, NULL, NULL);
7479
7480 if (function_name)
7481 loc->function_name = make_unique_xstrdup (function_name);
7482 }
7483 }
7484
7485 /* Attempt to determine architecture of location identified by SAL. */
7486 struct gdbarch *
7487 get_sal_arch (struct symtab_and_line sal)
7488 {
7489 if (sal.section)
7490 return sal.section->objfile->arch ();
7491 if (sal.symtab)
7492 return sal.symtab->compunit ()->objfile ()->arch ();
7493
7494 return NULL;
7495 }
7496
7497 /* Call this routine when stepping and nexting to enable a breakpoint
7498 if we do a longjmp() or 'throw' in TP. FRAME is the frame which
7499 initiated the operation. */
7500
7501 void
7502 set_longjmp_breakpoint (struct thread_info *tp, struct frame_id frame)
7503 {
7504 int thread = tp->global_num;
7505
7506 /* To avoid having to rescan all objfile symbols at every step,
7507 we maintain a list of continually-inserted but always disabled
7508 longjmp "master" breakpoints. Here, we simply create momentary
7509 clones of those and enable them for the requested thread. */
7510 for (breakpoint *b : all_breakpoints_safe ())
7511 if (b->pspace == current_program_space
7512 && (b->type == bp_longjmp_master
7513 || b->type == bp_exception_master))
7514 {
7515 enum bptype type = b->type == bp_longjmp_master ? bp_longjmp : bp_exception;
7516 /* longjmp_breakpoint_ops ensures INITIATING_FRAME is cleared again
7517 after their removal. */
7518 momentary_breakpoint_from_master (b, type, 1, thread);
7519 }
7520
7521 tp->initiating_frame = frame;
7522 }
7523
7524 /* Delete all longjmp breakpoints from THREAD. */
7525 void
7526 delete_longjmp_breakpoint (int thread)
7527 {
7528 for (breakpoint *b : all_breakpoints_safe ())
7529 if (b->type == bp_longjmp || b->type == bp_exception)
7530 {
7531 if (b->thread == thread)
7532 delete_breakpoint (b);
7533 }
7534 }
7535
7536 void
7537 delete_longjmp_breakpoint_at_next_stop (int thread)
7538 {
7539 for (breakpoint *b : all_breakpoints_safe ())
7540 if (b->type == bp_longjmp || b->type == bp_exception)
7541 {
7542 if (b->thread == thread)
7543 b->disposition = disp_del_at_next_stop;
7544 }
7545 }
7546
7547 /* Place breakpoints of type bp_longjmp_call_dummy to catch longjmp for
7548 INFERIOR_PTID thread. Chain them all by RELATED_BREAKPOINT and return
7549 pointer to any of them. Return NULL if this system cannot place longjmp
7550 breakpoints. */
7551
7552 struct breakpoint *
7553 set_longjmp_breakpoint_for_call_dummy (void)
7554 {
7555 breakpoint *retval = nullptr;
7556
7557 for (breakpoint *b : all_breakpoints ())
7558 if (b->pspace == current_program_space && b->type == bp_longjmp_master)
7559 {
7560 int thread = inferior_thread ()->global_num;
7561 breakpoint *new_b
7562 = momentary_breakpoint_from_master (b, bp_longjmp_call_dummy,
7563 1, thread);
7564
7565 /* Link NEW_B into the chain of RETVAL breakpoints. */
7566
7567 gdb_assert (new_b->related_breakpoint == new_b);
7568 if (retval == NULL)
7569 retval = new_b;
7570 new_b->related_breakpoint = retval;
7571 while (retval->related_breakpoint != new_b->related_breakpoint)
7572 retval = retval->related_breakpoint;
7573 retval->related_breakpoint = new_b;
7574 }
7575
7576 return retval;
7577 }
7578
7579 /* Verify all existing dummy frames and their associated breakpoints for
7580 TP. Remove those which can no longer be found in the current frame
7581 stack.
7582
7583 If the unwind fails then there is not sufficient information to discard
7584 dummy frames. In this case, elide the clean up and the dummy frames will
7585 be cleaned up next time this function is called from a location where
7586 unwinding is possible. */
7587
7588 void
7589 check_longjmp_breakpoint_for_call_dummy (struct thread_info *tp)
7590 {
7591 struct breakpoint *b, *b_tmp;
7592
7593 ALL_BREAKPOINTS_SAFE (b, b_tmp)
7594 if (b->type == bp_longjmp_call_dummy && b->thread == tp->global_num)
7595 {
7596 struct breakpoint *dummy_b = b->related_breakpoint;
7597
7598 /* Find the bp_call_dummy breakpoint in the list of breakpoints
7599 chained off b->related_breakpoint. */
7600 while (dummy_b != b && dummy_b->type != bp_call_dummy)
7601 dummy_b = dummy_b->related_breakpoint;
7602
7603 /* If there was no bp_call_dummy breakpoint then there's nothing
7604 more to do. Or, if the dummy frame associated with the
7605 bp_call_dummy is still on the stack then we need to leave this
7606 bp_call_dummy in place. */
7607 if (dummy_b->type != bp_call_dummy
7608 || frame_find_by_id (dummy_b->frame_id) != NULL)
7609 continue;
7610
7611 /* We didn't find the dummy frame on the stack, this could be
7612 because we have longjmp'd to a stack frame that is previous to
7613 the dummy frame, or it could be because the stack unwind is
7614 broken at some point between the longjmp frame and the dummy
7615 frame.
7616
7617 Next we figure out why the stack unwind stopped. If it looks
7618 like the unwind is complete then we assume the dummy frame has
7619 been jumped over, however, if the unwind stopped for an
7620 unexpected reason then we assume the stack unwind is currently
7621 broken, and that we will (eventually) return to the dummy
7622 frame.
7623
7624 It might be tempting to consider using frame_id_inner here, but
7625 that is not safe. There is no guarantee that the stack frames
7626 we are looking at here are even on the same stack as the
7627 original dummy frame, hence frame_id_inner can't be used. See
7628 the comments on frame_id_inner for more details. */
7629 bool unwind_finished_unexpectedly = false;
7630 for (frame_info_ptr fi = get_current_frame (); fi != nullptr; )
7631 {
7632 frame_info_ptr prev = get_prev_frame (fi);
7633 if (prev == nullptr)
7634 {
7635 /* FI is the last stack frame. Why did this frame not
7636 unwind further? */
7637 auto stop_reason = get_frame_unwind_stop_reason (fi);
7638 if (stop_reason != UNWIND_NO_REASON
7639 && stop_reason != UNWIND_OUTERMOST)
7640 unwind_finished_unexpectedly = true;
7641 }
7642 fi = prev;
7643 }
7644 if (unwind_finished_unexpectedly)
7645 continue;
7646
7647 dummy_frame_discard (dummy_b->frame_id, tp);
7648
7649 while (b->related_breakpoint != b)
7650 {
7651 if (b_tmp == b->related_breakpoint)
7652 b_tmp = b->related_breakpoint->next;
7653 delete_breakpoint (b->related_breakpoint);
7654 }
7655 delete_breakpoint (b);
7656 }
7657 }
7658
7659 void
7660 enable_overlay_breakpoints (void)
7661 {
7662 for (breakpoint *b : all_breakpoints ())
7663 if (b->type == bp_overlay_event)
7664 {
7665 b->enable_state = bp_enabled;
7666 update_global_location_list (UGLL_MAY_INSERT);
7667 overlay_events_enabled = 1;
7668 }
7669 }
7670
7671 void
7672 disable_overlay_breakpoints (void)
7673 {
7674 for (breakpoint *b : all_breakpoints ())
7675 if (b->type == bp_overlay_event)
7676 {
7677 b->enable_state = bp_disabled;
7678 update_global_location_list (UGLL_DONT_INSERT);
7679 overlay_events_enabled = 0;
7680 }
7681 }
7682
7683 /* Set an active std::terminate breakpoint for each std::terminate
7684 master breakpoint. */
7685 void
7686 set_std_terminate_breakpoint (void)
7687 {
7688 for (breakpoint *b : all_breakpoints_safe ())
7689 if (b->pspace == current_program_space
7690 && b->type == bp_std_terminate_master)
7691 {
7692 momentary_breakpoint_from_master (b, bp_std_terminate, 1,
7693 inferior_thread ()->global_num);
7694 }
7695 }
7696
7697 /* Delete all the std::terminate breakpoints. */
7698 void
7699 delete_std_terminate_breakpoint (void)
7700 {
7701 for (breakpoint *b : all_breakpoints_safe ())
7702 if (b->type == bp_std_terminate)
7703 delete_breakpoint (b);
7704 }
7705
7706 struct breakpoint *
7707 create_thread_event_breakpoint (struct gdbarch *gdbarch, CORE_ADDR address)
7708 {
7709 struct breakpoint *b;
7710
7711 b = create_internal_breakpoint (gdbarch, address, bp_thread_event);
7712
7713 b->enable_state = bp_enabled;
7714 /* locspec has to be used or breakpoint_re_set will delete me. */
7715 b->locspec = new_address_location_spec (b->loc->address, NULL, 0);
7716
7717 update_global_location_list_nothrow (UGLL_MAY_INSERT);
7718
7719 return b;
7720 }
7721
7722 struct lang_and_radix
7723 {
7724 enum language lang;
7725 int radix;
7726 };
7727
7728 /* Create a breakpoint for JIT code registration and unregistration. */
7729
7730 struct breakpoint *
7731 create_jit_event_breakpoint (struct gdbarch *gdbarch, CORE_ADDR address)
7732 {
7733 return create_internal_breakpoint (gdbarch, address, bp_jit_event);
7734 }
7735
7736 /* Remove JIT code registration and unregistration breakpoint(s). */
7737
7738 void
7739 remove_jit_event_breakpoints (void)
7740 {
7741 for (breakpoint *b : all_breakpoints_safe ())
7742 if (b->type == bp_jit_event
7743 && b->loc->pspace == current_program_space)
7744 delete_breakpoint (b);
7745 }
7746
7747 void
7748 remove_solib_event_breakpoints (void)
7749 {
7750 for (breakpoint *b : all_breakpoints_safe ())
7751 if (b->type == bp_shlib_event
7752 && b->loc->pspace == current_program_space)
7753 delete_breakpoint (b);
7754 }
7755
7756 /* See breakpoint.h. */
7757
7758 void
7759 remove_solib_event_breakpoints_at_next_stop (void)
7760 {
7761 for (breakpoint *b : all_breakpoints_safe ())
7762 if (b->type == bp_shlib_event
7763 && b->loc->pspace == current_program_space)
7764 b->disposition = disp_del_at_next_stop;
7765 }
7766
7767 /* Helper for create_solib_event_breakpoint /
7768 create_and_insert_solib_event_breakpoint. Allows specifying which
7769 INSERT_MODE to pass through to update_global_location_list. */
7770
7771 static struct breakpoint *
7772 create_solib_event_breakpoint_1 (struct gdbarch *gdbarch, CORE_ADDR address,
7773 enum ugll_insert_mode insert_mode)
7774 {
7775 struct breakpoint *b;
7776
7777 b = create_internal_breakpoint (gdbarch, address, bp_shlib_event);
7778 update_global_location_list_nothrow (insert_mode);
7779 return b;
7780 }
7781
7782 struct breakpoint *
7783 create_solib_event_breakpoint (struct gdbarch *gdbarch, CORE_ADDR address)
7784 {
7785 return create_solib_event_breakpoint_1 (gdbarch, address, UGLL_MAY_INSERT);
7786 }
7787
7788 /* See breakpoint.h. */
7789
7790 struct breakpoint *
7791 create_and_insert_solib_event_breakpoint (struct gdbarch *gdbarch, CORE_ADDR address)
7792 {
7793 struct breakpoint *b;
7794
7795 /* Explicitly tell update_global_location_list to insert
7796 locations. */
7797 b = create_solib_event_breakpoint_1 (gdbarch, address, UGLL_INSERT);
7798 if (!b->loc->inserted)
7799 {
7800 delete_breakpoint (b);
7801 return NULL;
7802 }
7803 return b;
7804 }
7805
7806 /* Disable any breakpoints that are on code in shared libraries. Only
7807 apply to enabled breakpoints, disabled ones can just stay disabled. */
7808
7809 void
7810 disable_breakpoints_in_shlibs (void)
7811 {
7812 for (bp_location *loc : all_bp_locations ())
7813 {
7814 /* ALL_BP_LOCATIONS bp_location has LOC->OWNER always non-NULL. */
7815 struct breakpoint *b = loc->owner;
7816
7817 /* We apply the check to all breakpoints, including disabled for
7818 those with loc->duplicate set. This is so that when breakpoint
7819 becomes enabled, or the duplicate is removed, gdb will try to
7820 insert all breakpoints. If we don't set shlib_disabled here,
7821 we'll try to insert those breakpoints and fail. */
7822 if (((b->type == bp_breakpoint)
7823 || (b->type == bp_jit_event)
7824 || (b->type == bp_hardware_breakpoint)
7825 || (is_tracepoint (b)))
7826 && loc->pspace == current_program_space
7827 && !loc->shlib_disabled
7828 && solib_name_from_address (loc->pspace, loc->address)
7829 )
7830 {
7831 loc->shlib_disabled = 1;
7832 }
7833 }
7834 }
7835
7836 /* Disable any breakpoints and tracepoints that are in SOLIB upon
7837 notification of unloaded_shlib. Only apply to enabled breakpoints,
7838 disabled ones can just stay disabled. */
7839
7840 static void
7841 disable_breakpoints_in_unloaded_shlib (struct so_list *solib)
7842 {
7843 bool disabled_shlib_breaks = false;
7844
7845 for (bp_location *loc : all_bp_locations ())
7846 {
7847 /* ALL_BP_LOCATIONS bp_location has LOC->OWNER always non-NULL. */
7848 struct breakpoint *b = loc->owner;
7849
7850 if (solib->pspace == loc->pspace
7851 && !loc->shlib_disabled
7852 && (((b->type == bp_breakpoint
7853 || b->type == bp_jit_event
7854 || b->type == bp_hardware_breakpoint)
7855 && (loc->loc_type == bp_loc_hardware_breakpoint
7856 || loc->loc_type == bp_loc_software_breakpoint))
7857 || is_tracepoint (b))
7858 && solib_contains_address_p (solib, loc->address))
7859 {
7860 loc->shlib_disabled = 1;
7861 /* At this point, we cannot rely on remove_breakpoint
7862 succeeding so we must mark the breakpoint as not inserted
7863 to prevent future errors occurring in remove_breakpoints. */
7864 loc->inserted = 0;
7865
7866 /* This may cause duplicate notifications for the same breakpoint. */
7867 gdb::observers::breakpoint_modified.notify (b);
7868
7869 if (!disabled_shlib_breaks)
7870 {
7871 target_terminal::ours_for_output ();
7872 warning (_("Temporarily disabling breakpoints "
7873 "for unloaded shared library \"%s\""),
7874 solib->so_name);
7875 }
7876 disabled_shlib_breaks = true;
7877 }
7878 }
7879 }
7880
7881 /* Disable any breakpoints and tracepoints in OBJFILE upon
7882 notification of free_objfile. Only apply to enabled breakpoints,
7883 disabled ones can just stay disabled. */
7884
7885 static void
7886 disable_breakpoints_in_freed_objfile (struct objfile *objfile)
7887 {
7888 if (objfile == NULL)
7889 return;
7890
7891 /* OBJF_SHARED|OBJF_USERLOADED objfiles are dynamic modules manually
7892 managed by the user with add-symbol-file/remove-symbol-file.
7893 Similarly to how breakpoints in shared libraries are handled in
7894 response to "nosharedlibrary", mark breakpoints in such modules
7895 shlib_disabled so they end up uninserted on the next global
7896 location list update. Shared libraries not loaded by the user
7897 aren't handled here -- they're already handled in
7898 disable_breakpoints_in_unloaded_shlib, called by solib.c's
7899 solib_unloaded observer. We skip objfiles that are not
7900 OBJF_SHARED as those aren't considered dynamic objects (e.g. the
7901 main objfile). */
7902 if ((objfile->flags & OBJF_SHARED) == 0
7903 || (objfile->flags & OBJF_USERLOADED) == 0)
7904 return;
7905
7906 for (breakpoint *b : all_breakpoints ())
7907 {
7908 bool bp_modified = false;
7909
7910 if (!is_breakpoint (b) && !is_tracepoint (b))
7911 continue;
7912
7913 for (bp_location *loc : b->locations ())
7914 {
7915 CORE_ADDR loc_addr = loc->address;
7916
7917 if (loc->loc_type != bp_loc_hardware_breakpoint
7918 && loc->loc_type != bp_loc_software_breakpoint)
7919 continue;
7920
7921 if (loc->shlib_disabled != 0)
7922 continue;
7923
7924 if (objfile->pspace != loc->pspace)
7925 continue;
7926
7927 if (loc->loc_type != bp_loc_hardware_breakpoint
7928 && loc->loc_type != bp_loc_software_breakpoint)
7929 continue;
7930
7931 if (is_addr_in_objfile (loc_addr, objfile))
7932 {
7933 loc->shlib_disabled = 1;
7934 /* At this point, we don't know whether the object was
7935 unmapped from the inferior or not, so leave the
7936 inserted flag alone. We'll handle failure to
7937 uninsert quietly, in case the object was indeed
7938 unmapped. */
7939
7940 mark_breakpoint_location_modified (loc);
7941
7942 bp_modified = true;
7943 }
7944 }
7945
7946 if (bp_modified)
7947 gdb::observers::breakpoint_modified.notify (b);
7948 }
7949 }
7950
7951 /* See breakpoint.h. */
7952
7953 breakpoint::breakpoint (struct gdbarch *gdbarch_, enum bptype bptype,
7954 bool temp, const char *cond_string_)
7955 : type (bptype),
7956 disposition (temp ? disp_del : disp_donttouch),
7957 gdbarch (gdbarch_),
7958 language (current_language->la_language),
7959 input_radix (::input_radix),
7960 cond_string (cond_string_ != nullptr
7961 ? make_unique_xstrdup (cond_string_)
7962 : nullptr),
7963 related_breakpoint (this)
7964 {
7965 }
7966
7967 /* See breakpoint.h. */
7968
7969 catchpoint::catchpoint (struct gdbarch *gdbarch, bool temp,
7970 const char *cond_string)
7971 : breakpoint (gdbarch, bp_catchpoint, temp, cond_string)
7972 {
7973 add_dummy_location (this, current_program_space);
7974
7975 pspace = current_program_space;
7976 }
7977
7978 breakpoint *
7979 install_breakpoint (int internal, std::unique_ptr<breakpoint> &&arg, int update_gll)
7980 {
7981 breakpoint *b = add_to_breakpoint_chain (std::move (arg));
7982 set_breakpoint_number (internal, b);
7983 if (is_tracepoint (b))
7984 set_tracepoint_count (breakpoint_count);
7985 if (!internal)
7986 mention (b);
7987 gdb::observers::breakpoint_created.notify (b);
7988
7989 if (update_gll)
7990 update_global_location_list (UGLL_MAY_INSERT);
7991
7992 return b;
7993 }
7994
7995 static int
7996 hw_breakpoint_used_count (void)
7997 {
7998 int i = 0;
7999
8000 for (breakpoint *b : all_breakpoints ())
8001 if (b->type == bp_hardware_breakpoint && breakpoint_enabled (b))
8002 for (bp_location *bl : b->locations ())
8003 {
8004 /* Special types of hardware breakpoints may use more than
8005 one register. */
8006 i += b->resources_needed (bl);
8007 }
8008
8009 return i;
8010 }
8011
8012 /* Returns the resources B would use if it were a hardware
8013 watchpoint. */
8014
8015 static int
8016 hw_watchpoint_use_count (struct breakpoint *b)
8017 {
8018 int i = 0;
8019
8020 if (!breakpoint_enabled (b))
8021 return 0;
8022
8023 for (bp_location *bl : b->locations ())
8024 {
8025 /* Special types of hardware watchpoints may use more than
8026 one register. */
8027 i += b->resources_needed (bl);
8028 }
8029
8030 return i;
8031 }
8032
8033 /* Returns the sum the used resources of all hardware watchpoints of
8034 type TYPE in the breakpoints list. Also returns in OTHER_TYPE_USED
8035 the sum of the used resources of all hardware watchpoints of other
8036 types _not_ TYPE. */
8037
8038 static int
8039 hw_watchpoint_used_count_others (struct breakpoint *except,
8040 enum bptype type, int *other_type_used)
8041 {
8042 int i = 0;
8043
8044 *other_type_used = 0;
8045 for (breakpoint *b : all_breakpoints ())
8046 {
8047 if (b == except)
8048 continue;
8049 if (!breakpoint_enabled (b))
8050 continue;
8051
8052 if (b->type == type)
8053 i += hw_watchpoint_use_count (b);
8054 else if (is_hardware_watchpoint (b))
8055 *other_type_used = 1;
8056 }
8057
8058 return i;
8059 }
8060
8061 void
8062 disable_watchpoints_before_interactive_call_start (void)
8063 {
8064 for (breakpoint *b : all_breakpoints ())
8065 if (is_watchpoint (b) && breakpoint_enabled (b))
8066 {
8067 b->enable_state = bp_call_disabled;
8068 update_global_location_list (UGLL_DONT_INSERT);
8069 }
8070 }
8071
8072 void
8073 enable_watchpoints_after_interactive_call_stop (void)
8074 {
8075 for (breakpoint *b : all_breakpoints ())
8076 if (is_watchpoint (b) && b->enable_state == bp_call_disabled)
8077 {
8078 b->enable_state = bp_enabled;
8079 update_global_location_list (UGLL_MAY_INSERT);
8080 }
8081 }
8082
8083 void
8084 disable_breakpoints_before_startup (void)
8085 {
8086 current_program_space->executing_startup = 1;
8087 update_global_location_list (UGLL_DONT_INSERT);
8088 }
8089
8090 void
8091 enable_breakpoints_after_startup (void)
8092 {
8093 current_program_space->executing_startup = 0;
8094 breakpoint_re_set ();
8095 }
8096
8097 /* Allocate a new momentary breakpoint. */
8098
8099 template<typename... Arg>
8100 static momentary_breakpoint *
8101 new_momentary_breakpoint (struct gdbarch *gdbarch, enum bptype type,
8102 Arg&&... args)
8103 {
8104 if (type == bp_longjmp || type == bp_exception)
8105 return new longjmp_breakpoint (gdbarch, type,
8106 std::forward<Arg> (args)...);
8107 else
8108 return new momentary_breakpoint (gdbarch, type,
8109 std::forward<Arg> (args)...);
8110 }
8111
8112 /* Set a momentary breakpoint of type TYPE at address specified by
8113 SAL. If FRAME_ID is valid, the breakpoint is restricted to that
8114 frame. */
8115
8116 breakpoint_up
8117 set_momentary_breakpoint (struct gdbarch *gdbarch, struct symtab_and_line sal,
8118 struct frame_id frame_id, enum bptype type)
8119 {
8120 /* If FRAME_ID is valid, it should be a real frame, not an inlined or
8121 tail-called one. */
8122 gdb_assert (!frame_id_artificial_p (frame_id));
8123
8124 std::unique_ptr<momentary_breakpoint> b
8125 (new_momentary_breakpoint (gdbarch, type, sal.pspace, frame_id,
8126 inferior_thread ()->global_num));
8127
8128 b->add_location (sal);
8129
8130 breakpoint_up bp (add_to_breakpoint_chain (std::move (b)));
8131
8132 update_global_location_list_nothrow (UGLL_MAY_INSERT);
8133
8134 return bp;
8135 }
8136
8137 /* Make a momentary breakpoint based on the master breakpoint ORIG.
8138 The new breakpoint will have type TYPE, use OPS as its
8139 breakpoint_ops, and will set enabled to LOC_ENABLED. */
8140
8141 static struct breakpoint *
8142 momentary_breakpoint_from_master (struct breakpoint *orig,
8143 enum bptype type,
8144 int loc_enabled,
8145 int thread)
8146 {
8147 std::unique_ptr<breakpoint> copy
8148 (new_momentary_breakpoint (orig->gdbarch, type, orig->pspace,
8149 orig->frame_id, thread));
8150 copy->loc = copy->allocate_location ();
8151 set_breakpoint_location_function (copy->loc);
8152
8153 copy->loc->gdbarch = orig->loc->gdbarch;
8154 copy->loc->requested_address = orig->loc->requested_address;
8155 copy->loc->address = orig->loc->address;
8156 copy->loc->section = orig->loc->section;
8157 copy->loc->pspace = orig->loc->pspace;
8158 copy->loc->probe = orig->loc->probe;
8159 copy->loc->line_number = orig->loc->line_number;
8160 copy->loc->symtab = orig->loc->symtab;
8161 copy->loc->enabled = loc_enabled;
8162
8163 breakpoint *b = add_to_breakpoint_chain (std::move (copy));
8164 update_global_location_list_nothrow (UGLL_DONT_INSERT);
8165 return b;
8166 }
8167
8168 /* Make a deep copy of momentary breakpoint ORIG. Returns NULL if
8169 ORIG is NULL. */
8170
8171 struct breakpoint *
8172 clone_momentary_breakpoint (struct breakpoint *orig)
8173 {
8174 /* If there's nothing to clone, then return nothing. */
8175 if (orig == NULL)
8176 return NULL;
8177
8178 return momentary_breakpoint_from_master (orig, orig->type, 0,
8179 orig->thread);
8180 }
8181
8182 breakpoint_up
8183 set_momentary_breakpoint_at_pc (struct gdbarch *gdbarch, CORE_ADDR pc,
8184 enum bptype type)
8185 {
8186 struct symtab_and_line sal;
8187
8188 sal = find_pc_line (pc, 0);
8189 sal.pc = pc;
8190 sal.section = find_pc_overlay (pc);
8191 sal.explicit_pc = 1;
8192
8193 return set_momentary_breakpoint (gdbarch, sal, null_frame_id, type);
8194 }
8195 \f
8196
8197 /* Tell the user we have just set a breakpoint B. */
8198
8199 static void
8200 mention (const breakpoint *b)
8201 {
8202 b->print_mention ();
8203 current_uiout->text ("\n");
8204 }
8205 \f
8206
8207 static bool bp_loc_is_permanent (struct bp_location *loc);
8208
8209 /* Handle "set breakpoint auto-hw on".
8210
8211 If the explicitly specified breakpoint type is not hardware
8212 breakpoint, check the memory map to see whether the breakpoint
8213 address is in read-only memory.
8214
8215 - location type is not hardware breakpoint, memory is read-only.
8216 We change the type of the location to hardware breakpoint.
8217
8218 - location type is hardware breakpoint, memory is read-write. This
8219 means we've previously made the location hardware one, but then the
8220 memory map changed, so we undo.
8221 */
8222
8223 static void
8224 handle_automatic_hardware_breakpoints (bp_location *bl)
8225 {
8226 if (automatic_hardware_breakpoints
8227 && bl->owner->type != bp_hardware_breakpoint
8228 && (bl->loc_type == bp_loc_software_breakpoint
8229 || bl->loc_type == bp_loc_hardware_breakpoint))
8230 {
8231 /* When breakpoints are removed, remove_breakpoints will use
8232 location types we've just set here, the only possible problem
8233 is that memory map has changed during running program, but
8234 it's not going to work anyway with current gdb. */
8235 mem_region *mr = lookup_mem_region (bl->address);
8236
8237 if (mr != nullptr)
8238 {
8239 enum bp_loc_type new_type;
8240
8241 if (mr->attrib.mode != MEM_RW)
8242 new_type = bp_loc_hardware_breakpoint;
8243 else
8244 new_type = bp_loc_software_breakpoint;
8245
8246 if (new_type != bl->loc_type)
8247 {
8248 static bool said = false;
8249
8250 bl->loc_type = new_type;
8251 if (!said)
8252 {
8253 gdb_printf (_("Note: automatically using "
8254 "hardware breakpoints for "
8255 "read-only addresses.\n"));
8256 said = true;
8257 }
8258 }
8259 }
8260 }
8261 }
8262
8263 bp_location *
8264 code_breakpoint::add_location (const symtab_and_line &sal)
8265 {
8266 struct bp_location *new_loc, **tmp;
8267 CORE_ADDR adjusted_address;
8268 struct gdbarch *loc_gdbarch = get_sal_arch (sal);
8269
8270 if (loc_gdbarch == NULL)
8271 loc_gdbarch = gdbarch;
8272
8273 /* Adjust the breakpoint's address prior to allocating a location.
8274 Once we call allocate_location(), that mostly uninitialized
8275 location will be placed on the location chain. Adjustment of the
8276 breakpoint may cause target_read_memory() to be called and we do
8277 not want its scan of the location chain to find a breakpoint and
8278 location that's only been partially initialized. */
8279 adjusted_address = adjust_breakpoint_address (loc_gdbarch,
8280 sal.pc, type,
8281 sal.pspace);
8282
8283 /* Sort the locations by their ADDRESS. */
8284 new_loc = allocate_location ();
8285 for (tmp = &(loc); *tmp != NULL && (*tmp)->address <= adjusted_address;
8286 tmp = &((*tmp)->next))
8287 ;
8288 new_loc->next = *tmp;
8289 *tmp = new_loc;
8290
8291 new_loc->requested_address = sal.pc;
8292 new_loc->address = adjusted_address;
8293 new_loc->pspace = sal.pspace;
8294 new_loc->probe.prob = sal.prob;
8295 new_loc->probe.objfile = sal.objfile;
8296 gdb_assert (new_loc->pspace != NULL);
8297 new_loc->section = sal.section;
8298 new_loc->gdbarch = loc_gdbarch;
8299 new_loc->line_number = sal.line;
8300 new_loc->symtab = sal.symtab;
8301 new_loc->symbol = sal.symbol;
8302 new_loc->msymbol = sal.msymbol;
8303 new_loc->objfile = sal.objfile;
8304
8305 set_breakpoint_location_function (new_loc);
8306
8307 /* While by definition, permanent breakpoints are already present in the
8308 code, we don't mark the location as inserted. Normally one would expect
8309 that GDB could rely on that breakpoint instruction to stop the program,
8310 thus removing the need to insert its own breakpoint, except that executing
8311 the breakpoint instruction can kill the target instead of reporting a
8312 SIGTRAP. E.g., on SPARC, when interrupts are disabled, executing the
8313 instruction resets the CPU, so QEMU 2.0.0 for SPARC correspondingly dies
8314 with "Trap 0x02 while interrupts disabled, Error state". Letting the
8315 breakpoint be inserted normally results in QEMU knowing about the GDB
8316 breakpoint, and thus trap before the breakpoint instruction is executed.
8317 (If GDB later needs to continue execution past the permanent breakpoint,
8318 it manually increments the PC, thus avoiding executing the breakpoint
8319 instruction.) */
8320 if (bp_loc_is_permanent (new_loc))
8321 new_loc->permanent = 1;
8322
8323 return new_loc;
8324 }
8325 \f
8326
8327 /* Return true if LOC is pointing to a permanent breakpoint,
8328 return false otherwise. */
8329
8330 static bool
8331 bp_loc_is_permanent (struct bp_location *loc)
8332 {
8333 gdb_assert (loc != NULL);
8334
8335 /* If we have a non-breakpoint-backed catchpoint or a software
8336 watchpoint, just return 0. We should not attempt to read from
8337 the addresses the locations of these breakpoint types point to.
8338 gdbarch_program_breakpoint_here_p, below, will attempt to read
8339 memory. */
8340 if (!bl_address_is_meaningful (loc))
8341 return false;
8342
8343 scoped_restore_current_pspace_and_thread restore_pspace_thread;
8344 switch_to_program_space_and_thread (loc->pspace);
8345 return gdbarch_program_breakpoint_here_p (loc->gdbarch, loc->address);
8346 }
8347
8348 /* Build a command list for the dprintf corresponding to the current
8349 settings of the dprintf style options. */
8350
8351 static void
8352 update_dprintf_command_list (struct breakpoint *b)
8353 {
8354 const char *dprintf_args = b->extra_string.get ();
8355 gdb::unique_xmalloc_ptr<char> printf_line = nullptr;
8356
8357 if (!dprintf_args)
8358 return;
8359
8360 dprintf_args = skip_spaces (dprintf_args);
8361
8362 /* Allow a comma, as it may have terminated a location, but don't
8363 insist on it. */
8364 if (*dprintf_args == ',')
8365 ++dprintf_args;
8366 dprintf_args = skip_spaces (dprintf_args);
8367
8368 if (*dprintf_args != '"')
8369 error (_("Bad format string, missing '\"'."));
8370
8371 if (strcmp (dprintf_style, dprintf_style_gdb) == 0)
8372 printf_line = xstrprintf ("printf %s", dprintf_args);
8373 else if (strcmp (dprintf_style, dprintf_style_call) == 0)
8374 {
8375 if (dprintf_function.empty ())
8376 error (_("No function supplied for dprintf call"));
8377
8378 if (!dprintf_channel.empty ())
8379 printf_line = xstrprintf ("call (void) %s (%s,%s)",
8380 dprintf_function.c_str (),
8381 dprintf_channel.c_str (),
8382 dprintf_args);
8383 else
8384 printf_line = xstrprintf ("call (void) %s (%s)",
8385 dprintf_function.c_str (),
8386 dprintf_args);
8387 }
8388 else if (strcmp (dprintf_style, dprintf_style_agent) == 0)
8389 {
8390 if (target_can_run_breakpoint_commands ())
8391 printf_line = xstrprintf ("agent-printf %s", dprintf_args);
8392 else
8393 {
8394 warning (_("Target cannot run dprintf commands, falling back to GDB printf"));
8395 printf_line = xstrprintf ("printf %s", dprintf_args);
8396 }
8397 }
8398 else
8399 internal_error (_("Invalid dprintf style."));
8400
8401 gdb_assert (printf_line != NULL);
8402
8403 /* Manufacture a printf sequence. */
8404 struct command_line *printf_cmd_line
8405 = new struct command_line (simple_control, printf_line.release ());
8406 breakpoint_set_commands (b, counted_command_line (printf_cmd_line,
8407 command_lines_deleter ()));
8408 }
8409
8410 /* Update all dprintf commands, making their command lists reflect
8411 current style settings. */
8412
8413 static void
8414 update_dprintf_commands (const char *args, int from_tty,
8415 struct cmd_list_element *c)
8416 {
8417 for (breakpoint *b : all_breakpoints ())
8418 if (b->type == bp_dprintf)
8419 update_dprintf_command_list (b);
8420 }
8421
8422 code_breakpoint::code_breakpoint (struct gdbarch *gdbarch_,
8423 enum bptype type_,
8424 gdb::array_view<const symtab_and_line> sals,
8425 location_spec_up &&locspec_,
8426 gdb::unique_xmalloc_ptr<char> filter_,
8427 gdb::unique_xmalloc_ptr<char> cond_string_,
8428 gdb::unique_xmalloc_ptr<char> extra_string_,
8429 enum bpdisp disposition_,
8430 int thread_, int task_, int ignore_count_,
8431 int from_tty,
8432 int enabled_, unsigned flags,
8433 int display_canonical_)
8434 : breakpoint (gdbarch_, type_)
8435 {
8436 int i;
8437
8438 if (type == bp_hardware_breakpoint)
8439 {
8440 int target_resources_ok;
8441
8442 i = hw_breakpoint_used_count ();
8443 target_resources_ok =
8444 target_can_use_hardware_watchpoint (bp_hardware_breakpoint,
8445 i + 1, 0);
8446 if (target_resources_ok == 0)
8447 error (_("No hardware breakpoint support in the target."));
8448 else if (target_resources_ok < 0)
8449 error (_("Hardware breakpoints used exceeds limit."));
8450 }
8451
8452 gdb_assert (!sals.empty ());
8453
8454 /* At most one of thread or task can be set on any breakpoint. */
8455 gdb_assert (thread == -1 || task == -1);
8456 thread = thread_;
8457 task = task_;
8458
8459 cond_string = std::move (cond_string_);
8460 extra_string = std::move (extra_string_);
8461 ignore_count = ignore_count_;
8462 enable_state = enabled_ ? bp_enabled : bp_disabled;
8463 disposition = disposition_;
8464
8465 if (type == bp_static_tracepoint
8466 || type == bp_static_marker_tracepoint)
8467 {
8468 auto *t = gdb::checked_static_cast<struct tracepoint *> (this);
8469 struct static_tracepoint_marker marker;
8470
8471 if (strace_marker_p (this))
8472 {
8473 /* We already know the marker exists, otherwise, we wouldn't
8474 see a sal for it. */
8475 const char *p = &locspec_->to_string ()[3];
8476 const char *endp;
8477
8478 p = skip_spaces (p);
8479
8480 endp = skip_to_space (p);
8481
8482 t->static_trace_marker_id.assign (p, endp - p);
8483
8484 gdb_printf (_("Probed static tracepoint marker \"%s\"\n"),
8485 t->static_trace_marker_id.c_str ());
8486 }
8487 else if (target_static_tracepoint_marker_at (sals[0].pc, &marker))
8488 {
8489 t->static_trace_marker_id = std::move (marker.str_id);
8490
8491 gdb_printf (_("Probed static tracepoint marker \"%s\"\n"),
8492 t->static_trace_marker_id.c_str ());
8493 }
8494 else
8495 warning (_("Couldn't determine the static tracepoint marker to probe"));
8496 }
8497
8498 for (const auto &sal : sals)
8499 {
8500 if (from_tty)
8501 {
8502 struct gdbarch *loc_gdbarch = get_sal_arch (sal);
8503 if (loc_gdbarch == nullptr)
8504 loc_gdbarch = gdbarch;
8505
8506 describe_other_breakpoints (loc_gdbarch,
8507 sal.pspace, sal.pc, sal.section, thread);
8508 }
8509
8510 bp_location *new_loc = add_location (sal);
8511 if ((flags & CREATE_BREAKPOINT_FLAGS_INSERTED) != 0)
8512 new_loc->inserted = 1;
8513
8514 /* Do not set breakpoint locations conditions yet. As locations
8515 are inserted, they get sorted based on their addresses. Let
8516 the list stabilize to have reliable location numbers. */
8517
8518 /* Dynamic printf requires and uses additional arguments on the
8519 command line, otherwise it's an error. */
8520 if (type == bp_dprintf)
8521 {
8522 if (extra_string != nullptr)
8523 update_dprintf_command_list (this);
8524 else
8525 error (_("Format string required"));
8526 }
8527 else if (extra_string != nullptr)
8528 error (_("Garbage '%s' at end of command"), extra_string.get ());
8529 }
8530
8531 /* The order of the locations is now stable. Set the location
8532 condition using the location's number. */
8533 int loc_num = 1;
8534 for (bp_location *bl : locations ())
8535 {
8536 if (cond_string != nullptr)
8537 set_breakpoint_location_condition (cond_string.get (), bl,
8538 number, loc_num);
8539
8540 ++loc_num;
8541 }
8542
8543 display_canonical = display_canonical_;
8544 if (locspec_ != nullptr)
8545 locspec = std::move (locspec_);
8546 else
8547 locspec = new_address_location_spec (this->loc->address, NULL, 0);
8548 filter = std::move (filter_);
8549 }
8550
8551 static void
8552 create_breakpoint_sal (struct gdbarch *gdbarch,
8553 gdb::array_view<const symtab_and_line> sals,
8554 location_spec_up &&locspec,
8555 gdb::unique_xmalloc_ptr<char> filter,
8556 gdb::unique_xmalloc_ptr<char> cond_string,
8557 gdb::unique_xmalloc_ptr<char> extra_string,
8558 enum bptype type, enum bpdisp disposition,
8559 int thread, int task, int ignore_count,
8560 int from_tty,
8561 int enabled, int internal, unsigned flags,
8562 int display_canonical)
8563 {
8564 std::unique_ptr<code_breakpoint> b
8565 = new_breakpoint_from_type (gdbarch,
8566 type,
8567 sals,
8568 std::move (locspec),
8569 std::move (filter),
8570 std::move (cond_string),
8571 std::move (extra_string),
8572 disposition,
8573 thread, task, ignore_count,
8574 from_tty,
8575 enabled, flags,
8576 display_canonical);
8577
8578 install_breakpoint (internal, std::move (b), 0);
8579 }
8580
8581 /* Add SALS.nelts breakpoints to the breakpoint table. For each
8582 SALS.sal[i] breakpoint, include the corresponding ADDR_STRING[i]
8583 value. COND_STRING, if not NULL, specified the condition to be
8584 used for all breakpoints. Essentially the only case where
8585 SALS.nelts is not 1 is when we set a breakpoint on an overloaded
8586 function. In that case, it's still not possible to specify
8587 separate conditions for different overloaded functions, so
8588 we take just a single condition string.
8589
8590 NOTE: If the function succeeds, the caller is expected to cleanup
8591 the arrays ADDR_STRING, COND_STRING, and SALS (but not the
8592 array contents). If the function fails (error() is called), the
8593 caller is expected to cleanups both the ADDR_STRING, COND_STRING,
8594 COND and SALS arrays and each of those arrays contents. */
8595
8596 static void
8597 create_breakpoints_sal (struct gdbarch *gdbarch,
8598 struct linespec_result *canonical,
8599 gdb::unique_xmalloc_ptr<char> cond_string,
8600 gdb::unique_xmalloc_ptr<char> extra_string,
8601 enum bptype type, enum bpdisp disposition,
8602 int thread, int task, int ignore_count,
8603 int from_tty,
8604 int enabled, int internal, unsigned flags)
8605 {
8606 if (canonical->pre_expanded)
8607 gdb_assert (canonical->lsals.size () == 1);
8608
8609 for (const auto &lsal : canonical->lsals)
8610 {
8611 /* Note that 'location' can be NULL in the case of a plain
8612 'break', without arguments. */
8613 location_spec_up locspec
8614 = (canonical->locspec != nullptr
8615 ? canonical->locspec->clone ()
8616 : nullptr);
8617 gdb::unique_xmalloc_ptr<char> filter_string
8618 (lsal.canonical != NULL ? xstrdup (lsal.canonical) : NULL);
8619
8620 create_breakpoint_sal (gdbarch, lsal.sals,
8621 std::move (locspec),
8622 std::move (filter_string),
8623 std::move (cond_string),
8624 std::move (extra_string),
8625 type, disposition,
8626 thread, task, ignore_count,
8627 from_tty, enabled, internal, flags,
8628 canonical->special_display);
8629 }
8630 }
8631
8632 /* Parse LOCSPEC which is assumed to be a SAL specification possibly
8633 followed by conditionals. On return, SALS contains an array of SAL
8634 addresses found. LOCSPEC points to the end of the SAL (for
8635 linespec locspecs).
8636
8637 The array and the line spec strings are allocated on the heap, it is
8638 the caller's responsibility to free them. */
8639
8640 static void
8641 parse_breakpoint_sals (location_spec *locspec,
8642 struct linespec_result *canonical)
8643 {
8644 struct symtab_and_line cursal;
8645
8646 if (locspec->type () == LINESPEC_LOCATION_SPEC)
8647 {
8648 const char *spec = as_linespec_location_spec (locspec)->spec_string;
8649
8650 if (spec == NULL)
8651 {
8652 /* The last displayed codepoint, if it's valid, is our default
8653 breakpoint address. */
8654 if (last_displayed_sal_is_valid ())
8655 {
8656 /* Set sal's pspace, pc, symtab, and line to the values
8657 corresponding to the last call to print_frame_info.
8658 Be sure to reinitialize LINE with NOTCURRENT == 0
8659 as the breakpoint line number is inappropriate otherwise.
8660 find_pc_line would adjust PC, re-set it back. */
8661 symtab_and_line sal = get_last_displayed_sal ();
8662 CORE_ADDR pc = sal.pc;
8663
8664 sal = find_pc_line (pc, 0);
8665
8666 /* "break" without arguments is equivalent to "break *PC"
8667 where PC is the last displayed codepoint's address. So
8668 make sure to set sal.explicit_pc to prevent GDB from
8669 trying to expand the list of sals to include all other
8670 instances with the same symtab and line. */
8671 sal.pc = pc;
8672 sal.explicit_pc = 1;
8673
8674 struct linespec_sals lsal;
8675 lsal.sals = {sal};
8676 lsal.canonical = NULL;
8677
8678 canonical->lsals.push_back (std::move (lsal));
8679 return;
8680 }
8681 else
8682 error (_("No default breakpoint address now."));
8683 }
8684 }
8685
8686 /* Force almost all breakpoints to be in terms of the
8687 current_source_symtab (which is decode_line_1's default).
8688 This should produce the results we want almost all of the
8689 time while leaving default_breakpoint_* alone.
8690
8691 ObjC: However, don't match an Objective-C method name which
8692 may have a '+' or '-' succeeded by a '['. */
8693 cursal = get_current_source_symtab_and_line ();
8694 if (last_displayed_sal_is_valid ())
8695 {
8696 const char *spec = NULL;
8697
8698 if (locspec->type () == LINESPEC_LOCATION_SPEC)
8699 spec = as_linespec_location_spec (locspec)->spec_string;
8700
8701 if (!cursal.symtab
8702 || (spec != NULL
8703 && strchr ("+-", spec[0]) != NULL
8704 && spec[1] != '['))
8705 {
8706 decode_line_full (locspec, DECODE_LINE_FUNFIRSTLINE, NULL,
8707 get_last_displayed_symtab (),
8708 get_last_displayed_line (),
8709 canonical, NULL, NULL);
8710 return;
8711 }
8712 }
8713
8714 decode_line_full (locspec, DECODE_LINE_FUNFIRSTLINE, NULL,
8715 cursal.symtab, cursal.line, canonical, NULL, NULL);
8716 }
8717
8718
8719 /* Convert each SAL into a real PC. Verify that the PC can be
8720 inserted as a breakpoint. If it can't throw an error. */
8721
8722 static void
8723 breakpoint_sals_to_pc (std::vector<symtab_and_line> &sals)
8724 {
8725 for (auto &sal : sals)
8726 resolve_sal_pc (&sal);
8727 }
8728
8729 /* Fast tracepoints may have restrictions on valid locations. For
8730 instance, a fast tracepoint using a jump instead of a trap will
8731 likely have to overwrite more bytes than a trap would, and so can
8732 only be placed where the instruction is longer than the jump, or a
8733 multi-instruction sequence does not have a jump into the middle of
8734 it, etc. */
8735
8736 static void
8737 check_fast_tracepoint_sals (struct gdbarch *gdbarch,
8738 gdb::array_view<const symtab_and_line> sals)
8739 {
8740 for (const auto &sal : sals)
8741 {
8742 struct gdbarch *sarch;
8743
8744 sarch = get_sal_arch (sal);
8745 /* We fall back to GDBARCH if there is no architecture
8746 associated with SAL. */
8747 if (sarch == NULL)
8748 sarch = gdbarch;
8749 std::string msg;
8750 if (!gdbarch_fast_tracepoint_valid_at (sarch, sal.pc, &msg))
8751 error (_("May not have a fast tracepoint at %s%s"),
8752 paddress (sarch, sal.pc), msg.c_str ());
8753 }
8754 }
8755
8756 /* Given TOK, a string specification of condition and thread, as
8757 accepted by the 'break' command, extract the condition
8758 string and thread number and set *COND_STRING and *THREAD.
8759 PC identifies the context at which the condition should be parsed.
8760 If no condition is found, *COND_STRING is set to NULL.
8761 If no thread is found, *THREAD is set to -1. */
8762
8763 static void
8764 find_condition_and_thread (const char *tok, CORE_ADDR pc,
8765 gdb::unique_xmalloc_ptr<char> *cond_string,
8766 int *thread, int *task,
8767 gdb::unique_xmalloc_ptr<char> *rest)
8768 {
8769 cond_string->reset ();
8770 *thread = -1;
8771 *task = -1;
8772 rest->reset ();
8773 bool force = false;
8774
8775 while (tok && *tok)
8776 {
8777 const char *end_tok;
8778 int toklen;
8779 const char *cond_start = NULL;
8780 const char *cond_end = NULL;
8781
8782 tok = skip_spaces (tok);
8783
8784 if ((*tok == '"' || *tok == ',') && rest)
8785 {
8786 rest->reset (savestring (tok, strlen (tok)));
8787 return;
8788 }
8789
8790 end_tok = skip_to_space (tok);
8791
8792 toklen = end_tok - tok;
8793
8794 if (toklen >= 1 && strncmp (tok, "if", toklen) == 0)
8795 {
8796 tok = cond_start = end_tok + 1;
8797 try
8798 {
8799 parse_exp_1 (&tok, pc, block_for_pc (pc), 0);
8800 }
8801 catch (const gdb_exception_error &)
8802 {
8803 if (!force)
8804 throw;
8805 else
8806 tok = tok + strlen (tok);
8807 }
8808 cond_end = tok;
8809 cond_string->reset (savestring (cond_start, cond_end - cond_start));
8810 }
8811 else if (toklen >= 1 && strncmp (tok, "-force-condition", toklen) == 0)
8812 {
8813 tok = tok + toklen;
8814 force = true;
8815 }
8816 else if (toklen >= 1 && strncmp (tok, "thread", toklen) == 0)
8817 {
8818 const char *tmptok;
8819 struct thread_info *thr;
8820
8821 if (*thread != -1)
8822 error(_("You can specify only one thread."));
8823
8824 if (*task != -1)
8825 error (_("You can specify only one of thread or task."));
8826
8827 tok = end_tok + 1;
8828 thr = parse_thread_id (tok, &tmptok);
8829 if (tok == tmptok)
8830 error (_("Junk after thread keyword."));
8831 *thread = thr->global_num;
8832 tok = tmptok;
8833 }
8834 else if (toklen >= 1 && strncmp (tok, "task", toklen) == 0)
8835 {
8836 char *tmptok;
8837
8838 if (*task != -1)
8839 error(_("You can specify only one task."));
8840
8841 if (*thread != -1)
8842 error (_("You can specify only one of thread or task."));
8843
8844 tok = end_tok + 1;
8845 *task = strtol (tok, &tmptok, 0);
8846 if (tok == tmptok)
8847 error (_("Junk after task keyword."));
8848 if (!valid_task_id (*task))
8849 error (_("Unknown task %d."), *task);
8850 tok = tmptok;
8851 }
8852 else if (rest)
8853 {
8854 rest->reset (savestring (tok, strlen (tok)));
8855 return;
8856 }
8857 else
8858 error (_("Junk at end of arguments."));
8859 }
8860 }
8861
8862 /* Call 'find_condition_and_thread' for each sal in SALS until a parse
8863 succeeds. The parsed values are written to COND_STRING, THREAD,
8864 TASK, and REST. See the comment of 'find_condition_and_thread'
8865 for the description of these parameters and INPUT. */
8866
8867 static void
8868 find_condition_and_thread_for_sals (const std::vector<symtab_and_line> &sals,
8869 const char *input,
8870 gdb::unique_xmalloc_ptr<char> *cond_string,
8871 int *thread, int *task,
8872 gdb::unique_xmalloc_ptr<char> *rest)
8873 {
8874 int num_failures = 0;
8875 for (auto &sal : sals)
8876 {
8877 gdb::unique_xmalloc_ptr<char> cond;
8878 int thread_id = -1;
8879 int task_id = -1;
8880 gdb::unique_xmalloc_ptr<char> remaining;
8881
8882 /* Here we want to parse 'arg' to separate condition from thread
8883 number. But because parsing happens in a context and the
8884 contexts of sals might be different, try each until there is
8885 success. Finding one successful parse is sufficient for our
8886 goal. When setting the breakpoint we'll re-parse the
8887 condition in the context of each sal. */
8888 try
8889 {
8890 find_condition_and_thread (input, sal.pc, &cond, &thread_id,
8891 &task_id, &remaining);
8892 *cond_string = std::move (cond);
8893 /* At most one of thread or task can be set. */
8894 gdb_assert (thread_id == -1 || task_id == -1);
8895 *thread = thread_id;
8896 *task = task_id;
8897 *rest = std::move (remaining);
8898 break;
8899 }
8900 catch (const gdb_exception_error &e)
8901 {
8902 num_failures++;
8903 /* If no sal remains, do not continue. */
8904 if (num_failures == sals.size ())
8905 throw;
8906 }
8907 }
8908 }
8909
8910 /* Decode a static tracepoint marker spec. */
8911
8912 static std::vector<symtab_and_line>
8913 decode_static_tracepoint_spec (const char **arg_p)
8914 {
8915 const char *p = &(*arg_p)[3];
8916 const char *endp;
8917
8918 p = skip_spaces (p);
8919
8920 endp = skip_to_space (p);
8921
8922 std::string marker_str (p, endp - p);
8923
8924 std::vector<static_tracepoint_marker> markers
8925 = target_static_tracepoint_markers_by_strid (marker_str.c_str ());
8926 if (markers.empty ())
8927 error (_("No known static tracepoint marker named %s"),
8928 marker_str.c_str ());
8929
8930 std::vector<symtab_and_line> sals;
8931 sals.reserve (markers.size ());
8932
8933 for (const static_tracepoint_marker &marker : markers)
8934 {
8935 symtab_and_line sal = find_pc_line (marker.address, 0);
8936 sal.pc = marker.address;
8937 sals.push_back (sal);
8938 }
8939
8940 *arg_p = endp;
8941 return sals;
8942 }
8943
8944 /* Returns the breakpoint ops appropriate for use with with LOCATION_TYPE and
8945 according to IS_TRACEPOINT. */
8946
8947 static const struct breakpoint_ops *
8948 breakpoint_ops_for_location_spec_type (enum location_spec_type locspec_type,
8949 bool is_tracepoint)
8950 {
8951 if (is_tracepoint)
8952 {
8953 if (locspec_type == PROBE_LOCATION_SPEC)
8954 return &tracepoint_probe_breakpoint_ops;
8955 else
8956 return &code_breakpoint_ops;
8957 }
8958 else
8959 {
8960 if (locspec_type == PROBE_LOCATION_SPEC)
8961 return &bkpt_probe_breakpoint_ops;
8962 else
8963 return &code_breakpoint_ops;
8964 }
8965 }
8966
8967 /* See breakpoint.h. */
8968
8969 const struct breakpoint_ops *
8970 breakpoint_ops_for_location_spec (const location_spec *locspec,
8971 bool is_tracepoint)
8972 {
8973 if (locspec != nullptr)
8974 return (breakpoint_ops_for_location_spec_type
8975 (locspec->type (), is_tracepoint));
8976 return &code_breakpoint_ops;
8977 }
8978
8979 /* See breakpoint.h. */
8980
8981 int
8982 create_breakpoint (struct gdbarch *gdbarch,
8983 location_spec *locspec,
8984 const char *cond_string,
8985 int thread, const char *extra_string,
8986 bool force_condition, int parse_extra,
8987 int tempflag, enum bptype type_wanted,
8988 int ignore_count,
8989 enum auto_boolean pending_break_support,
8990 const struct breakpoint_ops *ops,
8991 int from_tty, int enabled, int internal,
8992 unsigned flags)
8993 {
8994 struct linespec_result canonical;
8995 bool pending = false;
8996 int task = -1;
8997 int prev_bkpt_count = breakpoint_count;
8998
8999 gdb_assert (ops != NULL);
9000
9001 /* If extra_string isn't useful, set it to NULL. */
9002 if (extra_string != NULL && *extra_string == '\0')
9003 extra_string = NULL;
9004
9005 try
9006 {
9007 ops->create_sals_from_location_spec (locspec, &canonical);
9008 }
9009 catch (const gdb_exception_error &e)
9010 {
9011 /* If caller is interested in rc value from parse, set
9012 value. */
9013 if (e.error == NOT_FOUND_ERROR)
9014 {
9015 /* If pending breakpoint support is turned off, throw
9016 error. */
9017
9018 if (pending_break_support == AUTO_BOOLEAN_FALSE)
9019 throw;
9020
9021 exception_print (gdb_stderr, e);
9022
9023 /* If pending breakpoint support is auto query and the user
9024 selects no, then simply return the error code. */
9025 if (pending_break_support == AUTO_BOOLEAN_AUTO
9026 && !nquery (_("Make %s pending on future shared library load? "),
9027 bptype_string (type_wanted)))
9028 return 0;
9029
9030 /* At this point, either the user was queried about setting
9031 a pending breakpoint and selected yes, or pending
9032 breakpoint behavior is on and thus a pending breakpoint
9033 is defaulted on behalf of the user. */
9034 pending = true;
9035 }
9036 else
9037 throw;
9038 }
9039
9040 if (!pending && canonical.lsals.empty ())
9041 return 0;
9042
9043 /* Resolve all line numbers to PC's and verify that the addresses
9044 are ok for the target. */
9045 if (!pending)
9046 {
9047 for (auto &lsal : canonical.lsals)
9048 breakpoint_sals_to_pc (lsal.sals);
9049 }
9050
9051 /* Fast tracepoints may have additional restrictions on location. */
9052 if (!pending && type_wanted == bp_fast_tracepoint)
9053 {
9054 for (const auto &lsal : canonical.lsals)
9055 check_fast_tracepoint_sals (gdbarch, lsal.sals);
9056 }
9057
9058 /* Verify that condition can be parsed, before setting any
9059 breakpoints. Allocate a separate condition expression for each
9060 breakpoint. */
9061 if (!pending)
9062 {
9063 gdb::unique_xmalloc_ptr<char> cond_string_copy;
9064 gdb::unique_xmalloc_ptr<char> extra_string_copy;
9065
9066 if (parse_extra)
9067 {
9068 gdb::unique_xmalloc_ptr<char> rest;
9069 gdb::unique_xmalloc_ptr<char> cond;
9070
9071 const linespec_sals &lsal = canonical.lsals[0];
9072
9073 find_condition_and_thread_for_sals (lsal.sals, extra_string,
9074 &cond, &thread, &task, &rest);
9075 cond_string_copy = std::move (cond);
9076 extra_string_copy = std::move (rest);
9077 }
9078 else
9079 {
9080 if (type_wanted != bp_dprintf
9081 && extra_string != NULL && *extra_string != '\0')
9082 error (_("Garbage '%s' at end of location"), extra_string);
9083
9084 /* Check the validity of the condition. We should error out
9085 if the condition is invalid at all of the locations and
9086 if it is not forced. In the PARSE_EXTRA case above, this
9087 check is done when parsing the EXTRA_STRING. */
9088 if (cond_string != nullptr && !force_condition)
9089 {
9090 int num_failures = 0;
9091 const linespec_sals &lsal = canonical.lsals[0];
9092 for (const auto &sal : lsal.sals)
9093 {
9094 const char *cond = cond_string;
9095 try
9096 {
9097 parse_exp_1 (&cond, sal.pc, block_for_pc (sal.pc), 0);
9098 /* One success is sufficient to keep going. */
9099 break;
9100 }
9101 catch (const gdb_exception_error &)
9102 {
9103 num_failures++;
9104 /* If this is the last sal, error out. */
9105 if (num_failures == lsal.sals.size ())
9106 throw;
9107 }
9108 }
9109 }
9110
9111 /* Create a private copy of condition string. */
9112 if (cond_string)
9113 cond_string_copy.reset (xstrdup (cond_string));
9114 /* Create a private copy of any extra string. */
9115 if (extra_string)
9116 extra_string_copy.reset (xstrdup (extra_string));
9117 }
9118
9119 ops->create_breakpoints_sal (gdbarch, &canonical,
9120 std::move (cond_string_copy),
9121 std::move (extra_string_copy),
9122 type_wanted,
9123 tempflag ? disp_del : disp_donttouch,
9124 thread, task, ignore_count,
9125 from_tty, enabled, internal, flags);
9126 }
9127 else
9128 {
9129 std::unique_ptr <breakpoint> b = new_breakpoint_from_type (gdbarch,
9130 type_wanted);
9131 b->locspec = locspec->clone ();
9132
9133 if (parse_extra)
9134 b->cond_string = NULL;
9135 else
9136 {
9137 /* Create a private copy of condition string. */
9138 b->cond_string.reset (cond_string != NULL
9139 ? xstrdup (cond_string)
9140 : NULL);
9141 b->thread = thread;
9142 }
9143
9144 /* Create a private copy of any extra string. */
9145 b->extra_string.reset (extra_string != NULL
9146 ? xstrdup (extra_string)
9147 : NULL);
9148 b->ignore_count = ignore_count;
9149 b->disposition = tempflag ? disp_del : disp_donttouch;
9150 b->condition_not_parsed = 1;
9151 b->enable_state = enabled ? bp_enabled : bp_disabled;
9152 if ((type_wanted != bp_breakpoint
9153 && type_wanted != bp_hardware_breakpoint) || thread != -1)
9154 b->pspace = current_program_space;
9155
9156 install_breakpoint (internal, std::move (b), 0);
9157 }
9158
9159 if (canonical.lsals.size () > 1)
9160 {
9161 warning (_("Multiple breakpoints were set.\nUse the "
9162 "\"delete\" command to delete unwanted breakpoints."));
9163 prev_breakpoint_count = prev_bkpt_count;
9164 }
9165
9166 update_global_location_list (UGLL_MAY_INSERT);
9167
9168 return 1;
9169 }
9170
9171 /* Set a breakpoint.
9172 ARG is a string describing breakpoint address,
9173 condition, and thread.
9174 FLAG specifies if a breakpoint is hardware on,
9175 and if breakpoint is temporary, using BP_HARDWARE_FLAG
9176 and BP_TEMPFLAG. */
9177
9178 static void
9179 break_command_1 (const char *arg, int flag, int from_tty)
9180 {
9181 int tempflag = flag & BP_TEMPFLAG;
9182 enum bptype type_wanted = (flag & BP_HARDWAREFLAG
9183 ? bp_hardware_breakpoint
9184 : bp_breakpoint);
9185
9186 location_spec_up locspec = string_to_location_spec (&arg, current_language);
9187 const struct breakpoint_ops *ops
9188 = breakpoint_ops_for_location_spec (locspec.get (),
9189 false /* is_tracepoint */);
9190
9191 create_breakpoint (get_current_arch (),
9192 locspec.get (),
9193 NULL, 0, arg, false, 1 /* parse arg */,
9194 tempflag, type_wanted,
9195 0 /* Ignore count */,
9196 pending_break_support,
9197 ops,
9198 from_tty,
9199 1 /* enabled */,
9200 0 /* internal */,
9201 0);
9202 }
9203
9204 /* Helper function for break_command_1 and disassemble_command. */
9205
9206 void
9207 resolve_sal_pc (struct symtab_and_line *sal)
9208 {
9209 CORE_ADDR pc;
9210
9211 if (sal->pc == 0 && sal->symtab != NULL)
9212 {
9213 if (!find_line_pc (sal->symtab, sal->line, &pc))
9214 error (_("No line %d in file \"%s\"."),
9215 sal->line, symtab_to_filename_for_display (sal->symtab));
9216 sal->pc = pc;
9217
9218 /* If this SAL corresponds to a breakpoint inserted using a line
9219 number, then skip the function prologue if necessary. */
9220 if (sal->explicit_line)
9221 skip_prologue_sal (sal);
9222 }
9223
9224 if (sal->section == 0 && sal->symtab != NULL)
9225 {
9226 const struct blockvector *bv;
9227 const struct block *b;
9228 struct symbol *sym;
9229
9230 bv = blockvector_for_pc_sect (sal->pc, 0, &b,
9231 sal->symtab->compunit ());
9232 if (bv != NULL)
9233 {
9234 sym = block_linkage_function (b);
9235 if (sym != NULL)
9236 sal->section
9237 = sym->obj_section (sal->symtab->compunit ()->objfile ());
9238 else
9239 {
9240 /* It really is worthwhile to have the section, so we'll
9241 just have to look harder. This case can be executed
9242 if we have line numbers but no functions (as can
9243 happen in assembly source). */
9244
9245 scoped_restore_current_pspace_and_thread restore_pspace_thread;
9246 switch_to_program_space_and_thread (sal->pspace);
9247
9248 bound_minimal_symbol msym = lookup_minimal_symbol_by_pc (sal->pc);
9249 if (msym.minsym)
9250 sal->section = msym.obj_section ();
9251 }
9252 }
9253 }
9254 }
9255
9256 void
9257 break_command (const char *arg, int from_tty)
9258 {
9259 break_command_1 (arg, 0, from_tty);
9260 }
9261
9262 void
9263 tbreak_command (const char *arg, int from_tty)
9264 {
9265 break_command_1 (arg, BP_TEMPFLAG, from_tty);
9266 }
9267
9268 static void
9269 hbreak_command (const char *arg, int from_tty)
9270 {
9271 break_command_1 (arg, BP_HARDWAREFLAG, from_tty);
9272 }
9273
9274 static void
9275 thbreak_command (const char *arg, int from_tty)
9276 {
9277 break_command_1 (arg, (BP_TEMPFLAG | BP_HARDWAREFLAG), from_tty);
9278 }
9279
9280 /* The dynamic printf command is mostly like a regular breakpoint, but
9281 with a prewired command list consisting of a single output command,
9282 built from extra arguments supplied on the dprintf command
9283 line. */
9284
9285 static void
9286 dprintf_command (const char *arg, int from_tty)
9287 {
9288 location_spec_up locspec = string_to_location_spec (&arg, current_language);
9289
9290 /* If non-NULL, ARG should have been advanced past the location;
9291 the next character must be ','. */
9292 if (arg != NULL)
9293 {
9294 if (arg[0] != ',' || arg[1] == '\0')
9295 error (_("Format string required"));
9296 else
9297 {
9298 /* Skip the comma. */
9299 ++arg;
9300 }
9301 }
9302
9303 create_breakpoint (get_current_arch (),
9304 locspec.get (),
9305 NULL, 0, arg, false, 1 /* parse arg */,
9306 0, bp_dprintf,
9307 0 /* Ignore count */,
9308 pending_break_support,
9309 &code_breakpoint_ops,
9310 from_tty,
9311 1 /* enabled */,
9312 0 /* internal */,
9313 0);
9314 }
9315
9316 static void
9317 agent_printf_command (const char *arg, int from_tty)
9318 {
9319 error (_("May only run agent-printf on the target"));
9320 }
9321
9322 /* Implement the "breakpoint_hit" method for ranged breakpoints. */
9323
9324 int
9325 ranged_breakpoint::breakpoint_hit (const struct bp_location *bl,
9326 const address_space *aspace,
9327 CORE_ADDR bp_addr,
9328 const target_waitstatus &ws)
9329 {
9330 if (ws.kind () != TARGET_WAITKIND_STOPPED
9331 || ws.sig () != GDB_SIGNAL_TRAP)
9332 return 0;
9333
9334 return breakpoint_address_match_range (bl->pspace->aspace, bl->address,
9335 bl->length, aspace, bp_addr);
9336 }
9337
9338 /* Implement the "resources_needed" method for ranged breakpoints. */
9339
9340 int
9341 ranged_breakpoint::resources_needed (const struct bp_location *bl)
9342 {
9343 return target_ranged_break_num_registers ();
9344 }
9345
9346 /* Implement the "print_it" method for ranged breakpoints. */
9347
9348 enum print_stop_action
9349 ranged_breakpoint::print_it (const bpstat *bs) const
9350 {
9351 struct bp_location *bl = loc;
9352 struct ui_out *uiout = current_uiout;
9353
9354 gdb_assert (type == bp_hardware_breakpoint);
9355
9356 /* Ranged breakpoints have only one location. */
9357 gdb_assert (bl && bl->next == NULL);
9358
9359 annotate_breakpoint (number);
9360
9361 maybe_print_thread_hit_breakpoint (uiout);
9362
9363 if (disposition == disp_del)
9364 uiout->text ("Temporary ranged breakpoint ");
9365 else
9366 uiout->text ("Ranged breakpoint ");
9367 if (uiout->is_mi_like_p ())
9368 {
9369 uiout->field_string ("reason",
9370 async_reason_lookup (EXEC_ASYNC_BREAKPOINT_HIT));
9371 uiout->field_string ("disp", bpdisp_text (disposition));
9372 }
9373 print_num_locno (bs, uiout);
9374 uiout->text (", ");
9375
9376 return PRINT_SRC_AND_LOC;
9377 }
9378
9379 /* Implement the "print_one" method for ranged breakpoints. */
9380
9381 bool
9382 ranged_breakpoint::print_one (bp_location **last_loc) const
9383 {
9384 struct bp_location *bl = loc;
9385 struct value_print_options opts;
9386 struct ui_out *uiout = current_uiout;
9387
9388 /* Ranged breakpoints have only one location. */
9389 gdb_assert (bl && bl->next == NULL);
9390
9391 get_user_print_options (&opts);
9392
9393 if (opts.addressprint)
9394 /* We don't print the address range here, it will be printed later
9395 by ranged_breakpoint::print_one_detail. */
9396 uiout->field_skip ("addr");
9397 annotate_field (5);
9398 print_breakpoint_location (this, bl);
9399 *last_loc = bl;
9400
9401 return true;
9402 }
9403
9404 /* Implement the "print_one_detail" method for ranged breakpoints. */
9405
9406 void
9407 ranged_breakpoint::print_one_detail (struct ui_out *uiout) const
9408 {
9409 CORE_ADDR address_start, address_end;
9410 struct bp_location *bl = loc;
9411 string_file stb;
9412
9413 gdb_assert (bl);
9414
9415 address_start = bl->address;
9416 address_end = address_start + bl->length - 1;
9417
9418 uiout->text ("\taddress range: ");
9419 stb.printf ("[%s, %s]",
9420 print_core_address (bl->gdbarch, address_start),
9421 print_core_address (bl->gdbarch, address_end));
9422 uiout->field_stream ("addr", stb);
9423 uiout->text ("\n");
9424 }
9425
9426 /* Implement the "print_mention" method for ranged breakpoints. */
9427
9428 void
9429 ranged_breakpoint::print_mention () const
9430 {
9431 struct bp_location *bl = loc;
9432 struct ui_out *uiout = current_uiout;
9433
9434 gdb_assert (bl);
9435 gdb_assert (type == bp_hardware_breakpoint);
9436
9437 uiout->message (_("Hardware assisted ranged breakpoint %d from %s to %s."),
9438 number, paddress (bl->gdbarch, bl->address),
9439 paddress (bl->gdbarch, bl->address + bl->length - 1));
9440 }
9441
9442 /* Implement the "print_recreate" method for ranged breakpoints. */
9443
9444 void
9445 ranged_breakpoint::print_recreate (struct ui_file *fp) const
9446 {
9447 gdb_printf (fp, "break-range %s, %s",
9448 locspec->to_string (),
9449 locspec_range_end->to_string ());
9450 print_recreate_thread (fp);
9451 }
9452
9453 /* Find the address where the end of the breakpoint range should be
9454 placed, given the SAL of the end of the range. This is so that if
9455 the user provides a line number, the end of the range is set to the
9456 last instruction of the given line. */
9457
9458 static CORE_ADDR
9459 find_breakpoint_range_end (struct symtab_and_line sal)
9460 {
9461 CORE_ADDR end;
9462
9463 /* If the user provided a PC value, use it. Otherwise,
9464 find the address of the end of the given location. */
9465 if (sal.explicit_pc)
9466 end = sal.pc;
9467 else
9468 {
9469 int ret;
9470 CORE_ADDR start;
9471
9472 ret = find_line_pc_range (sal, &start, &end);
9473 if (!ret)
9474 error (_("Could not find location of the end of the range."));
9475
9476 /* find_line_pc_range returns the start of the next line. */
9477 end--;
9478 }
9479
9480 return end;
9481 }
9482
9483 /* Implement the "break-range" CLI command. */
9484
9485 static void
9486 break_range_command (const char *arg, int from_tty)
9487 {
9488 const char *arg_start;
9489 struct linespec_result canonical_start, canonical_end;
9490 int bp_count, can_use_bp, length;
9491 CORE_ADDR end;
9492
9493 /* We don't support software ranged breakpoints. */
9494 if (target_ranged_break_num_registers () < 0)
9495 error (_("This target does not support hardware ranged breakpoints."));
9496
9497 bp_count = hw_breakpoint_used_count ();
9498 bp_count += target_ranged_break_num_registers ();
9499 can_use_bp = target_can_use_hardware_watchpoint (bp_hardware_breakpoint,
9500 bp_count, 0);
9501 if (can_use_bp < 0)
9502 error (_("Hardware breakpoints used exceeds limit."));
9503
9504 arg = skip_spaces (arg);
9505 if (arg == NULL || arg[0] == '\0')
9506 error(_("No address range specified."));
9507
9508 arg_start = arg;
9509 location_spec_up start_locspec
9510 = string_to_location_spec (&arg, current_language);
9511 parse_breakpoint_sals (start_locspec.get (), &canonical_start);
9512
9513 if (arg[0] != ',')
9514 error (_("Too few arguments."));
9515 else if (canonical_start.lsals.empty ())
9516 error (_("Could not find location of the beginning of the range."));
9517
9518 const linespec_sals &lsal_start = canonical_start.lsals[0];
9519
9520 if (canonical_start.lsals.size () > 1
9521 || lsal_start.sals.size () != 1)
9522 error (_("Cannot create a ranged breakpoint with multiple locations."));
9523
9524 const symtab_and_line &sal_start = lsal_start.sals[0];
9525 std::string addr_string_start (arg_start, arg - arg_start);
9526
9527 arg++; /* Skip the comma. */
9528 arg = skip_spaces (arg);
9529
9530 /* Parse the end location specification. */
9531
9532 arg_start = arg;
9533
9534 /* We call decode_line_full directly here instead of using
9535 parse_breakpoint_sals because we need to specify the start
9536 location spec's symtab and line as the default symtab and line
9537 for the end of the range. This makes it possible to have ranges
9538 like "foo.c:27, +14", where +14 means 14 lines from the start
9539 location spec. */
9540 location_spec_up end_locspec
9541 = string_to_location_spec (&arg, current_language);
9542 decode_line_full (end_locspec.get (), DECODE_LINE_FUNFIRSTLINE, NULL,
9543 sal_start.symtab, sal_start.line,
9544 &canonical_end, NULL, NULL);
9545
9546 if (canonical_end.lsals.empty ())
9547 error (_("Could not find location of the end of the range."));
9548
9549 const linespec_sals &lsal_end = canonical_end.lsals[0];
9550 if (canonical_end.lsals.size () > 1
9551 || lsal_end.sals.size () != 1)
9552 error (_("Cannot create a ranged breakpoint with multiple locations."));
9553
9554 const symtab_and_line &sal_end = lsal_end.sals[0];
9555
9556 end = find_breakpoint_range_end (sal_end);
9557 if (sal_start.pc > end)
9558 error (_("Invalid address range, end precedes start."));
9559
9560 length = end - sal_start.pc + 1;
9561 if (length < 0)
9562 /* Length overflowed. */
9563 error (_("Address range too large."));
9564 else if (length == 1)
9565 {
9566 /* This range is simple enough to be handled by
9567 the `hbreak' command. */
9568 hbreak_command (&addr_string_start[0], 1);
9569
9570 return;
9571 }
9572
9573 /* Now set up the breakpoint and install it. */
9574
9575 std::unique_ptr<breakpoint> br
9576 (new ranged_breakpoint (get_current_arch (),
9577 sal_start, length,
9578 std::move (start_locspec),
9579 std::move (end_locspec)));
9580
9581 install_breakpoint (false, std::move (br), true);
9582 }
9583
9584 /* Return non-zero if EXP is verified as constant. Returned zero
9585 means EXP is variable. Also the constant detection may fail for
9586 some constant expressions and in such case still falsely return
9587 zero. */
9588
9589 static bool
9590 watchpoint_exp_is_const (const struct expression *exp)
9591 {
9592 return exp->op->constant_p ();
9593 }
9594
9595 /* Implement the "re_set" method for watchpoints. */
9596
9597 void
9598 watchpoint::re_set ()
9599 {
9600 /* Watchpoint can be either on expression using entirely global
9601 variables, or it can be on local variables.
9602
9603 Watchpoints of the first kind are never auto-deleted, and even
9604 persist across program restarts. Since they can use variables
9605 from shared libraries, we need to reparse expression as libraries
9606 are loaded and unloaded.
9607
9608 Watchpoints on local variables can also change meaning as result
9609 of solib event. For example, if a watchpoint uses both a local
9610 and a global variables in expression, it's a local watchpoint,
9611 but unloading of a shared library will make the expression
9612 invalid. This is not a very common use case, but we still
9613 re-evaluate expression, to avoid surprises to the user.
9614
9615 Note that for local watchpoints, we re-evaluate it only if
9616 watchpoints frame id is still valid. If it's not, it means the
9617 watchpoint is out of scope and will be deleted soon. In fact,
9618 I'm not sure we'll ever be called in this case.
9619
9620 If a local watchpoint's frame id is still valid, then
9621 exp_valid_block is likewise valid, and we can safely use it.
9622
9623 Don't do anything about disabled watchpoints, since they will be
9624 reevaluated again when enabled. */
9625 update_watchpoint (this, true /* reparse */);
9626 }
9627
9628 /* Implement the "insert" method for hardware watchpoints. */
9629
9630 int
9631 watchpoint::insert_location (struct bp_location *bl)
9632 {
9633 int length = exact ? 1 : bl->length;
9634
9635 return target_insert_watchpoint (bl->address, length, bl->watchpoint_type,
9636 cond_exp.get ());
9637 }
9638
9639 /* Implement the "remove" method for hardware watchpoints. */
9640
9641 int
9642 watchpoint::remove_location (struct bp_location *bl,
9643 enum remove_bp_reason reason)
9644 {
9645 int length = exact ? 1 : bl->length;
9646
9647 return target_remove_watchpoint (bl->address, length, bl->watchpoint_type,
9648 cond_exp.get ());
9649 }
9650
9651 int
9652 watchpoint::breakpoint_hit (const struct bp_location *bl,
9653 const address_space *aspace, CORE_ADDR bp_addr,
9654 const target_waitstatus &ws)
9655 {
9656 struct breakpoint *b = bl->owner;
9657
9658 /* Continuable hardware watchpoints are treated as non-existent if the
9659 reason we stopped wasn't a hardware watchpoint (we didn't stop on
9660 some data address). Otherwise gdb won't stop on a break instruction
9661 in the code (not from a breakpoint) when a hardware watchpoint has
9662 been defined. Also skip watchpoints which we know did not trigger
9663 (did not match the data address). */
9664 if (is_hardware_watchpoint (b)
9665 && watchpoint_triggered == watch_triggered_no)
9666 return 0;
9667
9668 return 1;
9669 }
9670
9671 void
9672 watchpoint::check_status (bpstat *bs)
9673 {
9674 gdb_assert (is_watchpoint (bs->breakpoint_at));
9675
9676 bpstat_check_watchpoint (bs);
9677 }
9678
9679 /* Implement the "resources_needed" method for hardware
9680 watchpoints. */
9681
9682 int
9683 watchpoint::resources_needed (const struct bp_location *bl)
9684 {
9685 int length = exact? 1 : bl->length;
9686
9687 return target_region_ok_for_hw_watchpoint (bl->address, length);
9688 }
9689
9690 /* Implement the "works_in_software_mode" method for hardware
9691 watchpoints. */
9692
9693 bool
9694 watchpoint::works_in_software_mode () const
9695 {
9696 /* Read and access watchpoints only work with hardware support. */
9697 return type == bp_watchpoint || type == bp_hardware_watchpoint;
9698 }
9699
9700 enum print_stop_action
9701 watchpoint::print_it (const bpstat *bs) const
9702 {
9703 struct breakpoint *b;
9704 enum print_stop_action result;
9705 struct ui_out *uiout = current_uiout;
9706
9707 gdb_assert (bs->bp_location_at != NULL);
9708
9709 b = bs->breakpoint_at;
9710
9711 annotate_watchpoint (b->number);
9712 maybe_print_thread_hit_breakpoint (uiout);
9713
9714 string_file stb;
9715
9716 gdb::optional<ui_out_emit_tuple> tuple_emitter;
9717 switch (b->type)
9718 {
9719 case bp_watchpoint:
9720 case bp_hardware_watchpoint:
9721 if (uiout->is_mi_like_p ())
9722 uiout->field_string
9723 ("reason", async_reason_lookup (EXEC_ASYNC_WATCHPOINT_TRIGGER));
9724 mention (b);
9725 tuple_emitter.emplace (uiout, "value");
9726 uiout->text ("\nOld value = ");
9727 watchpoint_value_print (bs->old_val.get (), &stb);
9728 uiout->field_stream ("old", stb);
9729 uiout->text ("\nNew value = ");
9730 watchpoint_value_print (val.get (), &stb);
9731 uiout->field_stream ("new", stb);
9732 uiout->text ("\n");
9733 /* More than one watchpoint may have been triggered. */
9734 result = PRINT_UNKNOWN;
9735 break;
9736
9737 case bp_read_watchpoint:
9738 if (uiout->is_mi_like_p ())
9739 uiout->field_string
9740 ("reason", async_reason_lookup (EXEC_ASYNC_READ_WATCHPOINT_TRIGGER));
9741 mention (b);
9742 tuple_emitter.emplace (uiout, "value");
9743 uiout->text ("\nValue = ");
9744 watchpoint_value_print (val.get (), &stb);
9745 uiout->field_stream ("value", stb);
9746 uiout->text ("\n");
9747 result = PRINT_UNKNOWN;
9748 break;
9749
9750 case bp_access_watchpoint:
9751 if (bs->old_val != NULL)
9752 {
9753 if (uiout->is_mi_like_p ())
9754 uiout->field_string
9755 ("reason",
9756 async_reason_lookup (EXEC_ASYNC_ACCESS_WATCHPOINT_TRIGGER));
9757 mention (b);
9758 tuple_emitter.emplace (uiout, "value");
9759 uiout->text ("\nOld value = ");
9760 watchpoint_value_print (bs->old_val.get (), &stb);
9761 uiout->field_stream ("old", stb);
9762 uiout->text ("\nNew value = ");
9763 }
9764 else
9765 {
9766 mention (b);
9767 if (uiout->is_mi_like_p ())
9768 uiout->field_string
9769 ("reason",
9770 async_reason_lookup (EXEC_ASYNC_ACCESS_WATCHPOINT_TRIGGER));
9771 tuple_emitter.emplace (uiout, "value");
9772 uiout->text ("\nValue = ");
9773 }
9774 watchpoint_value_print (val.get (), &stb);
9775 uiout->field_stream ("new", stb);
9776 uiout->text ("\n");
9777 result = PRINT_UNKNOWN;
9778 break;
9779 default:
9780 result = PRINT_UNKNOWN;
9781 }
9782
9783 return result;
9784 }
9785
9786 /* Implement the "print_mention" method for hardware watchpoints. */
9787
9788 void
9789 watchpoint::print_mention () const
9790 {
9791 struct ui_out *uiout = current_uiout;
9792 const char *tuple_name;
9793
9794 switch (type)
9795 {
9796 case bp_watchpoint:
9797 uiout->text ("Watchpoint ");
9798 tuple_name = "wpt";
9799 break;
9800 case bp_hardware_watchpoint:
9801 uiout->text ("Hardware watchpoint ");
9802 tuple_name = "wpt";
9803 break;
9804 case bp_read_watchpoint:
9805 uiout->text ("Hardware read watchpoint ");
9806 tuple_name = "hw-rwpt";
9807 break;
9808 case bp_access_watchpoint:
9809 uiout->text ("Hardware access (read/write) watchpoint ");
9810 tuple_name = "hw-awpt";
9811 break;
9812 default:
9813 internal_error (_("Invalid hardware watchpoint type."));
9814 }
9815
9816 ui_out_emit_tuple tuple_emitter (uiout, tuple_name);
9817 uiout->field_signed ("number", number);
9818 uiout->text (": ");
9819 uiout->field_string ("exp", exp_string.get ());
9820 }
9821
9822 /* Implement the "print_recreate" method for watchpoints. */
9823
9824 void
9825 watchpoint::print_recreate (struct ui_file *fp) const
9826 {
9827 switch (type)
9828 {
9829 case bp_watchpoint:
9830 case bp_hardware_watchpoint:
9831 gdb_printf (fp, "watch");
9832 break;
9833 case bp_read_watchpoint:
9834 gdb_printf (fp, "rwatch");
9835 break;
9836 case bp_access_watchpoint:
9837 gdb_printf (fp, "awatch");
9838 break;
9839 default:
9840 internal_error (_("Invalid watchpoint type."));
9841 }
9842
9843 gdb_printf (fp, " %s", exp_string.get ());
9844 print_recreate_thread (fp);
9845 }
9846
9847 /* Implement the "explains_signal" method for watchpoints. */
9848
9849 bool
9850 watchpoint::explains_signal (enum gdb_signal sig)
9851 {
9852 /* A software watchpoint cannot cause a signal other than
9853 GDB_SIGNAL_TRAP. */
9854 if (type == bp_watchpoint && sig != GDB_SIGNAL_TRAP)
9855 return false;
9856
9857 return true;
9858 }
9859
9860 struct masked_watchpoint : public watchpoint
9861 {
9862 using watchpoint::watchpoint;
9863
9864 int insert_location (struct bp_location *) override;
9865 int remove_location (struct bp_location *,
9866 enum remove_bp_reason reason) override;
9867 int resources_needed (const struct bp_location *) override;
9868 bool works_in_software_mode () const override;
9869 enum print_stop_action print_it (const bpstat *bs) const override;
9870 void print_one_detail (struct ui_out *) const override;
9871 void print_mention () const override;
9872 void print_recreate (struct ui_file *fp) const override;
9873 };
9874
9875 /* Implement the "insert" method for masked hardware watchpoints. */
9876
9877 int
9878 masked_watchpoint::insert_location (struct bp_location *bl)
9879 {
9880 return target_insert_mask_watchpoint (bl->address, hw_wp_mask,
9881 bl->watchpoint_type);
9882 }
9883
9884 /* Implement the "remove" method for masked hardware watchpoints. */
9885
9886 int
9887 masked_watchpoint::remove_location (struct bp_location *bl,
9888 enum remove_bp_reason reason)
9889 {
9890 return target_remove_mask_watchpoint (bl->address, hw_wp_mask,
9891 bl->watchpoint_type);
9892 }
9893
9894 /* Implement the "resources_needed" method for masked hardware
9895 watchpoints. */
9896
9897 int
9898 masked_watchpoint::resources_needed (const struct bp_location *bl)
9899 {
9900 return target_masked_watch_num_registers (bl->address, hw_wp_mask);
9901 }
9902
9903 /* Implement the "works_in_software_mode" method for masked hardware
9904 watchpoints. */
9905
9906 bool
9907 masked_watchpoint::works_in_software_mode () const
9908 {
9909 return false;
9910 }
9911
9912 /* Implement the "print_it" method for masked hardware
9913 watchpoints. */
9914
9915 enum print_stop_action
9916 masked_watchpoint::print_it (const bpstat *bs) const
9917 {
9918 struct breakpoint *b = bs->breakpoint_at;
9919 struct ui_out *uiout = current_uiout;
9920
9921 /* Masked watchpoints have only one location. */
9922 gdb_assert (b->loc && b->loc->next == NULL);
9923
9924 annotate_watchpoint (b->number);
9925 maybe_print_thread_hit_breakpoint (uiout);
9926
9927 switch (b->type)
9928 {
9929 case bp_hardware_watchpoint:
9930 if (uiout->is_mi_like_p ())
9931 uiout->field_string
9932 ("reason", async_reason_lookup (EXEC_ASYNC_WATCHPOINT_TRIGGER));
9933 break;
9934
9935 case bp_read_watchpoint:
9936 if (uiout->is_mi_like_p ())
9937 uiout->field_string
9938 ("reason", async_reason_lookup (EXEC_ASYNC_READ_WATCHPOINT_TRIGGER));
9939 break;
9940
9941 case bp_access_watchpoint:
9942 if (uiout->is_mi_like_p ())
9943 uiout->field_string
9944 ("reason",
9945 async_reason_lookup (EXEC_ASYNC_ACCESS_WATCHPOINT_TRIGGER));
9946 break;
9947 default:
9948 internal_error (_("Invalid hardware watchpoint type."));
9949 }
9950
9951 mention (b);
9952 uiout->text (_("\n\
9953 Check the underlying instruction at PC for the memory\n\
9954 address and value which triggered this watchpoint.\n"));
9955 uiout->text ("\n");
9956
9957 /* More than one watchpoint may have been triggered. */
9958 return PRINT_UNKNOWN;
9959 }
9960
9961 /* Implement the "print_one_detail" method for masked hardware
9962 watchpoints. */
9963
9964 void
9965 masked_watchpoint::print_one_detail (struct ui_out *uiout) const
9966 {
9967 /* Masked watchpoints have only one location. */
9968 gdb_assert (loc && loc->next == NULL);
9969
9970 uiout->text ("\tmask ");
9971 uiout->field_core_addr ("mask", loc->gdbarch, hw_wp_mask);
9972 uiout->text ("\n");
9973 }
9974
9975 /* Implement the "print_mention" method for masked hardware
9976 watchpoints. */
9977
9978 void
9979 masked_watchpoint::print_mention () const
9980 {
9981 struct ui_out *uiout = current_uiout;
9982 const char *tuple_name;
9983
9984 switch (type)
9985 {
9986 case bp_hardware_watchpoint:
9987 uiout->text ("Masked hardware watchpoint ");
9988 tuple_name = "wpt";
9989 break;
9990 case bp_read_watchpoint:
9991 uiout->text ("Masked hardware read watchpoint ");
9992 tuple_name = "hw-rwpt";
9993 break;
9994 case bp_access_watchpoint:
9995 uiout->text ("Masked hardware access (read/write) watchpoint ");
9996 tuple_name = "hw-awpt";
9997 break;
9998 default:
9999 internal_error (_("Invalid hardware watchpoint type."));
10000 }
10001
10002 ui_out_emit_tuple tuple_emitter (uiout, tuple_name);
10003 uiout->field_signed ("number", number);
10004 uiout->text (": ");
10005 uiout->field_string ("exp", exp_string.get ());
10006 }
10007
10008 /* Implement the "print_recreate" method for masked hardware
10009 watchpoints. */
10010
10011 void
10012 masked_watchpoint::print_recreate (struct ui_file *fp) const
10013 {
10014 switch (type)
10015 {
10016 case bp_hardware_watchpoint:
10017 gdb_printf (fp, "watch");
10018 break;
10019 case bp_read_watchpoint:
10020 gdb_printf (fp, "rwatch");
10021 break;
10022 case bp_access_watchpoint:
10023 gdb_printf (fp, "awatch");
10024 break;
10025 default:
10026 internal_error (_("Invalid hardware watchpoint type."));
10027 }
10028
10029 gdb_printf (fp, " %s mask 0x%s", exp_string.get (),
10030 phex (hw_wp_mask, sizeof (CORE_ADDR)));
10031 print_recreate_thread (fp);
10032 }
10033
10034 /* Tell whether the given watchpoint is a masked hardware watchpoint. */
10035
10036 static bool
10037 is_masked_watchpoint (const struct breakpoint *b)
10038 {
10039 return dynamic_cast<const masked_watchpoint *> (b) != nullptr;
10040 }
10041
10042 /* accessflag: hw_write: watch write,
10043 hw_read: watch read,
10044 hw_access: watch access (read or write) */
10045 static void
10046 watch_command_1 (const char *arg, int accessflag, int from_tty,
10047 bool just_location, bool internal)
10048 {
10049 struct breakpoint *scope_breakpoint = NULL;
10050 const struct block *exp_valid_block = NULL, *cond_exp_valid_block = NULL;
10051 struct value *result;
10052 int saved_bitpos = 0, saved_bitsize = 0;
10053 const char *exp_start = NULL;
10054 const char *exp_end = NULL;
10055 const char *tok, *end_tok;
10056 int toklen = -1;
10057 const char *cond_start = NULL;
10058 const char *cond_end = NULL;
10059 enum bptype bp_type;
10060 int thread = -1;
10061 /* Flag to indicate whether we are going to use masks for
10062 the hardware watchpoint. */
10063 bool use_mask = false;
10064 CORE_ADDR mask = 0;
10065 int task = -1;
10066
10067 /* Make sure that we actually have parameters to parse. */
10068 if (arg != NULL && arg[0] != '\0')
10069 {
10070 const char *value_start;
10071
10072 exp_end = arg + strlen (arg);
10073
10074 /* Look for "parameter value" pairs at the end
10075 of the arguments string. */
10076 for (tok = exp_end - 1; tok > arg; tok--)
10077 {
10078 /* Skip whitespace at the end of the argument list. */
10079 while (tok > arg && (*tok == ' ' || *tok == '\t'))
10080 tok--;
10081
10082 /* Find the beginning of the last token.
10083 This is the value of the parameter. */
10084 while (tok > arg && (*tok != ' ' && *tok != '\t'))
10085 tok--;
10086 value_start = tok + 1;
10087
10088 /* Skip whitespace. */
10089 while (tok > arg && (*tok == ' ' || *tok == '\t'))
10090 tok--;
10091
10092 end_tok = tok;
10093
10094 /* Find the beginning of the second to last token.
10095 This is the parameter itself. */
10096 while (tok > arg && (*tok != ' ' && *tok != '\t'))
10097 tok--;
10098 tok++;
10099 toklen = end_tok - tok + 1;
10100
10101 if (toklen == 6 && startswith (tok, "thread"))
10102 {
10103 struct thread_info *thr;
10104 /* At this point we've found a "thread" token, which means
10105 the user is trying to set a watchpoint that triggers
10106 only in a specific thread. */
10107 const char *endp;
10108
10109 if (thread != -1)
10110 error(_("You can specify only one thread."));
10111
10112 if (task != -1)
10113 error (_("You can specify only one of thread or task."));
10114
10115 /* Extract the thread ID from the next token. */
10116 thr = parse_thread_id (value_start, &endp);
10117
10118 /* Check if the user provided a valid thread ID. */
10119 if (*endp != ' ' && *endp != '\t' && *endp != '\0')
10120 invalid_thread_id_error (value_start);
10121
10122 thread = thr->global_num;
10123 }
10124 else if (toklen == 4 && startswith (tok, "task"))
10125 {
10126 char *tmp;
10127
10128 if (task != -1)
10129 error(_("You can specify only one task."));
10130
10131 if (thread != -1)
10132 error (_("You can specify only one of thread or task."));
10133
10134 task = strtol (value_start, &tmp, 0);
10135 if (tmp == value_start)
10136 error (_("Junk after task keyword."));
10137 if (!valid_task_id (task))
10138 error (_("Unknown task %d."), task);
10139 }
10140 else if (toklen == 4 && startswith (tok, "mask"))
10141 {
10142 /* We've found a "mask" token, which means the user wants to
10143 create a hardware watchpoint that is going to have the mask
10144 facility. */
10145 struct value *mask_value;
10146
10147 if (use_mask)
10148 error(_("You can specify only one mask."));
10149
10150 use_mask = just_location = true;
10151
10152 scoped_value_mark mark;
10153 mask_value = parse_to_comma_and_eval (&value_start);
10154 mask = value_as_address (mask_value);
10155 }
10156 else
10157 /* We didn't recognize what we found. We should stop here. */
10158 break;
10159
10160 /* Truncate the string and get rid of the "parameter value" pair before
10161 the arguments string is parsed by the parse_exp_1 function. */
10162 exp_end = tok;
10163 }
10164 }
10165 else
10166 exp_end = arg;
10167
10168 /* Parse the rest of the arguments. From here on out, everything
10169 is in terms of a newly allocated string instead of the original
10170 ARG. */
10171 std::string expression (arg, exp_end - arg);
10172 exp_start = arg = expression.c_str ();
10173 innermost_block_tracker tracker;
10174 expression_up exp = parse_exp_1 (&arg, 0, 0, 0, &tracker);
10175 exp_end = arg;
10176 /* Remove trailing whitespace from the expression before saving it.
10177 This makes the eventual display of the expression string a bit
10178 prettier. */
10179 while (exp_end > exp_start && (exp_end[-1] == ' ' || exp_end[-1] == '\t'))
10180 --exp_end;
10181
10182 /* Checking if the expression is not constant. */
10183 if (watchpoint_exp_is_const (exp.get ()))
10184 {
10185 int len;
10186
10187 len = exp_end - exp_start;
10188 while (len > 0 && isspace (exp_start[len - 1]))
10189 len--;
10190 error (_("Cannot watch constant value `%.*s'."), len, exp_start);
10191 }
10192
10193 exp_valid_block = tracker.block ();
10194 struct value *mark = value_mark ();
10195 struct value *val_as_value = nullptr;
10196 fetch_subexp_value (exp.get (), exp->op.get (), &val_as_value, &result, NULL,
10197 just_location);
10198
10199 if (val_as_value != NULL && just_location)
10200 {
10201 saved_bitpos = val_as_value->bitpos ();
10202 saved_bitsize = val_as_value->bitsize ();
10203 }
10204
10205 value_ref_ptr val;
10206 if (just_location)
10207 {
10208 int ret;
10209
10210 exp_valid_block = NULL;
10211 val = release_value (value_addr (result));
10212 value_free_to_mark (mark);
10213
10214 if (use_mask)
10215 {
10216 ret = target_masked_watch_num_registers (value_as_address (val.get ()),
10217 mask);
10218 if (ret == -1)
10219 error (_("This target does not support masked watchpoints."));
10220 else if (ret == -2)
10221 error (_("Invalid mask or memory region."));
10222 }
10223 }
10224 else if (val_as_value != NULL)
10225 val = release_value (val_as_value);
10226
10227 tok = skip_spaces (arg);
10228 end_tok = skip_to_space (tok);
10229
10230 toklen = end_tok - tok;
10231 if (toklen >= 1 && strncmp (tok, "if", toklen) == 0)
10232 {
10233 tok = cond_start = end_tok + 1;
10234 innermost_block_tracker if_tracker;
10235 parse_exp_1 (&tok, 0, 0, 0, &if_tracker);
10236
10237 /* The watchpoint expression may not be local, but the condition
10238 may still be. E.g.: `watch global if local > 0'. */
10239 cond_exp_valid_block = if_tracker.block ();
10240
10241 cond_end = tok;
10242 }
10243 if (*tok)
10244 error (_("Junk at end of command."));
10245
10246 frame_info_ptr wp_frame = block_innermost_frame (exp_valid_block);
10247
10248 /* Save this because create_internal_breakpoint below invalidates
10249 'wp_frame'. */
10250 frame_id watchpoint_frame = get_frame_id (wp_frame);
10251
10252 /* If the expression is "local", then set up a "watchpoint scope"
10253 breakpoint at the point where we've left the scope of the watchpoint
10254 expression. Create the scope breakpoint before the watchpoint, so
10255 that we will encounter it first in bpstat_stop_status. */
10256 if (exp_valid_block != NULL && wp_frame != NULL)
10257 {
10258 frame_id caller_frame_id = frame_unwind_caller_id (wp_frame);
10259
10260 if (frame_id_p (caller_frame_id))
10261 {
10262 gdbarch *caller_arch = frame_unwind_caller_arch (wp_frame);
10263 CORE_ADDR caller_pc = frame_unwind_caller_pc (wp_frame);
10264
10265 scope_breakpoint
10266 = create_internal_breakpoint (caller_arch, caller_pc,
10267 bp_watchpoint_scope);
10268
10269 /* create_internal_breakpoint could invalidate WP_FRAME. */
10270 wp_frame = NULL;
10271
10272 scope_breakpoint->enable_state = bp_enabled;
10273
10274 /* Automatically delete the breakpoint when it hits. */
10275 scope_breakpoint->disposition = disp_del;
10276
10277 /* Only break in the proper frame (help with recursion). */
10278 scope_breakpoint->frame_id = caller_frame_id;
10279
10280 /* Set the address at which we will stop. */
10281 scope_breakpoint->loc->gdbarch = caller_arch;
10282 scope_breakpoint->loc->requested_address = caller_pc;
10283 scope_breakpoint->loc->address
10284 = adjust_breakpoint_address (scope_breakpoint->loc->gdbarch,
10285 scope_breakpoint->loc->requested_address,
10286 scope_breakpoint->type,
10287 current_program_space);
10288 }
10289 }
10290
10291 /* Now set up the breakpoint. We create all watchpoints as hardware
10292 watchpoints here even if hardware watchpoints are turned off, a call
10293 to update_watchpoint later in this function will cause the type to
10294 drop back to bp_watchpoint (software watchpoint) if required. */
10295
10296 if (accessflag == hw_read)
10297 bp_type = bp_read_watchpoint;
10298 else if (accessflag == hw_access)
10299 bp_type = bp_access_watchpoint;
10300 else
10301 bp_type = bp_hardware_watchpoint;
10302
10303 std::unique_ptr<watchpoint> w;
10304 if (use_mask)
10305 w.reset (new masked_watchpoint (nullptr, bp_type));
10306 else
10307 w.reset (new watchpoint (nullptr, bp_type));
10308
10309 /* At most one of thread or task can be set on a watchpoint. */
10310 gdb_assert (thread == -1 || task == -1);
10311 w->thread = thread;
10312 w->task = task;
10313 w->disposition = disp_donttouch;
10314 w->pspace = current_program_space;
10315 w->exp = std::move (exp);
10316 w->exp_valid_block = exp_valid_block;
10317 w->cond_exp_valid_block = cond_exp_valid_block;
10318 if (just_location)
10319 {
10320 struct type *t = val.get ()->type ();
10321 CORE_ADDR addr = value_as_address (val.get ());
10322
10323 w->exp_string_reparse
10324 = current_language->watch_location_expression (t, addr);
10325
10326 w->exp_string = xstrprintf ("-location %.*s",
10327 (int) (exp_end - exp_start), exp_start);
10328 }
10329 else
10330 w->exp_string.reset (savestring (exp_start, exp_end - exp_start));
10331
10332 if (use_mask)
10333 {
10334 w->hw_wp_mask = mask;
10335 }
10336 else
10337 {
10338 w->val = val;
10339 w->val_bitpos = saved_bitpos;
10340 w->val_bitsize = saved_bitsize;
10341 w->val_valid = true;
10342 }
10343
10344 if (cond_start)
10345 w->cond_string.reset (savestring (cond_start, cond_end - cond_start));
10346 else
10347 w->cond_string = 0;
10348
10349 if (frame_id_p (watchpoint_frame))
10350 {
10351 w->watchpoint_frame = watchpoint_frame;
10352 w->watchpoint_thread = inferior_ptid;
10353 }
10354 else
10355 {
10356 w->watchpoint_frame = null_frame_id;
10357 w->watchpoint_thread = null_ptid;
10358 }
10359
10360 if (scope_breakpoint != NULL)
10361 {
10362 /* The scope breakpoint is related to the watchpoint. We will
10363 need to act on them together. */
10364 w->related_breakpoint = scope_breakpoint;
10365 scope_breakpoint->related_breakpoint = w.get ();
10366 }
10367
10368 if (!just_location)
10369 value_free_to_mark (mark);
10370
10371 /* Finally update the new watchpoint. This creates the locations
10372 that should be inserted. */
10373 update_watchpoint (w.get (), true /* reparse */);
10374
10375 install_breakpoint (internal, std::move (w), 1);
10376 }
10377
10378 /* Return count of debug registers needed to watch the given expression.
10379 If the watchpoint cannot be handled in hardware return zero. */
10380
10381 static int
10382 can_use_hardware_watchpoint (const std::vector<value_ref_ptr> &vals)
10383 {
10384 int found_memory_cnt = 0;
10385
10386 /* Did the user specifically forbid us to use hardware watchpoints? */
10387 if (!can_use_hw_watchpoints)
10388 return 0;
10389
10390 gdb_assert (!vals.empty ());
10391 struct value *head = vals[0].get ();
10392
10393 /* Make sure that the value of the expression depends only upon
10394 memory contents, and values computed from them within GDB. If we
10395 find any register references or function calls, we can't use a
10396 hardware watchpoint.
10397
10398 The idea here is that evaluating an expression generates a series
10399 of values, one holding the value of every subexpression. (The
10400 expression a*b+c has five subexpressions: a, b, a*b, c, and
10401 a*b+c.) GDB's values hold almost enough information to establish
10402 the criteria given above --- they identify memory lvalues,
10403 register lvalues, computed values, etcetera. So we can evaluate
10404 the expression, and then scan the chain of values that leaves
10405 behind to decide whether we can detect any possible change to the
10406 expression's final value using only hardware watchpoints.
10407
10408 However, I don't think that the values returned by inferior
10409 function calls are special in any way. So this function may not
10410 notice that an expression involving an inferior function call
10411 can't be watched with hardware watchpoints. FIXME. */
10412 for (const value_ref_ptr &iter : vals)
10413 {
10414 struct value *v = iter.get ();
10415
10416 if (VALUE_LVAL (v) == lval_memory)
10417 {
10418 if (v != head && value_lazy (v))
10419 /* A lazy memory lvalue in the chain is one that GDB never
10420 needed to fetch; we either just used its address (e.g.,
10421 `a' in `a.b') or we never needed it at all (e.g., `a'
10422 in `a,b'). This doesn't apply to HEAD; if that is
10423 lazy then it was not readable, but watch it anyway. */
10424 ;
10425 else
10426 {
10427 /* Ahh, memory we actually used! Check if we can cover
10428 it with hardware watchpoints. */
10429 struct type *vtype = check_typedef (v->type ());
10430
10431 /* We only watch structs and arrays if user asked for it
10432 explicitly, never if they just happen to appear in a
10433 middle of some value chain. */
10434 if (v == head
10435 || (vtype->code () != TYPE_CODE_STRUCT
10436 && vtype->code () != TYPE_CODE_ARRAY))
10437 {
10438 CORE_ADDR vaddr = value_address (v);
10439 int len;
10440 int num_regs;
10441
10442 len = (target_exact_watchpoints
10443 && is_scalar_type_recursive (vtype))?
10444 1 : v->type ()->length ();
10445
10446 num_regs = target_region_ok_for_hw_watchpoint (vaddr, len);
10447 if (!num_regs)
10448 return 0;
10449 else
10450 found_memory_cnt += num_regs;
10451 }
10452 }
10453 }
10454 else if (VALUE_LVAL (v) != not_lval
10455 && v->deprecated_modifiable () == 0)
10456 return 0; /* These are values from the history (e.g., $1). */
10457 else if (VALUE_LVAL (v) == lval_register)
10458 return 0; /* Cannot watch a register with a HW watchpoint. */
10459 }
10460
10461 /* The expression itself looks suitable for using a hardware
10462 watchpoint, but give the target machine a chance to reject it. */
10463 return found_memory_cnt;
10464 }
10465
10466 void
10467 watch_command_wrapper (const char *arg, int from_tty, bool internal)
10468 {
10469 watch_command_1 (arg, hw_write, from_tty, 0, internal);
10470 }
10471
10472 /* Options for the watch, awatch, and rwatch commands. */
10473
10474 struct watch_options
10475 {
10476 /* For -location. */
10477 bool location = false;
10478 };
10479
10480 /* Definitions of options for the "watch", "awatch", and "rwatch" commands.
10481
10482 Historically GDB always accepted both '-location' and '-l' flags for
10483 these commands (both flags being synonyms). When converting to the
10484 newer option scheme only '-location' is added here. That's fine (for
10485 backward compatibility) as any non-ambiguous prefix of a flag will be
10486 accepted, so '-l', '-loc', are now all accepted.
10487
10488 What this means is that, if in the future, we add any new flag here
10489 that starts with '-l' then this will break backward compatibility, so
10490 please, don't do that! */
10491
10492 static const gdb::option::option_def watch_option_defs[] = {
10493 gdb::option::flag_option_def<watch_options> {
10494 "location",
10495 [] (watch_options *opt) { return &opt->location; },
10496 N_("\
10497 This evaluates EXPRESSION and watches the memory to which is refers.\n\
10498 -l can be used as a short form of -location."),
10499 },
10500 };
10501
10502 /* Returns the option group used by 'watch', 'awatch', and 'rwatch'
10503 commands. */
10504
10505 static gdb::option::option_def_group
10506 make_watch_options_def_group (watch_options *opts)
10507 {
10508 return {{watch_option_defs}, opts};
10509 }
10510
10511 /* A helper function that looks for the "-location" argument and then
10512 calls watch_command_1. */
10513
10514 static void
10515 watch_maybe_just_location (const char *arg, int accessflag, int from_tty)
10516 {
10517 watch_options opts;
10518 auto grp = make_watch_options_def_group (&opts);
10519 gdb::option::process_options
10520 (&arg, gdb::option::PROCESS_OPTIONS_UNKNOWN_IS_OPERAND, grp);
10521 if (arg != nullptr && *arg == '\0')
10522 arg = nullptr;
10523
10524 watch_command_1 (arg, accessflag, from_tty, opts.location, false);
10525 }
10526
10527 /* Command completion for 'watch', 'awatch', and 'rwatch' commands. */
10528 static void
10529 watch_command_completer (struct cmd_list_element *ignore,
10530 completion_tracker &tracker,
10531 const char *text, const char * /*word*/)
10532 {
10533 const auto group = make_watch_options_def_group (nullptr);
10534 if (gdb::option::complete_options
10535 (tracker, &text, gdb::option::PROCESS_OPTIONS_UNKNOWN_IS_OPERAND, group))
10536 return;
10537
10538 const char *word = advance_to_expression_complete_word_point (tracker, text);
10539 expression_completer (ignore, tracker, text, word);
10540 }
10541
10542 static void
10543 watch_command (const char *arg, int from_tty)
10544 {
10545 watch_maybe_just_location (arg, hw_write, from_tty);
10546 }
10547
10548 void
10549 rwatch_command_wrapper (const char *arg, int from_tty, bool internal)
10550 {
10551 watch_command_1 (arg, hw_read, from_tty, 0, internal);
10552 }
10553
10554 static void
10555 rwatch_command (const char *arg, int from_tty)
10556 {
10557 watch_maybe_just_location (arg, hw_read, from_tty);
10558 }
10559
10560 void
10561 awatch_command_wrapper (const char *arg, int from_tty, bool internal)
10562 {
10563 watch_command_1 (arg, hw_access, from_tty, 0, internal);
10564 }
10565
10566 static void
10567 awatch_command (const char *arg, int from_tty)
10568 {
10569 watch_maybe_just_location (arg, hw_access, from_tty);
10570 }
10571 \f
10572
10573 /* Data for the FSM that manages the until(location)/advance commands
10574 in infcmd.c. Here because it uses the mechanisms of
10575 breakpoints. */
10576
10577 struct until_break_fsm : public thread_fsm
10578 {
10579 /* The thread that was current when the command was executed. */
10580 int thread;
10581
10582 /* The breakpoint set at the return address in the caller frame,
10583 plus breakpoints at all the destination locations. */
10584 std::vector<breakpoint_up> breakpoints;
10585
10586 until_break_fsm (struct interp *cmd_interp, int thread,
10587 std::vector<breakpoint_up> &&breakpoints)
10588 : thread_fsm (cmd_interp),
10589 thread (thread),
10590 breakpoints (std::move (breakpoints))
10591 {
10592 }
10593
10594 void clean_up (struct thread_info *thread) override;
10595 bool should_stop (struct thread_info *thread) override;
10596 enum async_reply_reason do_async_reply_reason () override;
10597 };
10598
10599 /* Implementation of the 'should_stop' FSM method for the
10600 until(location)/advance commands. */
10601
10602 bool
10603 until_break_fsm::should_stop (struct thread_info *tp)
10604 {
10605 for (const breakpoint_up &bp : breakpoints)
10606 if (bpstat_find_breakpoint (tp->control.stop_bpstat,
10607 bp.get ()) != NULL)
10608 {
10609 set_finished ();
10610 break;
10611 }
10612
10613 return true;
10614 }
10615
10616 /* Implementation of the 'clean_up' FSM method for the
10617 until(location)/advance commands. */
10618
10619 void
10620 until_break_fsm::clean_up (struct thread_info *)
10621 {
10622 /* Clean up our temporary breakpoints. */
10623 breakpoints.clear ();
10624 delete_longjmp_breakpoint (thread);
10625 }
10626
10627 /* Implementation of the 'async_reply_reason' FSM method for the
10628 until(location)/advance commands. */
10629
10630 enum async_reply_reason
10631 until_break_fsm::do_async_reply_reason ()
10632 {
10633 return EXEC_ASYNC_LOCATION_REACHED;
10634 }
10635
10636 void
10637 until_break_command (const char *arg, int from_tty, int anywhere)
10638 {
10639 frame_info_ptr frame;
10640 struct gdbarch *frame_gdbarch;
10641 struct frame_id stack_frame_id;
10642 struct frame_id caller_frame_id;
10643 int thread;
10644 struct thread_info *tp;
10645
10646 clear_proceed_status (0);
10647
10648 /* Set a breakpoint where the user wants it and at return from
10649 this function. */
10650
10651 location_spec_up locspec = string_to_location_spec (&arg, current_language);
10652
10653 std::vector<symtab_and_line> sals
10654 = (last_displayed_sal_is_valid ()
10655 ? decode_line_1 (locspec.get (), DECODE_LINE_FUNFIRSTLINE, NULL,
10656 get_last_displayed_symtab (),
10657 get_last_displayed_line ())
10658 : decode_line_1 (locspec.get (), DECODE_LINE_FUNFIRSTLINE,
10659 NULL, NULL, 0));
10660
10661 if (sals.empty ())
10662 error (_("Couldn't get information on specified line."));
10663
10664 if (*arg)
10665 error (_("Junk at end of arguments."));
10666
10667 tp = inferior_thread ();
10668 thread = tp->global_num;
10669
10670 /* Note linespec handling above invalidates the frame chain.
10671 Installing a breakpoint also invalidates the frame chain (as it
10672 may need to switch threads), so do any frame handling before
10673 that. */
10674
10675 frame = get_selected_frame (NULL);
10676 frame_gdbarch = get_frame_arch (frame);
10677 stack_frame_id = get_stack_frame_id (frame);
10678 caller_frame_id = frame_unwind_caller_id (frame);
10679
10680 /* Keep within the current frame, or in frames called by the current
10681 one. */
10682
10683 std::vector<breakpoint_up> breakpoints;
10684
10685 gdb::optional<delete_longjmp_breakpoint_cleanup> lj_deleter;
10686
10687 if (frame_id_p (caller_frame_id))
10688 {
10689 struct symtab_and_line sal2;
10690 struct gdbarch *caller_gdbarch;
10691
10692 sal2 = find_pc_line (frame_unwind_caller_pc (frame), 0);
10693 sal2.pc = frame_unwind_caller_pc (frame);
10694 caller_gdbarch = frame_unwind_caller_arch (frame);
10695
10696 breakpoint_up caller_breakpoint
10697 = set_momentary_breakpoint (caller_gdbarch, sal2,
10698 caller_frame_id, bp_until);
10699 breakpoints.emplace_back (std::move (caller_breakpoint));
10700
10701 set_longjmp_breakpoint (tp, stack_frame_id);
10702 lj_deleter.emplace (thread);
10703 }
10704
10705 /* set_momentary_breakpoint could invalidate FRAME. */
10706 frame = NULL;
10707
10708 /* If the user told us to continue until a specified location, we
10709 don't specify a frame at which we need to stop. Otherwise,
10710 specify the selected frame, because we want to stop only at the
10711 very same frame. */
10712 frame_id stop_frame_id = anywhere ? null_frame_id : stack_frame_id;
10713
10714 for (symtab_and_line &sal : sals)
10715 {
10716 resolve_sal_pc (&sal);
10717
10718 breakpoint_up location_breakpoint
10719 = set_momentary_breakpoint (frame_gdbarch, sal,
10720 stop_frame_id, bp_until);
10721 breakpoints.emplace_back (std::move (location_breakpoint));
10722 }
10723
10724 tp->set_thread_fsm
10725 (std::unique_ptr<thread_fsm>
10726 (new until_break_fsm (command_interp (), tp->global_num,
10727 std::move (breakpoints))));
10728
10729 if (lj_deleter)
10730 lj_deleter->release ();
10731
10732 proceed (-1, GDB_SIGNAL_DEFAULT);
10733 }
10734
10735 \f
10736
10737 /* Compare two breakpoints and return a strcmp-like result. */
10738
10739 static int
10740 compare_breakpoints (const breakpoint *a, const breakpoint *b)
10741 {
10742 uintptr_t ua = (uintptr_t) a;
10743 uintptr_t ub = (uintptr_t) b;
10744
10745 if (a->number < b->number)
10746 return -1;
10747 else if (a->number > b->number)
10748 return 1;
10749
10750 /* Now sort by address, in case we see, e..g, two breakpoints with
10751 the number 0. */
10752 if (ua < ub)
10753 return -1;
10754 return ua > ub ? 1 : 0;
10755 }
10756
10757 /* Delete breakpoints by address or line. */
10758
10759 static void
10760 clear_command (const char *arg, int from_tty)
10761 {
10762 int default_match;
10763
10764 std::vector<symtab_and_line> decoded_sals;
10765 symtab_and_line last_sal;
10766 gdb::array_view<symtab_and_line> sals;
10767 if (arg)
10768 {
10769 decoded_sals
10770 = decode_line_with_current_source (arg,
10771 (DECODE_LINE_FUNFIRSTLINE
10772 | DECODE_LINE_LIST_MODE));
10773 default_match = 0;
10774 sals = decoded_sals;
10775 }
10776 else
10777 {
10778 /* Set sal's line, symtab, pc, and pspace to the values
10779 corresponding to the last call to print_frame_info. If the
10780 codepoint is not valid, this will set all the fields to 0. */
10781 last_sal = get_last_displayed_sal ();
10782 if (last_sal.symtab == 0)
10783 error (_("No source file specified."));
10784
10785 default_match = 1;
10786 sals = last_sal;
10787 }
10788
10789 /* We don't call resolve_sal_pc here. That's not as bad as it
10790 seems, because all existing breakpoints typically have both
10791 file/line and pc set. So, if clear is given file/line, we can
10792 match this to existing breakpoint without obtaining pc at all.
10793
10794 We only support clearing given the address explicitly
10795 present in breakpoint table. Say, we've set breakpoint
10796 at file:line. There were several PC values for that file:line,
10797 due to optimization, all in one block.
10798
10799 We've picked one PC value. If "clear" is issued with another
10800 PC corresponding to the same file:line, the breakpoint won't
10801 be cleared. We probably can still clear the breakpoint, but
10802 since the other PC value is never presented to user, user
10803 can only find it by guessing, and it does not seem important
10804 to support that. */
10805
10806 /* For each line spec given, delete bps which correspond to it. Do
10807 it in two passes, solely to preserve the current behavior that
10808 from_tty is forced true if we delete more than one
10809 breakpoint. */
10810
10811 std::vector<struct breakpoint *> found;
10812 for (const auto &sal : sals)
10813 {
10814 const char *sal_fullname;
10815
10816 /* If exact pc given, clear bpts at that pc.
10817 If line given (pc == 0), clear all bpts on specified line.
10818 If defaulting, clear all bpts on default line
10819 or at default pc.
10820
10821 defaulting sal.pc != 0 tests to do
10822
10823 0 1 pc
10824 1 1 pc _and_ line
10825 0 0 line
10826 1 0 <can't happen> */
10827
10828 sal_fullname = (sal.symtab == NULL
10829 ? NULL : symtab_to_fullname (sal.symtab));
10830
10831 /* Find all matching breakpoints and add them to 'found'. */
10832 for (breakpoint *b : all_breakpoints ())
10833 {
10834 int match = 0;
10835 /* Are we going to delete b? */
10836 if (b->type != bp_none && !is_watchpoint (b)
10837 && user_breakpoint_p (b))
10838 {
10839 for (bp_location *loc : b->locations ())
10840 {
10841 /* If the user specified file:line, don't allow a PC
10842 match. This matches historical gdb behavior. */
10843 int pc_match = (!sal.explicit_line
10844 && sal.pc
10845 && (loc->pspace == sal.pspace)
10846 && (loc->address == sal.pc)
10847 && (!section_is_overlay (loc->section)
10848 || loc->section == sal.section));
10849 int line_match = 0;
10850
10851 if ((default_match || sal.explicit_line)
10852 && loc->symtab != NULL
10853 && sal_fullname != NULL
10854 && sal.pspace == loc->pspace
10855 && loc->line_number == sal.line
10856 && filename_cmp (symtab_to_fullname (loc->symtab),
10857 sal_fullname) == 0)
10858 line_match = 1;
10859
10860 if (pc_match || line_match)
10861 {
10862 match = 1;
10863 break;
10864 }
10865 }
10866 }
10867
10868 if (match)
10869 found.push_back (b);
10870 }
10871 }
10872
10873 /* Now go thru the 'found' chain and delete them. */
10874 if (found.empty ())
10875 {
10876 if (arg)
10877 error (_("No breakpoint at %s."), arg);
10878 else
10879 error (_("No breakpoint at this line."));
10880 }
10881
10882 /* Remove duplicates from the vec. */
10883 std::sort (found.begin (), found.end (),
10884 [] (const breakpoint *bp_a, const breakpoint *bp_b)
10885 {
10886 return compare_breakpoints (bp_a, bp_b) < 0;
10887 });
10888 found.erase (std::unique (found.begin (), found.end (),
10889 [] (const breakpoint *bp_a, const breakpoint *bp_b)
10890 {
10891 return compare_breakpoints (bp_a, bp_b) == 0;
10892 }),
10893 found.end ());
10894
10895 if (found.size () > 1)
10896 from_tty = 1; /* Always report if deleted more than one. */
10897 if (from_tty)
10898 {
10899 if (found.size () == 1)
10900 gdb_printf (_("Deleted breakpoint "));
10901 else
10902 gdb_printf (_("Deleted breakpoints "));
10903 }
10904
10905 for (breakpoint *iter : found)
10906 {
10907 if (from_tty)
10908 gdb_printf ("%d ", iter->number);
10909 delete_breakpoint (iter);
10910 }
10911 if (from_tty)
10912 gdb_putc ('\n');
10913 }
10914 \f
10915 /* Delete breakpoint in BS if they are `delete' breakpoints and
10916 all breakpoints that are marked for deletion, whether hit or not.
10917 This is called after any breakpoint is hit, or after errors. */
10918
10919 void
10920 breakpoint_auto_delete (bpstat *bs)
10921 {
10922 for (; bs; bs = bs->next)
10923 if (bs->breakpoint_at
10924 && bs->breakpoint_at->disposition == disp_del
10925 && bs->stop)
10926 delete_breakpoint (bs->breakpoint_at);
10927
10928 for (breakpoint *b : all_breakpoints_safe ())
10929 if (b->disposition == disp_del_at_next_stop)
10930 delete_breakpoint (b);
10931 }
10932
10933 /* A comparison function for bp_location AP and BP being interfaced to
10934 std::sort. Sort elements primarily by their ADDRESS (no matter what
10935 bl_address_is_meaningful says), secondarily by ordering first
10936 permanent elements and terciarily just ensuring the array is sorted
10937 stable way despite std::sort being an unstable algorithm. */
10938
10939 static int
10940 bp_location_is_less_than (const bp_location *a, const bp_location *b)
10941 {
10942 if (a->address != b->address)
10943 return a->address < b->address;
10944
10945 /* Sort locations at the same address by their pspace number, keeping
10946 locations of the same inferior (in a multi-inferior environment)
10947 grouped. */
10948
10949 if (a->pspace->num != b->pspace->num)
10950 return a->pspace->num < b->pspace->num;
10951
10952 /* Sort permanent breakpoints first. */
10953 if (a->permanent != b->permanent)
10954 return a->permanent > b->permanent;
10955
10956 /* Sort by type in order to make duplicate determination easier.
10957 See update_global_location_list. This is kept in sync with
10958 breakpoint_locations_match. */
10959 if (a->loc_type < b->loc_type)
10960 return true;
10961
10962 /* Likewise, for range-breakpoints, sort by length. */
10963 if (a->loc_type == bp_loc_hardware_breakpoint
10964 && b->loc_type == bp_loc_hardware_breakpoint
10965 && a->length < b->length)
10966 return true;
10967
10968 /* Make the internal GDB representation stable across GDB runs
10969 where A and B memory inside GDB can differ. Breakpoint locations of
10970 the same type at the same address can be sorted in arbitrary order. */
10971
10972 if (a->owner->number != b->owner->number)
10973 return a->owner->number < b->owner->number;
10974
10975 return a < b;
10976 }
10977
10978 /* Set bp_locations_placed_address_before_address_max and
10979 bp_locations_shadow_len_after_address_max according to the current
10980 content of the bp_locations array. */
10981
10982 static void
10983 bp_locations_target_extensions_update (void)
10984 {
10985 bp_locations_placed_address_before_address_max = 0;
10986 bp_locations_shadow_len_after_address_max = 0;
10987
10988 for (bp_location *bl : all_bp_locations ())
10989 {
10990 CORE_ADDR start, end, addr;
10991
10992 if (!bp_location_has_shadow (bl))
10993 continue;
10994
10995 start = bl->target_info.placed_address;
10996 end = start + bl->target_info.shadow_len;
10997
10998 gdb_assert (bl->address >= start);
10999 addr = bl->address - start;
11000 if (addr > bp_locations_placed_address_before_address_max)
11001 bp_locations_placed_address_before_address_max = addr;
11002
11003 /* Zero SHADOW_LEN would not pass bp_location_has_shadow. */
11004
11005 gdb_assert (bl->address < end);
11006 addr = end - bl->address;
11007 if (addr > bp_locations_shadow_len_after_address_max)
11008 bp_locations_shadow_len_after_address_max = addr;
11009 }
11010 }
11011
11012 /* Download tracepoint locations if they haven't been. */
11013
11014 static void
11015 download_tracepoint_locations (void)
11016 {
11017 enum tribool can_download_tracepoint = TRIBOOL_UNKNOWN;
11018
11019 scoped_restore_current_pspace_and_thread restore_pspace_thread;
11020
11021 for (breakpoint *b : all_tracepoints ())
11022 {
11023 struct tracepoint *t;
11024 bool bp_location_downloaded = false;
11025
11026 if ((b->type == bp_fast_tracepoint
11027 ? !may_insert_fast_tracepoints
11028 : !may_insert_tracepoints))
11029 continue;
11030
11031 if (can_download_tracepoint == TRIBOOL_UNKNOWN)
11032 {
11033 if (target_can_download_tracepoint ())
11034 can_download_tracepoint = TRIBOOL_TRUE;
11035 else
11036 can_download_tracepoint = TRIBOOL_FALSE;
11037 }
11038
11039 if (can_download_tracepoint == TRIBOOL_FALSE)
11040 break;
11041
11042 for (bp_location *bl : b->locations ())
11043 {
11044 /* In tracepoint, locations are _never_ duplicated, so
11045 should_be_inserted is equivalent to
11046 unduplicated_should_be_inserted. */
11047 if (!should_be_inserted (bl) || bl->inserted)
11048 continue;
11049
11050 switch_to_program_space_and_thread (bl->pspace);
11051
11052 target_download_tracepoint (bl);
11053
11054 bl->inserted = 1;
11055 bp_location_downloaded = true;
11056 }
11057 t = (struct tracepoint *) b;
11058 t->number_on_target = b->number;
11059 if (bp_location_downloaded)
11060 gdb::observers::breakpoint_modified.notify (b);
11061 }
11062 }
11063
11064 /* Swap the insertion/duplication state between two locations. */
11065
11066 static void
11067 swap_insertion (struct bp_location *left, struct bp_location *right)
11068 {
11069 const int left_inserted = left->inserted;
11070 const int left_duplicate = left->duplicate;
11071 const int left_needs_update = left->needs_update;
11072 const struct bp_target_info left_target_info = left->target_info;
11073
11074 /* Locations of tracepoints can never be duplicated. */
11075 if (is_tracepoint (left->owner))
11076 gdb_assert (!left->duplicate);
11077 if (is_tracepoint (right->owner))
11078 gdb_assert (!right->duplicate);
11079
11080 left->inserted = right->inserted;
11081 left->duplicate = right->duplicate;
11082 left->needs_update = right->needs_update;
11083 left->target_info = right->target_info;
11084 right->inserted = left_inserted;
11085 right->duplicate = left_duplicate;
11086 right->needs_update = left_needs_update;
11087 right->target_info = left_target_info;
11088 }
11089
11090 /* Force the re-insertion of the locations at ADDRESS. This is called
11091 once a new/deleted/modified duplicate location is found and we are evaluating
11092 conditions on the target's side. Such conditions need to be updated on
11093 the target. */
11094
11095 static void
11096 force_breakpoint_reinsertion (struct bp_location *bl)
11097 {
11098 CORE_ADDR address = 0;
11099 int pspace_num;
11100
11101 address = bl->address;
11102 pspace_num = bl->pspace->num;
11103
11104 /* This is only meaningful if the target is
11105 evaluating conditions and if the user has
11106 opted for condition evaluation on the target's
11107 side. */
11108 if (gdb_evaluates_breakpoint_condition_p ()
11109 || !target_supports_evaluation_of_breakpoint_conditions ())
11110 return;
11111
11112 /* Flag all breakpoint locations with this address and
11113 the same program space as the location
11114 as "its condition has changed". We need to
11115 update the conditions on the target's side. */
11116 for (bp_location *loc : all_bp_locations_at_addr (address))
11117 {
11118 if (!is_breakpoint (loc->owner)
11119 || pspace_num != loc->pspace->num)
11120 continue;
11121
11122 /* Flag the location appropriately. We use a different state to
11123 let everyone know that we already updated the set of locations
11124 with addr bl->address and program space bl->pspace. This is so
11125 we don't have to keep calling these functions just to mark locations
11126 that have already been marked. */
11127 loc->condition_changed = condition_updated;
11128
11129 /* Free the agent expression bytecode as well. We will compute
11130 it later on. */
11131 loc->cond_bytecode.reset ();
11132 }
11133 }
11134
11135 /* Called whether new breakpoints are created, or existing breakpoints
11136 deleted, to update the global location list and recompute which
11137 locations are duplicate of which.
11138
11139 The INSERT_MODE flag determines whether locations may not, may, or
11140 shall be inserted now. See 'enum ugll_insert_mode' for more
11141 info. */
11142
11143 static void
11144 update_global_location_list (enum ugll_insert_mode insert_mode)
11145 {
11146 /* Last breakpoint location address that was marked for update. */
11147 CORE_ADDR last_addr = 0;
11148 /* Last breakpoint location program space that was marked for update. */
11149 int last_pspace_num = -1;
11150
11151 /* Used in the duplicates detection below. When iterating over all
11152 bp_locations, points to the first bp_location of a given address.
11153 Breakpoints and watchpoints of different types are never
11154 duplicates of each other. Keep one pointer for each type of
11155 breakpoint/watchpoint, so we only need to loop over all locations
11156 once. */
11157 struct bp_location *bp_loc_first; /* breakpoint */
11158 struct bp_location *wp_loc_first; /* hardware watchpoint */
11159 struct bp_location *awp_loc_first; /* access watchpoint */
11160 struct bp_location *rwp_loc_first; /* read watchpoint */
11161
11162 /* Saved former bp_locations array which we compare against the newly
11163 built bp_locations from the current state of ALL_BREAKPOINTS. */
11164 std::vector<bp_location *> old_locations = std::move (bp_locations);
11165 bp_locations.clear ();
11166
11167 for (breakpoint *b : all_breakpoints ())
11168 for (bp_location *loc : b->locations ())
11169 bp_locations.push_back (loc);
11170
11171 /* See if we need to "upgrade" a software breakpoint to a hardware
11172 breakpoint. Do this before deciding whether locations are
11173 duplicates. Also do this before sorting because sorting order
11174 depends on location type. */
11175 for (bp_location *loc : bp_locations)
11176 if (!loc->inserted && should_be_inserted (loc))
11177 handle_automatic_hardware_breakpoints (loc);
11178
11179 std::sort (bp_locations.begin (), bp_locations.end (),
11180 bp_location_is_less_than);
11181
11182 bp_locations_target_extensions_update ();
11183
11184 /* Identify bp_location instances that are no longer present in the
11185 new list, and therefore should be freed. Note that it's not
11186 necessary that those locations should be removed from inferior --
11187 if there's another location at the same address (previously
11188 marked as duplicate), we don't need to remove/insert the
11189 location.
11190
11191 LOCP is kept in sync with OLD_LOCP, each pointing to the current
11192 and former bp_location array state respectively. */
11193
11194 size_t loc_i = 0;
11195 for (bp_location *old_loc : old_locations)
11196 {
11197 /* Tells if 'old_loc' is found among the new locations. If
11198 not, we have to free it. */
11199 bool found_object = false;
11200 /* Tells if the location should remain inserted in the target. */
11201 bool keep_in_target = false;
11202 bool removed = false;
11203
11204 /* Skip LOCP entries which will definitely never be needed.
11205 Stop either at or being the one matching OLD_LOC. */
11206 while (loc_i < bp_locations.size ()
11207 && bp_locations[loc_i]->address < old_loc->address)
11208 loc_i++;
11209
11210 for (size_t loc2_i = loc_i;
11211 (loc2_i < bp_locations.size ()
11212 && bp_locations[loc2_i]->address == old_loc->address);
11213 loc2_i++)
11214 {
11215 /* Check if this is a new/duplicated location or a duplicated
11216 location that had its condition modified. If so, we want to send
11217 its condition to the target if evaluation of conditions is taking
11218 place there. */
11219 if (bp_locations[loc2_i]->condition_changed == condition_modified
11220 && (last_addr != old_loc->address
11221 || last_pspace_num != old_loc->pspace->num))
11222 {
11223 force_breakpoint_reinsertion (bp_locations[loc2_i]);
11224 last_pspace_num = old_loc->pspace->num;
11225 }
11226
11227 if (bp_locations[loc2_i] == old_loc)
11228 found_object = true;
11229 }
11230
11231 /* We have already handled this address, update it so that we don't
11232 have to go through updates again. */
11233 last_addr = old_loc->address;
11234
11235 /* Target-side condition evaluation: Handle deleted locations. */
11236 if (!found_object)
11237 force_breakpoint_reinsertion (old_loc);
11238
11239 /* If this location is no longer present, and inserted, look if
11240 there's maybe a new location at the same address. If so,
11241 mark that one inserted, and don't remove this one. This is
11242 needed so that we don't have a time window where a breakpoint
11243 at certain location is not inserted. */
11244
11245 if (old_loc->inserted)
11246 {
11247 /* If the location is inserted now, we might have to remove
11248 it. */
11249
11250 if (found_object && should_be_inserted (old_loc))
11251 {
11252 /* The location is still present in the location list,
11253 and still should be inserted. Don't do anything. */
11254 keep_in_target = true;
11255 }
11256 else
11257 {
11258 /* This location still exists, but it won't be kept in the
11259 target since it may have been disabled. We proceed to
11260 remove its target-side condition. */
11261
11262 /* The location is either no longer present, or got
11263 disabled. See if there's another location at the
11264 same address, in which case we don't need to remove
11265 this one from the target. */
11266
11267 /* OLD_LOC comes from existing struct breakpoint. */
11268 if (bl_address_is_meaningful (old_loc))
11269 {
11270 for (size_t loc2_i = loc_i;
11271 (loc2_i < bp_locations.size ()
11272 && bp_locations[loc2_i]->address == old_loc->address);
11273 loc2_i++)
11274 {
11275 bp_location *loc2 = bp_locations[loc2_i];
11276
11277 if (loc2 == old_loc)
11278 continue;
11279
11280 if (breakpoint_locations_match (loc2, old_loc))
11281 {
11282 /* Read watchpoint locations are switched to
11283 access watchpoints, if the former are not
11284 supported, but the latter are. */
11285 if (is_hardware_watchpoint (old_loc->owner))
11286 {
11287 gdb_assert (is_hardware_watchpoint (loc2->owner));
11288 loc2->watchpoint_type = old_loc->watchpoint_type;
11289 }
11290
11291 /* loc2 is a duplicated location. We need to check
11292 if it should be inserted in case it will be
11293 unduplicated. */
11294 if (unduplicated_should_be_inserted (loc2))
11295 {
11296 swap_insertion (old_loc, loc2);
11297 keep_in_target = true;
11298 break;
11299 }
11300 }
11301 }
11302 }
11303 }
11304
11305 if (!keep_in_target)
11306 {
11307 if (remove_breakpoint (old_loc))
11308 {
11309 /* This is just about all we can do. We could keep
11310 this location on the global list, and try to
11311 remove it next time, but there's no particular
11312 reason why we will succeed next time.
11313
11314 Note that at this point, old_loc->owner is still
11315 valid, as delete_breakpoint frees the breakpoint
11316 only after calling us. */
11317 gdb_printf (_("warning: Error removing "
11318 "breakpoint %d\n"),
11319 old_loc->owner->number);
11320 }
11321 removed = true;
11322 }
11323 }
11324
11325 if (!found_object)
11326 {
11327 if (removed && target_is_non_stop_p ()
11328 && need_moribund_for_location_type (old_loc))
11329 {
11330 /* This location was removed from the target. In
11331 non-stop mode, a race condition is possible where
11332 we've removed a breakpoint, but stop events for that
11333 breakpoint are already queued and will arrive later.
11334 We apply an heuristic to be able to distinguish such
11335 SIGTRAPs from other random SIGTRAPs: we keep this
11336 breakpoint location for a bit, and will retire it
11337 after we see some number of events. The theory here
11338 is that reporting of events should, "on the average",
11339 be fair, so after a while we'll see events from all
11340 threads that have anything of interest, and no longer
11341 need to keep this breakpoint location around. We
11342 don't hold locations forever so to reduce chances of
11343 mistaking a non-breakpoint SIGTRAP for a breakpoint
11344 SIGTRAP.
11345
11346 The heuristic failing can be disastrous on
11347 decr_pc_after_break targets.
11348
11349 On decr_pc_after_break targets, like e.g., x86-linux,
11350 if we fail to recognize a late breakpoint SIGTRAP,
11351 because events_till_retirement has reached 0 too
11352 soon, we'll fail to do the PC adjustment, and report
11353 a random SIGTRAP to the user. When the user resumes
11354 the inferior, it will most likely immediately crash
11355 with SIGILL/SIGBUS/SIGSEGV, or worse, get silently
11356 corrupted, because of being resumed e.g., in the
11357 middle of a multi-byte instruction, or skipped a
11358 one-byte instruction. This was actually seen happen
11359 on native x86-linux, and should be less rare on
11360 targets that do not support new thread events, like
11361 remote, due to the heuristic depending on
11362 thread_count.
11363
11364 Mistaking a random SIGTRAP for a breakpoint trap
11365 causes similar symptoms (PC adjustment applied when
11366 it shouldn't), but then again, playing with SIGTRAPs
11367 behind the debugger's back is asking for trouble.
11368
11369 Since hardware watchpoint traps are always
11370 distinguishable from other traps, so we don't need to
11371 apply keep hardware watchpoint moribund locations
11372 around. We simply always ignore hardware watchpoint
11373 traps we can no longer explain. */
11374
11375 process_stratum_target *proc_target = nullptr;
11376 for (inferior *inf : all_inferiors ())
11377 if (inf->pspace == old_loc->pspace)
11378 {
11379 proc_target = inf->process_target ();
11380 break;
11381 }
11382 if (proc_target != nullptr)
11383 old_loc->events_till_retirement
11384 = 3 * (thread_count (proc_target) + 1);
11385 else
11386 old_loc->events_till_retirement = 1;
11387 old_loc->owner = NULL;
11388
11389 moribund_locations.push_back (old_loc);
11390 }
11391 else
11392 {
11393 old_loc->owner = NULL;
11394 decref_bp_location (&old_loc);
11395 }
11396 }
11397 }
11398
11399 /* Rescan breakpoints at the same address and section, marking the
11400 first one as "first" and any others as "duplicates". This is so
11401 that the bpt instruction is only inserted once. If we have a
11402 permanent breakpoint at the same place as BPT, make that one the
11403 official one, and the rest as duplicates. Permanent breakpoints
11404 are sorted first for the same address.
11405
11406 Do the same for hardware watchpoints, but also considering the
11407 watchpoint's type (regular/access/read) and length. */
11408
11409 bp_loc_first = NULL;
11410 wp_loc_first = NULL;
11411 awp_loc_first = NULL;
11412 rwp_loc_first = NULL;
11413
11414 for (bp_location *loc : all_bp_locations ())
11415 {
11416 /* ALL_BP_LOCATIONS bp_location has LOC->OWNER always
11417 non-NULL. */
11418 struct bp_location **loc_first_p;
11419 breakpoint *b = loc->owner;
11420
11421 if (!unduplicated_should_be_inserted (loc)
11422 || !bl_address_is_meaningful (loc)
11423 /* Don't detect duplicate for tracepoint locations because they are
11424 never duplicated. See the comments in field `duplicate' of
11425 `struct bp_location'. */
11426 || is_tracepoint (b))
11427 {
11428 /* Clear the condition modification flag. */
11429 loc->condition_changed = condition_unchanged;
11430 continue;
11431 }
11432
11433 if (b->type == bp_hardware_watchpoint)
11434 loc_first_p = &wp_loc_first;
11435 else if (b->type == bp_read_watchpoint)
11436 loc_first_p = &rwp_loc_first;
11437 else if (b->type == bp_access_watchpoint)
11438 loc_first_p = &awp_loc_first;
11439 else
11440 loc_first_p = &bp_loc_first;
11441
11442 if (*loc_first_p == NULL
11443 || (overlay_debugging && loc->section != (*loc_first_p)->section)
11444 || !breakpoint_locations_match (loc, *loc_first_p))
11445 {
11446 *loc_first_p = loc;
11447 loc->duplicate = 0;
11448
11449 if (is_breakpoint (loc->owner) && loc->condition_changed)
11450 {
11451 loc->needs_update = 1;
11452 /* Clear the condition modification flag. */
11453 loc->condition_changed = condition_unchanged;
11454 }
11455 continue;
11456 }
11457
11458
11459 /* This and the above ensure the invariant that the first location
11460 is not duplicated, and is the inserted one.
11461 All following are marked as duplicated, and are not inserted. */
11462 if (loc->inserted)
11463 swap_insertion (loc, *loc_first_p);
11464 loc->duplicate = 1;
11465
11466 /* Clear the condition modification flag. */
11467 loc->condition_changed = condition_unchanged;
11468 }
11469
11470 if (insert_mode == UGLL_INSERT || breakpoints_should_be_inserted_now ())
11471 {
11472 if (insert_mode != UGLL_DONT_INSERT)
11473 insert_breakpoint_locations ();
11474 else
11475 {
11476 /* Even though the caller told us to not insert new
11477 locations, we may still need to update conditions on the
11478 target's side of breakpoints that were already inserted
11479 if the target is evaluating breakpoint conditions. We
11480 only update conditions for locations that are marked
11481 "needs_update". */
11482 update_inserted_breakpoint_locations ();
11483 }
11484 }
11485
11486 if (insert_mode != UGLL_DONT_INSERT)
11487 download_tracepoint_locations ();
11488 }
11489
11490 void
11491 breakpoint_retire_moribund (void)
11492 {
11493 for (int ix = 0; ix < moribund_locations.size (); ++ix)
11494 {
11495 struct bp_location *loc = moribund_locations[ix];
11496 if (--(loc->events_till_retirement) == 0)
11497 {
11498 decref_bp_location (&loc);
11499 unordered_remove (moribund_locations, ix);
11500 --ix;
11501 }
11502 }
11503 }
11504
11505 static void
11506 update_global_location_list_nothrow (enum ugll_insert_mode insert_mode)
11507 {
11508
11509 try
11510 {
11511 update_global_location_list (insert_mode);
11512 }
11513 catch (const gdb_exception_error &e)
11514 {
11515 }
11516 }
11517
11518 /* Clear BKP from a BPS. */
11519
11520 static void
11521 bpstat_remove_bp_location (bpstat *bps, struct breakpoint *bpt)
11522 {
11523 bpstat *bs;
11524
11525 for (bs = bps; bs; bs = bs->next)
11526 if (bs->breakpoint_at == bpt)
11527 {
11528 bs->breakpoint_at = NULL;
11529 bs->old_val = NULL;
11530 /* bs->commands will be freed later. */
11531 }
11532 }
11533
11534 /* Callback for iterate_over_threads. */
11535 static int
11536 bpstat_remove_breakpoint_callback (struct thread_info *th, void *data)
11537 {
11538 struct breakpoint *bpt = (struct breakpoint *) data;
11539
11540 bpstat_remove_bp_location (th->control.stop_bpstat, bpt);
11541 return 0;
11542 }
11543
11544 /* See breakpoint.h. */
11545
11546 void
11547 code_breakpoint::say_where () const
11548 {
11549 struct value_print_options opts;
11550
11551 get_user_print_options (&opts);
11552
11553 /* i18n: cagney/2005-02-11: Below needs to be merged into a
11554 single string. */
11555 if (loc == NULL)
11556 {
11557 /* For pending locations, the output differs slightly based
11558 on extra_string. If this is non-NULL, it contains either
11559 a condition or dprintf arguments. */
11560 if (extra_string == NULL)
11561 {
11562 gdb_printf (_(" (%s) pending."), locspec->to_string ());
11563 }
11564 else if (type == bp_dprintf)
11565 {
11566 gdb_printf (_(" (%s,%s) pending."),
11567 locspec->to_string (),
11568 extra_string.get ());
11569 }
11570 else
11571 {
11572 gdb_printf (_(" (%s %s) pending."),
11573 locspec->to_string (),
11574 extra_string.get ());
11575 }
11576 }
11577 else
11578 {
11579 if (opts.addressprint || loc->symtab == NULL)
11580 gdb_printf (" at %ps",
11581 styled_string (address_style.style (),
11582 paddress (loc->gdbarch,
11583 loc->address)));
11584 if (loc->symtab != NULL)
11585 {
11586 /* If there is a single location, we can print the location
11587 more nicely. */
11588 if (loc->next == NULL)
11589 {
11590 const char *filename
11591 = symtab_to_filename_for_display (loc->symtab);
11592 gdb_printf (": file %ps, line %d.",
11593 styled_string (file_name_style.style (),
11594 filename),
11595 loc->line_number);
11596 }
11597 else
11598 /* This is not ideal, but each location may have a
11599 different file name, and this at least reflects the
11600 real situation somewhat. */
11601 gdb_printf (": %s.", locspec->to_string ());
11602 }
11603
11604 if (loc->next)
11605 {
11606 struct bp_location *iter = loc;
11607 int n = 0;
11608 for (; iter; iter = iter->next)
11609 ++n;
11610 gdb_printf (" (%d locations)", n);
11611 }
11612 }
11613 }
11614
11615 /* See breakpoint.h. */
11616
11617 bp_location_range breakpoint::locations () const
11618 {
11619 return bp_location_range (this->loc);
11620 }
11621
11622 struct bp_location *
11623 breakpoint::allocate_location ()
11624 {
11625 return new bp_location (this);
11626 }
11627
11628 #define internal_error_pure_virtual_called() \
11629 gdb_assert_not_reached ("pure virtual function called")
11630
11631 int
11632 breakpoint::insert_location (struct bp_location *bl)
11633 {
11634 internal_error_pure_virtual_called ();
11635 }
11636
11637 int
11638 breakpoint::remove_location (struct bp_location *bl,
11639 enum remove_bp_reason reason)
11640 {
11641 internal_error_pure_virtual_called ();
11642 }
11643
11644 int
11645 breakpoint::breakpoint_hit (const struct bp_location *bl,
11646 const address_space *aspace,
11647 CORE_ADDR bp_addr,
11648 const target_waitstatus &ws)
11649 {
11650 internal_error_pure_virtual_called ();
11651 }
11652
11653 int
11654 breakpoint::resources_needed (const struct bp_location *bl)
11655 {
11656 internal_error_pure_virtual_called ();
11657 }
11658
11659 enum print_stop_action
11660 breakpoint::print_it (const bpstat *bs) const
11661 {
11662 internal_error_pure_virtual_called ();
11663 }
11664
11665 void
11666 breakpoint::print_mention () const
11667 {
11668 internal_error_pure_virtual_called ();
11669 }
11670
11671 void
11672 breakpoint::print_recreate (struct ui_file *fp) const
11673 {
11674 internal_error_pure_virtual_called ();
11675 }
11676
11677 /* Default breakpoint_ops methods. */
11678
11679 void
11680 code_breakpoint::re_set ()
11681 {
11682 /* FIXME: is this still reachable? */
11683 if (breakpoint_location_spec_empty_p (this))
11684 {
11685 /* Anything without a location can't be re-set. */
11686 delete_breakpoint (this);
11687 return;
11688 }
11689
11690 re_set_default ();
11691 }
11692
11693 int
11694 code_breakpoint::insert_location (struct bp_location *bl)
11695 {
11696 CORE_ADDR addr = bl->target_info.reqstd_address;
11697
11698 bl->target_info.kind = breakpoint_kind (bl, &addr);
11699 bl->target_info.placed_address = addr;
11700
11701 int result;
11702 if (bl->loc_type == bp_loc_hardware_breakpoint)
11703 result = target_insert_hw_breakpoint (bl->gdbarch, &bl->target_info);
11704 else
11705 result = target_insert_breakpoint (bl->gdbarch, &bl->target_info);
11706
11707 if (result == 0 && bl->probe.prob != nullptr)
11708 {
11709 /* The insertion was successful, now let's set the probe's semaphore
11710 if needed. */
11711 bl->probe.prob->set_semaphore (bl->probe.objfile, bl->gdbarch);
11712 }
11713
11714 return result;
11715 }
11716
11717 int
11718 code_breakpoint::remove_location (struct bp_location *bl,
11719 enum remove_bp_reason reason)
11720 {
11721 if (bl->probe.prob != nullptr)
11722 {
11723 /* Let's clear the semaphore before removing the location. */
11724 bl->probe.prob->clear_semaphore (bl->probe.objfile, bl->gdbarch);
11725 }
11726
11727 if (bl->loc_type == bp_loc_hardware_breakpoint)
11728 return target_remove_hw_breakpoint (bl->gdbarch, &bl->target_info);
11729 else
11730 return target_remove_breakpoint (bl->gdbarch, &bl->target_info, reason);
11731 }
11732
11733 int
11734 code_breakpoint::breakpoint_hit (const struct bp_location *bl,
11735 const address_space *aspace,
11736 CORE_ADDR bp_addr,
11737 const target_waitstatus &ws)
11738 {
11739 if (ws.kind () != TARGET_WAITKIND_STOPPED
11740 || ws.sig () != GDB_SIGNAL_TRAP)
11741 return 0;
11742
11743 if (!breakpoint_address_match (bl->pspace->aspace, bl->address,
11744 aspace, bp_addr))
11745 return 0;
11746
11747 if (overlay_debugging /* unmapped overlay section */
11748 && section_is_overlay (bl->section)
11749 && !section_is_mapped (bl->section))
11750 return 0;
11751
11752 return 1;
11753 }
11754
11755 int
11756 dprintf_breakpoint::breakpoint_hit (const struct bp_location *bl,
11757 const address_space *aspace,
11758 CORE_ADDR bp_addr,
11759 const target_waitstatus &ws)
11760 {
11761 if (dprintf_style == dprintf_style_agent
11762 && target_can_run_breakpoint_commands ())
11763 {
11764 /* An agent-style dprintf never causes a stop. If we see a trap
11765 for this address it must be for a breakpoint that happens to
11766 be set at the same address. */
11767 return 0;
11768 }
11769
11770 return this->ordinary_breakpoint::breakpoint_hit (bl, aspace, bp_addr, ws);
11771 }
11772
11773 int
11774 ordinary_breakpoint::resources_needed (const struct bp_location *bl)
11775 {
11776 gdb_assert (type == bp_hardware_breakpoint);
11777
11778 return 1;
11779 }
11780
11781 enum print_stop_action
11782 ordinary_breakpoint::print_it (const bpstat *bs) const
11783 {
11784 const struct bp_location *bl;
11785 int bp_temp;
11786 struct ui_out *uiout = current_uiout;
11787
11788 bl = bs->bp_location_at.get ();
11789
11790 bp_temp = disposition == disp_del;
11791 if (bl->address != bl->requested_address)
11792 breakpoint_adjustment_warning (bl->requested_address,
11793 bl->address,
11794 number, true);
11795 annotate_breakpoint (number);
11796 maybe_print_thread_hit_breakpoint (uiout);
11797
11798 if (uiout->is_mi_like_p ())
11799 {
11800 uiout->field_string ("reason",
11801 async_reason_lookup (EXEC_ASYNC_BREAKPOINT_HIT));
11802 uiout->field_string ("disp", bpdisp_text (disposition));
11803 }
11804
11805 if (bp_temp)
11806 uiout->text ("Temporary breakpoint ");
11807 else
11808 uiout->text ("Breakpoint ");
11809 print_num_locno (bs, uiout);
11810 uiout->text (", ");
11811
11812 return PRINT_SRC_AND_LOC;
11813 }
11814
11815 void
11816 ordinary_breakpoint::print_mention () const
11817 {
11818 if (current_uiout->is_mi_like_p ())
11819 return;
11820
11821 switch (type)
11822 {
11823 case bp_breakpoint:
11824 case bp_gnu_ifunc_resolver:
11825 if (disposition == disp_del)
11826 gdb_printf (_("Temporary breakpoint"));
11827 else
11828 gdb_printf (_("Breakpoint"));
11829 gdb_printf (_(" %d"), number);
11830 if (type == bp_gnu_ifunc_resolver)
11831 gdb_printf (_(" at gnu-indirect-function resolver"));
11832 break;
11833 case bp_hardware_breakpoint:
11834 gdb_printf (_("Hardware assisted breakpoint %d"), number);
11835 break;
11836 case bp_dprintf:
11837 gdb_printf (_("Dprintf %d"), number);
11838 break;
11839 }
11840
11841 say_where ();
11842 }
11843
11844 void
11845 ordinary_breakpoint::print_recreate (struct ui_file *fp) const
11846 {
11847 if (type == bp_breakpoint && disposition == disp_del)
11848 gdb_printf (fp, "tbreak");
11849 else if (type == bp_breakpoint)
11850 gdb_printf (fp, "break");
11851 else if (type == bp_hardware_breakpoint
11852 && disposition == disp_del)
11853 gdb_printf (fp, "thbreak");
11854 else if (type == bp_hardware_breakpoint)
11855 gdb_printf (fp, "hbreak");
11856 else
11857 internal_error (_("unhandled breakpoint type %d"), (int) type);
11858
11859 gdb_printf (fp, " %s", locspec->to_string ());
11860
11861 /* Print out extra_string if this breakpoint is pending. It might
11862 contain, for example, conditions that were set by the user. */
11863 if (loc == NULL && extra_string != NULL)
11864 gdb_printf (fp, " %s", extra_string.get ());
11865
11866 print_recreate_thread (fp);
11867 }
11868
11869 std::vector<symtab_and_line>
11870 code_breakpoint::decode_location_spec (location_spec *locspec,
11871 program_space *search_pspace)
11872 {
11873 if (locspec->type () == PROBE_LOCATION_SPEC)
11874 return bkpt_probe_decode_location_spec (this, locspec, search_pspace);
11875
11876 struct linespec_result canonical;
11877
11878 decode_line_full (locspec, DECODE_LINE_FUNFIRSTLINE, search_pspace,
11879 NULL, 0, &canonical, multiple_symbols_all,
11880 filter.get ());
11881
11882 /* We should get 0 or 1 resulting SALs. */
11883 gdb_assert (canonical.lsals.size () < 2);
11884
11885 if (!canonical.lsals.empty ())
11886 {
11887 const linespec_sals &lsal = canonical.lsals[0];
11888 return std::move (lsal.sals);
11889 }
11890 return {};
11891 }
11892
11893 /* Virtual table for internal breakpoints. */
11894
11895 void
11896 internal_breakpoint::re_set ()
11897 {
11898 switch (type)
11899 {
11900 /* Delete overlay event and longjmp master breakpoints; they
11901 will be reset later by breakpoint_re_set. */
11902 case bp_overlay_event:
11903 case bp_longjmp_master:
11904 case bp_std_terminate_master:
11905 case bp_exception_master:
11906 delete_breakpoint (this);
11907 break;
11908
11909 /* This breakpoint is special, it's set up when the inferior
11910 starts and we really don't want to touch it. */
11911 case bp_shlib_event:
11912
11913 /* Like bp_shlib_event, this breakpoint type is special. Once
11914 it is set up, we do not want to touch it. */
11915 case bp_thread_event:
11916 break;
11917 }
11918 }
11919
11920 void
11921 internal_breakpoint::check_status (bpstat *bs)
11922 {
11923 if (type == bp_shlib_event)
11924 {
11925 /* If requested, stop when the dynamic linker notifies GDB of
11926 events. This allows the user to get control and place
11927 breakpoints in initializer routines for dynamically loaded
11928 objects (among other things). */
11929 bs->stop = stop_on_solib_events != 0;
11930 bs->print = stop_on_solib_events != 0;
11931 }
11932 else
11933 bs->stop = false;
11934 }
11935
11936 enum print_stop_action
11937 internal_breakpoint::print_it (const bpstat *bs) const
11938 {
11939 switch (type)
11940 {
11941 case bp_shlib_event:
11942 /* Did we stop because the user set the stop_on_solib_events
11943 variable? (If so, we report this as a generic, "Stopped due
11944 to shlib event" message.) */
11945 print_solib_event (false);
11946 break;
11947
11948 case bp_thread_event:
11949 /* Not sure how we will get here.
11950 GDB should not stop for these breakpoints. */
11951 gdb_printf (_("Thread Event Breakpoint: gdb should not stop!\n"));
11952 break;
11953
11954 case bp_overlay_event:
11955 /* By analogy with the thread event, GDB should not stop for these. */
11956 gdb_printf (_("Overlay Event Breakpoint: gdb should not stop!\n"));
11957 break;
11958
11959 case bp_longjmp_master:
11960 /* These should never be enabled. */
11961 gdb_printf (_("Longjmp Master Breakpoint: gdb should not stop!\n"));
11962 break;
11963
11964 case bp_std_terminate_master:
11965 /* These should never be enabled. */
11966 gdb_printf (_("std::terminate Master Breakpoint: "
11967 "gdb should not stop!\n"));
11968 break;
11969
11970 case bp_exception_master:
11971 /* These should never be enabled. */
11972 gdb_printf (_("Exception Master Breakpoint: "
11973 "gdb should not stop!\n"));
11974 break;
11975 }
11976
11977 return PRINT_NOTHING;
11978 }
11979
11980 void
11981 internal_breakpoint::print_mention () const
11982 {
11983 /* Nothing to mention. These breakpoints are internal. */
11984 }
11985
11986 /* Virtual table for momentary breakpoints */
11987
11988 void
11989 momentary_breakpoint::re_set ()
11990 {
11991 /* Keep temporary breakpoints, which can be encountered when we step
11992 over a dlopen call and solib_add is resetting the breakpoints.
11993 Otherwise these should have been blown away via the cleanup chain
11994 or by breakpoint_init_inferior when we rerun the executable. */
11995 }
11996
11997 void
11998 momentary_breakpoint::check_status (bpstat *bs)
11999 {
12000 /* Nothing. The point of these breakpoints is causing a stop. */
12001 }
12002
12003 enum print_stop_action
12004 momentary_breakpoint::print_it (const bpstat *bs) const
12005 {
12006 return PRINT_UNKNOWN;
12007 }
12008
12009 void
12010 momentary_breakpoint::print_mention () const
12011 {
12012 /* Nothing to mention. These breakpoints are internal. */
12013 }
12014
12015 /* Ensure INITIATING_FRAME is cleared when no such breakpoint exists.
12016
12017 It gets cleared already on the removal of the first one of such placed
12018 breakpoints. This is OK as they get all removed altogether. */
12019
12020 longjmp_breakpoint::~longjmp_breakpoint ()
12021 {
12022 thread_info *tp = find_thread_global_id (this->thread);
12023
12024 if (tp != NULL)
12025 tp->initiating_frame = null_frame_id;
12026 }
12027
12028 static void
12029 bkpt_probe_create_sals_from_location_spec (location_spec *locspec,
12030 struct linespec_result *canonical)
12031
12032 {
12033 struct linespec_sals lsal;
12034
12035 lsal.sals = parse_probes (locspec, NULL, canonical);
12036 lsal.canonical = xstrdup (canonical->locspec->to_string ());
12037 canonical->lsals.push_back (std::move (lsal));
12038 }
12039
12040 static std::vector<symtab_and_line>
12041 bkpt_probe_decode_location_spec (struct breakpoint *b,
12042 location_spec *locspec,
12043 program_space *search_pspace)
12044 {
12045 std::vector<symtab_and_line> sals
12046 = parse_probes (locspec, search_pspace, NULL);
12047 if (sals.empty ())
12048 error (_("probe not found"));
12049 return sals;
12050 }
12051
12052 int
12053 tracepoint::breakpoint_hit (const struct bp_location *bl,
12054 const address_space *aspace, CORE_ADDR bp_addr,
12055 const target_waitstatus &ws)
12056 {
12057 /* By definition, the inferior does not report stops at
12058 tracepoints. */
12059 return 0;
12060 }
12061
12062 void
12063 tracepoint::print_one_detail (struct ui_out *uiout) const
12064 {
12065 if (!static_trace_marker_id.empty ())
12066 {
12067 gdb_assert (type == bp_static_tracepoint
12068 || type == bp_static_marker_tracepoint);
12069
12070 uiout->message ("\tmarker id is %pF\n",
12071 string_field ("static-tracepoint-marker-string-id",
12072 static_trace_marker_id.c_str ()));
12073 }
12074 }
12075
12076 void
12077 tracepoint::print_mention () const
12078 {
12079 if (current_uiout->is_mi_like_p ())
12080 return;
12081
12082 switch (type)
12083 {
12084 case bp_tracepoint:
12085 gdb_printf (_("Tracepoint"));
12086 gdb_printf (_(" %d"), number);
12087 break;
12088 case bp_fast_tracepoint:
12089 gdb_printf (_("Fast tracepoint"));
12090 gdb_printf (_(" %d"), number);
12091 break;
12092 case bp_static_tracepoint:
12093 case bp_static_marker_tracepoint:
12094 gdb_printf (_("Static tracepoint"));
12095 gdb_printf (_(" %d"), number);
12096 break;
12097 default:
12098 internal_error (_("unhandled tracepoint type %d"), (int) type);
12099 }
12100
12101 say_where ();
12102 }
12103
12104 void
12105 tracepoint::print_recreate (struct ui_file *fp) const
12106 {
12107 if (type == bp_fast_tracepoint)
12108 gdb_printf (fp, "ftrace");
12109 else if (type == bp_static_tracepoint
12110 || type == bp_static_marker_tracepoint)
12111 gdb_printf (fp, "strace");
12112 else if (type == bp_tracepoint)
12113 gdb_printf (fp, "trace");
12114 else
12115 internal_error (_("unhandled tracepoint type %d"), (int) type);
12116
12117 gdb_printf (fp, " %s", locspec->to_string ());
12118 print_recreate_thread (fp);
12119
12120 if (pass_count)
12121 gdb_printf (fp, " passcount %d\n", pass_count);
12122 }
12123
12124 /* Virtual table for tracepoints on static probes. */
12125
12126 static void
12127 tracepoint_probe_create_sals_from_location_spec
12128 (location_spec *locspec,
12129 struct linespec_result *canonical)
12130 {
12131 /* We use the same method for breakpoint on probes. */
12132 bkpt_probe_create_sals_from_location_spec (locspec, canonical);
12133 }
12134
12135 void
12136 dprintf_breakpoint::re_set ()
12137 {
12138 re_set_default ();
12139
12140 /* extra_string should never be non-NULL for dprintf. */
12141 gdb_assert (extra_string != NULL);
12142
12143 /* 1 - connect to target 1, that can run breakpoint commands.
12144 2 - create a dprintf, which resolves fine.
12145 3 - disconnect from target 1
12146 4 - connect to target 2, that can NOT run breakpoint commands.
12147
12148 After steps #3/#4, you'll want the dprintf command list to
12149 be updated, because target 1 and 2 may well return different
12150 answers for target_can_run_breakpoint_commands().
12151 Given absence of finer grained resetting, we get to do
12152 it all the time. */
12153 if (extra_string != NULL)
12154 update_dprintf_command_list (this);
12155 }
12156
12157 /* Implement the "print_recreate" method for dprintf. */
12158
12159 void
12160 dprintf_breakpoint::print_recreate (struct ui_file *fp) const
12161 {
12162 gdb_printf (fp, "dprintf %s,%s", locspec->to_string (), extra_string.get ());
12163 print_recreate_thread (fp);
12164 }
12165
12166 /* Implement the "after_condition_true" method for dprintf.
12167
12168 dprintf's are implemented with regular commands in their command
12169 list, but we run the commands here instead of before presenting the
12170 stop to the user, as dprintf's don't actually cause a stop. This
12171 also makes it so that the commands of multiple dprintfs at the same
12172 address are all handled. */
12173
12174 void
12175 dprintf_breakpoint::after_condition_true (struct bpstat *bs)
12176 {
12177 /* dprintf's never cause a stop. This wasn't set in the
12178 check_status hook instead because that would make the dprintf's
12179 condition not be evaluated. */
12180 bs->stop = false;
12181
12182 /* Run the command list here. Take ownership of it instead of
12183 copying. We never want these commands to run later in
12184 bpstat_do_actions, if a breakpoint that causes a stop happens to
12185 be set at same address as this dprintf, or even if running the
12186 commands here throws. */
12187 counted_command_line cmds = std::move (bs->commands);
12188 gdb_assert (cmds != nullptr);
12189 execute_control_commands (cmds.get (), 0);
12190 }
12191
12192 /* The breakpoint_ops structure to be used on static tracepoints with
12193 markers (`-m'). */
12194
12195 static void
12196 strace_marker_create_sals_from_location_spec (location_spec *locspec,
12197 struct linespec_result *canonical)
12198 {
12199 struct linespec_sals lsal;
12200 const char *arg_start, *arg;
12201
12202 arg = arg_start = as_linespec_location_spec (locspec)->spec_string;
12203 lsal.sals = decode_static_tracepoint_spec (&arg);
12204
12205 std::string str (arg_start, arg - arg_start);
12206 const char *ptr = str.c_str ();
12207 canonical->locspec
12208 = new_linespec_location_spec (&ptr, symbol_name_match_type::FULL);
12209
12210 lsal.canonical = xstrdup (canonical->locspec->to_string ());
12211 canonical->lsals.push_back (std::move (lsal));
12212 }
12213
12214 static void
12215 strace_marker_create_breakpoints_sal (struct gdbarch *gdbarch,
12216 struct linespec_result *canonical,
12217 gdb::unique_xmalloc_ptr<char> cond_string,
12218 gdb::unique_xmalloc_ptr<char> extra_string,
12219 enum bptype type_wanted,
12220 enum bpdisp disposition,
12221 int thread,
12222 int task, int ignore_count,
12223 int from_tty, int enabled,
12224 int internal, unsigned flags)
12225 {
12226 const linespec_sals &lsal = canonical->lsals[0];
12227
12228 /* If the user is creating a static tracepoint by marker id
12229 (strace -m MARKER_ID), then store the sals index, so that
12230 breakpoint_re_set can try to match up which of the newly
12231 found markers corresponds to this one, and, don't try to
12232 expand multiple locations for each sal, given than SALS
12233 already should contain all sals for MARKER_ID. */
12234
12235 for (size_t i = 0; i < lsal.sals.size (); i++)
12236 {
12237 location_spec_up locspec = canonical->locspec->clone ();
12238
12239 std::unique_ptr<tracepoint> tp
12240 (new tracepoint (gdbarch,
12241 type_wanted,
12242 lsal.sals[i],
12243 std::move (locspec),
12244 NULL,
12245 std::move (cond_string),
12246 std::move (extra_string),
12247 disposition,
12248 thread, task, ignore_count,
12249 from_tty, enabled, flags,
12250 canonical->special_display));
12251
12252 /* Given that its possible to have multiple markers with
12253 the same string id, if the user is creating a static
12254 tracepoint by marker id ("strace -m MARKER_ID"), then
12255 store the sals index, so that breakpoint_re_set can
12256 try to match up which of the newly found markers
12257 corresponds to this one */
12258 tp->static_trace_marker_id_idx = i;
12259
12260 install_breakpoint (internal, std::move (tp), 0);
12261 }
12262 }
12263
12264 std::vector<symtab_and_line>
12265 static_marker_tracepoint::decode_location_spec (location_spec *locspec,
12266 program_space *search_pspace)
12267 {
12268 const char *s = as_linespec_location_spec (locspec)->spec_string;
12269
12270 std::vector<symtab_and_line> sals = decode_static_tracepoint_spec (&s);
12271 if (sals.size () > static_trace_marker_id_idx)
12272 {
12273 sals[0] = sals[static_trace_marker_id_idx];
12274 sals.resize (1);
12275 return sals;
12276 }
12277 else
12278 error (_("marker %s not found"), static_trace_marker_id.c_str ());
12279 }
12280
12281 /* Static tracepoints with marker (`-m'). */
12282 static struct breakpoint_ops strace_marker_breakpoint_ops =
12283 {
12284 strace_marker_create_sals_from_location_spec,
12285 strace_marker_create_breakpoints_sal,
12286 };
12287
12288 static bool
12289 strace_marker_p (struct breakpoint *b)
12290 {
12291 return b->type == bp_static_marker_tracepoint;
12292 }
12293
12294 /* Delete a breakpoint and clean up all traces of it in the data
12295 structures. */
12296
12297 void
12298 delete_breakpoint (struct breakpoint *bpt)
12299 {
12300 gdb_assert (bpt != NULL);
12301
12302 /* Has this bp already been deleted? This can happen because
12303 multiple lists can hold pointers to bp's. bpstat lists are
12304 especial culprits.
12305
12306 One example of this happening is a watchpoint's scope bp. When
12307 the scope bp triggers, we notice that the watchpoint is out of
12308 scope, and delete it. We also delete its scope bp. But the
12309 scope bp is marked "auto-deleting", and is already on a bpstat.
12310 That bpstat is then checked for auto-deleting bp's, which are
12311 deleted.
12312
12313 A real solution to this problem might involve reference counts in
12314 bp's, and/or giving them pointers back to their referencing
12315 bpstat's, and teaching delete_breakpoint to only free a bp's
12316 storage when no more references were extent. A cheaper bandaid
12317 was chosen. */
12318 if (bpt->type == bp_none)
12319 return;
12320
12321 /* At least avoid this stale reference until the reference counting
12322 of breakpoints gets resolved. */
12323 if (bpt->related_breakpoint != bpt)
12324 {
12325 struct breakpoint *related;
12326 struct watchpoint *w;
12327
12328 if (bpt->type == bp_watchpoint_scope)
12329 w = (struct watchpoint *) bpt->related_breakpoint;
12330 else if (bpt->related_breakpoint->type == bp_watchpoint_scope)
12331 w = (struct watchpoint *) bpt;
12332 else
12333 w = NULL;
12334 if (w != NULL)
12335 watchpoint_del_at_next_stop (w);
12336
12337 /* Unlink bpt from the bpt->related_breakpoint ring. */
12338 for (related = bpt; related->related_breakpoint != bpt;
12339 related = related->related_breakpoint);
12340 related->related_breakpoint = bpt->related_breakpoint;
12341 bpt->related_breakpoint = bpt;
12342 }
12343
12344 /* watch_command_1 creates a watchpoint but only sets its number if
12345 update_watchpoint succeeds in creating its bp_locations. If there's
12346 a problem in that process, we'll be asked to delete the half-created
12347 watchpoint. In that case, don't announce the deletion. */
12348 if (bpt->number)
12349 gdb::observers::breakpoint_deleted.notify (bpt);
12350
12351 if (breakpoint_chain == bpt)
12352 breakpoint_chain = bpt->next;
12353
12354 for (breakpoint *b : all_breakpoints ())
12355 if (b->next == bpt)
12356 {
12357 b->next = bpt->next;
12358 break;
12359 }
12360
12361 /* Be sure no bpstat's are pointing at the breakpoint after it's
12362 been freed. */
12363 /* FIXME, how can we find all bpstat's? We just check stop_bpstat
12364 in all threads for now. Note that we cannot just remove bpstats
12365 pointing at bpt from the stop_bpstat list entirely, as breakpoint
12366 commands are associated with the bpstat; if we remove it here,
12367 then the later call to bpstat_do_actions (&stop_bpstat); in
12368 event-top.c won't do anything, and temporary breakpoints with
12369 commands won't work. */
12370
12371 iterate_over_threads (bpstat_remove_breakpoint_callback, bpt);
12372
12373 /* Now that breakpoint is removed from breakpoint list, update the
12374 global location list. This will remove locations that used to
12375 belong to this breakpoint. Do this before freeing the breakpoint
12376 itself, since remove_breakpoint looks at location's owner. It
12377 might be better design to have location completely
12378 self-contained, but it's not the case now. */
12379 update_global_location_list (UGLL_DONT_INSERT);
12380
12381 /* On the chance that someone will soon try again to delete this
12382 same bp, we mark it as deleted before freeing its storage. */
12383 bpt->type = bp_none;
12384 delete bpt;
12385 }
12386
12387 /* Iterator function to call a user-provided callback function once
12388 for each of B and its related breakpoints. */
12389
12390 static void
12391 iterate_over_related_breakpoints (struct breakpoint *b,
12392 gdb::function_view<void (breakpoint *)> function)
12393 {
12394 struct breakpoint *related;
12395
12396 related = b;
12397 do
12398 {
12399 struct breakpoint *next;
12400
12401 /* FUNCTION may delete RELATED. */
12402 next = related->related_breakpoint;
12403
12404 if (next == related)
12405 {
12406 /* RELATED is the last ring entry. */
12407 function (related);
12408
12409 /* FUNCTION may have deleted it, so we'd never reach back to
12410 B. There's nothing left to do anyway, so just break
12411 out. */
12412 break;
12413 }
12414 else
12415 function (related);
12416
12417 related = next;
12418 }
12419 while (related != b);
12420 }
12421
12422 static void
12423 delete_command (const char *arg, int from_tty)
12424 {
12425 dont_repeat ();
12426
12427 if (arg == 0)
12428 {
12429 int breaks_to_delete = 0;
12430
12431 /* Delete all breakpoints if no argument. Do not delete
12432 internal breakpoints, these have to be deleted with an
12433 explicit breakpoint number argument. */
12434 for (breakpoint *b : all_breakpoints ())
12435 if (user_breakpoint_p (b))
12436 {
12437 breaks_to_delete = 1;
12438 break;
12439 }
12440
12441 /* Ask user only if there are some breakpoints to delete. */
12442 if (!from_tty
12443 || (breaks_to_delete && query (_("Delete all breakpoints? "))))
12444 for (breakpoint *b : all_breakpoints_safe ())
12445 if (user_breakpoint_p (b))
12446 delete_breakpoint (b);
12447 }
12448 else
12449 map_breakpoint_numbers
12450 (arg, [&] (breakpoint *br)
12451 {
12452 iterate_over_related_breakpoints (br, delete_breakpoint);
12453 });
12454 }
12455
12456 /* Return true if all locations of B bound to PSPACE are pending. If
12457 PSPACE is NULL, all locations of all program spaces are
12458 considered. */
12459
12460 static bool
12461 all_locations_are_pending (struct breakpoint *b, struct program_space *pspace)
12462 {
12463 for (bp_location *loc : b->locations ())
12464 if ((pspace == NULL
12465 || loc->pspace == pspace)
12466 && !loc->shlib_disabled
12467 && !loc->pspace->executing_startup)
12468 return false;
12469 return true;
12470 }
12471
12472 /* Subroutine of update_breakpoint_locations to simplify it.
12473 Return true if multiple fns in list LOC have the same name.
12474 Null names are ignored. */
12475
12476 static bool
12477 ambiguous_names_p (struct bp_location *loc)
12478 {
12479 struct bp_location *l;
12480 htab_up htab (htab_create_alloc (13, htab_hash_string, htab_eq_string, NULL,
12481 xcalloc, xfree));
12482
12483 for (l = loc; l != NULL; l = l->next)
12484 {
12485 const char **slot;
12486 const char *name = l->function_name.get ();
12487
12488 /* Allow for some names to be NULL, ignore them. */
12489 if (name == NULL)
12490 continue;
12491
12492 slot = (const char **) htab_find_slot (htab.get (), (const void *) name,
12493 INSERT);
12494 /* NOTE: We can assume slot != NULL here because xcalloc never
12495 returns NULL. */
12496 if (*slot != NULL)
12497 return true;
12498 *slot = name;
12499 }
12500
12501 return false;
12502 }
12503
12504 /* When symbols change, it probably means the sources changed as well,
12505 and it might mean the static tracepoint markers are no longer at
12506 the same address or line numbers they used to be at last we
12507 checked. Losing your static tracepoints whenever you rebuild is
12508 undesirable. This function tries to resync/rematch gdb static
12509 tracepoints with the markers on the target, for static tracepoints
12510 that have not been set by marker id. Static tracepoint that have
12511 been set by marker id are reset by marker id in breakpoint_re_set.
12512 The heuristic is:
12513
12514 1) For a tracepoint set at a specific address, look for a marker at
12515 the old PC. If one is found there, assume to be the same marker.
12516 If the name / string id of the marker found is different from the
12517 previous known name, assume that means the user renamed the marker
12518 in the sources, and output a warning.
12519
12520 2) For a tracepoint set at a given line number, look for a marker
12521 at the new address of the old line number. If one is found there,
12522 assume to be the same marker. If the name / string id of the
12523 marker found is different from the previous known name, assume that
12524 means the user renamed the marker in the sources, and output a
12525 warning.
12526
12527 3) If a marker is no longer found at the same address or line, it
12528 may mean the marker no longer exists. But it may also just mean
12529 the code changed a bit. Maybe the user added a few lines of code
12530 that made the marker move up or down (in line number terms). Ask
12531 the target for info about the marker with the string id as we knew
12532 it. If found, update line number and address in the matching
12533 static tracepoint. This will get confused if there's more than one
12534 marker with the same ID (possible in UST, although unadvised
12535 precisely because it confuses tools). */
12536
12537 static struct symtab_and_line
12538 update_static_tracepoint (struct breakpoint *b, struct symtab_and_line sal)
12539 {
12540 struct tracepoint *tp = (struct tracepoint *) b;
12541 struct static_tracepoint_marker marker;
12542 CORE_ADDR pc;
12543
12544 pc = sal.pc;
12545 if (sal.line)
12546 find_line_pc (sal.symtab, sal.line, &pc);
12547
12548 if (target_static_tracepoint_marker_at (pc, &marker))
12549 {
12550 if (tp->static_trace_marker_id != marker.str_id)
12551 warning (_("static tracepoint %d changed probed marker from %s to %s"),
12552 b->number, tp->static_trace_marker_id.c_str (),
12553 marker.str_id.c_str ());
12554
12555 tp->static_trace_marker_id = std::move (marker.str_id);
12556
12557 return sal;
12558 }
12559
12560 /* Old marker wasn't found on target at lineno. Try looking it up
12561 by string ID. */
12562 if (!sal.explicit_pc
12563 && sal.line != 0
12564 && sal.symtab != NULL
12565 && !tp->static_trace_marker_id.empty ())
12566 {
12567 std::vector<static_tracepoint_marker> markers
12568 = target_static_tracepoint_markers_by_strid
12569 (tp->static_trace_marker_id.c_str ());
12570
12571 if (!markers.empty ())
12572 {
12573 struct symbol *sym;
12574 struct static_tracepoint_marker *tpmarker;
12575 struct ui_out *uiout = current_uiout;
12576
12577 tpmarker = &markers[0];
12578
12579 tp->static_trace_marker_id = std::move (tpmarker->str_id);
12580
12581 warning (_("marker for static tracepoint %d (%s) not "
12582 "found at previous line number"),
12583 b->number, tp->static_trace_marker_id.c_str ());
12584
12585 symtab_and_line sal2 = find_pc_line (tpmarker->address, 0);
12586 sym = find_pc_sect_function (tpmarker->address, NULL);
12587 uiout->text ("Now in ");
12588 if (sym)
12589 {
12590 uiout->field_string ("func", sym->print_name (),
12591 function_name_style.style ());
12592 uiout->text (" at ");
12593 }
12594 uiout->field_string ("file",
12595 symtab_to_filename_for_display (sal2.symtab),
12596 file_name_style.style ());
12597 uiout->text (":");
12598
12599 if (uiout->is_mi_like_p ())
12600 {
12601 const char *fullname = symtab_to_fullname (sal2.symtab);
12602
12603 uiout->field_string ("fullname", fullname);
12604 }
12605
12606 uiout->field_signed ("line", sal2.line);
12607 uiout->text ("\n");
12608
12609 b->loc->line_number = sal2.line;
12610 b->loc->symtab = sym != NULL ? sal2.symtab : NULL;
12611
12612 std::unique_ptr<explicit_location_spec> els
12613 (new explicit_location_spec ());
12614 els->source_filename
12615 = xstrdup (symtab_to_filename_for_display (sal2.symtab));
12616 els->line_offset.offset = b->loc->line_number;
12617 els->line_offset.sign = LINE_OFFSET_NONE;
12618
12619 b->locspec = std::move (els);
12620
12621 /* Might be nice to check if function changed, and warn if
12622 so. */
12623 }
12624 }
12625 return sal;
12626 }
12627
12628 /* Returns true iff locations A and B are sufficiently same that
12629 we don't need to report breakpoint as changed. */
12630
12631 static bool
12632 locations_are_equal (struct bp_location *a, struct bp_location *b)
12633 {
12634 while (a && b)
12635 {
12636 if (a->address != b->address)
12637 return false;
12638
12639 if (a->shlib_disabled != b->shlib_disabled)
12640 return false;
12641
12642 if (a->enabled != b->enabled)
12643 return false;
12644
12645 if (a->disabled_by_cond != b->disabled_by_cond)
12646 return false;
12647
12648 a = a->next;
12649 b = b->next;
12650 }
12651
12652 if ((a == NULL) != (b == NULL))
12653 return false;
12654
12655 return true;
12656 }
12657
12658 /* Split all locations of B that are bound to PSPACE out of B's
12659 location list to a separate list and return that list's head. If
12660 PSPACE is NULL, hoist out all locations of B. */
12661
12662 static struct bp_location *
12663 hoist_existing_locations (struct breakpoint *b, struct program_space *pspace)
12664 {
12665 struct bp_location head;
12666 struct bp_location *i = b->loc;
12667 struct bp_location **i_link = &b->loc;
12668 struct bp_location *hoisted = &head;
12669
12670 if (pspace == NULL)
12671 {
12672 i = b->loc;
12673 b->loc = NULL;
12674 return i;
12675 }
12676
12677 head.next = NULL;
12678
12679 while (i != NULL)
12680 {
12681 if (i->pspace == pspace)
12682 {
12683 *i_link = i->next;
12684 i->next = NULL;
12685 hoisted->next = i;
12686 hoisted = i;
12687 }
12688 else
12689 i_link = &i->next;
12690 i = *i_link;
12691 }
12692
12693 return head.next;
12694 }
12695
12696 /* Create new breakpoint locations for B (a hardware or software
12697 breakpoint) based on SALS and SALS_END. If SALS_END.NELTS is not
12698 zero, then B is a ranged breakpoint. Only recreates locations for
12699 FILTER_PSPACE. Locations of other program spaces are left
12700 untouched. */
12701
12702 void
12703 update_breakpoint_locations (code_breakpoint *b,
12704 struct program_space *filter_pspace,
12705 gdb::array_view<const symtab_and_line> sals,
12706 gdb::array_view<const symtab_and_line> sals_end)
12707 {
12708 struct bp_location *existing_locations;
12709
12710 if (!sals_end.empty () && (sals.size () != 1 || sals_end.size () != 1))
12711 {
12712 /* Ranged breakpoints have only one start location and one end
12713 location. */
12714 b->enable_state = bp_disabled;
12715 gdb_printf (gdb_stderr,
12716 _("Could not reset ranged breakpoint %d: "
12717 "multiple locations found\n"),
12718 b->number);
12719 return;
12720 }
12721
12722 /* If there's no new locations, and all existing locations are
12723 pending, don't do anything. This optimizes the common case where
12724 all locations are in the same shared library, that was unloaded.
12725 We'd like to retain the location, so that when the library is
12726 loaded again, we don't loose the enabled/disabled status of the
12727 individual locations. */
12728 if (all_locations_are_pending (b, filter_pspace) && sals.empty ())
12729 return;
12730
12731 existing_locations = hoist_existing_locations (b, filter_pspace);
12732
12733 for (const auto &sal : sals)
12734 {
12735 struct bp_location *new_loc;
12736
12737 switch_to_program_space_and_thread (sal.pspace);
12738
12739 new_loc = b->add_location (sal);
12740
12741 /* Reparse conditions, they might contain references to the
12742 old symtab. */
12743 if (b->cond_string != NULL)
12744 {
12745 const char *s;
12746
12747 s = b->cond_string.get ();
12748 try
12749 {
12750 new_loc->cond = parse_exp_1 (&s, sal.pc,
12751 block_for_pc (sal.pc),
12752 0);
12753 }
12754 catch (const gdb_exception_error &e)
12755 {
12756 new_loc->disabled_by_cond = true;
12757 }
12758 }
12759
12760 if (!sals_end.empty ())
12761 {
12762 CORE_ADDR end = find_breakpoint_range_end (sals_end[0]);
12763
12764 new_loc->length = end - sals[0].pc + 1;
12765 }
12766 }
12767
12768 /* If possible, carry over 'disable' status from existing
12769 breakpoints. */
12770 {
12771 struct bp_location *e = existing_locations;
12772 /* If there are multiple breakpoints with the same function name,
12773 e.g. for inline functions, comparing function names won't work.
12774 Instead compare pc addresses; this is just a heuristic as things
12775 may have moved, but in practice it gives the correct answer
12776 often enough until a better solution is found. */
12777 int have_ambiguous_names = ambiguous_names_p (b->loc);
12778
12779 for (; e; e = e->next)
12780 {
12781 if ((!e->enabled || e->disabled_by_cond) && e->function_name)
12782 {
12783 if (have_ambiguous_names)
12784 {
12785 for (bp_location *l : b->locations ())
12786 {
12787 /* Ignore software vs hardware location type at
12788 this point, because with "set breakpoint
12789 auto-hw", after a re-set, locations that were
12790 hardware can end up as software, or vice versa.
12791 As mentioned above, this is an heuristic and in
12792 practice should give the correct answer often
12793 enough. */
12794 if (breakpoint_locations_match (e, l, true))
12795 {
12796 l->enabled = e->enabled;
12797 l->disabled_by_cond = e->disabled_by_cond;
12798 break;
12799 }
12800 }
12801 }
12802 else
12803 {
12804 for (bp_location *l : b->locations ())
12805 if (l->function_name
12806 && strcmp (e->function_name.get (),
12807 l->function_name.get ()) == 0)
12808 {
12809 l->enabled = e->enabled;
12810 l->disabled_by_cond = e->disabled_by_cond;
12811 break;
12812 }
12813 }
12814 }
12815 }
12816 }
12817
12818 if (!locations_are_equal (existing_locations, b->loc))
12819 gdb::observers::breakpoint_modified.notify (b);
12820 }
12821
12822 /* Find the SaL locations corresponding to the given LOCSPEC.
12823 On return, FOUND will be 1 if any SaL was found, zero otherwise. */
12824
12825 std::vector<symtab_and_line>
12826 code_breakpoint::location_spec_to_sals (location_spec *locspec,
12827 struct program_space *search_pspace,
12828 int *found)
12829 {
12830 struct gdb_exception exception;
12831
12832 std::vector<symtab_and_line> sals;
12833
12834 try
12835 {
12836 sals = decode_location_spec (locspec, search_pspace);
12837 }
12838 catch (gdb_exception_error &e)
12839 {
12840 int not_found_and_ok = false;
12841
12842 /* For pending breakpoints, it's expected that parsing will
12843 fail until the right shared library is loaded. User has
12844 already told to create pending breakpoints and don't need
12845 extra messages. If breakpoint is in bp_shlib_disabled
12846 state, then user already saw the message about that
12847 breakpoint being disabled, and don't want to see more
12848 errors. */
12849 if (e.error == NOT_FOUND_ERROR
12850 && (condition_not_parsed
12851 || (loc != NULL
12852 && search_pspace != NULL
12853 && loc->pspace != search_pspace)
12854 || (loc && loc->shlib_disabled)
12855 || (loc && loc->pspace->executing_startup)
12856 || enable_state == bp_disabled))
12857 not_found_and_ok = true;
12858
12859 if (!not_found_and_ok)
12860 {
12861 /* We surely don't want to warn about the same breakpoint
12862 10 times. One solution, implemented here, is disable
12863 the breakpoint on error. Another solution would be to
12864 have separate 'warning emitted' flag. Since this
12865 happens only when a binary has changed, I don't know
12866 which approach is better. */
12867 enable_state = bp_disabled;
12868 throw;
12869 }
12870
12871 exception = std::move (e);
12872 }
12873
12874 if (exception.reason == 0 || exception.error != NOT_FOUND_ERROR)
12875 {
12876 for (auto &sal : sals)
12877 resolve_sal_pc (&sal);
12878 if (condition_not_parsed && extra_string != NULL)
12879 {
12880 gdb::unique_xmalloc_ptr<char> local_cond, local_extra;
12881 int local_thread, local_task;
12882
12883 find_condition_and_thread_for_sals (sals, extra_string.get (),
12884 &local_cond, &local_thread,
12885 &local_task, &local_extra);
12886 gdb_assert (cond_string == nullptr);
12887 if (local_cond != nullptr)
12888 cond_string = std::move (local_cond);
12889 thread = local_thread;
12890 task = local_task;
12891 if (local_extra != nullptr)
12892 extra_string = std::move (local_extra);
12893 condition_not_parsed = 0;
12894 }
12895
12896 if (type == bp_static_tracepoint)
12897 sals[0] = update_static_tracepoint (this, sals[0]);
12898
12899 *found = 1;
12900 }
12901 else
12902 *found = 0;
12903
12904 return sals;
12905 }
12906
12907 /* The default re_set method, for typical hardware or software
12908 breakpoints. Reevaluate the breakpoint and recreate its
12909 locations. */
12910
12911 void
12912 code_breakpoint::re_set_default ()
12913 {
12914 struct program_space *filter_pspace = current_program_space;
12915 std::vector<symtab_and_line> expanded, expanded_end;
12916
12917 int found;
12918 std::vector<symtab_and_line> sals = location_spec_to_sals (locspec.get (),
12919 filter_pspace,
12920 &found);
12921 if (found)
12922 expanded = std::move (sals);
12923
12924 if (locspec_range_end != nullptr)
12925 {
12926 std::vector<symtab_and_line> sals_end
12927 = location_spec_to_sals (locspec_range_end.get (),
12928 filter_pspace, &found);
12929 if (found)
12930 expanded_end = std::move (sals_end);
12931 }
12932
12933 update_breakpoint_locations (this, filter_pspace, expanded, expanded_end);
12934 }
12935
12936 /* Default method for creating SALs from an address string. It basically
12937 calls parse_breakpoint_sals. Return 1 for success, zero for failure. */
12938
12939 static void
12940 create_sals_from_location_spec_default (location_spec *locspec,
12941 struct linespec_result *canonical)
12942 {
12943 parse_breakpoint_sals (locspec, canonical);
12944 }
12945
12946 /* Reset a breakpoint. */
12947
12948 static void
12949 breakpoint_re_set_one (breakpoint *b)
12950 {
12951 input_radix = b->input_radix;
12952 set_language (b->language);
12953
12954 b->re_set ();
12955 }
12956
12957 /* Re-set breakpoint locations for the current program space.
12958 Locations bound to other program spaces are left untouched. */
12959
12960 void
12961 breakpoint_re_set (void)
12962 {
12963 {
12964 scoped_restore_current_language save_language;
12965 scoped_restore save_input_radix = make_scoped_restore (&input_radix);
12966 scoped_restore_current_pspace_and_thread restore_pspace_thread;
12967
12968 /* breakpoint_re_set_one sets the current_language to the language
12969 of the breakpoint it is resetting (see prepare_re_set_context)
12970 before re-evaluating the breakpoint's location. This change can
12971 unfortunately get undone by accident if the language_mode is set
12972 to auto, and we either switch frames, or more likely in this context,
12973 we select the current frame.
12974
12975 We prevent this by temporarily turning the language_mode to
12976 language_mode_manual. We restore it once all breakpoints
12977 have been reset. */
12978 scoped_restore save_language_mode = make_scoped_restore (&language_mode);
12979 language_mode = language_mode_manual;
12980
12981 /* Note: we must not try to insert locations until after all
12982 breakpoints have been re-set. Otherwise, e.g., when re-setting
12983 breakpoint 1, we'd insert the locations of breakpoint 2, which
12984 hadn't been re-set yet, and thus may have stale locations. */
12985
12986 for (breakpoint *b : all_breakpoints_safe ())
12987 {
12988 try
12989 {
12990 breakpoint_re_set_one (b);
12991 }
12992 catch (const gdb_exception &ex)
12993 {
12994 exception_fprintf (gdb_stderr, ex,
12995 "Error in re-setting breakpoint %d: ",
12996 b->number);
12997 }
12998 }
12999
13000 jit_breakpoint_re_set ();
13001 }
13002
13003 create_overlay_event_breakpoint ();
13004 create_longjmp_master_breakpoint ();
13005 create_std_terminate_master_breakpoint ();
13006 create_exception_master_breakpoint ();
13007
13008 /* Now we can insert. */
13009 update_global_location_list (UGLL_MAY_INSERT);
13010 }
13011 \f
13012 /* Reset the thread number of this breakpoint:
13013
13014 - If the breakpoint is for all threads, leave it as-is.
13015 - Else, reset it to the current thread for inferior_ptid. */
13016 void
13017 breakpoint_re_set_thread (struct breakpoint *b)
13018 {
13019 if (b->thread != -1)
13020 {
13021 b->thread = inferior_thread ()->global_num;
13022
13023 /* We're being called after following a fork. The new fork is
13024 selected as current, and unless this was a vfork will have a
13025 different program space from the original thread. Reset that
13026 as well. */
13027 b->loc->pspace = current_program_space;
13028 }
13029 }
13030
13031 /* Set ignore-count of breakpoint number BPTNUM to COUNT.
13032 If from_tty is nonzero, it prints a message to that effect,
13033 which ends with a period (no newline). */
13034
13035 void
13036 set_ignore_count (int bptnum, int count, int from_tty)
13037 {
13038 if (count < 0)
13039 count = 0;
13040
13041 for (breakpoint *b : all_breakpoints ())
13042 if (b->number == bptnum)
13043 {
13044 if (is_tracepoint (b))
13045 {
13046 if (from_tty && count != 0)
13047 gdb_printf (_("Ignore count ignored for tracepoint %d."),
13048 bptnum);
13049 return;
13050 }
13051
13052 b->ignore_count = count;
13053 if (from_tty)
13054 {
13055 if (count == 0)
13056 gdb_printf (_("Will stop next time "
13057 "breakpoint %d is reached."),
13058 bptnum);
13059 else if (count == 1)
13060 gdb_printf (_("Will ignore next crossing of breakpoint %d."),
13061 bptnum);
13062 else
13063 gdb_printf (_("Will ignore next %d "
13064 "crossings of breakpoint %d."),
13065 count, bptnum);
13066 }
13067 gdb::observers::breakpoint_modified.notify (b);
13068 return;
13069 }
13070
13071 error (_("No breakpoint number %d."), bptnum);
13072 }
13073
13074 /* Command to set ignore-count of breakpoint N to COUNT. */
13075
13076 static void
13077 ignore_command (const char *args, int from_tty)
13078 {
13079 const char *p = args;
13080 int num;
13081
13082 if (p == 0)
13083 error_no_arg (_("a breakpoint number"));
13084
13085 num = get_number (&p);
13086 if (num == 0)
13087 error (_("bad breakpoint number: '%s'"), args);
13088 if (*p == 0)
13089 error (_("Second argument (specified ignore-count) is missing."));
13090
13091 set_ignore_count (num,
13092 longest_to_int (value_as_long (parse_and_eval (p))),
13093 from_tty);
13094 if (from_tty)
13095 gdb_printf ("\n");
13096 }
13097 \f
13098
13099 /* Call FUNCTION on each of the breakpoints with numbers in the range
13100 defined by BP_NUM_RANGE (an inclusive range). */
13101
13102 static void
13103 map_breakpoint_number_range (std::pair<int, int> bp_num_range,
13104 gdb::function_view<void (breakpoint *)> function)
13105 {
13106 if (bp_num_range.first == 0)
13107 {
13108 warning (_("bad breakpoint number at or near '%d'"),
13109 bp_num_range.first);
13110 }
13111 else
13112 {
13113 for (int i = bp_num_range.first; i <= bp_num_range.second; i++)
13114 {
13115 bool match = false;
13116
13117 for (breakpoint *b : all_breakpoints_safe ())
13118 if (b->number == i)
13119 {
13120 match = true;
13121 function (b);
13122 break;
13123 }
13124 if (!match)
13125 gdb_printf (_("No breakpoint number %d.\n"), i);
13126 }
13127 }
13128 }
13129
13130 /* Call FUNCTION on each of the breakpoints whose numbers are given in
13131 ARGS. */
13132
13133 static void
13134 map_breakpoint_numbers (const char *args,
13135 gdb::function_view<void (breakpoint *)> function)
13136 {
13137 if (args == NULL || *args == '\0')
13138 error_no_arg (_("one or more breakpoint numbers"));
13139
13140 number_or_range_parser parser (args);
13141
13142 while (!parser.finished ())
13143 {
13144 int num = parser.get_number ();
13145 map_breakpoint_number_range (std::make_pair (num, num), function);
13146 }
13147 }
13148
13149 /* Return the breakpoint location structure corresponding to the
13150 BP_NUM and LOC_NUM values. */
13151
13152 static struct bp_location *
13153 find_location_by_number (int bp_num, int loc_num)
13154 {
13155 breakpoint *b = get_breakpoint (bp_num);
13156
13157 if (!b || b->number != bp_num)
13158 error (_("Bad breakpoint number '%d'"), bp_num);
13159
13160 if (loc_num == 0)
13161 error (_("Bad breakpoint location number '%d'"), loc_num);
13162
13163 int n = 0;
13164 for (bp_location *loc : b->locations ())
13165 if (++n == loc_num)
13166 return loc;
13167
13168 error (_("Bad breakpoint location number '%d'"), loc_num);
13169 }
13170
13171 /* Modes of operation for extract_bp_num. */
13172 enum class extract_bp_kind
13173 {
13174 /* Extracting a breakpoint number. */
13175 bp,
13176
13177 /* Extracting a location number. */
13178 loc,
13179 };
13180
13181 /* Extract a breakpoint or location number (as determined by KIND)
13182 from the string starting at START. TRAILER is a character which
13183 can be found after the number. If you don't want a trailer, use
13184 '\0'. If END_OUT is not NULL, it is set to point after the parsed
13185 string. This always returns a positive integer. */
13186
13187 static int
13188 extract_bp_num (extract_bp_kind kind, const char *start,
13189 int trailer, const char **end_out = NULL)
13190 {
13191 const char *end = start;
13192 int num = get_number_trailer (&end, trailer);
13193 if (num < 0)
13194 error (kind == extract_bp_kind::bp
13195 ? _("Negative breakpoint number '%.*s'")
13196 : _("Negative breakpoint location number '%.*s'"),
13197 int (end - start), start);
13198 if (num == 0)
13199 error (kind == extract_bp_kind::bp
13200 ? _("Bad breakpoint number '%.*s'")
13201 : _("Bad breakpoint location number '%.*s'"),
13202 int (end - start), start);
13203
13204 if (end_out != NULL)
13205 *end_out = end;
13206 return num;
13207 }
13208
13209 /* Extract a breakpoint or location range (as determined by KIND) in
13210 the form NUM1-NUM2 stored at &ARG[arg_offset]. Returns a std::pair
13211 representing the (inclusive) range. The returned pair's elements
13212 are always positive integers. */
13213
13214 static std::pair<int, int>
13215 extract_bp_or_bp_range (extract_bp_kind kind,
13216 const std::string &arg,
13217 std::string::size_type arg_offset)
13218 {
13219 std::pair<int, int> range;
13220 const char *bp_loc = &arg[arg_offset];
13221 std::string::size_type dash = arg.find ('-', arg_offset);
13222 if (dash != std::string::npos)
13223 {
13224 /* bp_loc is a range (x-z). */
13225 if (arg.length () == dash + 1)
13226 error (kind == extract_bp_kind::bp
13227 ? _("Bad breakpoint number at or near: '%s'")
13228 : _("Bad breakpoint location number at or near: '%s'"),
13229 bp_loc);
13230
13231 const char *end;
13232 const char *start_first = bp_loc;
13233 const char *start_second = &arg[dash + 1];
13234 range.first = extract_bp_num (kind, start_first, '-');
13235 range.second = extract_bp_num (kind, start_second, '\0', &end);
13236
13237 if (range.first > range.second)
13238 error (kind == extract_bp_kind::bp
13239 ? _("Inverted breakpoint range at '%.*s'")
13240 : _("Inverted breakpoint location range at '%.*s'"),
13241 int (end - start_first), start_first);
13242 }
13243 else
13244 {
13245 /* bp_loc is a single value. */
13246 range.first = extract_bp_num (kind, bp_loc, '\0');
13247 range.second = range.first;
13248 }
13249 return range;
13250 }
13251
13252 /* Extract the breakpoint/location range specified by ARG. Returns
13253 the breakpoint range in BP_NUM_RANGE, and the location range in
13254 BP_LOC_RANGE.
13255
13256 ARG may be in any of the following forms:
13257
13258 x where 'x' is a breakpoint number.
13259 x-y where 'x' and 'y' specify a breakpoint numbers range.
13260 x.y where 'x' is a breakpoint number and 'y' a location number.
13261 x.y-z where 'x' is a breakpoint number and 'y' and 'z' specify a
13262 location number range.
13263 */
13264
13265 static void
13266 extract_bp_number_and_location (const std::string &arg,
13267 std::pair<int, int> &bp_num_range,
13268 std::pair<int, int> &bp_loc_range)
13269 {
13270 std::string::size_type dot = arg.find ('.');
13271
13272 if (dot != std::string::npos)
13273 {
13274 /* Handle 'x.y' and 'x.y-z' cases. */
13275
13276 if (arg.length () == dot + 1 || dot == 0)
13277 error (_("Bad breakpoint number at or near: '%s'"), arg.c_str ());
13278
13279 bp_num_range.first
13280 = extract_bp_num (extract_bp_kind::bp, arg.c_str (), '.');
13281 bp_num_range.second = bp_num_range.first;
13282
13283 bp_loc_range = extract_bp_or_bp_range (extract_bp_kind::loc,
13284 arg, dot + 1);
13285 }
13286 else
13287 {
13288 /* Handle x and x-y cases. */
13289
13290 bp_num_range = extract_bp_or_bp_range (extract_bp_kind::bp, arg, 0);
13291 bp_loc_range.first = 0;
13292 bp_loc_range.second = 0;
13293 }
13294 }
13295
13296 /* Enable or disable a breakpoint location BP_NUM.LOC_NUM. ENABLE
13297 specifies whether to enable or disable. */
13298
13299 static void
13300 enable_disable_bp_num_loc (int bp_num, int loc_num, bool enable)
13301 {
13302 struct bp_location *loc = find_location_by_number (bp_num, loc_num);
13303 if (loc != NULL)
13304 {
13305 if (loc->disabled_by_cond && enable)
13306 error (_("Breakpoint %d's condition is invalid at location %d, "
13307 "cannot enable."), bp_num, loc_num);
13308
13309 if (loc->enabled != enable)
13310 {
13311 loc->enabled = enable;
13312 mark_breakpoint_location_modified (loc);
13313 }
13314 if (target_supports_enable_disable_tracepoint ()
13315 && current_trace_status ()->running && loc->owner
13316 && is_tracepoint (loc->owner))
13317 target_disable_tracepoint (loc);
13318 }
13319 update_global_location_list (UGLL_DONT_INSERT);
13320
13321 gdb::observers::breakpoint_modified.notify (loc->owner);
13322 }
13323
13324 /* Calculates LOC_NUM for LOC by traversing the bp_location chain of LOC's
13325 owner. 1-based indexing. -1 signals NOT FOUND. */
13326
13327 static int
13328 find_loc_num_by_location (const bp_location *loc)
13329 {
13330 if (loc != nullptr && loc->owner != nullptr)
13331 {
13332 /* Locations use 1-based indexing. */
13333 int loc_num = 1;
13334 for (bp_location *it : loc->owner->locations ())
13335 {
13336 if (it == loc)
13337 return loc_num;
13338 loc_num++;
13339 }
13340 }
13341 return -1;
13342 }
13343
13344 /* Enable or disable a breakpoint location LOC. ENABLE
13345 specifies whether to enable or disable. */
13346
13347 void
13348 enable_disable_bp_location (bp_location *loc, bool enable)
13349 {
13350 if (loc == nullptr)
13351 error (_("Breakpoint location is invalid."));
13352
13353 if (loc->owner == nullptr)
13354 error (_("Breakpoint location does not have an owner breakpoint."));
13355
13356 if (loc->disabled_by_cond && enable)
13357 {
13358 int loc_num = find_loc_num_by_location (loc);
13359 if (loc_num == -1)
13360 error (_("Breakpoint location LOC_NUM could not be found."));
13361 else
13362 error (_("Breakpoint %d's condition is invalid at location %d, "
13363 "cannot enable."), loc->owner->number, loc_num);
13364 }
13365
13366 if (loc->enabled != enable)
13367 {
13368 loc->enabled = enable;
13369 mark_breakpoint_location_modified (loc);
13370 }
13371
13372 if (target_supports_enable_disable_tracepoint ()
13373 && current_trace_status ()->running && loc->owner
13374 && is_tracepoint (loc->owner))
13375 target_disable_tracepoint (loc);
13376
13377 update_global_location_list (UGLL_DONT_INSERT);
13378 gdb::observers::breakpoint_modified.notify (loc->owner);
13379 }
13380
13381 /* Enable or disable a range of breakpoint locations. BP_NUM is the
13382 number of the breakpoint, and BP_LOC_RANGE specifies the
13383 (inclusive) range of location numbers of that breakpoint to
13384 enable/disable. ENABLE specifies whether to enable or disable the
13385 location. */
13386
13387 static void
13388 enable_disable_breakpoint_location_range (int bp_num,
13389 std::pair<int, int> &bp_loc_range,
13390 bool enable)
13391 {
13392 for (int i = bp_loc_range.first; i <= bp_loc_range.second; i++)
13393 enable_disable_bp_num_loc (bp_num, i, enable);
13394 }
13395
13396 /* Set ignore-count of breakpoint number BPTNUM to COUNT.
13397 If from_tty is nonzero, it prints a message to that effect,
13398 which ends with a period (no newline). */
13399
13400 void
13401 disable_breakpoint (struct breakpoint *bpt)
13402 {
13403 /* Never disable a watchpoint scope breakpoint; we want to
13404 hit them when we leave scope so we can delete both the
13405 watchpoint and its scope breakpoint at that time. */
13406 if (bpt->type == bp_watchpoint_scope)
13407 return;
13408
13409 bpt->enable_state = bp_disabled;
13410
13411 /* Mark breakpoint locations modified. */
13412 mark_breakpoint_modified (bpt);
13413
13414 if (target_supports_enable_disable_tracepoint ()
13415 && current_trace_status ()->running && is_tracepoint (bpt))
13416 {
13417 for (bp_location *location : bpt->locations ())
13418 target_disable_tracepoint (location);
13419 }
13420
13421 update_global_location_list (UGLL_DONT_INSERT);
13422
13423 gdb::observers::breakpoint_modified.notify (bpt);
13424 }
13425
13426 /* Enable or disable the breakpoint(s) or breakpoint location(s)
13427 specified in ARGS. ARGS may be in any of the formats handled by
13428 extract_bp_number_and_location. ENABLE specifies whether to enable
13429 or disable the breakpoints/locations. */
13430
13431 static void
13432 enable_disable_command (const char *args, int from_tty, bool enable)
13433 {
13434 if (args == 0)
13435 {
13436 for (breakpoint *bpt : all_breakpoints ())
13437 if (user_breakpoint_p (bpt))
13438 {
13439 if (enable)
13440 enable_breakpoint (bpt);
13441 else
13442 disable_breakpoint (bpt);
13443 }
13444 }
13445 else
13446 {
13447 std::string num = extract_arg (&args);
13448
13449 while (!num.empty ())
13450 {
13451 std::pair<int, int> bp_num_range, bp_loc_range;
13452
13453 extract_bp_number_and_location (num, bp_num_range, bp_loc_range);
13454
13455 if (bp_loc_range.first == bp_loc_range.second
13456 && (bp_loc_range.first == 0
13457 || (bp_loc_range.first == 1
13458 && bp_num_range.first == bp_num_range.second
13459 && !has_multiple_locations (bp_num_range.first))))
13460 {
13461 /* Handle breakpoint ids with formats 'x' or 'x-z'
13462 or 'y.1' where y has only one code location. */
13463 map_breakpoint_number_range (bp_num_range,
13464 enable
13465 ? enable_breakpoint
13466 : disable_breakpoint);
13467 }
13468 else
13469 {
13470 /* Handle breakpoint ids with formats 'x.y' or
13471 'x.y-z'. */
13472 enable_disable_breakpoint_location_range
13473 (bp_num_range.first, bp_loc_range, enable);
13474 }
13475 num = extract_arg (&args);
13476 }
13477 }
13478 }
13479
13480 /* The disable command disables the specified breakpoints/locations
13481 (or all defined breakpoints) so they're no longer effective in
13482 stopping the inferior. ARGS may be in any of the forms defined in
13483 extract_bp_number_and_location. */
13484
13485 static void
13486 disable_command (const char *args, int from_tty)
13487 {
13488 enable_disable_command (args, from_tty, false);
13489 }
13490
13491 static void
13492 enable_breakpoint_disp (struct breakpoint *bpt, enum bpdisp disposition,
13493 int count)
13494 {
13495 int target_resources_ok;
13496
13497 if (bpt->type == bp_hardware_breakpoint)
13498 {
13499 int i;
13500 i = hw_breakpoint_used_count ();
13501 target_resources_ok =
13502 target_can_use_hardware_watchpoint (bp_hardware_breakpoint,
13503 i + 1, 0);
13504 if (target_resources_ok == 0)
13505 error (_("No hardware breakpoint support in the target."));
13506 else if (target_resources_ok < 0)
13507 error (_("Hardware breakpoints used exceeds limit."));
13508 }
13509
13510 if (is_watchpoint (bpt))
13511 {
13512 /* Initialize it just to avoid a GCC false warning. */
13513 enum enable_state orig_enable_state = bp_disabled;
13514
13515 try
13516 {
13517 struct watchpoint *w = (struct watchpoint *) bpt;
13518
13519 orig_enable_state = bpt->enable_state;
13520 bpt->enable_state = bp_enabled;
13521 update_watchpoint (w, true /* reparse */);
13522 }
13523 catch (const gdb_exception &e)
13524 {
13525 bpt->enable_state = orig_enable_state;
13526 exception_fprintf (gdb_stderr, e, _("Cannot enable watchpoint %d: "),
13527 bpt->number);
13528 return;
13529 }
13530 }
13531
13532 bpt->enable_state = bp_enabled;
13533
13534 /* Mark breakpoint locations modified. */
13535 mark_breakpoint_modified (bpt);
13536
13537 if (target_supports_enable_disable_tracepoint ()
13538 && current_trace_status ()->running && is_tracepoint (bpt))
13539 {
13540 for (bp_location *location : bpt->locations ())
13541 target_enable_tracepoint (location);
13542 }
13543
13544 bpt->disposition = disposition;
13545 bpt->enable_count = count;
13546 update_global_location_list (UGLL_MAY_INSERT);
13547
13548 gdb::observers::breakpoint_modified.notify (bpt);
13549 }
13550
13551
13552 void
13553 enable_breakpoint (struct breakpoint *bpt)
13554 {
13555 enable_breakpoint_disp (bpt, bpt->disposition, 0);
13556 }
13557
13558 /* The enable command enables the specified breakpoints/locations (or
13559 all defined breakpoints) so they once again become (or continue to
13560 be) effective in stopping the inferior. ARGS may be in any of the
13561 forms defined in extract_bp_number_and_location. */
13562
13563 static void
13564 enable_command (const char *args, int from_tty)
13565 {
13566 enable_disable_command (args, from_tty, true);
13567 }
13568
13569 static void
13570 enable_once_command (const char *args, int from_tty)
13571 {
13572 map_breakpoint_numbers
13573 (args, [&] (breakpoint *b)
13574 {
13575 iterate_over_related_breakpoints
13576 (b, [&] (breakpoint *bpt)
13577 {
13578 enable_breakpoint_disp (bpt, disp_disable, 1);
13579 });
13580 });
13581 }
13582
13583 static void
13584 enable_count_command (const char *args, int from_tty)
13585 {
13586 int count;
13587
13588 if (args == NULL)
13589 error_no_arg (_("hit count"));
13590
13591 count = get_number (&args);
13592
13593 map_breakpoint_numbers
13594 (args, [&] (breakpoint *b)
13595 {
13596 iterate_over_related_breakpoints
13597 (b, [&] (breakpoint *bpt)
13598 {
13599 enable_breakpoint_disp (bpt, disp_disable, count);
13600 });
13601 });
13602 }
13603
13604 static void
13605 enable_delete_command (const char *args, int from_tty)
13606 {
13607 map_breakpoint_numbers
13608 (args, [&] (breakpoint *b)
13609 {
13610 iterate_over_related_breakpoints
13611 (b, [&] (breakpoint *bpt)
13612 {
13613 enable_breakpoint_disp (bpt, disp_del, 1);
13614 });
13615 });
13616 }
13617 \f
13618 /* Invalidate last known value of any hardware watchpoint if
13619 the memory which that value represents has been written to by
13620 GDB itself. */
13621
13622 static void
13623 invalidate_bp_value_on_memory_change (struct inferior *inferior,
13624 CORE_ADDR addr, ssize_t len,
13625 const bfd_byte *data)
13626 {
13627 for (breakpoint *bp : all_breakpoints ())
13628 if (bp->enable_state == bp_enabled
13629 && bp->type == bp_hardware_watchpoint)
13630 {
13631 struct watchpoint *wp = (struct watchpoint *) bp;
13632
13633 if (wp->val_valid && wp->val != nullptr)
13634 {
13635 for (bp_location *loc : bp->locations ())
13636 if (loc->loc_type == bp_loc_hardware_watchpoint
13637 && loc->address + loc->length > addr
13638 && addr + len > loc->address)
13639 {
13640 wp->val = NULL;
13641 wp->val_valid = false;
13642 }
13643 }
13644 }
13645 }
13646
13647 /* Create and insert a breakpoint for software single step. */
13648
13649 void
13650 insert_single_step_breakpoint (struct gdbarch *gdbarch,
13651 const address_space *aspace,
13652 CORE_ADDR next_pc)
13653 {
13654 struct thread_info *tp = inferior_thread ();
13655 struct symtab_and_line sal;
13656 CORE_ADDR pc = next_pc;
13657
13658 if (tp->control.single_step_breakpoints == NULL)
13659 {
13660 std::unique_ptr<breakpoint> b
13661 (new momentary_breakpoint (gdbarch, bp_single_step,
13662 current_program_space,
13663 null_frame_id,
13664 tp->global_num));
13665
13666 tp->control.single_step_breakpoints
13667 = add_to_breakpoint_chain (std::move (b));
13668 }
13669
13670 sal = find_pc_line (pc, 0);
13671 sal.pc = pc;
13672 sal.section = find_pc_overlay (pc);
13673 sal.explicit_pc = 1;
13674
13675 auto *ss_bp
13676 = (gdb::checked_static_cast<momentary_breakpoint *>
13677 (tp->control.single_step_breakpoints));
13678 ss_bp->add_location (sal);
13679
13680 update_global_location_list (UGLL_INSERT);
13681 }
13682
13683 /* Insert single step breakpoints according to the current state. */
13684
13685 int
13686 insert_single_step_breakpoints (struct gdbarch *gdbarch)
13687 {
13688 struct regcache *regcache = get_current_regcache ();
13689 std::vector<CORE_ADDR> next_pcs;
13690
13691 next_pcs = gdbarch_software_single_step (gdbarch, regcache);
13692
13693 if (!next_pcs.empty ())
13694 {
13695 frame_info_ptr frame = get_current_frame ();
13696 const address_space *aspace = get_frame_address_space (frame);
13697
13698 for (CORE_ADDR pc : next_pcs)
13699 insert_single_step_breakpoint (gdbarch, aspace, pc);
13700
13701 return 1;
13702 }
13703 else
13704 return 0;
13705 }
13706
13707 /* See breakpoint.h. */
13708
13709 int
13710 breakpoint_has_location_inserted_here (struct breakpoint *bp,
13711 const address_space *aspace,
13712 CORE_ADDR pc)
13713 {
13714 for (bp_location *loc : bp->locations ())
13715 if (loc->inserted
13716 && breakpoint_location_address_match (loc, aspace, pc))
13717 return 1;
13718
13719 return 0;
13720 }
13721
13722 /* Check whether a software single-step breakpoint is inserted at
13723 PC. */
13724
13725 int
13726 single_step_breakpoint_inserted_here_p (const address_space *aspace,
13727 CORE_ADDR pc)
13728 {
13729 for (breakpoint *bpt : all_breakpoints ())
13730 {
13731 if (bpt->type == bp_single_step
13732 && breakpoint_has_location_inserted_here (bpt, aspace, pc))
13733 return 1;
13734 }
13735 return 0;
13736 }
13737
13738 /* Tracepoint-specific operations. */
13739
13740 /* Set tracepoint count to NUM. */
13741 static void
13742 set_tracepoint_count (int num)
13743 {
13744 tracepoint_count = num;
13745 set_internalvar_integer (lookup_internalvar ("tpnum"), num);
13746 }
13747
13748 static void
13749 trace_command (const char *arg, int from_tty)
13750 {
13751 location_spec_up locspec = string_to_location_spec (&arg,
13752 current_language);
13753 const struct breakpoint_ops *ops = breakpoint_ops_for_location_spec
13754 (locspec.get (), true /* is_tracepoint */);
13755
13756 create_breakpoint (get_current_arch (),
13757 locspec.get (),
13758 NULL, 0, arg, false, 1 /* parse arg */,
13759 0 /* tempflag */,
13760 bp_tracepoint /* type_wanted */,
13761 0 /* Ignore count */,
13762 pending_break_support,
13763 ops,
13764 from_tty,
13765 1 /* enabled */,
13766 0 /* internal */, 0);
13767 }
13768
13769 static void
13770 ftrace_command (const char *arg, int from_tty)
13771 {
13772 location_spec_up locspec = string_to_location_spec (&arg,
13773 current_language);
13774 create_breakpoint (get_current_arch (),
13775 locspec.get (),
13776 NULL, 0, arg, false, 1 /* parse arg */,
13777 0 /* tempflag */,
13778 bp_fast_tracepoint /* type_wanted */,
13779 0 /* Ignore count */,
13780 pending_break_support,
13781 &code_breakpoint_ops,
13782 from_tty,
13783 1 /* enabled */,
13784 0 /* internal */, 0);
13785 }
13786
13787 /* strace command implementation. Creates a static tracepoint. */
13788
13789 static void
13790 strace_command (const char *arg, int from_tty)
13791 {
13792 const struct breakpoint_ops *ops;
13793 location_spec_up locspec;
13794 enum bptype type;
13795
13796 /* Decide if we are dealing with a static tracepoint marker (`-m'),
13797 or with a normal static tracepoint. */
13798 if (arg && startswith (arg, "-m") && isspace (arg[2]))
13799 {
13800 ops = &strace_marker_breakpoint_ops;
13801 locspec = new_linespec_location_spec (&arg,
13802 symbol_name_match_type::FULL);
13803 type = bp_static_marker_tracepoint;
13804 }
13805 else
13806 {
13807 ops = &code_breakpoint_ops;
13808 locspec = string_to_location_spec (&arg, current_language);
13809 type = bp_static_tracepoint;
13810 }
13811
13812 create_breakpoint (get_current_arch (),
13813 locspec.get (),
13814 NULL, 0, arg, false, 1 /* parse arg */,
13815 0 /* tempflag */,
13816 type /* type_wanted */,
13817 0 /* Ignore count */,
13818 pending_break_support,
13819 ops,
13820 from_tty,
13821 1 /* enabled */,
13822 0 /* internal */, 0);
13823 }
13824
13825 /* Set up a fake reader function that gets command lines from a linked
13826 list that was acquired during tracepoint uploading. */
13827
13828 static struct uploaded_tp *this_utp;
13829 static int next_cmd;
13830
13831 static const char *
13832 read_uploaded_action (std::string &buffer)
13833 {
13834 char *rslt = nullptr;
13835
13836 if (next_cmd < this_utp->cmd_strings.size ())
13837 {
13838 rslt = this_utp->cmd_strings[next_cmd].get ();
13839 next_cmd++;
13840 }
13841
13842 return rslt;
13843 }
13844
13845 /* Given information about a tracepoint as recorded on a target (which
13846 can be either a live system or a trace file), attempt to create an
13847 equivalent GDB tracepoint. This is not a reliable process, since
13848 the target does not necessarily have all the information used when
13849 the tracepoint was originally defined. */
13850
13851 struct tracepoint *
13852 create_tracepoint_from_upload (struct uploaded_tp *utp)
13853 {
13854 const char *addr_str;
13855 char small_buf[100];
13856 struct tracepoint *tp;
13857
13858 if (utp->at_string)
13859 addr_str = utp->at_string.get ();
13860 else
13861 {
13862 /* In the absence of a source location, fall back to raw
13863 address. Since there is no way to confirm that the address
13864 means the same thing as when the trace was started, warn the
13865 user. */
13866 warning (_("Uploaded tracepoint %d has no "
13867 "source location, using raw address"),
13868 utp->number);
13869 xsnprintf (small_buf, sizeof (small_buf), "*%s", hex_string (utp->addr));
13870 addr_str = small_buf;
13871 }
13872
13873 /* There's not much we can do with a sequence of bytecodes. */
13874 if (utp->cond && !utp->cond_string)
13875 warning (_("Uploaded tracepoint %d condition "
13876 "has no source form, ignoring it"),
13877 utp->number);
13878
13879 location_spec_up locspec = string_to_location_spec (&addr_str,
13880 current_language);
13881 if (!create_breakpoint (get_current_arch (),
13882 locspec.get (),
13883 utp->cond_string.get (), -1, addr_str,
13884 false /* force_condition */,
13885 0 /* parse cond/thread */,
13886 0 /* tempflag */,
13887 utp->type /* type_wanted */,
13888 0 /* Ignore count */,
13889 pending_break_support,
13890 &code_breakpoint_ops,
13891 0 /* from_tty */,
13892 utp->enabled /* enabled */,
13893 0 /* internal */,
13894 CREATE_BREAKPOINT_FLAGS_INSERTED))
13895 return NULL;
13896
13897 /* Get the tracepoint we just created. */
13898 tp = get_tracepoint (tracepoint_count);
13899 gdb_assert (tp != NULL);
13900
13901 if (utp->pass > 0)
13902 {
13903 xsnprintf (small_buf, sizeof (small_buf), "%d %d", utp->pass,
13904 tp->number);
13905
13906 trace_pass_command (small_buf, 0);
13907 }
13908
13909 /* If we have uploaded versions of the original commands, set up a
13910 special-purpose "reader" function and call the usual command line
13911 reader, then pass the result to the breakpoint command-setting
13912 function. */
13913 if (!utp->cmd_strings.empty ())
13914 {
13915 counted_command_line cmd_list;
13916
13917 this_utp = utp;
13918 next_cmd = 0;
13919
13920 cmd_list = read_command_lines_1 (read_uploaded_action, 1, NULL);
13921
13922 breakpoint_set_commands (tp, std::move (cmd_list));
13923 }
13924 else if (!utp->actions.empty ()
13925 || !utp->step_actions.empty ())
13926 warning (_("Uploaded tracepoint %d actions "
13927 "have no source form, ignoring them"),
13928 utp->number);
13929
13930 /* Copy any status information that might be available. */
13931 tp->hit_count = utp->hit_count;
13932 tp->traceframe_usage = utp->traceframe_usage;
13933
13934 return tp;
13935 }
13936
13937 /* Print information on tracepoint number TPNUM_EXP, or all if
13938 omitted. */
13939
13940 static void
13941 info_tracepoints_command (const char *args, int from_tty)
13942 {
13943 struct ui_out *uiout = current_uiout;
13944 int num_printed;
13945
13946 num_printed = breakpoint_1 (args, false, is_tracepoint);
13947
13948 if (num_printed == 0)
13949 {
13950 if (args == NULL || *args == '\0')
13951 uiout->message ("No tracepoints.\n");
13952 else
13953 uiout->message ("No tracepoint matching '%s'.\n", args);
13954 }
13955
13956 default_collect_info ();
13957 }
13958
13959 /* The 'enable trace' command enables tracepoints.
13960 Not supported by all targets. */
13961 static void
13962 enable_trace_command (const char *args, int from_tty)
13963 {
13964 enable_command (args, from_tty);
13965 }
13966
13967 /* The 'disable trace' command disables tracepoints.
13968 Not supported by all targets. */
13969 static void
13970 disable_trace_command (const char *args, int from_tty)
13971 {
13972 disable_command (args, from_tty);
13973 }
13974
13975 /* Remove a tracepoint (or all if no argument). */
13976 static void
13977 delete_trace_command (const char *arg, int from_tty)
13978 {
13979 dont_repeat ();
13980
13981 if (arg == 0)
13982 {
13983 int breaks_to_delete = 0;
13984
13985 /* Delete all breakpoints if no argument.
13986 Do not delete internal or call-dummy breakpoints, these
13987 have to be deleted with an explicit breakpoint number
13988 argument. */
13989 for (breakpoint *tp : all_tracepoints ())
13990 if (is_tracepoint (tp) && user_breakpoint_p (tp))
13991 {
13992 breaks_to_delete = 1;
13993 break;
13994 }
13995
13996 /* Ask user only if there are some breakpoints to delete. */
13997 if (!from_tty
13998 || (breaks_to_delete && query (_("Delete all tracepoints? "))))
13999 {
14000 for (breakpoint *b : all_breakpoints_safe ())
14001 if (is_tracepoint (b) && user_breakpoint_p (b))
14002 delete_breakpoint (b);
14003 }
14004 }
14005 else
14006 map_breakpoint_numbers
14007 (arg, [&] (breakpoint *br)
14008 {
14009 iterate_over_related_breakpoints (br, delete_breakpoint);
14010 });
14011 }
14012
14013 /* Helper function for trace_pass_command. */
14014
14015 static void
14016 trace_pass_set_count (struct tracepoint *tp, int count, int from_tty)
14017 {
14018 tp->pass_count = count;
14019 gdb::observers::breakpoint_modified.notify (tp);
14020 if (from_tty)
14021 gdb_printf (_("Setting tracepoint %d's passcount to %d\n"),
14022 tp->number, count);
14023 }
14024
14025 /* Set passcount for tracepoint.
14026
14027 First command argument is passcount, second is tracepoint number.
14028 If tracepoint number omitted, apply to most recently defined.
14029 Also accepts special argument "all". */
14030
14031 static void
14032 trace_pass_command (const char *args, int from_tty)
14033 {
14034 struct tracepoint *t1;
14035 ULONGEST count;
14036
14037 if (args == 0 || *args == 0)
14038 error (_("passcount command requires an "
14039 "argument (count + optional TP num)"));
14040
14041 count = strtoulst (args, &args, 10); /* Count comes first, then TP num. */
14042
14043 args = skip_spaces (args);
14044 if (*args && strncasecmp (args, "all", 3) == 0)
14045 {
14046 args += 3; /* Skip special argument "all". */
14047 if (*args)
14048 error (_("Junk at end of arguments."));
14049
14050 for (breakpoint *b : all_tracepoints ())
14051 {
14052 t1 = (struct tracepoint *) b;
14053 trace_pass_set_count (t1, count, from_tty);
14054 }
14055 }
14056 else if (*args == '\0')
14057 {
14058 t1 = get_tracepoint_by_number (&args, NULL);
14059 if (t1)
14060 trace_pass_set_count (t1, count, from_tty);
14061 }
14062 else
14063 {
14064 number_or_range_parser parser (args);
14065 while (!parser.finished ())
14066 {
14067 t1 = get_tracepoint_by_number (&args, &parser);
14068 if (t1)
14069 trace_pass_set_count (t1, count, from_tty);
14070 }
14071 }
14072 }
14073
14074 struct tracepoint *
14075 get_tracepoint (int num)
14076 {
14077 for (breakpoint *t : all_tracepoints ())
14078 if (t->number == num)
14079 return (struct tracepoint *) t;
14080
14081 return NULL;
14082 }
14083
14084 /* Find the tracepoint with the given target-side number (which may be
14085 different from the tracepoint number after disconnecting and
14086 reconnecting). */
14087
14088 struct tracepoint *
14089 get_tracepoint_by_number_on_target (int num)
14090 {
14091 for (breakpoint *b : all_tracepoints ())
14092 {
14093 struct tracepoint *t = (struct tracepoint *) b;
14094
14095 if (t->number_on_target == num)
14096 return t;
14097 }
14098
14099 return NULL;
14100 }
14101
14102 /* Utility: parse a tracepoint number and look it up in the list.
14103 If STATE is not NULL, use, get_number_or_range_state and ignore ARG.
14104 If the argument is missing, the most recent tracepoint
14105 (tracepoint_count) is returned. */
14106
14107 struct tracepoint *
14108 get_tracepoint_by_number (const char **arg,
14109 number_or_range_parser *parser)
14110 {
14111 int tpnum;
14112 const char *instring = arg == NULL ? NULL : *arg;
14113
14114 if (parser != NULL)
14115 {
14116 gdb_assert (!parser->finished ());
14117 tpnum = parser->get_number ();
14118 }
14119 else if (arg == NULL || *arg == NULL || ! **arg)
14120 tpnum = tracepoint_count;
14121 else
14122 tpnum = get_number (arg);
14123
14124 if (tpnum <= 0)
14125 {
14126 if (instring && *instring)
14127 gdb_printf (_("bad tracepoint number at or near '%s'\n"),
14128 instring);
14129 else
14130 gdb_printf (_("No previous tracepoint\n"));
14131 return NULL;
14132 }
14133
14134 for (breakpoint *t : all_tracepoints ())
14135 if (t->number == tpnum)
14136 return (struct tracepoint *) t;
14137
14138 gdb_printf ("No tracepoint number %d.\n", tpnum);
14139 return NULL;
14140 }
14141
14142 void
14143 breakpoint::print_recreate_thread (struct ui_file *fp) const
14144 {
14145 if (thread != -1)
14146 gdb_printf (fp, " thread %d", thread);
14147
14148 if (task != -1)
14149 gdb_printf (fp, " task %d", task);
14150
14151 gdb_printf (fp, "\n");
14152 }
14153
14154 /* Save information on user settable breakpoints (watchpoints, etc) to
14155 a new script file named FILENAME. If FILTER is non-NULL, call it
14156 on each breakpoint and only include the ones for which it returns
14157 true. */
14158
14159 static void
14160 save_breakpoints (const char *filename, int from_tty,
14161 bool (*filter) (const struct breakpoint *))
14162 {
14163 bool any = false;
14164 int extra_trace_bits = 0;
14165
14166 if (filename == 0 || *filename == 0)
14167 error (_("Argument required (file name in which to save)"));
14168
14169 /* See if we have anything to save. */
14170 for (breakpoint *tp : all_breakpoints ())
14171 {
14172 /* Skip internal and momentary breakpoints. */
14173 if (!user_breakpoint_p (tp))
14174 continue;
14175
14176 /* If we have a filter, only save the breakpoints it accepts. */
14177 if (filter && !filter (tp))
14178 continue;
14179
14180 any = true;
14181
14182 if (is_tracepoint (tp))
14183 {
14184 extra_trace_bits = 1;
14185
14186 /* We can stop searching. */
14187 break;
14188 }
14189 }
14190
14191 if (!any)
14192 {
14193 warning (_("Nothing to save."));
14194 return;
14195 }
14196
14197 gdb::unique_xmalloc_ptr<char> expanded_filename (tilde_expand (filename));
14198
14199 stdio_file fp;
14200
14201 if (!fp.open (expanded_filename.get (), "w"))
14202 error (_("Unable to open file '%s' for saving (%s)"),
14203 expanded_filename.get (), safe_strerror (errno));
14204
14205 if (extra_trace_bits)
14206 save_trace_state_variables (&fp);
14207
14208 for (breakpoint *tp : all_breakpoints ())
14209 {
14210 /* Skip internal and momentary breakpoints. */
14211 if (!user_breakpoint_p (tp))
14212 continue;
14213
14214 /* If we have a filter, only save the breakpoints it accepts. */
14215 if (filter && !filter (tp))
14216 continue;
14217
14218 tp->print_recreate (&fp);
14219
14220 /* Note, we can't rely on tp->number for anything, as we can't
14221 assume the recreated breakpoint numbers will match. Use $bpnum
14222 instead. */
14223
14224 if (tp->cond_string)
14225 fp.printf (" condition $bpnum %s\n", tp->cond_string.get ());
14226
14227 if (tp->ignore_count)
14228 fp.printf (" ignore $bpnum %d\n", tp->ignore_count);
14229
14230 if (tp->type != bp_dprintf && tp->commands)
14231 {
14232 fp.puts (" commands\n");
14233
14234 ui_out_redirect_pop redir (current_uiout, &fp);
14235 print_command_lines (current_uiout, tp->commands.get (), 2);
14236
14237 fp.puts (" end\n");
14238 }
14239
14240 if (tp->enable_state == bp_disabled)
14241 fp.puts ("disable $bpnum\n");
14242
14243 /* If this is a multi-location breakpoint, check if the locations
14244 should be individually disabled. Watchpoint locations are
14245 special, and not user visible. */
14246 if (!is_watchpoint (tp) && tp->loc && tp->loc->next)
14247 {
14248 int n = 1;
14249
14250 for (bp_location *loc : tp->locations ())
14251 {
14252 if (!loc->enabled)
14253 fp.printf ("disable $bpnum.%d\n", n);
14254
14255 n++;
14256 }
14257 }
14258 }
14259
14260 if (extra_trace_bits && !default_collect.empty ())
14261 fp.printf ("set default-collect %s\n", default_collect.c_str ());
14262
14263 if (from_tty)
14264 gdb_printf (_("Saved to file '%s'.\n"), expanded_filename.get ());
14265 }
14266
14267 /* The `save breakpoints' command. */
14268
14269 static void
14270 save_breakpoints_command (const char *args, int from_tty)
14271 {
14272 save_breakpoints (args, from_tty, NULL);
14273 }
14274
14275 /* The `save tracepoints' command. */
14276
14277 static void
14278 save_tracepoints_command (const char *args, int from_tty)
14279 {
14280 save_breakpoints (args, from_tty, is_tracepoint);
14281 }
14282
14283 \f
14284 /* This help string is used to consolidate all the help string for specifying
14285 locations used by several commands. */
14286
14287 #define LOCATION_SPEC_HELP_STRING \
14288 "Linespecs are colon-separated lists of location parameters, such as\n\
14289 source filename, function name, label name, and line number.\n\
14290 Example: To specify the start of a label named \"the_top\" in the\n\
14291 function \"fact\" in the file \"factorial.c\", use\n\
14292 \"factorial.c:fact:the_top\".\n\
14293 \n\
14294 Address locations begin with \"*\" and specify an exact address in the\n\
14295 program. Example: To specify the fourth byte past the start function\n\
14296 \"main\", use \"*main + 4\".\n\
14297 \n\
14298 Explicit locations are similar to linespecs but use an option/argument\n\
14299 syntax to specify location parameters.\n\
14300 Example: To specify the start of the label named \"the_top\" in the\n\
14301 function \"fact\" in the file \"factorial.c\", use \"-source factorial.c\n\
14302 -function fact -label the_top\".\n\
14303 \n\
14304 By default, a specified function is matched against the program's\n\
14305 functions in all scopes. For C++, this means in all namespaces and\n\
14306 classes. For Ada, this means in all packages. E.g., in C++,\n\
14307 \"func()\" matches \"A::func()\", \"A::B::func()\", etc. The\n\
14308 \"-qualified\" flag overrides this behavior, making GDB interpret the\n\
14309 specified name as a complete fully-qualified name instead."
14310
14311 /* This help string is used for the break, hbreak, tbreak and thbreak
14312 commands. It is defined as a macro to prevent duplication.
14313 COMMAND should be a string constant containing the name of the
14314 command. */
14315
14316 #define BREAK_ARGS_HELP(command) \
14317 command" [PROBE_MODIFIER] [LOCATION] [thread THREADNUM]\n\
14318 \t[-force-condition] [if CONDITION]\n\
14319 PROBE_MODIFIER shall be present if the command is to be placed in a\n\
14320 probe point. Accepted values are `-probe' (for a generic, automatically\n\
14321 guessed probe type), `-probe-stap' (for a SystemTap probe) or \n\
14322 `-probe-dtrace' (for a DTrace probe).\n\
14323 LOCATION may be a linespec, address, or explicit location as described\n\
14324 below.\n\
14325 \n\
14326 With no LOCATION, uses current execution address of the selected\n\
14327 stack frame. This is useful for breaking on return to a stack frame.\n\
14328 \n\
14329 THREADNUM is the number from \"info threads\".\n\
14330 CONDITION is a boolean expression.\n\
14331 \n\
14332 With the \"-force-condition\" flag, the condition is defined even when\n\
14333 it is invalid for all current locations.\n\
14334 \n" LOCATION_SPEC_HELP_STRING "\n\n\
14335 Multiple breakpoints at one place are permitted, and useful if their\n\
14336 conditions are different.\n\
14337 \n\
14338 Do \"help breakpoints\" for info on other commands dealing with breakpoints."
14339
14340 /* List of subcommands for "catch". */
14341 static struct cmd_list_element *catch_cmdlist;
14342
14343 /* List of subcommands for "tcatch". */
14344 static struct cmd_list_element *tcatch_cmdlist;
14345
14346 void
14347 add_catch_command (const char *name, const char *docstring,
14348 cmd_func_ftype *func,
14349 completer_ftype *completer,
14350 void *user_data_catch,
14351 void *user_data_tcatch)
14352 {
14353 struct cmd_list_element *command;
14354
14355 command = add_cmd (name, class_breakpoint, docstring,
14356 &catch_cmdlist);
14357 command->func = func;
14358 command->set_context (user_data_catch);
14359 set_cmd_completer (command, completer);
14360
14361 command = add_cmd (name, class_breakpoint, docstring,
14362 &tcatch_cmdlist);
14363 command->func = func;
14364 command->set_context (user_data_tcatch);
14365 set_cmd_completer (command, completer);
14366 }
14367
14368 /* False if any of the breakpoint's locations could be a location where
14369 functions have been inlined, true otherwise. */
14370
14371 static bool
14372 is_non_inline_function (struct breakpoint *b)
14373 {
14374 /* The shared library event breakpoint is set on the address of a
14375 non-inline function. */
14376 return (b->type == bp_shlib_event);
14377 }
14378
14379 /* Nonzero if the specified PC cannot be a location where functions
14380 have been inlined. */
14381
14382 int
14383 pc_at_non_inline_function (const address_space *aspace, CORE_ADDR pc,
14384 const target_waitstatus &ws)
14385 {
14386 for (breakpoint *b : all_breakpoints ())
14387 {
14388 if (!is_non_inline_function (b))
14389 continue;
14390
14391 for (bp_location *bl : b->locations ())
14392 {
14393 if (!bl->shlib_disabled
14394 && bpstat_check_location (bl, aspace, pc, ws))
14395 return 1;
14396 }
14397 }
14398
14399 return 0;
14400 }
14401
14402 /* Remove any references to OBJFILE which is going to be freed. */
14403
14404 void
14405 breakpoint_free_objfile (struct objfile *objfile)
14406 {
14407 for (bp_location *loc : all_bp_locations ())
14408 if (loc->symtab != NULL && loc->symtab->compunit ()->objfile () == objfile)
14409 loc->symtab = NULL;
14410 }
14411
14412 /* Chain containing all defined "enable breakpoint" subcommands. */
14413
14414 static struct cmd_list_element *enablebreaklist = NULL;
14415
14416 /* See breakpoint.h. */
14417
14418 cmd_list_element *commands_cmd_element = nullptr;
14419
14420 void _initialize_breakpoint ();
14421 void
14422 _initialize_breakpoint ()
14423 {
14424 struct cmd_list_element *c;
14425
14426 gdb::observers::solib_unloaded.attach (disable_breakpoints_in_unloaded_shlib,
14427 "breakpoint");
14428 gdb::observers::free_objfile.attach (disable_breakpoints_in_freed_objfile,
14429 "breakpoint");
14430 gdb::observers::memory_changed.attach (invalidate_bp_value_on_memory_change,
14431 "breakpoint");
14432
14433 breakpoint_chain = 0;
14434 /* Don't bother to call set_breakpoint_count. $bpnum isn't useful
14435 before a breakpoint is set. */
14436 breakpoint_count = 0;
14437
14438 tracepoint_count = 0;
14439
14440 add_com ("ignore", class_breakpoint, ignore_command, _("\
14441 Set ignore-count of breakpoint number N to COUNT.\n\
14442 Usage is `ignore N COUNT'."));
14443
14444 commands_cmd_element = add_com ("commands", class_breakpoint,
14445 commands_command, _("\
14446 Set commands to be executed when the given breakpoints are hit.\n\
14447 Give a space-separated breakpoint list as argument after \"commands\".\n\
14448 A list element can be a breakpoint number (e.g. `5') or a range of numbers\n\
14449 (e.g. `5-7').\n\
14450 With no argument, the targeted breakpoint is the last one set.\n\
14451 The commands themselves follow starting on the next line.\n\
14452 Type a line containing \"end\" to indicate the end of them.\n\
14453 Give \"silent\" as the first line to make the breakpoint silent;\n\
14454 then no output is printed when it is hit, except what the commands print."));
14455
14456 const auto cc_opts = make_condition_command_options_def_group (nullptr);
14457 static std::string condition_command_help
14458 = gdb::option::build_help (_("\
14459 Specify breakpoint number N to break only if COND is true.\n\
14460 Usage is `condition [OPTION] N COND', where N is an integer and COND\n\
14461 is an expression to be evaluated whenever breakpoint N is reached.\n\
14462 \n\
14463 Options:\n\
14464 %OPTIONS%"), cc_opts);
14465
14466 c = add_com ("condition", class_breakpoint, condition_command,
14467 condition_command_help.c_str ());
14468 set_cmd_completer_handle_brkchars (c, condition_completer);
14469
14470 c = add_com ("tbreak", class_breakpoint, tbreak_command, _("\
14471 Set a temporary breakpoint.\n\
14472 Like \"break\" except the breakpoint is only temporary,\n\
14473 so it will be deleted when hit. Equivalent to \"break\" followed\n\
14474 by using \"enable delete\" on the breakpoint number.\n\
14475 \n"
14476 BREAK_ARGS_HELP ("tbreak")));
14477 set_cmd_completer (c, location_completer);
14478
14479 c = add_com ("hbreak", class_breakpoint, hbreak_command, _("\
14480 Set a hardware assisted breakpoint.\n\
14481 Like \"break\" except the breakpoint requires hardware support,\n\
14482 some target hardware may not have this support.\n\
14483 \n"
14484 BREAK_ARGS_HELP ("hbreak")));
14485 set_cmd_completer (c, location_completer);
14486
14487 c = add_com ("thbreak", class_breakpoint, thbreak_command, _("\
14488 Set a temporary hardware assisted breakpoint.\n\
14489 Like \"hbreak\" except the breakpoint is only temporary,\n\
14490 so it will be deleted when hit.\n\
14491 \n"
14492 BREAK_ARGS_HELP ("thbreak")));
14493 set_cmd_completer (c, location_completer);
14494
14495 cmd_list_element *enable_cmd
14496 = add_prefix_cmd ("enable", class_breakpoint, enable_command, _("\
14497 Enable all or some breakpoints.\n\
14498 Usage: enable [BREAKPOINTNUM]...\n\
14499 Give breakpoint numbers (separated by spaces) as arguments.\n\
14500 With no subcommand, breakpoints are enabled until you command otherwise.\n\
14501 This is used to cancel the effect of the \"disable\" command.\n\
14502 With a subcommand you can enable temporarily."),
14503 &enablelist, 1, &cmdlist);
14504
14505 add_com_alias ("en", enable_cmd, class_breakpoint, 1);
14506
14507 add_prefix_cmd ("breakpoints", class_breakpoint, enable_command, _("\
14508 Enable all or some breakpoints.\n\
14509 Usage: enable breakpoints [BREAKPOINTNUM]...\n\
14510 Give breakpoint numbers (separated by spaces) as arguments.\n\
14511 This is used to cancel the effect of the \"disable\" command.\n\
14512 May be abbreviated to simply \"enable\"."),
14513 &enablebreaklist, 1, &enablelist);
14514
14515 add_cmd ("once", no_class, enable_once_command, _("\
14516 Enable some breakpoints for one hit.\n\
14517 Usage: enable breakpoints once BREAKPOINTNUM...\n\
14518 If a breakpoint is hit while enabled in this fashion, it becomes disabled."),
14519 &enablebreaklist);
14520
14521 add_cmd ("delete", no_class, enable_delete_command, _("\
14522 Enable some breakpoints and delete when hit.\n\
14523 Usage: enable breakpoints delete BREAKPOINTNUM...\n\
14524 If a breakpoint is hit while enabled in this fashion, it is deleted."),
14525 &enablebreaklist);
14526
14527 add_cmd ("count", no_class, enable_count_command, _("\
14528 Enable some breakpoints for COUNT hits.\n\
14529 Usage: enable breakpoints count COUNT BREAKPOINTNUM...\n\
14530 If a breakpoint is hit while enabled in this fashion,\n\
14531 the count is decremented; when it reaches zero, the breakpoint is disabled."),
14532 &enablebreaklist);
14533
14534 add_cmd ("delete", no_class, enable_delete_command, _("\
14535 Enable some breakpoints and delete when hit.\n\
14536 Usage: enable delete BREAKPOINTNUM...\n\
14537 If a breakpoint is hit while enabled in this fashion, it is deleted."),
14538 &enablelist);
14539
14540 add_cmd ("once", no_class, enable_once_command, _("\
14541 Enable some breakpoints for one hit.\n\
14542 Usage: enable once BREAKPOINTNUM...\n\
14543 If a breakpoint is hit while enabled in this fashion, it becomes disabled."),
14544 &enablelist);
14545
14546 add_cmd ("count", no_class, enable_count_command, _("\
14547 Enable some breakpoints for COUNT hits.\n\
14548 Usage: enable count COUNT BREAKPOINTNUM...\n\
14549 If a breakpoint is hit while enabled in this fashion,\n\
14550 the count is decremented; when it reaches zero, the breakpoint is disabled."),
14551 &enablelist);
14552
14553 cmd_list_element *disable_cmd
14554 = add_prefix_cmd ("disable", class_breakpoint, disable_command, _("\
14555 Disable all or some breakpoints.\n\
14556 Usage: disable [BREAKPOINTNUM]...\n\
14557 Arguments are breakpoint numbers with spaces in between.\n\
14558 To disable all breakpoints, give no argument.\n\
14559 A disabled breakpoint is not forgotten, but has no effect until re-enabled."),
14560 &disablelist, 1, &cmdlist);
14561 add_com_alias ("dis", disable_cmd, class_breakpoint, 1);
14562 add_com_alias ("disa", disable_cmd, class_breakpoint, 1);
14563
14564 add_cmd ("breakpoints", class_breakpoint, disable_command, _("\
14565 Disable all or some breakpoints.\n\
14566 Usage: disable breakpoints [BREAKPOINTNUM]...\n\
14567 Arguments are breakpoint numbers with spaces in between.\n\
14568 To disable all breakpoints, give no argument.\n\
14569 A disabled breakpoint is not forgotten, but has no effect until re-enabled.\n\
14570 This command may be abbreviated \"disable\"."),
14571 &disablelist);
14572
14573 cmd_list_element *delete_cmd
14574 = add_prefix_cmd ("delete", class_breakpoint, delete_command, _("\
14575 Delete all or some breakpoints.\n\
14576 Usage: delete [BREAKPOINTNUM]...\n\
14577 Arguments are breakpoint numbers with spaces in between.\n\
14578 To delete all breakpoints, give no argument.\n\
14579 \n\
14580 Also a prefix command for deletion of other GDB objects."),
14581 &deletelist, 1, &cmdlist);
14582 add_com_alias ("d", delete_cmd, class_breakpoint, 1);
14583 add_com_alias ("del", delete_cmd, class_breakpoint, 1);
14584
14585 add_cmd ("breakpoints", class_breakpoint, delete_command, _("\
14586 Delete all or some breakpoints or auto-display expressions.\n\
14587 Usage: delete breakpoints [BREAKPOINTNUM]...\n\
14588 Arguments are breakpoint numbers with spaces in between.\n\
14589 To delete all breakpoints, give no argument.\n\
14590 This command may be abbreviated \"delete\"."),
14591 &deletelist);
14592
14593 cmd_list_element *clear_cmd
14594 = add_com ("clear", class_breakpoint, clear_command, _("\
14595 Clear breakpoint at specified location.\n\
14596 Argument may be a linespec, explicit, or address location as described below.\n\
14597 \n\
14598 With no argument, clears all breakpoints in the line that the selected frame\n\
14599 is executing in.\n"
14600 "\n" LOCATION_SPEC_HELP_STRING "\n\n\
14601 See also the \"delete\" command which clears breakpoints by number."));
14602 add_com_alias ("cl", clear_cmd, class_breakpoint, 1);
14603
14604 cmd_list_element *break_cmd
14605 = add_com ("break", class_breakpoint, break_command, _("\
14606 Set breakpoint at specified location.\n"
14607 BREAK_ARGS_HELP ("break")));
14608 set_cmd_completer (break_cmd, location_completer);
14609
14610 add_com_alias ("b", break_cmd, class_run, 1);
14611 add_com_alias ("br", break_cmd, class_run, 1);
14612 add_com_alias ("bre", break_cmd, class_run, 1);
14613 add_com_alias ("brea", break_cmd, class_run, 1);
14614
14615 cmd_list_element *info_breakpoints_cmd
14616 = add_info ("breakpoints", info_breakpoints_command, _("\
14617 Status of specified breakpoints (all user-settable breakpoints if no argument).\n\
14618 The \"Type\" column indicates one of:\n\
14619 \tbreakpoint - normal breakpoint\n\
14620 \twatchpoint - watchpoint\n\
14621 The \"Disp\" column contains one of \"keep\", \"del\", or \"dis\" to indicate\n\
14622 the disposition of the breakpoint after it gets hit. \"dis\" means that the\n\
14623 breakpoint will be disabled. The \"Address\" and \"What\" columns indicate the\n\
14624 address and file/line number respectively.\n\
14625 \n\
14626 Convenience variable \"$_\" and default examine address for \"x\"\n\
14627 are set to the address of the last breakpoint listed unless the command\n\
14628 is prefixed with \"server \".\n\n\
14629 Convenience variable \"$bpnum\" contains the number of the last\n\
14630 breakpoint set."));
14631
14632 add_info_alias ("b", info_breakpoints_cmd, 1);
14633
14634 add_cmd ("breakpoints", class_maintenance, maintenance_info_breakpoints, _("\
14635 Status of all breakpoints, or breakpoint number NUMBER.\n\
14636 The \"Type\" column indicates one of:\n\
14637 \tbreakpoint - normal breakpoint\n\
14638 \twatchpoint - watchpoint\n\
14639 \tlongjmp - internal breakpoint used to step through longjmp()\n\
14640 \tlongjmp resume - internal breakpoint at the target of longjmp()\n\
14641 \tuntil - internal breakpoint used by the \"until\" command\n\
14642 \tfinish - internal breakpoint used by the \"finish\" command\n\
14643 The \"Disp\" column contains one of \"keep\", \"del\", or \"dis\" to indicate\n\
14644 the disposition of the breakpoint after it gets hit. \"dis\" means that the\n\
14645 breakpoint will be disabled. The \"Address\" and \"What\" columns indicate the\n\
14646 address and file/line number respectively.\n\
14647 \n\
14648 Convenience variable \"$_\" and default examine address for \"x\"\n\
14649 are set to the address of the last breakpoint listed unless the command\n\
14650 is prefixed with \"server \".\n\n\
14651 Convenience variable \"$bpnum\" contains the number of the last\n\
14652 breakpoint set."),
14653 &maintenanceinfolist);
14654
14655 add_basic_prefix_cmd ("catch", class_breakpoint, _("\
14656 Set catchpoints to catch events."),
14657 &catch_cmdlist,
14658 0/*allow-unknown*/, &cmdlist);
14659
14660 add_basic_prefix_cmd ("tcatch", class_breakpoint, _("\
14661 Set temporary catchpoints to catch events."),
14662 &tcatch_cmdlist,
14663 0/*allow-unknown*/, &cmdlist);
14664
14665 const auto opts = make_watch_options_def_group (nullptr);
14666
14667 static const std::string watch_help = gdb::option::build_help (_("\
14668 Set a watchpoint for EXPRESSION.\n\
14669 Usage: watch [-location] EXPRESSION\n\
14670 \n\
14671 Options:\n\
14672 %OPTIONS%\n\
14673 \n\
14674 A watchpoint stops execution of your program whenever the value of\n\
14675 an expression changes."), opts);
14676 c = add_com ("watch", class_breakpoint, watch_command,
14677 watch_help.c_str ());
14678 set_cmd_completer_handle_brkchars (c, watch_command_completer);
14679
14680 static const std::string rwatch_help = gdb::option::build_help (_("\
14681 Set a read watchpoint for EXPRESSION.\n\
14682 Usage: rwatch [-location] EXPRESSION\n\
14683 \n\
14684 Options:\n\
14685 %OPTIONS%\n\
14686 \n\
14687 A read watchpoint stops execution of your program whenever the value of\n\
14688 an expression is read."), opts);
14689 c = add_com ("rwatch", class_breakpoint, rwatch_command,
14690 rwatch_help.c_str ());
14691 set_cmd_completer_handle_brkchars (c, watch_command_completer);
14692
14693 static const std::string awatch_help = gdb::option::build_help (_("\
14694 Set an access watchpoint for EXPRESSION.\n\
14695 Usage: awatch [-location] EXPRESSION\n\
14696 \n\
14697 Options:\n\
14698 %OPTIONS%\n\
14699 \n\
14700 An access watchpoint stops execution of your program whenever the value\n\
14701 of an expression is either read or written."), opts);
14702 c = add_com ("awatch", class_breakpoint, awatch_command,
14703 awatch_help.c_str ());
14704 set_cmd_completer_handle_brkchars (c, watch_command_completer);
14705
14706 add_info ("watchpoints", info_watchpoints_command, _("\
14707 Status of specified watchpoints (all watchpoints if no argument)."));
14708
14709 /* XXX: cagney/2005-02-23: This should be a boolean, and should
14710 respond to changes - contrary to the description. */
14711 add_setshow_zinteger_cmd ("can-use-hw-watchpoints", class_support,
14712 &can_use_hw_watchpoints, _("\
14713 Set debugger's willingness to use watchpoint hardware."), _("\
14714 Show debugger's willingness to use watchpoint hardware."), _("\
14715 If zero, gdb will not use hardware for new watchpoints, even if\n\
14716 such is available. (However, any hardware watchpoints that were\n\
14717 created before setting this to nonzero, will continue to use watchpoint\n\
14718 hardware.)"),
14719 NULL,
14720 show_can_use_hw_watchpoints,
14721 &setlist, &showlist);
14722
14723 can_use_hw_watchpoints = 1;
14724
14725 /* Tracepoint manipulation commands. */
14726
14727 cmd_list_element *trace_cmd
14728 = add_com ("trace", class_breakpoint, trace_command, _("\
14729 Set a tracepoint at specified location.\n\
14730 \n"
14731 BREAK_ARGS_HELP ("trace") "\n\
14732 Do \"help tracepoints\" for info on other tracepoint commands."));
14733 set_cmd_completer (trace_cmd, location_completer);
14734
14735 add_com_alias ("tp", trace_cmd, class_breakpoint, 0);
14736 add_com_alias ("tr", trace_cmd, class_breakpoint, 1);
14737 add_com_alias ("tra", trace_cmd, class_breakpoint, 1);
14738 add_com_alias ("trac", trace_cmd, class_breakpoint, 1);
14739
14740 c = add_com ("ftrace", class_breakpoint, ftrace_command, _("\
14741 Set a fast tracepoint at specified location.\n\
14742 \n"
14743 BREAK_ARGS_HELP ("ftrace") "\n\
14744 Do \"help tracepoints\" for info on other tracepoint commands."));
14745 set_cmd_completer (c, location_completer);
14746
14747 c = add_com ("strace", class_breakpoint, strace_command, _("\
14748 Set a static tracepoint at location or marker.\n\
14749 \n\
14750 strace [LOCATION] [if CONDITION]\n\
14751 LOCATION may be a linespec, explicit, or address location (described below) \n\
14752 or -m MARKER_ID.\n\n\
14753 If a marker id is specified, probe the marker with that name. With\n\
14754 no LOCATION, uses current execution address of the selected stack frame.\n\
14755 Static tracepoints accept an extra collect action -- ``collect $_sdata''.\n\
14756 This collects arbitrary user data passed in the probe point call to the\n\
14757 tracing library. You can inspect it when analyzing the trace buffer,\n\
14758 by printing the $_sdata variable like any other convenience variable.\n\
14759 \n\
14760 CONDITION is a boolean expression.\n\
14761 \n" LOCATION_SPEC_HELP_STRING "\n\n\
14762 Multiple tracepoints at one place are permitted, and useful if their\n\
14763 conditions are different.\n\
14764 \n\
14765 Do \"help breakpoints\" for info on other commands dealing with breakpoints.\n\
14766 Do \"help tracepoints\" for info on other tracepoint commands."));
14767 set_cmd_completer (c, location_completer);
14768
14769 cmd_list_element *info_tracepoints_cmd
14770 = add_info ("tracepoints", info_tracepoints_command, _("\
14771 Status of specified tracepoints (all tracepoints if no argument).\n\
14772 Convenience variable \"$tpnum\" contains the number of the\n\
14773 last tracepoint set."));
14774
14775 add_info_alias ("tp", info_tracepoints_cmd, 1);
14776
14777 cmd_list_element *delete_tracepoints_cmd
14778 = add_cmd ("tracepoints", class_trace, delete_trace_command, _("\
14779 Delete specified tracepoints.\n\
14780 Arguments are tracepoint numbers, separated by spaces.\n\
14781 No argument means delete all tracepoints."),
14782 &deletelist);
14783 add_alias_cmd ("tr", delete_tracepoints_cmd, class_trace, 1, &deletelist);
14784
14785 c = add_cmd ("tracepoints", class_trace, disable_trace_command, _("\
14786 Disable specified tracepoints.\n\
14787 Arguments are tracepoint numbers, separated by spaces.\n\
14788 No argument means disable all tracepoints."),
14789 &disablelist);
14790 deprecate_cmd (c, "disable");
14791
14792 c = add_cmd ("tracepoints", class_trace, enable_trace_command, _("\
14793 Enable specified tracepoints.\n\
14794 Arguments are tracepoint numbers, separated by spaces.\n\
14795 No argument means enable all tracepoints."),
14796 &enablelist);
14797 deprecate_cmd (c, "enable");
14798
14799 add_com ("passcount", class_trace, trace_pass_command, _("\
14800 Set the passcount for a tracepoint.\n\
14801 The trace will end when the tracepoint has been passed 'count' times.\n\
14802 Usage: passcount COUNT TPNUM, where TPNUM may also be \"all\";\n\
14803 if TPNUM is omitted, passcount refers to the last tracepoint defined."));
14804
14805 add_basic_prefix_cmd ("save", class_breakpoint,
14806 _("Save breakpoint definitions as a script."),
14807 &save_cmdlist,
14808 0/*allow-unknown*/, &cmdlist);
14809
14810 c = add_cmd ("breakpoints", class_breakpoint, save_breakpoints_command, _("\
14811 Save current breakpoint definitions as a script.\n\
14812 This includes all types of breakpoints (breakpoints, watchpoints,\n\
14813 catchpoints, tracepoints). Use the 'source' command in another debug\n\
14814 session to restore them."),
14815 &save_cmdlist);
14816 set_cmd_completer (c, filename_completer);
14817
14818 cmd_list_element *save_tracepoints_cmd
14819 = add_cmd ("tracepoints", class_trace, save_tracepoints_command, _("\
14820 Save current tracepoint definitions as a script.\n\
14821 Use the 'source' command in another debug session to restore them."),
14822 &save_cmdlist);
14823 set_cmd_completer (save_tracepoints_cmd, filename_completer);
14824
14825 c = add_com_alias ("save-tracepoints", save_tracepoints_cmd, class_trace, 0);
14826 deprecate_cmd (c, "save tracepoints");
14827
14828 add_setshow_prefix_cmd ("breakpoint", class_maintenance,
14829 _("\
14830 Breakpoint specific settings.\n\
14831 Configure various breakpoint-specific variables such as\n\
14832 pending breakpoint behavior."),
14833 _("\
14834 Breakpoint specific settings.\n\
14835 Configure various breakpoint-specific variables such as\n\
14836 pending breakpoint behavior."),
14837 &breakpoint_set_cmdlist, &breakpoint_show_cmdlist,
14838 &setlist, &showlist);
14839
14840 add_setshow_auto_boolean_cmd ("pending", no_class,
14841 &pending_break_support, _("\
14842 Set debugger's behavior regarding pending breakpoints."), _("\
14843 Show debugger's behavior regarding pending breakpoints."), _("\
14844 If on, an unrecognized breakpoint location will cause gdb to create a\n\
14845 pending breakpoint. If off, an unrecognized breakpoint location results in\n\
14846 an error. If auto, an unrecognized breakpoint location results in a\n\
14847 user-query to see if a pending breakpoint should be created."),
14848 NULL,
14849 show_pending_break_support,
14850 &breakpoint_set_cmdlist,
14851 &breakpoint_show_cmdlist);
14852
14853 pending_break_support = AUTO_BOOLEAN_AUTO;
14854
14855 add_setshow_boolean_cmd ("auto-hw", no_class,
14856 &automatic_hardware_breakpoints, _("\
14857 Set automatic usage of hardware breakpoints."), _("\
14858 Show automatic usage of hardware breakpoints."), _("\
14859 If set, the debugger will automatically use hardware breakpoints for\n\
14860 breakpoints set with \"break\" but falling in read-only memory. If not set,\n\
14861 a warning will be emitted for such breakpoints."),
14862 NULL,
14863 show_automatic_hardware_breakpoints,
14864 &breakpoint_set_cmdlist,
14865 &breakpoint_show_cmdlist);
14866
14867 add_setshow_boolean_cmd ("always-inserted", class_support,
14868 &always_inserted_mode, _("\
14869 Set mode for inserting breakpoints."), _("\
14870 Show mode for inserting breakpoints."), _("\
14871 When this mode is on, breakpoints are inserted immediately as soon as\n\
14872 they're created, kept inserted even when execution stops, and removed\n\
14873 only when the user deletes them. When this mode is off (the default),\n\
14874 breakpoints are inserted only when execution continues, and removed\n\
14875 when execution stops."),
14876 NULL,
14877 &show_always_inserted_mode,
14878 &breakpoint_set_cmdlist,
14879 &breakpoint_show_cmdlist);
14880
14881 add_setshow_enum_cmd ("condition-evaluation", class_breakpoint,
14882 condition_evaluation_enums,
14883 &condition_evaluation_mode_1, _("\
14884 Set mode of breakpoint condition evaluation."), _("\
14885 Show mode of breakpoint condition evaluation."), _("\
14886 When this is set to \"host\", breakpoint conditions will be\n\
14887 evaluated on the host's side by GDB. When it is set to \"target\",\n\
14888 breakpoint conditions will be downloaded to the target (if the target\n\
14889 supports such feature) and conditions will be evaluated on the target's side.\n\
14890 If this is set to \"auto\" (default), this will be automatically set to\n\
14891 \"target\" if it supports condition evaluation, otherwise it will\n\
14892 be set to \"host\"."),
14893 &set_condition_evaluation_mode,
14894 &show_condition_evaluation_mode,
14895 &breakpoint_set_cmdlist,
14896 &breakpoint_show_cmdlist);
14897
14898 add_com ("break-range", class_breakpoint, break_range_command, _("\
14899 Set a breakpoint for an address range.\n\
14900 break-range START-LOCATION, END-LOCATION\n\
14901 where START-LOCATION and END-LOCATION can be one of the following:\n\
14902 LINENUM, for that line in the current file,\n\
14903 FILE:LINENUM, for that line in that file,\n\
14904 +OFFSET, for that number of lines after the current line\n\
14905 or the start of the range\n\
14906 FUNCTION, for the first line in that function,\n\
14907 FILE:FUNCTION, to distinguish among like-named static functions.\n\
14908 *ADDRESS, for the instruction at that address.\n\
14909 \n\
14910 The breakpoint will stop execution of the inferior whenever it executes\n\
14911 an instruction at any address within the [START-LOCATION, END-LOCATION]\n\
14912 range (including START-LOCATION and END-LOCATION)."));
14913
14914 c = add_com ("dprintf", class_breakpoint, dprintf_command, _("\
14915 Set a dynamic printf at specified location.\n\
14916 dprintf location,format string,arg1,arg2,...\n\
14917 location may be a linespec, explicit, or address location.\n"
14918 "\n" LOCATION_SPEC_HELP_STRING));
14919 set_cmd_completer (c, location_completer);
14920
14921 add_setshow_enum_cmd ("dprintf-style", class_support,
14922 dprintf_style_enums, &dprintf_style, _("\
14923 Set the style of usage for dynamic printf."), _("\
14924 Show the style of usage for dynamic printf."), _("\
14925 This setting chooses how GDB will do a dynamic printf.\n\
14926 If the value is \"gdb\", then the printing is done by GDB to its own\n\
14927 console, as with the \"printf\" command.\n\
14928 If the value is \"call\", the print is done by calling a function in your\n\
14929 program; by default printf(), but you can choose a different function or\n\
14930 output stream by setting dprintf-function and dprintf-channel."),
14931 update_dprintf_commands, NULL,
14932 &setlist, &showlist);
14933
14934 add_setshow_string_cmd ("dprintf-function", class_support,
14935 &dprintf_function, _("\
14936 Set the function to use for dynamic printf."), _("\
14937 Show the function to use for dynamic printf."), NULL,
14938 update_dprintf_commands, NULL,
14939 &setlist, &showlist);
14940
14941 add_setshow_string_cmd ("dprintf-channel", class_support,
14942 &dprintf_channel, _("\
14943 Set the channel to use for dynamic printf."), _("\
14944 Show the channel to use for dynamic printf."), NULL,
14945 update_dprintf_commands, NULL,
14946 &setlist, &showlist);
14947
14948 add_setshow_boolean_cmd ("disconnected-dprintf", no_class,
14949 &disconnected_dprintf, _("\
14950 Set whether dprintf continues after GDB disconnects."), _("\
14951 Show whether dprintf continues after GDB disconnects."), _("\
14952 Use this to let dprintf commands continue to hit and produce output\n\
14953 even if GDB disconnects or detaches from the target."),
14954 NULL,
14955 NULL,
14956 &setlist, &showlist);
14957
14958 add_com ("agent-printf", class_vars, agent_printf_command, _("\
14959 Target agent only formatted printing, like the C \"printf\" function.\n\
14960 Usage: agent-printf \"format string\", ARG1, ARG2, ARG3, ..., ARGN\n\
14961 This supports most C printf format specifications, like %s, %d, etc.\n\
14962 This is useful for formatted output in user-defined commands."));
14963
14964 automatic_hardware_breakpoints = true;
14965
14966 gdb::observers::about_to_proceed.attach (breakpoint_about_to_proceed,
14967 "breakpoint");
14968 gdb::observers::thread_exit.attach (remove_threaded_breakpoints,
14969 "breakpoint");
14970 }