Constify prompt argument to read_command_lines
[deliverable/binutils-gdb.git] / gdb / breakpoint.c
1 /* Everything about breakpoints, for GDB.
2
3 Copyright (C) 1986-2018 Free Software Foundation, Inc.
4
5 This file is part of GDB.
6
7 This program is free software; you can redistribute it and/or modify
8 it under the terms of the GNU General Public License as published by
9 the Free Software Foundation; either version 3 of the License, or
10 (at your option) any later version.
11
12 This program is distributed in the hope that it will be useful,
13 but WITHOUT ANY WARRANTY; without even the implied warranty of
14 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 GNU General Public License for more details.
16
17 You should have received a copy of the GNU General Public License
18 along with this program. If not, see <http://www.gnu.org/licenses/>. */
19
20 #include "defs.h"
21 #include "arch-utils.h"
22 #include <ctype.h>
23 #include "hashtab.h"
24 #include "symtab.h"
25 #include "frame.h"
26 #include "breakpoint.h"
27 #include "tracepoint.h"
28 #include "gdbtypes.h"
29 #include "expression.h"
30 #include "gdbcore.h"
31 #include "gdbcmd.h"
32 #include "value.h"
33 #include "command.h"
34 #include "inferior.h"
35 #include "infrun.h"
36 #include "gdbthread.h"
37 #include "target.h"
38 #include "language.h"
39 #include "gdb-demangle.h"
40 #include "filenames.h"
41 #include "annotate.h"
42 #include "symfile.h"
43 #include "objfiles.h"
44 #include "source.h"
45 #include "linespec.h"
46 #include "completer.h"
47 #include "ui-out.h"
48 #include "cli/cli-script.h"
49 #include "block.h"
50 #include "solib.h"
51 #include "solist.h"
52 #include "observable.h"
53 #include "memattr.h"
54 #include "ada-lang.h"
55 #include "top.h"
56 #include "valprint.h"
57 #include "jit.h"
58 #include "parser-defs.h"
59 #include "gdb_regex.h"
60 #include "probe.h"
61 #include "cli/cli-utils.h"
62 #include "continuations.h"
63 #include "stack.h"
64 #include "skip.h"
65 #include "ax-gdb.h"
66 #include "dummy-frame.h"
67 #include "interps.h"
68 #include "format.h"
69 #include "thread-fsm.h"
70 #include "tid-parse.h"
71
72 /* readline include files */
73 #include "readline/readline.h"
74 #include "readline/history.h"
75
76 /* readline defines this. */
77 #undef savestring
78
79 #include "mi/mi-common.h"
80 #include "extension.h"
81 #include <algorithm>
82 #include "progspace-and-thread.h"
83 #include "common/array-view.h"
84 #include "common/gdb_optional.h"
85
86 /* Enums for exception-handling support. */
87 enum exception_event_kind
88 {
89 EX_EVENT_THROW,
90 EX_EVENT_RETHROW,
91 EX_EVENT_CATCH
92 };
93
94 /* Prototypes for local functions. */
95
96 static void map_breakpoint_numbers (const char *,
97 gdb::function_view<void (breakpoint *)>);
98
99 static void breakpoint_re_set_default (struct breakpoint *);
100
101 static void
102 create_sals_from_location_default (const struct event_location *location,
103 struct linespec_result *canonical,
104 enum bptype type_wanted);
105
106 static void create_breakpoints_sal_default (struct gdbarch *,
107 struct linespec_result *,
108 gdb::unique_xmalloc_ptr<char>,
109 gdb::unique_xmalloc_ptr<char>,
110 enum bptype,
111 enum bpdisp, int, int,
112 int,
113 const struct breakpoint_ops *,
114 int, int, int, unsigned);
115
116 static std::vector<symtab_and_line> decode_location_default
117 (struct breakpoint *b, const struct event_location *location,
118 struct program_space *search_pspace);
119
120 static int can_use_hardware_watchpoint
121 (const std::vector<value_ref_ptr> &vals);
122
123 static void mention (struct breakpoint *);
124
125 static struct breakpoint *set_raw_breakpoint_without_location (struct gdbarch *,
126 enum bptype,
127 const struct breakpoint_ops *);
128 static struct bp_location *add_location_to_breakpoint (struct breakpoint *,
129 const struct symtab_and_line *);
130
131 /* This function is used in gdbtk sources and thus can not be made
132 static. */
133 struct breakpoint *set_raw_breakpoint (struct gdbarch *gdbarch,
134 struct symtab_and_line,
135 enum bptype,
136 const struct breakpoint_ops *);
137
138 static struct breakpoint *
139 momentary_breakpoint_from_master (struct breakpoint *orig,
140 enum bptype type,
141 const struct breakpoint_ops *ops,
142 int loc_enabled);
143
144 static void breakpoint_adjustment_warning (CORE_ADDR, CORE_ADDR, int, int);
145
146 static CORE_ADDR adjust_breakpoint_address (struct gdbarch *gdbarch,
147 CORE_ADDR bpaddr,
148 enum bptype bptype);
149
150 static void describe_other_breakpoints (struct gdbarch *,
151 struct program_space *, CORE_ADDR,
152 struct obj_section *, int);
153
154 static int watchpoint_locations_match (struct bp_location *loc1,
155 struct bp_location *loc2);
156
157 static int breakpoint_location_address_match (struct bp_location *bl,
158 const struct address_space *aspace,
159 CORE_ADDR addr);
160
161 static int breakpoint_location_address_range_overlap (struct bp_location *,
162 const address_space *,
163 CORE_ADDR, int);
164
165 static int remove_breakpoint (struct bp_location *);
166 static int remove_breakpoint_1 (struct bp_location *, enum remove_bp_reason);
167
168 static enum print_stop_action print_bp_stop_message (bpstat bs);
169
170 static int hw_breakpoint_used_count (void);
171
172 static int hw_watchpoint_use_count (struct breakpoint *);
173
174 static int hw_watchpoint_used_count_others (struct breakpoint *except,
175 enum bptype type,
176 int *other_type_used);
177
178 static void enable_breakpoint_disp (struct breakpoint *, enum bpdisp,
179 int count);
180
181 static void free_bp_location (struct bp_location *loc);
182 static void incref_bp_location (struct bp_location *loc);
183 static void decref_bp_location (struct bp_location **loc);
184
185 static struct bp_location *allocate_bp_location (struct breakpoint *bpt);
186
187 /* update_global_location_list's modes of operation wrt to whether to
188 insert locations now. */
189 enum ugll_insert_mode
190 {
191 /* Don't insert any breakpoint locations into the inferior, only
192 remove already-inserted locations that no longer should be
193 inserted. Functions that delete a breakpoint or breakpoints
194 should specify this mode, so that deleting a breakpoint doesn't
195 have the side effect of inserting the locations of other
196 breakpoints that are marked not-inserted, but should_be_inserted
197 returns true on them.
198
199 This behavior is useful is situations close to tear-down -- e.g.,
200 after an exec, while the target still has execution, but
201 breakpoint shadows of the previous executable image should *NOT*
202 be restored to the new image; or before detaching, where the
203 target still has execution and wants to delete breakpoints from
204 GDB's lists, and all breakpoints had already been removed from
205 the inferior. */
206 UGLL_DONT_INSERT,
207
208 /* May insert breakpoints iff breakpoints_should_be_inserted_now
209 claims breakpoints should be inserted now. */
210 UGLL_MAY_INSERT,
211
212 /* Insert locations now, irrespective of
213 breakpoints_should_be_inserted_now. E.g., say all threads are
214 stopped right now, and the user did "continue". We need to
215 insert breakpoints _before_ resuming the target, but
216 UGLL_MAY_INSERT wouldn't insert them, because
217 breakpoints_should_be_inserted_now returns false at that point,
218 as no thread is running yet. */
219 UGLL_INSERT
220 };
221
222 static void update_global_location_list (enum ugll_insert_mode);
223
224 static void update_global_location_list_nothrow (enum ugll_insert_mode);
225
226 static int is_hardware_watchpoint (const struct breakpoint *bpt);
227
228 static void insert_breakpoint_locations (void);
229
230 static void trace_pass_command (const char *, int);
231
232 static void set_tracepoint_count (int num);
233
234 static int is_masked_watchpoint (const struct breakpoint *b);
235
236 static struct bp_location **get_first_locp_gte_addr (CORE_ADDR address);
237
238 /* Return 1 if B refers to a static tracepoint set by marker ("-m"), zero
239 otherwise. */
240
241 static int strace_marker_p (struct breakpoint *b);
242
243 /* The breakpoint_ops structure to be inherited by all breakpoint_ops
244 that are implemented on top of software or hardware breakpoints
245 (user breakpoints, internal and momentary breakpoints, etc.). */
246 static struct breakpoint_ops bkpt_base_breakpoint_ops;
247
248 /* Internal breakpoints class type. */
249 static struct breakpoint_ops internal_breakpoint_ops;
250
251 /* Momentary breakpoints class type. */
252 static struct breakpoint_ops momentary_breakpoint_ops;
253
254 /* The breakpoint_ops structure to be used in regular user created
255 breakpoints. */
256 struct breakpoint_ops bkpt_breakpoint_ops;
257
258 /* Breakpoints set on probes. */
259 static struct breakpoint_ops bkpt_probe_breakpoint_ops;
260
261 /* Dynamic printf class type. */
262 struct breakpoint_ops dprintf_breakpoint_ops;
263
264 /* The style in which to perform a dynamic printf. This is a user
265 option because different output options have different tradeoffs;
266 if GDB does the printing, there is better error handling if there
267 is a problem with any of the arguments, but using an inferior
268 function lets you have special-purpose printers and sending of
269 output to the same place as compiled-in print functions. */
270
271 static const char dprintf_style_gdb[] = "gdb";
272 static const char dprintf_style_call[] = "call";
273 static const char dprintf_style_agent[] = "agent";
274 static const char *const dprintf_style_enums[] = {
275 dprintf_style_gdb,
276 dprintf_style_call,
277 dprintf_style_agent,
278 NULL
279 };
280 static const char *dprintf_style = dprintf_style_gdb;
281
282 /* The function to use for dynamic printf if the preferred style is to
283 call into the inferior. The value is simply a string that is
284 copied into the command, so it can be anything that GDB can
285 evaluate to a callable address, not necessarily a function name. */
286
287 static char *dprintf_function;
288
289 /* The channel to use for dynamic printf if the preferred style is to
290 call into the inferior; if a nonempty string, it will be passed to
291 the call as the first argument, with the format string as the
292 second. As with the dprintf function, this can be anything that
293 GDB knows how to evaluate, so in addition to common choices like
294 "stderr", this could be an app-specific expression like
295 "mystreams[curlogger]". */
296
297 static char *dprintf_channel;
298
299 /* True if dprintf commands should continue to operate even if GDB
300 has disconnected. */
301 static int disconnected_dprintf = 1;
302
303 struct command_line *
304 breakpoint_commands (struct breakpoint *b)
305 {
306 return b->commands ? b->commands.get () : NULL;
307 }
308
309 /* Flag indicating that a command has proceeded the inferior past the
310 current breakpoint. */
311
312 static int breakpoint_proceeded;
313
314 const char *
315 bpdisp_text (enum bpdisp disp)
316 {
317 /* NOTE: the following values are a part of MI protocol and
318 represent values of 'disp' field returned when inferior stops at
319 a breakpoint. */
320 static const char * const bpdisps[] = {"del", "dstp", "dis", "keep"};
321
322 return bpdisps[(int) disp];
323 }
324
325 /* Prototypes for exported functions. */
326 /* If FALSE, gdb will not use hardware support for watchpoints, even
327 if such is available. */
328 static int can_use_hw_watchpoints;
329
330 static void
331 show_can_use_hw_watchpoints (struct ui_file *file, int from_tty,
332 struct cmd_list_element *c,
333 const char *value)
334 {
335 fprintf_filtered (file,
336 _("Debugger's willingness to use "
337 "watchpoint hardware is %s.\n"),
338 value);
339 }
340
341 /* If AUTO_BOOLEAN_FALSE, gdb will not attempt to create pending breakpoints.
342 If AUTO_BOOLEAN_TRUE, gdb will automatically create pending breakpoints
343 for unrecognized breakpoint locations.
344 If AUTO_BOOLEAN_AUTO, gdb will query when breakpoints are unrecognized. */
345 static enum auto_boolean pending_break_support;
346 static void
347 show_pending_break_support (struct ui_file *file, int from_tty,
348 struct cmd_list_element *c,
349 const char *value)
350 {
351 fprintf_filtered (file,
352 _("Debugger's behavior regarding "
353 "pending breakpoints is %s.\n"),
354 value);
355 }
356
357 /* If 1, gdb will automatically use hardware breakpoints for breakpoints
358 set with "break" but falling in read-only memory.
359 If 0, gdb will warn about such breakpoints, but won't automatically
360 use hardware breakpoints. */
361 static int automatic_hardware_breakpoints;
362 static void
363 show_automatic_hardware_breakpoints (struct ui_file *file, int from_tty,
364 struct cmd_list_element *c,
365 const char *value)
366 {
367 fprintf_filtered (file,
368 _("Automatic usage of hardware breakpoints is %s.\n"),
369 value);
370 }
371
372 /* If on, GDB keeps breakpoints inserted even if the inferior is
373 stopped, and immediately inserts any new breakpoints as soon as
374 they're created. If off (default), GDB keeps breakpoints off of
375 the target as long as possible. That is, it delays inserting
376 breakpoints until the next resume, and removes them again when the
377 target fully stops. This is a bit safer in case GDB crashes while
378 processing user input. */
379 static int always_inserted_mode = 0;
380
381 static void
382 show_always_inserted_mode (struct ui_file *file, int from_tty,
383 struct cmd_list_element *c, const char *value)
384 {
385 fprintf_filtered (file, _("Always inserted breakpoint mode is %s.\n"),
386 value);
387 }
388
389 /* See breakpoint.h. */
390
391 int
392 breakpoints_should_be_inserted_now (void)
393 {
394 if (gdbarch_has_global_breakpoints (target_gdbarch ()))
395 {
396 /* If breakpoints are global, they should be inserted even if no
397 thread under gdb's control is running, or even if there are
398 no threads under GDB's control yet. */
399 return 1;
400 }
401 else if (target_has_execution)
402 {
403 struct thread_info *tp;
404
405 if (always_inserted_mode)
406 {
407 /* The user wants breakpoints inserted even if all threads
408 are stopped. */
409 return 1;
410 }
411
412 if (threads_are_executing ())
413 return 1;
414
415 /* Don't remove breakpoints yet if, even though all threads are
416 stopped, we still have events to process. */
417 ALL_NON_EXITED_THREADS (tp)
418 if (tp->resumed
419 && tp->suspend.waitstatus_pending_p)
420 return 1;
421 }
422 return 0;
423 }
424
425 static const char condition_evaluation_both[] = "host or target";
426
427 /* Modes for breakpoint condition evaluation. */
428 static const char condition_evaluation_auto[] = "auto";
429 static const char condition_evaluation_host[] = "host";
430 static const char condition_evaluation_target[] = "target";
431 static const char *const condition_evaluation_enums[] = {
432 condition_evaluation_auto,
433 condition_evaluation_host,
434 condition_evaluation_target,
435 NULL
436 };
437
438 /* Global that holds the current mode for breakpoint condition evaluation. */
439 static const char *condition_evaluation_mode_1 = condition_evaluation_auto;
440
441 /* Global that we use to display information to the user (gets its value from
442 condition_evaluation_mode_1. */
443 static const char *condition_evaluation_mode = condition_evaluation_auto;
444
445 /* Translate a condition evaluation mode MODE into either "host"
446 or "target". This is used mostly to translate from "auto" to the
447 real setting that is being used. It returns the translated
448 evaluation mode. */
449
450 static const char *
451 translate_condition_evaluation_mode (const char *mode)
452 {
453 if (mode == condition_evaluation_auto)
454 {
455 if (target_supports_evaluation_of_breakpoint_conditions ())
456 return condition_evaluation_target;
457 else
458 return condition_evaluation_host;
459 }
460 else
461 return mode;
462 }
463
464 /* Discovers what condition_evaluation_auto translates to. */
465
466 static const char *
467 breakpoint_condition_evaluation_mode (void)
468 {
469 return translate_condition_evaluation_mode (condition_evaluation_mode);
470 }
471
472 /* Return true if GDB should evaluate breakpoint conditions or false
473 otherwise. */
474
475 static int
476 gdb_evaluates_breakpoint_condition_p (void)
477 {
478 const char *mode = breakpoint_condition_evaluation_mode ();
479
480 return (mode == condition_evaluation_host);
481 }
482
483 /* Are we executing breakpoint commands? */
484 static int executing_breakpoint_commands;
485
486 /* Are overlay event breakpoints enabled? */
487 static int overlay_events_enabled;
488
489 /* See description in breakpoint.h. */
490 int target_exact_watchpoints = 0;
491
492 /* Walk the following statement or block through all breakpoints.
493 ALL_BREAKPOINTS_SAFE does so even if the statement deletes the
494 current breakpoint. */
495
496 #define ALL_BREAKPOINTS(B) for (B = breakpoint_chain; B; B = B->next)
497
498 #define ALL_BREAKPOINTS_SAFE(B,TMP) \
499 for (B = breakpoint_chain; \
500 B ? (TMP=B->next, 1): 0; \
501 B = TMP)
502
503 /* Similar iterator for the low-level breakpoints. SAFE variant is
504 not provided so update_global_location_list must not be called
505 while executing the block of ALL_BP_LOCATIONS. */
506
507 #define ALL_BP_LOCATIONS(B,BP_TMP) \
508 for (BP_TMP = bp_locations; \
509 BP_TMP < bp_locations + bp_locations_count && (B = *BP_TMP);\
510 BP_TMP++)
511
512 /* Iterates through locations with address ADDRESS for the currently selected
513 program space. BP_LOCP_TMP points to each object. BP_LOCP_START points
514 to where the loop should start from.
515 If BP_LOCP_START is a NULL pointer, the macro automatically seeks the
516 appropriate location to start with. */
517
518 #define ALL_BP_LOCATIONS_AT_ADDR(BP_LOCP_TMP, BP_LOCP_START, ADDRESS) \
519 for (BP_LOCP_START = BP_LOCP_START == NULL ? get_first_locp_gte_addr (ADDRESS) : BP_LOCP_START, \
520 BP_LOCP_TMP = BP_LOCP_START; \
521 BP_LOCP_START \
522 && (BP_LOCP_TMP < bp_locations + bp_locations_count \
523 && (*BP_LOCP_TMP)->address == ADDRESS); \
524 BP_LOCP_TMP++)
525
526 /* Iterator for tracepoints only. */
527
528 #define ALL_TRACEPOINTS(B) \
529 for (B = breakpoint_chain; B; B = B->next) \
530 if (is_tracepoint (B))
531
532 /* Chains of all breakpoints defined. */
533
534 struct breakpoint *breakpoint_chain;
535
536 /* Array is sorted by bp_locations_compare - primarily by the ADDRESS. */
537
538 static struct bp_location **bp_locations;
539
540 /* Number of elements of BP_LOCATIONS. */
541
542 static unsigned bp_locations_count;
543
544 /* Maximum alignment offset between bp_target_info.PLACED_ADDRESS and
545 ADDRESS for the current elements of BP_LOCATIONS which get a valid
546 result from bp_location_has_shadow. You can use it for roughly
547 limiting the subrange of BP_LOCATIONS to scan for shadow bytes for
548 an address you need to read. */
549
550 static CORE_ADDR bp_locations_placed_address_before_address_max;
551
552 /* Maximum offset plus alignment between bp_target_info.PLACED_ADDRESS
553 + bp_target_info.SHADOW_LEN and ADDRESS for the current elements of
554 BP_LOCATIONS which get a valid result from bp_location_has_shadow.
555 You can use it for roughly limiting the subrange of BP_LOCATIONS to
556 scan for shadow bytes for an address you need to read. */
557
558 static CORE_ADDR bp_locations_shadow_len_after_address_max;
559
560 /* The locations that no longer correspond to any breakpoint, unlinked
561 from the bp_locations array, but for which a hit may still be
562 reported by a target. */
563 VEC(bp_location_p) *moribund_locations = NULL;
564
565 /* Number of last breakpoint made. */
566
567 static int breakpoint_count;
568
569 /* The value of `breakpoint_count' before the last command that
570 created breakpoints. If the last (break-like) command created more
571 than one breakpoint, then the difference between BREAKPOINT_COUNT
572 and PREV_BREAKPOINT_COUNT is more than one. */
573 static int prev_breakpoint_count;
574
575 /* Number of last tracepoint made. */
576
577 static int tracepoint_count;
578
579 static struct cmd_list_element *breakpoint_set_cmdlist;
580 static struct cmd_list_element *breakpoint_show_cmdlist;
581 struct cmd_list_element *save_cmdlist;
582
583 /* See declaration at breakpoint.h. */
584
585 struct breakpoint *
586 breakpoint_find_if (int (*func) (struct breakpoint *b, void *d),
587 void *user_data)
588 {
589 struct breakpoint *b = NULL;
590
591 ALL_BREAKPOINTS (b)
592 {
593 if (func (b, user_data) != 0)
594 break;
595 }
596
597 return b;
598 }
599
600 /* Return whether a breakpoint is an active enabled breakpoint. */
601 static int
602 breakpoint_enabled (struct breakpoint *b)
603 {
604 return (b->enable_state == bp_enabled);
605 }
606
607 /* Set breakpoint count to NUM. */
608
609 static void
610 set_breakpoint_count (int num)
611 {
612 prev_breakpoint_count = breakpoint_count;
613 breakpoint_count = num;
614 set_internalvar_integer (lookup_internalvar ("bpnum"), num);
615 }
616
617 /* Used by `start_rbreak_breakpoints' below, to record the current
618 breakpoint count before "rbreak" creates any breakpoint. */
619 static int rbreak_start_breakpoint_count;
620
621 /* Called at the start an "rbreak" command to record the first
622 breakpoint made. */
623
624 scoped_rbreak_breakpoints::scoped_rbreak_breakpoints ()
625 {
626 rbreak_start_breakpoint_count = breakpoint_count;
627 }
628
629 /* Called at the end of an "rbreak" command to record the last
630 breakpoint made. */
631
632 scoped_rbreak_breakpoints::~scoped_rbreak_breakpoints ()
633 {
634 prev_breakpoint_count = rbreak_start_breakpoint_count;
635 }
636
637 /* Used in run_command to zero the hit count when a new run starts. */
638
639 void
640 clear_breakpoint_hit_counts (void)
641 {
642 struct breakpoint *b;
643
644 ALL_BREAKPOINTS (b)
645 b->hit_count = 0;
646 }
647
648 \f
649 /* Return the breakpoint with the specified number, or NULL
650 if the number does not refer to an existing breakpoint. */
651
652 struct breakpoint *
653 get_breakpoint (int num)
654 {
655 struct breakpoint *b;
656
657 ALL_BREAKPOINTS (b)
658 if (b->number == num)
659 return b;
660
661 return NULL;
662 }
663
664 \f
665
666 /* Mark locations as "conditions have changed" in case the target supports
667 evaluating conditions on its side. */
668
669 static void
670 mark_breakpoint_modified (struct breakpoint *b)
671 {
672 struct bp_location *loc;
673
674 /* This is only meaningful if the target is
675 evaluating conditions and if the user has
676 opted for condition evaluation on the target's
677 side. */
678 if (gdb_evaluates_breakpoint_condition_p ()
679 || !target_supports_evaluation_of_breakpoint_conditions ())
680 return;
681
682 if (!is_breakpoint (b))
683 return;
684
685 for (loc = b->loc; loc; loc = loc->next)
686 loc->condition_changed = condition_modified;
687 }
688
689 /* Mark location as "conditions have changed" in case the target supports
690 evaluating conditions on its side. */
691
692 static void
693 mark_breakpoint_location_modified (struct bp_location *loc)
694 {
695 /* This is only meaningful if the target is
696 evaluating conditions and if the user has
697 opted for condition evaluation on the target's
698 side. */
699 if (gdb_evaluates_breakpoint_condition_p ()
700 || !target_supports_evaluation_of_breakpoint_conditions ())
701
702 return;
703
704 if (!is_breakpoint (loc->owner))
705 return;
706
707 loc->condition_changed = condition_modified;
708 }
709
710 /* Sets the condition-evaluation mode using the static global
711 condition_evaluation_mode. */
712
713 static void
714 set_condition_evaluation_mode (const char *args, int from_tty,
715 struct cmd_list_element *c)
716 {
717 const char *old_mode, *new_mode;
718
719 if ((condition_evaluation_mode_1 == condition_evaluation_target)
720 && !target_supports_evaluation_of_breakpoint_conditions ())
721 {
722 condition_evaluation_mode_1 = condition_evaluation_mode;
723 warning (_("Target does not support breakpoint condition evaluation.\n"
724 "Using host evaluation mode instead."));
725 return;
726 }
727
728 new_mode = translate_condition_evaluation_mode (condition_evaluation_mode_1);
729 old_mode = translate_condition_evaluation_mode (condition_evaluation_mode);
730
731 /* Flip the switch. Flip it even if OLD_MODE == NEW_MODE as one of the
732 settings was "auto". */
733 condition_evaluation_mode = condition_evaluation_mode_1;
734
735 /* Only update the mode if the user picked a different one. */
736 if (new_mode != old_mode)
737 {
738 struct bp_location *loc, **loc_tmp;
739 /* If the user switched to a different evaluation mode, we
740 need to synch the changes with the target as follows:
741
742 "host" -> "target": Send all (valid) conditions to the target.
743 "target" -> "host": Remove all the conditions from the target.
744 */
745
746 if (new_mode == condition_evaluation_target)
747 {
748 /* Mark everything modified and synch conditions with the
749 target. */
750 ALL_BP_LOCATIONS (loc, loc_tmp)
751 mark_breakpoint_location_modified (loc);
752 }
753 else
754 {
755 /* Manually mark non-duplicate locations to synch conditions
756 with the target. We do this to remove all the conditions the
757 target knows about. */
758 ALL_BP_LOCATIONS (loc, loc_tmp)
759 if (is_breakpoint (loc->owner) && loc->inserted)
760 loc->needs_update = 1;
761 }
762
763 /* Do the update. */
764 update_global_location_list (UGLL_MAY_INSERT);
765 }
766
767 return;
768 }
769
770 /* Shows the current mode of breakpoint condition evaluation. Explicitly shows
771 what "auto" is translating to. */
772
773 static void
774 show_condition_evaluation_mode (struct ui_file *file, int from_tty,
775 struct cmd_list_element *c, const char *value)
776 {
777 if (condition_evaluation_mode == condition_evaluation_auto)
778 fprintf_filtered (file,
779 _("Breakpoint condition evaluation "
780 "mode is %s (currently %s).\n"),
781 value,
782 breakpoint_condition_evaluation_mode ());
783 else
784 fprintf_filtered (file, _("Breakpoint condition evaluation mode is %s.\n"),
785 value);
786 }
787
788 /* A comparison function for bp_location AP and BP that is used by
789 bsearch. This comparison function only cares about addresses, unlike
790 the more general bp_locations_compare function. */
791
792 static int
793 bp_locations_compare_addrs (const void *ap, const void *bp)
794 {
795 const struct bp_location *a = *(const struct bp_location **) ap;
796 const struct bp_location *b = *(const struct bp_location **) bp;
797
798 if (a->address == b->address)
799 return 0;
800 else
801 return ((a->address > b->address) - (a->address < b->address));
802 }
803
804 /* Helper function to skip all bp_locations with addresses
805 less than ADDRESS. It returns the first bp_location that
806 is greater than or equal to ADDRESS. If none is found, just
807 return NULL. */
808
809 static struct bp_location **
810 get_first_locp_gte_addr (CORE_ADDR address)
811 {
812 struct bp_location dummy_loc;
813 struct bp_location *dummy_locp = &dummy_loc;
814 struct bp_location **locp_found = NULL;
815
816 /* Initialize the dummy location's address field. */
817 dummy_loc.address = address;
818
819 /* Find a close match to the first location at ADDRESS. */
820 locp_found = ((struct bp_location **)
821 bsearch (&dummy_locp, bp_locations, bp_locations_count,
822 sizeof (struct bp_location **),
823 bp_locations_compare_addrs));
824
825 /* Nothing was found, nothing left to do. */
826 if (locp_found == NULL)
827 return NULL;
828
829 /* We may have found a location that is at ADDRESS but is not the first in the
830 location's list. Go backwards (if possible) and locate the first one. */
831 while ((locp_found - 1) >= bp_locations
832 && (*(locp_found - 1))->address == address)
833 locp_found--;
834
835 return locp_found;
836 }
837
838 void
839 set_breakpoint_condition (struct breakpoint *b, const char *exp,
840 int from_tty)
841 {
842 xfree (b->cond_string);
843 b->cond_string = NULL;
844
845 if (is_watchpoint (b))
846 {
847 struct watchpoint *w = (struct watchpoint *) b;
848
849 w->cond_exp.reset ();
850 }
851 else
852 {
853 struct bp_location *loc;
854
855 for (loc = b->loc; loc; loc = loc->next)
856 {
857 loc->cond.reset ();
858
859 /* No need to free the condition agent expression
860 bytecode (if we have one). We will handle this
861 when we go through update_global_location_list. */
862 }
863 }
864
865 if (*exp == 0)
866 {
867 if (from_tty)
868 printf_filtered (_("Breakpoint %d now unconditional.\n"), b->number);
869 }
870 else
871 {
872 const char *arg = exp;
873
874 /* I don't know if it matters whether this is the string the user
875 typed in or the decompiled expression. */
876 b->cond_string = xstrdup (arg);
877 b->condition_not_parsed = 0;
878
879 if (is_watchpoint (b))
880 {
881 struct watchpoint *w = (struct watchpoint *) b;
882
883 innermost_block.reset ();
884 arg = exp;
885 w->cond_exp = parse_exp_1 (&arg, 0, 0, 0);
886 if (*arg)
887 error (_("Junk at end of expression"));
888 w->cond_exp_valid_block = innermost_block.block ();
889 }
890 else
891 {
892 struct bp_location *loc;
893
894 for (loc = b->loc; loc; loc = loc->next)
895 {
896 arg = exp;
897 loc->cond =
898 parse_exp_1 (&arg, loc->address,
899 block_for_pc (loc->address), 0);
900 if (*arg)
901 error (_("Junk at end of expression"));
902 }
903 }
904 }
905 mark_breakpoint_modified (b);
906
907 gdb::observers::breakpoint_modified.notify (b);
908 }
909
910 /* Completion for the "condition" command. */
911
912 static void
913 condition_completer (struct cmd_list_element *cmd,
914 completion_tracker &tracker,
915 const char *text, const char *word)
916 {
917 const char *space;
918
919 text = skip_spaces (text);
920 space = skip_to_space (text);
921 if (*space == '\0')
922 {
923 int len;
924 struct breakpoint *b;
925
926 if (text[0] == '$')
927 {
928 /* We don't support completion of history indices. */
929 if (!isdigit (text[1]))
930 complete_internalvar (tracker, &text[1]);
931 return;
932 }
933
934 /* We're completing the breakpoint number. */
935 len = strlen (text);
936
937 ALL_BREAKPOINTS (b)
938 {
939 char number[50];
940
941 xsnprintf (number, sizeof (number), "%d", b->number);
942
943 if (strncmp (number, text, len) == 0)
944 {
945 gdb::unique_xmalloc_ptr<char> copy (xstrdup (number));
946 tracker.add_completion (std::move (copy));
947 }
948 }
949
950 return;
951 }
952
953 /* We're completing the expression part. */
954 text = skip_spaces (space);
955 expression_completer (cmd, tracker, text, word);
956 }
957
958 /* condition N EXP -- set break condition of breakpoint N to EXP. */
959
960 static void
961 condition_command (const char *arg, int from_tty)
962 {
963 struct breakpoint *b;
964 const char *p;
965 int bnum;
966
967 if (arg == 0)
968 error_no_arg (_("breakpoint number"));
969
970 p = arg;
971 bnum = get_number (&p);
972 if (bnum == 0)
973 error (_("Bad breakpoint argument: '%s'"), arg);
974
975 ALL_BREAKPOINTS (b)
976 if (b->number == bnum)
977 {
978 /* Check if this breakpoint has a "stop" method implemented in an
979 extension language. This method and conditions entered into GDB
980 from the CLI are mutually exclusive. */
981 const struct extension_language_defn *extlang
982 = get_breakpoint_cond_ext_lang (b, EXT_LANG_NONE);
983
984 if (extlang != NULL)
985 {
986 error (_("Only one stop condition allowed. There is currently"
987 " a %s stop condition defined for this breakpoint."),
988 ext_lang_capitalized_name (extlang));
989 }
990 set_breakpoint_condition (b, p, from_tty);
991
992 if (is_breakpoint (b))
993 update_global_location_list (UGLL_MAY_INSERT);
994
995 return;
996 }
997
998 error (_("No breakpoint number %d."), bnum);
999 }
1000
1001 /* Check that COMMAND do not contain commands that are suitable
1002 only for tracepoints and not suitable for ordinary breakpoints.
1003 Throw if any such commands is found. */
1004
1005 static void
1006 check_no_tracepoint_commands (struct command_line *commands)
1007 {
1008 struct command_line *c;
1009
1010 for (c = commands; c; c = c->next)
1011 {
1012 int i;
1013
1014 if (c->control_type == while_stepping_control)
1015 error (_("The 'while-stepping' command can "
1016 "only be used for tracepoints"));
1017
1018 check_no_tracepoint_commands (c->body_list_0.get ());
1019 check_no_tracepoint_commands (c->body_list_1.get ());
1020
1021 /* Not that command parsing removes leading whitespace and comment
1022 lines and also empty lines. So, we only need to check for
1023 command directly. */
1024 if (strstr (c->line, "collect ") == c->line)
1025 error (_("The 'collect' command can only be used for tracepoints"));
1026
1027 if (strstr (c->line, "teval ") == c->line)
1028 error (_("The 'teval' command can only be used for tracepoints"));
1029 }
1030 }
1031
1032 struct longjmp_breakpoint : public breakpoint
1033 {
1034 ~longjmp_breakpoint () override;
1035 };
1036
1037 /* Encapsulate tests for different types of tracepoints. */
1038
1039 static bool
1040 is_tracepoint_type (bptype type)
1041 {
1042 return (type == bp_tracepoint
1043 || type == bp_fast_tracepoint
1044 || type == bp_static_tracepoint);
1045 }
1046
1047 static bool
1048 is_longjmp_type (bptype type)
1049 {
1050 return type == bp_longjmp || type == bp_exception;
1051 }
1052
1053 int
1054 is_tracepoint (const struct breakpoint *b)
1055 {
1056 return is_tracepoint_type (b->type);
1057 }
1058
1059 /* Factory function to create an appropriate instance of breakpoint given
1060 TYPE. */
1061
1062 static std::unique_ptr<breakpoint>
1063 new_breakpoint_from_type (bptype type)
1064 {
1065 breakpoint *b;
1066
1067 if (is_tracepoint_type (type))
1068 b = new tracepoint ();
1069 else if (is_longjmp_type (type))
1070 b = new longjmp_breakpoint ();
1071 else
1072 b = new breakpoint ();
1073
1074 return std::unique_ptr<breakpoint> (b);
1075 }
1076
1077 /* A helper function that validates that COMMANDS are valid for a
1078 breakpoint. This function will throw an exception if a problem is
1079 found. */
1080
1081 static void
1082 validate_commands_for_breakpoint (struct breakpoint *b,
1083 struct command_line *commands)
1084 {
1085 if (is_tracepoint (b))
1086 {
1087 struct tracepoint *t = (struct tracepoint *) b;
1088 struct command_line *c;
1089 struct command_line *while_stepping = 0;
1090
1091 /* Reset the while-stepping step count. The previous commands
1092 might have included a while-stepping action, while the new
1093 ones might not. */
1094 t->step_count = 0;
1095
1096 /* We need to verify that each top-level element of commands is
1097 valid for tracepoints, that there's at most one
1098 while-stepping element, and that the while-stepping's body
1099 has valid tracing commands excluding nested while-stepping.
1100 We also need to validate the tracepoint action line in the
1101 context of the tracepoint --- validate_actionline actually
1102 has side effects, like setting the tracepoint's
1103 while-stepping STEP_COUNT, in addition to checking if the
1104 collect/teval actions parse and make sense in the
1105 tracepoint's context. */
1106 for (c = commands; c; c = c->next)
1107 {
1108 if (c->control_type == while_stepping_control)
1109 {
1110 if (b->type == bp_fast_tracepoint)
1111 error (_("The 'while-stepping' command "
1112 "cannot be used for fast tracepoint"));
1113 else if (b->type == bp_static_tracepoint)
1114 error (_("The 'while-stepping' command "
1115 "cannot be used for static tracepoint"));
1116
1117 if (while_stepping)
1118 error (_("The 'while-stepping' command "
1119 "can be used only once"));
1120 else
1121 while_stepping = c;
1122 }
1123
1124 validate_actionline (c->line, b);
1125 }
1126 if (while_stepping)
1127 {
1128 struct command_line *c2;
1129
1130 gdb_assert (while_stepping->body_list_1 == nullptr);
1131 c2 = while_stepping->body_list_0.get ();
1132 for (; c2; c2 = c2->next)
1133 {
1134 if (c2->control_type == while_stepping_control)
1135 error (_("The 'while-stepping' command cannot be nested"));
1136 }
1137 }
1138 }
1139 else
1140 {
1141 check_no_tracepoint_commands (commands);
1142 }
1143 }
1144
1145 /* Return a vector of all the static tracepoints set at ADDR. The
1146 caller is responsible for releasing the vector. */
1147
1148 VEC(breakpoint_p) *
1149 static_tracepoints_here (CORE_ADDR addr)
1150 {
1151 struct breakpoint *b;
1152 VEC(breakpoint_p) *found = 0;
1153 struct bp_location *loc;
1154
1155 ALL_BREAKPOINTS (b)
1156 if (b->type == bp_static_tracepoint)
1157 {
1158 for (loc = b->loc; loc; loc = loc->next)
1159 if (loc->address == addr)
1160 VEC_safe_push(breakpoint_p, found, b);
1161 }
1162
1163 return found;
1164 }
1165
1166 /* Set the command list of B to COMMANDS. If breakpoint is tracepoint,
1167 validate that only allowed commands are included. */
1168
1169 void
1170 breakpoint_set_commands (struct breakpoint *b,
1171 counted_command_line &&commands)
1172 {
1173 validate_commands_for_breakpoint (b, commands.get ());
1174
1175 b->commands = std::move (commands);
1176 gdb::observers::breakpoint_modified.notify (b);
1177 }
1178
1179 /* Set the internal `silent' flag on the breakpoint. Note that this
1180 is not the same as the "silent" that may appear in the breakpoint's
1181 commands. */
1182
1183 void
1184 breakpoint_set_silent (struct breakpoint *b, int silent)
1185 {
1186 int old_silent = b->silent;
1187
1188 b->silent = silent;
1189 if (old_silent != silent)
1190 gdb::observers::breakpoint_modified.notify (b);
1191 }
1192
1193 /* Set the thread for this breakpoint. If THREAD is -1, make the
1194 breakpoint work for any thread. */
1195
1196 void
1197 breakpoint_set_thread (struct breakpoint *b, int thread)
1198 {
1199 int old_thread = b->thread;
1200
1201 b->thread = thread;
1202 if (old_thread != thread)
1203 gdb::observers::breakpoint_modified.notify (b);
1204 }
1205
1206 /* Set the task for this breakpoint. If TASK is 0, make the
1207 breakpoint work for any task. */
1208
1209 void
1210 breakpoint_set_task (struct breakpoint *b, int task)
1211 {
1212 int old_task = b->task;
1213
1214 b->task = task;
1215 if (old_task != task)
1216 gdb::observers::breakpoint_modified.notify (b);
1217 }
1218
1219 void
1220 check_tracepoint_command (char *line, void *closure)
1221 {
1222 struct breakpoint *b = (struct breakpoint *) closure;
1223
1224 validate_actionline (line, b);
1225 }
1226
1227 static void
1228 commands_command_1 (const char *arg, int from_tty,
1229 struct command_line *control)
1230 {
1231 counted_command_line cmd;
1232
1233 std::string new_arg;
1234
1235 if (arg == NULL || !*arg)
1236 {
1237 if (breakpoint_count - prev_breakpoint_count > 1)
1238 new_arg = string_printf ("%d-%d", prev_breakpoint_count + 1,
1239 breakpoint_count);
1240 else if (breakpoint_count > 0)
1241 new_arg = string_printf ("%d", breakpoint_count);
1242 arg = new_arg.c_str ();
1243 }
1244
1245 map_breakpoint_numbers
1246 (arg, [&] (breakpoint *b)
1247 {
1248 if (cmd == NULL)
1249 {
1250 if (control != NULL)
1251 cmd = control->body_list_0;
1252 else
1253 {
1254 std::string str
1255 = string_printf (_("Type commands for breakpoint(s) "
1256 "%s, one per line."),
1257 arg);
1258
1259 cmd = read_command_lines (str.c_str (), from_tty, 1,
1260 (is_tracepoint (b)
1261 ? check_tracepoint_command : 0),
1262 b);
1263 }
1264 }
1265
1266 /* If a breakpoint was on the list more than once, we don't need to
1267 do anything. */
1268 if (b->commands != cmd)
1269 {
1270 validate_commands_for_breakpoint (b, cmd.get ());
1271 b->commands = cmd;
1272 gdb::observers::breakpoint_modified.notify (b);
1273 }
1274 });
1275 }
1276
1277 static void
1278 commands_command (const char *arg, int from_tty)
1279 {
1280 commands_command_1 (arg, from_tty, NULL);
1281 }
1282
1283 /* Like commands_command, but instead of reading the commands from
1284 input stream, takes them from an already parsed command structure.
1285
1286 This is used by cli-script.c to DTRT with breakpoint commands
1287 that are part of if and while bodies. */
1288 enum command_control_type
1289 commands_from_control_command (const char *arg, struct command_line *cmd)
1290 {
1291 commands_command_1 (arg, 0, cmd);
1292 return simple_control;
1293 }
1294
1295 /* Return non-zero if BL->TARGET_INFO contains valid information. */
1296
1297 static int
1298 bp_location_has_shadow (struct bp_location *bl)
1299 {
1300 if (bl->loc_type != bp_loc_software_breakpoint)
1301 return 0;
1302 if (!bl->inserted)
1303 return 0;
1304 if (bl->target_info.shadow_len == 0)
1305 /* BL isn't valid, or doesn't shadow memory. */
1306 return 0;
1307 return 1;
1308 }
1309
1310 /* Update BUF, which is LEN bytes read from the target address
1311 MEMADDR, by replacing a memory breakpoint with its shadowed
1312 contents.
1313
1314 If READBUF is not NULL, this buffer must not overlap with the of
1315 the breakpoint location's shadow_contents buffer. Otherwise, a
1316 failed assertion internal error will be raised. */
1317
1318 static void
1319 one_breakpoint_xfer_memory (gdb_byte *readbuf, gdb_byte *writebuf,
1320 const gdb_byte *writebuf_org,
1321 ULONGEST memaddr, LONGEST len,
1322 struct bp_target_info *target_info,
1323 struct gdbarch *gdbarch)
1324 {
1325 /* Now do full processing of the found relevant range of elements. */
1326 CORE_ADDR bp_addr = 0;
1327 int bp_size = 0;
1328 int bptoffset = 0;
1329
1330 if (!breakpoint_address_match (target_info->placed_address_space, 0,
1331 current_program_space->aspace, 0))
1332 {
1333 /* The breakpoint is inserted in a different address space. */
1334 return;
1335 }
1336
1337 /* Addresses and length of the part of the breakpoint that
1338 we need to copy. */
1339 bp_addr = target_info->placed_address;
1340 bp_size = target_info->shadow_len;
1341
1342 if (bp_addr + bp_size <= memaddr)
1343 {
1344 /* The breakpoint is entirely before the chunk of memory we are
1345 reading. */
1346 return;
1347 }
1348
1349 if (bp_addr >= memaddr + len)
1350 {
1351 /* The breakpoint is entirely after the chunk of memory we are
1352 reading. */
1353 return;
1354 }
1355
1356 /* Offset within shadow_contents. */
1357 if (bp_addr < memaddr)
1358 {
1359 /* Only copy the second part of the breakpoint. */
1360 bp_size -= memaddr - bp_addr;
1361 bptoffset = memaddr - bp_addr;
1362 bp_addr = memaddr;
1363 }
1364
1365 if (bp_addr + bp_size > memaddr + len)
1366 {
1367 /* Only copy the first part of the breakpoint. */
1368 bp_size -= (bp_addr + bp_size) - (memaddr + len);
1369 }
1370
1371 if (readbuf != NULL)
1372 {
1373 /* Verify that the readbuf buffer does not overlap with the
1374 shadow_contents buffer. */
1375 gdb_assert (target_info->shadow_contents >= readbuf + len
1376 || readbuf >= (target_info->shadow_contents
1377 + target_info->shadow_len));
1378
1379 /* Update the read buffer with this inserted breakpoint's
1380 shadow. */
1381 memcpy (readbuf + bp_addr - memaddr,
1382 target_info->shadow_contents + bptoffset, bp_size);
1383 }
1384 else
1385 {
1386 const unsigned char *bp;
1387 CORE_ADDR addr = target_info->reqstd_address;
1388 int placed_size;
1389
1390 /* Update the shadow with what we want to write to memory. */
1391 memcpy (target_info->shadow_contents + bptoffset,
1392 writebuf_org + bp_addr - memaddr, bp_size);
1393
1394 /* Determine appropriate breakpoint contents and size for this
1395 address. */
1396 bp = gdbarch_breakpoint_from_pc (gdbarch, &addr, &placed_size);
1397
1398 /* Update the final write buffer with this inserted
1399 breakpoint's INSN. */
1400 memcpy (writebuf + bp_addr - memaddr, bp + bptoffset, bp_size);
1401 }
1402 }
1403
1404 /* Update BUF, which is LEN bytes read from the target address MEMADDR,
1405 by replacing any memory breakpoints with their shadowed contents.
1406
1407 If READBUF is not NULL, this buffer must not overlap with any of
1408 the breakpoint location's shadow_contents buffers. Otherwise,
1409 a failed assertion internal error will be raised.
1410
1411 The range of shadowed area by each bp_location is:
1412 bl->address - bp_locations_placed_address_before_address_max
1413 up to bl->address + bp_locations_shadow_len_after_address_max
1414 The range we were requested to resolve shadows for is:
1415 memaddr ... memaddr + len
1416 Thus the safe cutoff boundaries for performance optimization are
1417 memaddr + len <= (bl->address
1418 - bp_locations_placed_address_before_address_max)
1419 and:
1420 bl->address + bp_locations_shadow_len_after_address_max <= memaddr */
1421
1422 void
1423 breakpoint_xfer_memory (gdb_byte *readbuf, gdb_byte *writebuf,
1424 const gdb_byte *writebuf_org,
1425 ULONGEST memaddr, LONGEST len)
1426 {
1427 /* Left boundary, right boundary and median element of our binary
1428 search. */
1429 unsigned bc_l, bc_r, bc;
1430
1431 /* Find BC_L which is a leftmost element which may affect BUF
1432 content. It is safe to report lower value but a failure to
1433 report higher one. */
1434
1435 bc_l = 0;
1436 bc_r = bp_locations_count;
1437 while (bc_l + 1 < bc_r)
1438 {
1439 struct bp_location *bl;
1440
1441 bc = (bc_l + bc_r) / 2;
1442 bl = bp_locations[bc];
1443
1444 /* Check first BL->ADDRESS will not overflow due to the added
1445 constant. Then advance the left boundary only if we are sure
1446 the BC element can in no way affect the BUF content (MEMADDR
1447 to MEMADDR + LEN range).
1448
1449 Use the BP_LOCATIONS_SHADOW_LEN_AFTER_ADDRESS_MAX safety
1450 offset so that we cannot miss a breakpoint with its shadow
1451 range tail still reaching MEMADDR. */
1452
1453 if ((bl->address + bp_locations_shadow_len_after_address_max
1454 >= bl->address)
1455 && (bl->address + bp_locations_shadow_len_after_address_max
1456 <= memaddr))
1457 bc_l = bc;
1458 else
1459 bc_r = bc;
1460 }
1461
1462 /* Due to the binary search above, we need to make sure we pick the
1463 first location that's at BC_L's address. E.g., if there are
1464 multiple locations at the same address, BC_L may end up pointing
1465 at a duplicate location, and miss the "master"/"inserted"
1466 location. Say, given locations L1, L2 and L3 at addresses A and
1467 B:
1468
1469 L1@A, L2@A, L3@B, ...
1470
1471 BC_L could end up pointing at location L2, while the "master"
1472 location could be L1. Since the `loc->inserted' flag is only set
1473 on "master" locations, we'd forget to restore the shadow of L1
1474 and L2. */
1475 while (bc_l > 0
1476 && bp_locations[bc_l]->address == bp_locations[bc_l - 1]->address)
1477 bc_l--;
1478
1479 /* Now do full processing of the found relevant range of elements. */
1480
1481 for (bc = bc_l; bc < bp_locations_count; bc++)
1482 {
1483 struct bp_location *bl = bp_locations[bc];
1484
1485 /* bp_location array has BL->OWNER always non-NULL. */
1486 if (bl->owner->type == bp_none)
1487 warning (_("reading through apparently deleted breakpoint #%d?"),
1488 bl->owner->number);
1489
1490 /* Performance optimization: any further element can no longer affect BUF
1491 content. */
1492
1493 if (bl->address >= bp_locations_placed_address_before_address_max
1494 && memaddr + len <= (bl->address
1495 - bp_locations_placed_address_before_address_max))
1496 break;
1497
1498 if (!bp_location_has_shadow (bl))
1499 continue;
1500
1501 one_breakpoint_xfer_memory (readbuf, writebuf, writebuf_org,
1502 memaddr, len, &bl->target_info, bl->gdbarch);
1503 }
1504 }
1505
1506 \f
1507
1508 /* Return true if BPT is either a software breakpoint or a hardware
1509 breakpoint. */
1510
1511 int
1512 is_breakpoint (const struct breakpoint *bpt)
1513 {
1514 return (bpt->type == bp_breakpoint
1515 || bpt->type == bp_hardware_breakpoint
1516 || bpt->type == bp_dprintf);
1517 }
1518
1519 /* Return true if BPT is of any hardware watchpoint kind. */
1520
1521 static int
1522 is_hardware_watchpoint (const struct breakpoint *bpt)
1523 {
1524 return (bpt->type == bp_hardware_watchpoint
1525 || bpt->type == bp_read_watchpoint
1526 || bpt->type == bp_access_watchpoint);
1527 }
1528
1529 /* Return true if BPT is of any watchpoint kind, hardware or
1530 software. */
1531
1532 int
1533 is_watchpoint (const struct breakpoint *bpt)
1534 {
1535 return (is_hardware_watchpoint (bpt)
1536 || bpt->type == bp_watchpoint);
1537 }
1538
1539 /* Returns true if the current thread and its running state are safe
1540 to evaluate or update watchpoint B. Watchpoints on local
1541 expressions need to be evaluated in the context of the thread that
1542 was current when the watchpoint was created, and, that thread needs
1543 to be stopped to be able to select the correct frame context.
1544 Watchpoints on global expressions can be evaluated on any thread,
1545 and in any state. It is presently left to the target allowing
1546 memory accesses when threads are running. */
1547
1548 static int
1549 watchpoint_in_thread_scope (struct watchpoint *b)
1550 {
1551 return (b->pspace == current_program_space
1552 && (ptid_equal (b->watchpoint_thread, null_ptid)
1553 || (ptid_equal (inferior_ptid, b->watchpoint_thread)
1554 && !is_executing (inferior_ptid))));
1555 }
1556
1557 /* Set watchpoint B to disp_del_at_next_stop, even including its possible
1558 associated bp_watchpoint_scope breakpoint. */
1559
1560 static void
1561 watchpoint_del_at_next_stop (struct watchpoint *w)
1562 {
1563 if (w->related_breakpoint != w)
1564 {
1565 gdb_assert (w->related_breakpoint->type == bp_watchpoint_scope);
1566 gdb_assert (w->related_breakpoint->related_breakpoint == w);
1567 w->related_breakpoint->disposition = disp_del_at_next_stop;
1568 w->related_breakpoint->related_breakpoint = w->related_breakpoint;
1569 w->related_breakpoint = w;
1570 }
1571 w->disposition = disp_del_at_next_stop;
1572 }
1573
1574 /* Extract a bitfield value from value VAL using the bit parameters contained in
1575 watchpoint W. */
1576
1577 static struct value *
1578 extract_bitfield_from_watchpoint_value (struct watchpoint *w, struct value *val)
1579 {
1580 struct value *bit_val;
1581
1582 if (val == NULL)
1583 return NULL;
1584
1585 bit_val = allocate_value (value_type (val));
1586
1587 unpack_value_bitfield (bit_val,
1588 w->val_bitpos,
1589 w->val_bitsize,
1590 value_contents_for_printing (val),
1591 value_offset (val),
1592 val);
1593
1594 return bit_val;
1595 }
1596
1597 /* Allocate a dummy location and add it to B, which must be a software
1598 watchpoint. This is required because even if a software watchpoint
1599 is not watching any memory, bpstat_stop_status requires a location
1600 to be able to report stops. */
1601
1602 static void
1603 software_watchpoint_add_no_memory_location (struct breakpoint *b,
1604 struct program_space *pspace)
1605 {
1606 gdb_assert (b->type == bp_watchpoint && b->loc == NULL);
1607
1608 b->loc = allocate_bp_location (b);
1609 b->loc->pspace = pspace;
1610 b->loc->address = -1;
1611 b->loc->length = -1;
1612 }
1613
1614 /* Returns true if B is a software watchpoint that is not watching any
1615 memory (e.g., "watch $pc"). */
1616
1617 static int
1618 is_no_memory_software_watchpoint (struct breakpoint *b)
1619 {
1620 return (b->type == bp_watchpoint
1621 && b->loc != NULL
1622 && b->loc->next == NULL
1623 && b->loc->address == -1
1624 && b->loc->length == -1);
1625 }
1626
1627 /* Assuming that B is a watchpoint:
1628 - Reparse watchpoint expression, if REPARSE is non-zero
1629 - Evaluate expression and store the result in B->val
1630 - Evaluate the condition if there is one, and store the result
1631 in b->loc->cond.
1632 - Update the list of values that must be watched in B->loc.
1633
1634 If the watchpoint disposition is disp_del_at_next_stop, then do
1635 nothing. If this is local watchpoint that is out of scope, delete
1636 it.
1637
1638 Even with `set breakpoint always-inserted on' the watchpoints are
1639 removed + inserted on each stop here. Normal breakpoints must
1640 never be removed because they might be missed by a running thread
1641 when debugging in non-stop mode. On the other hand, hardware
1642 watchpoints (is_hardware_watchpoint; processed here) are specific
1643 to each LWP since they are stored in each LWP's hardware debug
1644 registers. Therefore, such LWP must be stopped first in order to
1645 be able to modify its hardware watchpoints.
1646
1647 Hardware watchpoints must be reset exactly once after being
1648 presented to the user. It cannot be done sooner, because it would
1649 reset the data used to present the watchpoint hit to the user. And
1650 it must not be done later because it could display the same single
1651 watchpoint hit during multiple GDB stops. Note that the latter is
1652 relevant only to the hardware watchpoint types bp_read_watchpoint
1653 and bp_access_watchpoint. False hit by bp_hardware_watchpoint is
1654 not user-visible - its hit is suppressed if the memory content has
1655 not changed.
1656
1657 The following constraints influence the location where we can reset
1658 hardware watchpoints:
1659
1660 * target_stopped_by_watchpoint and target_stopped_data_address are
1661 called several times when GDB stops.
1662
1663 [linux]
1664 * Multiple hardware watchpoints can be hit at the same time,
1665 causing GDB to stop. GDB only presents one hardware watchpoint
1666 hit at a time as the reason for stopping, and all the other hits
1667 are presented later, one after the other, each time the user
1668 requests the execution to be resumed. Execution is not resumed
1669 for the threads still having pending hit event stored in
1670 LWP_INFO->STATUS. While the watchpoint is already removed from
1671 the inferior on the first stop the thread hit event is kept being
1672 reported from its cached value by linux_nat_stopped_data_address
1673 until the real thread resume happens after the watchpoint gets
1674 presented and thus its LWP_INFO->STATUS gets reset.
1675
1676 Therefore the hardware watchpoint hit can get safely reset on the
1677 watchpoint removal from inferior. */
1678
1679 static void
1680 update_watchpoint (struct watchpoint *b, int reparse)
1681 {
1682 int within_current_scope;
1683 struct frame_id saved_frame_id;
1684 int frame_saved;
1685
1686 /* If this is a local watchpoint, we only want to check if the
1687 watchpoint frame is in scope if the current thread is the thread
1688 that was used to create the watchpoint. */
1689 if (!watchpoint_in_thread_scope (b))
1690 return;
1691
1692 if (b->disposition == disp_del_at_next_stop)
1693 return;
1694
1695 frame_saved = 0;
1696
1697 /* Determine if the watchpoint is within scope. */
1698 if (b->exp_valid_block == NULL)
1699 within_current_scope = 1;
1700 else
1701 {
1702 struct frame_info *fi = get_current_frame ();
1703 struct gdbarch *frame_arch = get_frame_arch (fi);
1704 CORE_ADDR frame_pc = get_frame_pc (fi);
1705
1706 /* If we're at a point where the stack has been destroyed
1707 (e.g. in a function epilogue), unwinding may not work
1708 properly. Do not attempt to recreate locations at this
1709 point. See similar comments in watchpoint_check. */
1710 if (gdbarch_stack_frame_destroyed_p (frame_arch, frame_pc))
1711 return;
1712
1713 /* Save the current frame's ID so we can restore it after
1714 evaluating the watchpoint expression on its own frame. */
1715 /* FIXME drow/2003-09-09: It would be nice if evaluate_expression
1716 took a frame parameter, so that we didn't have to change the
1717 selected frame. */
1718 frame_saved = 1;
1719 saved_frame_id = get_frame_id (get_selected_frame (NULL));
1720
1721 fi = frame_find_by_id (b->watchpoint_frame);
1722 within_current_scope = (fi != NULL);
1723 if (within_current_scope)
1724 select_frame (fi);
1725 }
1726
1727 /* We don't free locations. They are stored in the bp_location array
1728 and update_global_location_list will eventually delete them and
1729 remove breakpoints if needed. */
1730 b->loc = NULL;
1731
1732 if (within_current_scope && reparse)
1733 {
1734 const char *s;
1735
1736 b->exp.reset ();
1737 s = b->exp_string_reparse ? b->exp_string_reparse : b->exp_string;
1738 b->exp = parse_exp_1 (&s, 0, b->exp_valid_block, 0);
1739 /* If the meaning of expression itself changed, the old value is
1740 no longer relevant. We don't want to report a watchpoint hit
1741 to the user when the old value and the new value may actually
1742 be completely different objects. */
1743 b->val = NULL;
1744 b->val_valid = 0;
1745
1746 /* Note that unlike with breakpoints, the watchpoint's condition
1747 expression is stored in the breakpoint object, not in the
1748 locations (re)created below. */
1749 if (b->cond_string != NULL)
1750 {
1751 b->cond_exp.reset ();
1752
1753 s = b->cond_string;
1754 b->cond_exp = parse_exp_1 (&s, 0, b->cond_exp_valid_block, 0);
1755 }
1756 }
1757
1758 /* If we failed to parse the expression, for example because
1759 it refers to a global variable in a not-yet-loaded shared library,
1760 don't try to insert watchpoint. We don't automatically delete
1761 such watchpoint, though, since failure to parse expression
1762 is different from out-of-scope watchpoint. */
1763 if (!target_has_execution)
1764 {
1765 /* Without execution, memory can't change. No use to try and
1766 set watchpoint locations. The watchpoint will be reset when
1767 the target gains execution, through breakpoint_re_set. */
1768 if (!can_use_hw_watchpoints)
1769 {
1770 if (b->ops->works_in_software_mode (b))
1771 b->type = bp_watchpoint;
1772 else
1773 error (_("Can't set read/access watchpoint when "
1774 "hardware watchpoints are disabled."));
1775 }
1776 }
1777 else if (within_current_scope && b->exp)
1778 {
1779 int pc = 0;
1780 std::vector<value_ref_ptr> val_chain;
1781 struct value *v, *result, *next;
1782 struct program_space *frame_pspace;
1783
1784 fetch_subexp_value (b->exp.get (), &pc, &v, &result, &val_chain, 0);
1785
1786 /* Avoid setting b->val if it's already set. The meaning of
1787 b->val is 'the last value' user saw, and we should update
1788 it only if we reported that last value to user. As it
1789 happens, the code that reports it updates b->val directly.
1790 We don't keep track of the memory value for masked
1791 watchpoints. */
1792 if (!b->val_valid && !is_masked_watchpoint (b))
1793 {
1794 if (b->val_bitsize != 0)
1795 v = extract_bitfield_from_watchpoint_value (b, v);
1796 b->val = release_value (v);
1797 b->val_valid = 1;
1798 }
1799
1800 frame_pspace = get_frame_program_space (get_selected_frame (NULL));
1801
1802 /* Look at each value on the value chain. */
1803 gdb_assert (!val_chain.empty ());
1804 for (const value_ref_ptr &iter : val_chain)
1805 {
1806 v = iter.get ();
1807
1808 /* If it's a memory location, and GDB actually needed
1809 its contents to evaluate the expression, then we
1810 must watch it. If the first value returned is
1811 still lazy, that means an error occurred reading it;
1812 watch it anyway in case it becomes readable. */
1813 if (VALUE_LVAL (v) == lval_memory
1814 && (v == val_chain[0] || ! value_lazy (v)))
1815 {
1816 struct type *vtype = check_typedef (value_type (v));
1817
1818 /* We only watch structs and arrays if user asked
1819 for it explicitly, never if they just happen to
1820 appear in the middle of some value chain. */
1821 if (v == result
1822 || (TYPE_CODE (vtype) != TYPE_CODE_STRUCT
1823 && TYPE_CODE (vtype) != TYPE_CODE_ARRAY))
1824 {
1825 CORE_ADDR addr;
1826 enum target_hw_bp_type type;
1827 struct bp_location *loc, **tmp;
1828 int bitpos = 0, bitsize = 0;
1829
1830 if (value_bitsize (v) != 0)
1831 {
1832 /* Extract the bit parameters out from the bitfield
1833 sub-expression. */
1834 bitpos = value_bitpos (v);
1835 bitsize = value_bitsize (v);
1836 }
1837 else if (v == result && b->val_bitsize != 0)
1838 {
1839 /* If VAL_BITSIZE != 0 then RESULT is actually a bitfield
1840 lvalue whose bit parameters are saved in the fields
1841 VAL_BITPOS and VAL_BITSIZE. */
1842 bitpos = b->val_bitpos;
1843 bitsize = b->val_bitsize;
1844 }
1845
1846 addr = value_address (v);
1847 if (bitsize != 0)
1848 {
1849 /* Skip the bytes that don't contain the bitfield. */
1850 addr += bitpos / 8;
1851 }
1852
1853 type = hw_write;
1854 if (b->type == bp_read_watchpoint)
1855 type = hw_read;
1856 else if (b->type == bp_access_watchpoint)
1857 type = hw_access;
1858
1859 loc = allocate_bp_location (b);
1860 for (tmp = &(b->loc); *tmp != NULL; tmp = &((*tmp)->next))
1861 ;
1862 *tmp = loc;
1863 loc->gdbarch = get_type_arch (value_type (v));
1864
1865 loc->pspace = frame_pspace;
1866 loc->address = address_significant (loc->gdbarch, addr);
1867
1868 if (bitsize != 0)
1869 {
1870 /* Just cover the bytes that make up the bitfield. */
1871 loc->length = ((bitpos % 8) + bitsize + 7) / 8;
1872 }
1873 else
1874 loc->length = TYPE_LENGTH (value_type (v));
1875
1876 loc->watchpoint_type = type;
1877 }
1878 }
1879 }
1880
1881 /* Change the type of breakpoint between hardware assisted or
1882 an ordinary watchpoint depending on the hardware support
1883 and free hardware slots. REPARSE is set when the inferior
1884 is started. */
1885 if (reparse)
1886 {
1887 int reg_cnt;
1888 enum bp_loc_type loc_type;
1889 struct bp_location *bl;
1890
1891 reg_cnt = can_use_hardware_watchpoint (val_chain);
1892
1893 if (reg_cnt)
1894 {
1895 int i, target_resources_ok, other_type_used;
1896 enum bptype type;
1897
1898 /* Use an exact watchpoint when there's only one memory region to be
1899 watched, and only one debug register is needed to watch it. */
1900 b->exact = target_exact_watchpoints && reg_cnt == 1;
1901
1902 /* We need to determine how many resources are already
1903 used for all other hardware watchpoints plus this one
1904 to see if we still have enough resources to also fit
1905 this watchpoint in as well. */
1906
1907 /* If this is a software watchpoint, we try to turn it
1908 to a hardware one -- count resources as if B was of
1909 hardware watchpoint type. */
1910 type = b->type;
1911 if (type == bp_watchpoint)
1912 type = bp_hardware_watchpoint;
1913
1914 /* This watchpoint may or may not have been placed on
1915 the list yet at this point (it won't be in the list
1916 if we're trying to create it for the first time,
1917 through watch_command), so always account for it
1918 manually. */
1919
1920 /* Count resources used by all watchpoints except B. */
1921 i = hw_watchpoint_used_count_others (b, type, &other_type_used);
1922
1923 /* Add in the resources needed for B. */
1924 i += hw_watchpoint_use_count (b);
1925
1926 target_resources_ok
1927 = target_can_use_hardware_watchpoint (type, i, other_type_used);
1928 if (target_resources_ok <= 0)
1929 {
1930 int sw_mode = b->ops->works_in_software_mode (b);
1931
1932 if (target_resources_ok == 0 && !sw_mode)
1933 error (_("Target does not support this type of "
1934 "hardware watchpoint."));
1935 else if (target_resources_ok < 0 && !sw_mode)
1936 error (_("There are not enough available hardware "
1937 "resources for this watchpoint."));
1938
1939 /* Downgrade to software watchpoint. */
1940 b->type = bp_watchpoint;
1941 }
1942 else
1943 {
1944 /* If this was a software watchpoint, we've just
1945 found we have enough resources to turn it to a
1946 hardware watchpoint. Otherwise, this is a
1947 nop. */
1948 b->type = type;
1949 }
1950 }
1951 else if (!b->ops->works_in_software_mode (b))
1952 {
1953 if (!can_use_hw_watchpoints)
1954 error (_("Can't set read/access watchpoint when "
1955 "hardware watchpoints are disabled."));
1956 else
1957 error (_("Expression cannot be implemented with "
1958 "read/access watchpoint."));
1959 }
1960 else
1961 b->type = bp_watchpoint;
1962
1963 loc_type = (b->type == bp_watchpoint? bp_loc_other
1964 : bp_loc_hardware_watchpoint);
1965 for (bl = b->loc; bl; bl = bl->next)
1966 bl->loc_type = loc_type;
1967 }
1968
1969 /* If a software watchpoint is not watching any memory, then the
1970 above left it without any location set up. But,
1971 bpstat_stop_status requires a location to be able to report
1972 stops, so make sure there's at least a dummy one. */
1973 if (b->type == bp_watchpoint && b->loc == NULL)
1974 software_watchpoint_add_no_memory_location (b, frame_pspace);
1975 }
1976 else if (!within_current_scope)
1977 {
1978 printf_filtered (_("\
1979 Watchpoint %d deleted because the program has left the block\n\
1980 in which its expression is valid.\n"),
1981 b->number);
1982 watchpoint_del_at_next_stop (b);
1983 }
1984
1985 /* Restore the selected frame. */
1986 if (frame_saved)
1987 select_frame (frame_find_by_id (saved_frame_id));
1988 }
1989
1990
1991 /* Returns 1 iff breakpoint location should be
1992 inserted in the inferior. We don't differentiate the type of BL's owner
1993 (breakpoint vs. tracepoint), although insert_location in tracepoint's
1994 breakpoint_ops is not defined, because in insert_bp_location,
1995 tracepoint's insert_location will not be called. */
1996 static int
1997 should_be_inserted (struct bp_location *bl)
1998 {
1999 if (bl->owner == NULL || !breakpoint_enabled (bl->owner))
2000 return 0;
2001
2002 if (bl->owner->disposition == disp_del_at_next_stop)
2003 return 0;
2004
2005 if (!bl->enabled || bl->shlib_disabled || bl->duplicate)
2006 return 0;
2007
2008 if (user_breakpoint_p (bl->owner) && bl->pspace->executing_startup)
2009 return 0;
2010
2011 /* This is set for example, when we're attached to the parent of a
2012 vfork, and have detached from the child. The child is running
2013 free, and we expect it to do an exec or exit, at which point the
2014 OS makes the parent schedulable again (and the target reports
2015 that the vfork is done). Until the child is done with the shared
2016 memory region, do not insert breakpoints in the parent, otherwise
2017 the child could still trip on the parent's breakpoints. Since
2018 the parent is blocked anyway, it won't miss any breakpoint. */
2019 if (bl->pspace->breakpoints_not_allowed)
2020 return 0;
2021
2022 /* Don't insert a breakpoint if we're trying to step past its
2023 location, except if the breakpoint is a single-step breakpoint,
2024 and the breakpoint's thread is the thread which is stepping past
2025 a breakpoint. */
2026 if ((bl->loc_type == bp_loc_software_breakpoint
2027 || bl->loc_type == bp_loc_hardware_breakpoint)
2028 && stepping_past_instruction_at (bl->pspace->aspace,
2029 bl->address)
2030 /* The single-step breakpoint may be inserted at the location
2031 we're trying to step if the instruction branches to itself.
2032 However, the instruction won't be executed at all and it may
2033 break the semantics of the instruction, for example, the
2034 instruction is a conditional branch or updates some flags.
2035 We can't fix it unless GDB is able to emulate the instruction
2036 or switch to displaced stepping. */
2037 && !(bl->owner->type == bp_single_step
2038 && thread_is_stepping_over_breakpoint (bl->owner->thread)))
2039 {
2040 if (debug_infrun)
2041 {
2042 fprintf_unfiltered (gdb_stdlog,
2043 "infrun: skipping breakpoint: "
2044 "stepping past insn at: %s\n",
2045 paddress (bl->gdbarch, bl->address));
2046 }
2047 return 0;
2048 }
2049
2050 /* Don't insert watchpoints if we're trying to step past the
2051 instruction that triggered one. */
2052 if ((bl->loc_type == bp_loc_hardware_watchpoint)
2053 && stepping_past_nonsteppable_watchpoint ())
2054 {
2055 if (debug_infrun)
2056 {
2057 fprintf_unfiltered (gdb_stdlog,
2058 "infrun: stepping past non-steppable watchpoint. "
2059 "skipping watchpoint at %s:%d\n",
2060 paddress (bl->gdbarch, bl->address),
2061 bl->length);
2062 }
2063 return 0;
2064 }
2065
2066 return 1;
2067 }
2068
2069 /* Same as should_be_inserted but does the check assuming
2070 that the location is not duplicated. */
2071
2072 static int
2073 unduplicated_should_be_inserted (struct bp_location *bl)
2074 {
2075 int result;
2076 const int save_duplicate = bl->duplicate;
2077
2078 bl->duplicate = 0;
2079 result = should_be_inserted (bl);
2080 bl->duplicate = save_duplicate;
2081 return result;
2082 }
2083
2084 /* Parses a conditional described by an expression COND into an
2085 agent expression bytecode suitable for evaluation
2086 by the bytecode interpreter. Return NULL if there was
2087 any error during parsing. */
2088
2089 static agent_expr_up
2090 parse_cond_to_aexpr (CORE_ADDR scope, struct expression *cond)
2091 {
2092 if (cond == NULL)
2093 return NULL;
2094
2095 agent_expr_up aexpr;
2096
2097 /* We don't want to stop processing, so catch any errors
2098 that may show up. */
2099 TRY
2100 {
2101 aexpr = gen_eval_for_expr (scope, cond);
2102 }
2103
2104 CATCH (ex, RETURN_MASK_ERROR)
2105 {
2106 /* If we got here, it means the condition could not be parsed to a valid
2107 bytecode expression and thus can't be evaluated on the target's side.
2108 It's no use iterating through the conditions. */
2109 }
2110 END_CATCH
2111
2112 /* We have a valid agent expression. */
2113 return aexpr;
2114 }
2115
2116 /* Based on location BL, create a list of breakpoint conditions to be
2117 passed on to the target. If we have duplicated locations with different
2118 conditions, we will add such conditions to the list. The idea is that the
2119 target will evaluate the list of conditions and will only notify GDB when
2120 one of them is true. */
2121
2122 static void
2123 build_target_condition_list (struct bp_location *bl)
2124 {
2125 struct bp_location **locp = NULL, **loc2p;
2126 int null_condition_or_parse_error = 0;
2127 int modified = bl->needs_update;
2128 struct bp_location *loc;
2129
2130 /* Release conditions left over from a previous insert. */
2131 bl->target_info.conditions.clear ();
2132
2133 /* This is only meaningful if the target is
2134 evaluating conditions and if the user has
2135 opted for condition evaluation on the target's
2136 side. */
2137 if (gdb_evaluates_breakpoint_condition_p ()
2138 || !target_supports_evaluation_of_breakpoint_conditions ())
2139 return;
2140
2141 /* Do a first pass to check for locations with no assigned
2142 conditions or conditions that fail to parse to a valid agent expression
2143 bytecode. If any of these happen, then it's no use to send conditions
2144 to the target since this location will always trigger and generate a
2145 response back to GDB. */
2146 ALL_BP_LOCATIONS_AT_ADDR (loc2p, locp, bl->address)
2147 {
2148 loc = (*loc2p);
2149 if (is_breakpoint (loc->owner) && loc->pspace->num == bl->pspace->num)
2150 {
2151 if (modified)
2152 {
2153 /* Re-parse the conditions since something changed. In that
2154 case we already freed the condition bytecodes (see
2155 force_breakpoint_reinsertion). We just
2156 need to parse the condition to bytecodes again. */
2157 loc->cond_bytecode = parse_cond_to_aexpr (bl->address,
2158 loc->cond.get ());
2159 }
2160
2161 /* If we have a NULL bytecode expression, it means something
2162 went wrong or we have a null condition expression. */
2163 if (!loc->cond_bytecode)
2164 {
2165 null_condition_or_parse_error = 1;
2166 break;
2167 }
2168 }
2169 }
2170
2171 /* If any of these happened, it means we will have to evaluate the conditions
2172 for the location's address on gdb's side. It is no use keeping bytecodes
2173 for all the other duplicate locations, thus we free all of them here.
2174
2175 This is so we have a finer control over which locations' conditions are
2176 being evaluated by GDB or the remote stub. */
2177 if (null_condition_or_parse_error)
2178 {
2179 ALL_BP_LOCATIONS_AT_ADDR (loc2p, locp, bl->address)
2180 {
2181 loc = (*loc2p);
2182 if (is_breakpoint (loc->owner) && loc->pspace->num == bl->pspace->num)
2183 {
2184 /* Only go as far as the first NULL bytecode is
2185 located. */
2186 if (!loc->cond_bytecode)
2187 return;
2188
2189 loc->cond_bytecode.reset ();
2190 }
2191 }
2192 }
2193
2194 /* No NULL conditions or failed bytecode generation. Build a condition list
2195 for this location's address. */
2196 ALL_BP_LOCATIONS_AT_ADDR (loc2p, locp, bl->address)
2197 {
2198 loc = (*loc2p);
2199 if (loc->cond
2200 && is_breakpoint (loc->owner)
2201 && loc->pspace->num == bl->pspace->num
2202 && loc->owner->enable_state == bp_enabled
2203 && loc->enabled)
2204 {
2205 /* Add the condition to the vector. This will be used later
2206 to send the conditions to the target. */
2207 bl->target_info.conditions.push_back (loc->cond_bytecode.get ());
2208 }
2209 }
2210
2211 return;
2212 }
2213
2214 /* Parses a command described by string CMD into an agent expression
2215 bytecode suitable for evaluation by the bytecode interpreter.
2216 Return NULL if there was any error during parsing. */
2217
2218 static agent_expr_up
2219 parse_cmd_to_aexpr (CORE_ADDR scope, char *cmd)
2220 {
2221 const char *cmdrest;
2222 const char *format_start, *format_end;
2223 struct gdbarch *gdbarch = get_current_arch ();
2224
2225 if (cmd == NULL)
2226 return NULL;
2227
2228 cmdrest = cmd;
2229
2230 if (*cmdrest == ',')
2231 ++cmdrest;
2232 cmdrest = skip_spaces (cmdrest);
2233
2234 if (*cmdrest++ != '"')
2235 error (_("No format string following the location"));
2236
2237 format_start = cmdrest;
2238
2239 format_pieces fpieces (&cmdrest);
2240
2241 format_end = cmdrest;
2242
2243 if (*cmdrest++ != '"')
2244 error (_("Bad format string, non-terminated '\"'."));
2245
2246 cmdrest = skip_spaces (cmdrest);
2247
2248 if (!(*cmdrest == ',' || *cmdrest == '\0'))
2249 error (_("Invalid argument syntax"));
2250
2251 if (*cmdrest == ',')
2252 cmdrest++;
2253 cmdrest = skip_spaces (cmdrest);
2254
2255 /* For each argument, make an expression. */
2256
2257 std::vector<struct expression *> argvec;
2258 while (*cmdrest != '\0')
2259 {
2260 const char *cmd1;
2261
2262 cmd1 = cmdrest;
2263 expression_up expr = parse_exp_1 (&cmd1, scope, block_for_pc (scope), 1);
2264 argvec.push_back (expr.release ());
2265 cmdrest = cmd1;
2266 if (*cmdrest == ',')
2267 ++cmdrest;
2268 }
2269
2270 agent_expr_up aexpr;
2271
2272 /* We don't want to stop processing, so catch any errors
2273 that may show up. */
2274 TRY
2275 {
2276 aexpr = gen_printf (scope, gdbarch, 0, 0,
2277 format_start, format_end - format_start,
2278 argvec.size (), argvec.data ());
2279 }
2280 CATCH (ex, RETURN_MASK_ERROR)
2281 {
2282 /* If we got here, it means the command could not be parsed to a valid
2283 bytecode expression and thus can't be evaluated on the target's side.
2284 It's no use iterating through the other commands. */
2285 }
2286 END_CATCH
2287
2288 /* We have a valid agent expression, return it. */
2289 return aexpr;
2290 }
2291
2292 /* Based on location BL, create a list of breakpoint commands to be
2293 passed on to the target. If we have duplicated locations with
2294 different commands, we will add any such to the list. */
2295
2296 static void
2297 build_target_command_list (struct bp_location *bl)
2298 {
2299 struct bp_location **locp = NULL, **loc2p;
2300 int null_command_or_parse_error = 0;
2301 int modified = bl->needs_update;
2302 struct bp_location *loc;
2303
2304 /* Clear commands left over from a previous insert. */
2305 bl->target_info.tcommands.clear ();
2306
2307 if (!target_can_run_breakpoint_commands ())
2308 return;
2309
2310 /* For now, limit to agent-style dprintf breakpoints. */
2311 if (dprintf_style != dprintf_style_agent)
2312 return;
2313
2314 /* For now, if we have any duplicate location that isn't a dprintf,
2315 don't install the target-side commands, as that would make the
2316 breakpoint not be reported to the core, and we'd lose
2317 control. */
2318 ALL_BP_LOCATIONS_AT_ADDR (loc2p, locp, bl->address)
2319 {
2320 loc = (*loc2p);
2321 if (is_breakpoint (loc->owner)
2322 && loc->pspace->num == bl->pspace->num
2323 && loc->owner->type != bp_dprintf)
2324 return;
2325 }
2326
2327 /* Do a first pass to check for locations with no assigned
2328 conditions or conditions that fail to parse to a valid agent expression
2329 bytecode. If any of these happen, then it's no use to send conditions
2330 to the target since this location will always trigger and generate a
2331 response back to GDB. */
2332 ALL_BP_LOCATIONS_AT_ADDR (loc2p, locp, bl->address)
2333 {
2334 loc = (*loc2p);
2335 if (is_breakpoint (loc->owner) && loc->pspace->num == bl->pspace->num)
2336 {
2337 if (modified)
2338 {
2339 /* Re-parse the commands since something changed. In that
2340 case we already freed the command bytecodes (see
2341 force_breakpoint_reinsertion). We just
2342 need to parse the command to bytecodes again. */
2343 loc->cmd_bytecode
2344 = parse_cmd_to_aexpr (bl->address,
2345 loc->owner->extra_string);
2346 }
2347
2348 /* If we have a NULL bytecode expression, it means something
2349 went wrong or we have a null command expression. */
2350 if (!loc->cmd_bytecode)
2351 {
2352 null_command_or_parse_error = 1;
2353 break;
2354 }
2355 }
2356 }
2357
2358 /* If anything failed, then we're not doing target-side commands,
2359 and so clean up. */
2360 if (null_command_or_parse_error)
2361 {
2362 ALL_BP_LOCATIONS_AT_ADDR (loc2p, locp, bl->address)
2363 {
2364 loc = (*loc2p);
2365 if (is_breakpoint (loc->owner)
2366 && loc->pspace->num == bl->pspace->num)
2367 {
2368 /* Only go as far as the first NULL bytecode is
2369 located. */
2370 if (loc->cmd_bytecode == NULL)
2371 return;
2372
2373 loc->cmd_bytecode.reset ();
2374 }
2375 }
2376 }
2377
2378 /* No NULL commands or failed bytecode generation. Build a command list
2379 for this location's address. */
2380 ALL_BP_LOCATIONS_AT_ADDR (loc2p, locp, bl->address)
2381 {
2382 loc = (*loc2p);
2383 if (loc->owner->extra_string
2384 && is_breakpoint (loc->owner)
2385 && loc->pspace->num == bl->pspace->num
2386 && loc->owner->enable_state == bp_enabled
2387 && loc->enabled)
2388 {
2389 /* Add the command to the vector. This will be used later
2390 to send the commands to the target. */
2391 bl->target_info.tcommands.push_back (loc->cmd_bytecode.get ());
2392 }
2393 }
2394
2395 bl->target_info.persist = 0;
2396 /* Maybe flag this location as persistent. */
2397 if (bl->owner->type == bp_dprintf && disconnected_dprintf)
2398 bl->target_info.persist = 1;
2399 }
2400
2401 /* Return the kind of breakpoint on address *ADDR. Get the kind
2402 of breakpoint according to ADDR except single-step breakpoint.
2403 Get the kind of single-step breakpoint according to the current
2404 registers state. */
2405
2406 static int
2407 breakpoint_kind (struct bp_location *bl, CORE_ADDR *addr)
2408 {
2409 if (bl->owner->type == bp_single_step)
2410 {
2411 struct thread_info *thr = find_thread_global_id (bl->owner->thread);
2412 struct regcache *regcache;
2413
2414 regcache = get_thread_regcache (thr->ptid);
2415
2416 return gdbarch_breakpoint_kind_from_current_state (bl->gdbarch,
2417 regcache, addr);
2418 }
2419 else
2420 return gdbarch_breakpoint_kind_from_pc (bl->gdbarch, addr);
2421 }
2422
2423 /* Insert a low-level "breakpoint" of some type. BL is the breakpoint
2424 location. Any error messages are printed to TMP_ERROR_STREAM; and
2425 DISABLED_BREAKS, and HW_BREAKPOINT_ERROR are used to report problems.
2426 Returns 0 for success, 1 if the bp_location type is not supported or
2427 -1 for failure.
2428
2429 NOTE drow/2003-09-09: This routine could be broken down to an
2430 object-style method for each breakpoint or catchpoint type. */
2431 static int
2432 insert_bp_location (struct bp_location *bl,
2433 struct ui_file *tmp_error_stream,
2434 int *disabled_breaks,
2435 int *hw_breakpoint_error,
2436 int *hw_bp_error_explained_already)
2437 {
2438 gdb_exception bp_excpt = exception_none;
2439
2440 if (!should_be_inserted (bl) || (bl->inserted && !bl->needs_update))
2441 return 0;
2442
2443 /* Note we don't initialize bl->target_info, as that wipes out
2444 the breakpoint location's shadow_contents if the breakpoint
2445 is still inserted at that location. This in turn breaks
2446 target_read_memory which depends on these buffers when
2447 a memory read is requested at the breakpoint location:
2448 Once the target_info has been wiped, we fail to see that
2449 we have a breakpoint inserted at that address and thus
2450 read the breakpoint instead of returning the data saved in
2451 the breakpoint location's shadow contents. */
2452 bl->target_info.reqstd_address = bl->address;
2453 bl->target_info.placed_address_space = bl->pspace->aspace;
2454 bl->target_info.length = bl->length;
2455
2456 /* When working with target-side conditions, we must pass all the conditions
2457 for the same breakpoint address down to the target since GDB will not
2458 insert those locations. With a list of breakpoint conditions, the target
2459 can decide when to stop and notify GDB. */
2460
2461 if (is_breakpoint (bl->owner))
2462 {
2463 build_target_condition_list (bl);
2464 build_target_command_list (bl);
2465 /* Reset the modification marker. */
2466 bl->needs_update = 0;
2467 }
2468
2469 if (bl->loc_type == bp_loc_software_breakpoint
2470 || bl->loc_type == bp_loc_hardware_breakpoint)
2471 {
2472 if (bl->owner->type != bp_hardware_breakpoint)
2473 {
2474 /* If the explicitly specified breakpoint type
2475 is not hardware breakpoint, check the memory map to see
2476 if the breakpoint address is in read only memory or not.
2477
2478 Two important cases are:
2479 - location type is not hardware breakpoint, memory
2480 is readonly. We change the type of the location to
2481 hardware breakpoint.
2482 - location type is hardware breakpoint, memory is
2483 read-write. This means we've previously made the
2484 location hardware one, but then the memory map changed,
2485 so we undo.
2486
2487 When breakpoints are removed, remove_breakpoints will use
2488 location types we've just set here, the only possible
2489 problem is that memory map has changed during running
2490 program, but it's not going to work anyway with current
2491 gdb. */
2492 struct mem_region *mr
2493 = lookup_mem_region (bl->target_info.reqstd_address);
2494
2495 if (mr)
2496 {
2497 if (automatic_hardware_breakpoints)
2498 {
2499 enum bp_loc_type new_type;
2500
2501 if (mr->attrib.mode != MEM_RW)
2502 new_type = bp_loc_hardware_breakpoint;
2503 else
2504 new_type = bp_loc_software_breakpoint;
2505
2506 if (new_type != bl->loc_type)
2507 {
2508 static int said = 0;
2509
2510 bl->loc_type = new_type;
2511 if (!said)
2512 {
2513 fprintf_filtered (gdb_stdout,
2514 _("Note: automatically using "
2515 "hardware breakpoints for "
2516 "read-only addresses.\n"));
2517 said = 1;
2518 }
2519 }
2520 }
2521 else if (bl->loc_type == bp_loc_software_breakpoint
2522 && mr->attrib.mode != MEM_RW)
2523 {
2524 fprintf_unfiltered (tmp_error_stream,
2525 _("Cannot insert breakpoint %d.\n"
2526 "Cannot set software breakpoint "
2527 "at read-only address %s\n"),
2528 bl->owner->number,
2529 paddress (bl->gdbarch, bl->address));
2530 return 1;
2531 }
2532 }
2533 }
2534
2535 /* First check to see if we have to handle an overlay. */
2536 if (overlay_debugging == ovly_off
2537 || bl->section == NULL
2538 || !(section_is_overlay (bl->section)))
2539 {
2540 /* No overlay handling: just set the breakpoint. */
2541 TRY
2542 {
2543 int val;
2544
2545 val = bl->owner->ops->insert_location (bl);
2546 if (val)
2547 bp_excpt = gdb_exception {RETURN_ERROR, GENERIC_ERROR};
2548 }
2549 CATCH (e, RETURN_MASK_ALL)
2550 {
2551 bp_excpt = e;
2552 }
2553 END_CATCH
2554 }
2555 else
2556 {
2557 /* This breakpoint is in an overlay section.
2558 Shall we set a breakpoint at the LMA? */
2559 if (!overlay_events_enabled)
2560 {
2561 /* Yes -- overlay event support is not active,
2562 so we must try to set a breakpoint at the LMA.
2563 This will not work for a hardware breakpoint. */
2564 if (bl->loc_type == bp_loc_hardware_breakpoint)
2565 warning (_("hardware breakpoint %d not supported in overlay!"),
2566 bl->owner->number);
2567 else
2568 {
2569 CORE_ADDR addr = overlay_unmapped_address (bl->address,
2570 bl->section);
2571 /* Set a software (trap) breakpoint at the LMA. */
2572 bl->overlay_target_info = bl->target_info;
2573 bl->overlay_target_info.reqstd_address = addr;
2574
2575 /* No overlay handling: just set the breakpoint. */
2576 TRY
2577 {
2578 int val;
2579
2580 bl->overlay_target_info.kind
2581 = breakpoint_kind (bl, &addr);
2582 bl->overlay_target_info.placed_address = addr;
2583 val = target_insert_breakpoint (bl->gdbarch,
2584 &bl->overlay_target_info);
2585 if (val)
2586 bp_excpt
2587 = gdb_exception {RETURN_ERROR, GENERIC_ERROR};
2588 }
2589 CATCH (e, RETURN_MASK_ALL)
2590 {
2591 bp_excpt = e;
2592 }
2593 END_CATCH
2594
2595 if (bp_excpt.reason != 0)
2596 fprintf_unfiltered (tmp_error_stream,
2597 "Overlay breakpoint %d "
2598 "failed: in ROM?\n",
2599 bl->owner->number);
2600 }
2601 }
2602 /* Shall we set a breakpoint at the VMA? */
2603 if (section_is_mapped (bl->section))
2604 {
2605 /* Yes. This overlay section is mapped into memory. */
2606 TRY
2607 {
2608 int val;
2609
2610 val = bl->owner->ops->insert_location (bl);
2611 if (val)
2612 bp_excpt = gdb_exception {RETURN_ERROR, GENERIC_ERROR};
2613 }
2614 CATCH (e, RETURN_MASK_ALL)
2615 {
2616 bp_excpt = e;
2617 }
2618 END_CATCH
2619 }
2620 else
2621 {
2622 /* No. This breakpoint will not be inserted.
2623 No error, but do not mark the bp as 'inserted'. */
2624 return 0;
2625 }
2626 }
2627
2628 if (bp_excpt.reason != 0)
2629 {
2630 /* Can't set the breakpoint. */
2631
2632 /* In some cases, we might not be able to insert a
2633 breakpoint in a shared library that has already been
2634 removed, but we have not yet processed the shlib unload
2635 event. Unfortunately, some targets that implement
2636 breakpoint insertion themselves can't tell why the
2637 breakpoint insertion failed (e.g., the remote target
2638 doesn't define error codes), so we must treat generic
2639 errors as memory errors. */
2640 if (bp_excpt.reason == RETURN_ERROR
2641 && (bp_excpt.error == GENERIC_ERROR
2642 || bp_excpt.error == MEMORY_ERROR)
2643 && bl->loc_type == bp_loc_software_breakpoint
2644 && (solib_name_from_address (bl->pspace, bl->address)
2645 || shared_objfile_contains_address_p (bl->pspace,
2646 bl->address)))
2647 {
2648 /* See also: disable_breakpoints_in_shlibs. */
2649 bl->shlib_disabled = 1;
2650 gdb::observers::breakpoint_modified.notify (bl->owner);
2651 if (!*disabled_breaks)
2652 {
2653 fprintf_unfiltered (tmp_error_stream,
2654 "Cannot insert breakpoint %d.\n",
2655 bl->owner->number);
2656 fprintf_unfiltered (tmp_error_stream,
2657 "Temporarily disabling shared "
2658 "library breakpoints:\n");
2659 }
2660 *disabled_breaks = 1;
2661 fprintf_unfiltered (tmp_error_stream,
2662 "breakpoint #%d\n", bl->owner->number);
2663 return 0;
2664 }
2665 else
2666 {
2667 if (bl->loc_type == bp_loc_hardware_breakpoint)
2668 {
2669 *hw_breakpoint_error = 1;
2670 *hw_bp_error_explained_already = bp_excpt.message != NULL;
2671 fprintf_unfiltered (tmp_error_stream,
2672 "Cannot insert hardware breakpoint %d%s",
2673 bl->owner->number,
2674 bp_excpt.message ? ":" : ".\n");
2675 if (bp_excpt.message != NULL)
2676 fprintf_unfiltered (tmp_error_stream, "%s.\n",
2677 bp_excpt.message);
2678 }
2679 else
2680 {
2681 if (bp_excpt.message == NULL)
2682 {
2683 std::string message
2684 = memory_error_message (TARGET_XFER_E_IO,
2685 bl->gdbarch, bl->address);
2686
2687 fprintf_unfiltered (tmp_error_stream,
2688 "Cannot insert breakpoint %d.\n"
2689 "%s\n",
2690 bl->owner->number, message.c_str ());
2691 }
2692 else
2693 {
2694 fprintf_unfiltered (tmp_error_stream,
2695 "Cannot insert breakpoint %d: %s\n",
2696 bl->owner->number,
2697 bp_excpt.message);
2698 }
2699 }
2700 return 1;
2701
2702 }
2703 }
2704 else
2705 bl->inserted = 1;
2706
2707 return 0;
2708 }
2709
2710 else if (bl->loc_type == bp_loc_hardware_watchpoint
2711 /* NOTE drow/2003-09-08: This state only exists for removing
2712 watchpoints. It's not clear that it's necessary... */
2713 && bl->owner->disposition != disp_del_at_next_stop)
2714 {
2715 int val;
2716
2717 gdb_assert (bl->owner->ops != NULL
2718 && bl->owner->ops->insert_location != NULL);
2719
2720 val = bl->owner->ops->insert_location (bl);
2721
2722 /* If trying to set a read-watchpoint, and it turns out it's not
2723 supported, try emulating one with an access watchpoint. */
2724 if (val == 1 && bl->watchpoint_type == hw_read)
2725 {
2726 struct bp_location *loc, **loc_temp;
2727
2728 /* But don't try to insert it, if there's already another
2729 hw_access location that would be considered a duplicate
2730 of this one. */
2731 ALL_BP_LOCATIONS (loc, loc_temp)
2732 if (loc != bl
2733 && loc->watchpoint_type == hw_access
2734 && watchpoint_locations_match (bl, loc))
2735 {
2736 bl->duplicate = 1;
2737 bl->inserted = 1;
2738 bl->target_info = loc->target_info;
2739 bl->watchpoint_type = hw_access;
2740 val = 0;
2741 break;
2742 }
2743
2744 if (val == 1)
2745 {
2746 bl->watchpoint_type = hw_access;
2747 val = bl->owner->ops->insert_location (bl);
2748
2749 if (val)
2750 /* Back to the original value. */
2751 bl->watchpoint_type = hw_read;
2752 }
2753 }
2754
2755 bl->inserted = (val == 0);
2756 }
2757
2758 else if (bl->owner->type == bp_catchpoint)
2759 {
2760 int val;
2761
2762 gdb_assert (bl->owner->ops != NULL
2763 && bl->owner->ops->insert_location != NULL);
2764
2765 val = bl->owner->ops->insert_location (bl);
2766 if (val)
2767 {
2768 bl->owner->enable_state = bp_disabled;
2769
2770 if (val == 1)
2771 warning (_("\
2772 Error inserting catchpoint %d: Your system does not support this type\n\
2773 of catchpoint."), bl->owner->number);
2774 else
2775 warning (_("Error inserting catchpoint %d."), bl->owner->number);
2776 }
2777
2778 bl->inserted = (val == 0);
2779
2780 /* We've already printed an error message if there was a problem
2781 inserting this catchpoint, and we've disabled the catchpoint,
2782 so just return success. */
2783 return 0;
2784 }
2785
2786 return 0;
2787 }
2788
2789 /* This function is called when program space PSPACE is about to be
2790 deleted. It takes care of updating breakpoints to not reference
2791 PSPACE anymore. */
2792
2793 void
2794 breakpoint_program_space_exit (struct program_space *pspace)
2795 {
2796 struct breakpoint *b, *b_temp;
2797 struct bp_location *loc, **loc_temp;
2798
2799 /* Remove any breakpoint that was set through this program space. */
2800 ALL_BREAKPOINTS_SAFE (b, b_temp)
2801 {
2802 if (b->pspace == pspace)
2803 delete_breakpoint (b);
2804 }
2805
2806 /* Breakpoints set through other program spaces could have locations
2807 bound to PSPACE as well. Remove those. */
2808 ALL_BP_LOCATIONS (loc, loc_temp)
2809 {
2810 struct bp_location *tmp;
2811
2812 if (loc->pspace == pspace)
2813 {
2814 /* ALL_BP_LOCATIONS bp_location has LOC->OWNER always non-NULL. */
2815 if (loc->owner->loc == loc)
2816 loc->owner->loc = loc->next;
2817 else
2818 for (tmp = loc->owner->loc; tmp->next != NULL; tmp = tmp->next)
2819 if (tmp->next == loc)
2820 {
2821 tmp->next = loc->next;
2822 break;
2823 }
2824 }
2825 }
2826
2827 /* Now update the global location list to permanently delete the
2828 removed locations above. */
2829 update_global_location_list (UGLL_DONT_INSERT);
2830 }
2831
2832 /* Make sure all breakpoints are inserted in inferior.
2833 Throws exception on any error.
2834 A breakpoint that is already inserted won't be inserted
2835 again, so calling this function twice is safe. */
2836 void
2837 insert_breakpoints (void)
2838 {
2839 struct breakpoint *bpt;
2840
2841 ALL_BREAKPOINTS (bpt)
2842 if (is_hardware_watchpoint (bpt))
2843 {
2844 struct watchpoint *w = (struct watchpoint *) bpt;
2845
2846 update_watchpoint (w, 0 /* don't reparse. */);
2847 }
2848
2849 /* Updating watchpoints creates new locations, so update the global
2850 location list. Explicitly tell ugll to insert locations and
2851 ignore breakpoints_always_inserted_mode. */
2852 update_global_location_list (UGLL_INSERT);
2853 }
2854
2855 /* Invoke CALLBACK for each of bp_location. */
2856
2857 void
2858 iterate_over_bp_locations (walk_bp_location_callback callback)
2859 {
2860 struct bp_location *loc, **loc_tmp;
2861
2862 ALL_BP_LOCATIONS (loc, loc_tmp)
2863 {
2864 callback (loc, NULL);
2865 }
2866 }
2867
2868 /* This is used when we need to synch breakpoint conditions between GDB and the
2869 target. It is the case with deleting and disabling of breakpoints when using
2870 always-inserted mode. */
2871
2872 static void
2873 update_inserted_breakpoint_locations (void)
2874 {
2875 struct bp_location *bl, **blp_tmp;
2876 int error_flag = 0;
2877 int val = 0;
2878 int disabled_breaks = 0;
2879 int hw_breakpoint_error = 0;
2880 int hw_bp_details_reported = 0;
2881
2882 string_file tmp_error_stream;
2883
2884 /* Explicitly mark the warning -- this will only be printed if
2885 there was an error. */
2886 tmp_error_stream.puts ("Warning:\n");
2887
2888 scoped_restore_current_pspace_and_thread restore_pspace_thread;
2889
2890 ALL_BP_LOCATIONS (bl, blp_tmp)
2891 {
2892 /* We only want to update software breakpoints and hardware
2893 breakpoints. */
2894 if (!is_breakpoint (bl->owner))
2895 continue;
2896
2897 /* We only want to update locations that are already inserted
2898 and need updating. This is to avoid unwanted insertion during
2899 deletion of breakpoints. */
2900 if (!bl->inserted || (bl->inserted && !bl->needs_update))
2901 continue;
2902
2903 switch_to_program_space_and_thread (bl->pspace);
2904
2905 /* For targets that support global breakpoints, there's no need
2906 to select an inferior to insert breakpoint to. In fact, even
2907 if we aren't attached to any process yet, we should still
2908 insert breakpoints. */
2909 if (!gdbarch_has_global_breakpoints (target_gdbarch ())
2910 && ptid_equal (inferior_ptid, null_ptid))
2911 continue;
2912
2913 val = insert_bp_location (bl, &tmp_error_stream, &disabled_breaks,
2914 &hw_breakpoint_error, &hw_bp_details_reported);
2915 if (val)
2916 error_flag = val;
2917 }
2918
2919 if (error_flag)
2920 {
2921 target_terminal::ours_for_output ();
2922 error_stream (tmp_error_stream);
2923 }
2924 }
2925
2926 /* Used when starting or continuing the program. */
2927
2928 static void
2929 insert_breakpoint_locations (void)
2930 {
2931 struct breakpoint *bpt;
2932 struct bp_location *bl, **blp_tmp;
2933 int error_flag = 0;
2934 int val = 0;
2935 int disabled_breaks = 0;
2936 int hw_breakpoint_error = 0;
2937 int hw_bp_error_explained_already = 0;
2938
2939 string_file tmp_error_stream;
2940
2941 /* Explicitly mark the warning -- this will only be printed if
2942 there was an error. */
2943 tmp_error_stream.puts ("Warning:\n");
2944
2945 scoped_restore_current_pspace_and_thread restore_pspace_thread;
2946
2947 ALL_BP_LOCATIONS (bl, blp_tmp)
2948 {
2949 if (!should_be_inserted (bl) || (bl->inserted && !bl->needs_update))
2950 continue;
2951
2952 /* There is no point inserting thread-specific breakpoints if
2953 the thread no longer exists. ALL_BP_LOCATIONS bp_location
2954 has BL->OWNER always non-NULL. */
2955 if (bl->owner->thread != -1
2956 && !valid_global_thread_id (bl->owner->thread))
2957 continue;
2958
2959 switch_to_program_space_and_thread (bl->pspace);
2960
2961 /* For targets that support global breakpoints, there's no need
2962 to select an inferior to insert breakpoint to. In fact, even
2963 if we aren't attached to any process yet, we should still
2964 insert breakpoints. */
2965 if (!gdbarch_has_global_breakpoints (target_gdbarch ())
2966 && ptid_equal (inferior_ptid, null_ptid))
2967 continue;
2968
2969 val = insert_bp_location (bl, &tmp_error_stream, &disabled_breaks,
2970 &hw_breakpoint_error, &hw_bp_error_explained_already);
2971 if (val)
2972 error_flag = val;
2973 }
2974
2975 /* If we failed to insert all locations of a watchpoint, remove
2976 them, as half-inserted watchpoint is of limited use. */
2977 ALL_BREAKPOINTS (bpt)
2978 {
2979 int some_failed = 0;
2980 struct bp_location *loc;
2981
2982 if (!is_hardware_watchpoint (bpt))
2983 continue;
2984
2985 if (!breakpoint_enabled (bpt))
2986 continue;
2987
2988 if (bpt->disposition == disp_del_at_next_stop)
2989 continue;
2990
2991 for (loc = bpt->loc; loc; loc = loc->next)
2992 if (!loc->inserted && should_be_inserted (loc))
2993 {
2994 some_failed = 1;
2995 break;
2996 }
2997 if (some_failed)
2998 {
2999 for (loc = bpt->loc; loc; loc = loc->next)
3000 if (loc->inserted)
3001 remove_breakpoint (loc);
3002
3003 hw_breakpoint_error = 1;
3004 tmp_error_stream.printf ("Could not insert "
3005 "hardware watchpoint %d.\n",
3006 bpt->number);
3007 error_flag = -1;
3008 }
3009 }
3010
3011 if (error_flag)
3012 {
3013 /* If a hardware breakpoint or watchpoint was inserted, add a
3014 message about possibly exhausted resources. */
3015 if (hw_breakpoint_error && !hw_bp_error_explained_already)
3016 {
3017 tmp_error_stream.printf ("Could not insert hardware breakpoints:\n\
3018 You may have requested too many hardware breakpoints/watchpoints.\n");
3019 }
3020 target_terminal::ours_for_output ();
3021 error_stream (tmp_error_stream);
3022 }
3023 }
3024
3025 /* Used when the program stops.
3026 Returns zero if successful, or non-zero if there was a problem
3027 removing a breakpoint location. */
3028
3029 int
3030 remove_breakpoints (void)
3031 {
3032 struct bp_location *bl, **blp_tmp;
3033 int val = 0;
3034
3035 ALL_BP_LOCATIONS (bl, blp_tmp)
3036 {
3037 if (bl->inserted && !is_tracepoint (bl->owner))
3038 val |= remove_breakpoint (bl);
3039 }
3040 return val;
3041 }
3042
3043 /* When a thread exits, remove breakpoints that are related to
3044 that thread. */
3045
3046 static void
3047 remove_threaded_breakpoints (struct thread_info *tp, int silent)
3048 {
3049 struct breakpoint *b, *b_tmp;
3050
3051 ALL_BREAKPOINTS_SAFE (b, b_tmp)
3052 {
3053 if (b->thread == tp->global_num && user_breakpoint_p (b))
3054 {
3055 b->disposition = disp_del_at_next_stop;
3056
3057 printf_filtered (_("\
3058 Thread-specific breakpoint %d deleted - thread %s no longer in the thread list.\n"),
3059 b->number, print_thread_id (tp));
3060
3061 /* Hide it from the user. */
3062 b->number = 0;
3063 }
3064 }
3065 }
3066
3067 /* Remove breakpoints of process PID. */
3068
3069 int
3070 remove_breakpoints_pid (int pid)
3071 {
3072 struct bp_location *bl, **blp_tmp;
3073 int val;
3074 struct inferior *inf = find_inferior_pid (pid);
3075
3076 ALL_BP_LOCATIONS (bl, blp_tmp)
3077 {
3078 if (bl->pspace != inf->pspace)
3079 continue;
3080
3081 if (bl->inserted && !bl->target_info.persist)
3082 {
3083 val = remove_breakpoint (bl);
3084 if (val != 0)
3085 return val;
3086 }
3087 }
3088 return 0;
3089 }
3090
3091 static int internal_breakpoint_number = -1;
3092
3093 /* Set the breakpoint number of B, depending on the value of INTERNAL.
3094 If INTERNAL is non-zero, the breakpoint number will be populated
3095 from internal_breakpoint_number and that variable decremented.
3096 Otherwise the breakpoint number will be populated from
3097 breakpoint_count and that value incremented. Internal breakpoints
3098 do not set the internal var bpnum. */
3099 static void
3100 set_breakpoint_number (int internal, struct breakpoint *b)
3101 {
3102 if (internal)
3103 b->number = internal_breakpoint_number--;
3104 else
3105 {
3106 set_breakpoint_count (breakpoint_count + 1);
3107 b->number = breakpoint_count;
3108 }
3109 }
3110
3111 static struct breakpoint *
3112 create_internal_breakpoint (struct gdbarch *gdbarch,
3113 CORE_ADDR address, enum bptype type,
3114 const struct breakpoint_ops *ops)
3115 {
3116 symtab_and_line sal;
3117 sal.pc = address;
3118 sal.section = find_pc_overlay (sal.pc);
3119 sal.pspace = current_program_space;
3120
3121 breakpoint *b = set_raw_breakpoint (gdbarch, sal, type, ops);
3122 b->number = internal_breakpoint_number--;
3123 b->disposition = disp_donttouch;
3124
3125 return b;
3126 }
3127
3128 static const char *const longjmp_names[] =
3129 {
3130 "longjmp", "_longjmp", "siglongjmp", "_siglongjmp"
3131 };
3132 #define NUM_LONGJMP_NAMES ARRAY_SIZE(longjmp_names)
3133
3134 /* Per-objfile data private to breakpoint.c. */
3135 struct breakpoint_objfile_data
3136 {
3137 /* Minimal symbol for "_ovly_debug_event" (if any). */
3138 struct bound_minimal_symbol overlay_msym {};
3139
3140 /* Minimal symbol(s) for "longjmp", "siglongjmp", etc. (if any). */
3141 struct bound_minimal_symbol longjmp_msym[NUM_LONGJMP_NAMES] {};
3142
3143 /* True if we have looked for longjmp probes. */
3144 int longjmp_searched = 0;
3145
3146 /* SystemTap probe points for longjmp (if any). These are non-owning
3147 references. */
3148 std::vector<probe *> longjmp_probes;
3149
3150 /* Minimal symbol for "std::terminate()" (if any). */
3151 struct bound_minimal_symbol terminate_msym {};
3152
3153 /* Minimal symbol for "_Unwind_DebugHook" (if any). */
3154 struct bound_minimal_symbol exception_msym {};
3155
3156 /* True if we have looked for exception probes. */
3157 int exception_searched = 0;
3158
3159 /* SystemTap probe points for unwinding (if any). These are non-owning
3160 references. */
3161 std::vector<probe *> exception_probes;
3162 };
3163
3164 static const struct objfile_data *breakpoint_objfile_key;
3165
3166 /* Minimal symbol not found sentinel. */
3167 static struct minimal_symbol msym_not_found;
3168
3169 /* Returns TRUE if MSYM point to the "not found" sentinel. */
3170
3171 static int
3172 msym_not_found_p (const struct minimal_symbol *msym)
3173 {
3174 return msym == &msym_not_found;
3175 }
3176
3177 /* Return per-objfile data needed by breakpoint.c.
3178 Allocate the data if necessary. */
3179
3180 static struct breakpoint_objfile_data *
3181 get_breakpoint_objfile_data (struct objfile *objfile)
3182 {
3183 struct breakpoint_objfile_data *bp_objfile_data;
3184
3185 bp_objfile_data = ((struct breakpoint_objfile_data *)
3186 objfile_data (objfile, breakpoint_objfile_key));
3187 if (bp_objfile_data == NULL)
3188 {
3189 bp_objfile_data = new breakpoint_objfile_data ();
3190 set_objfile_data (objfile, breakpoint_objfile_key, bp_objfile_data);
3191 }
3192 return bp_objfile_data;
3193 }
3194
3195 static void
3196 free_breakpoint_objfile_data (struct objfile *obj, void *data)
3197 {
3198 struct breakpoint_objfile_data *bp_objfile_data
3199 = (struct breakpoint_objfile_data *) data;
3200
3201 delete bp_objfile_data;
3202 }
3203
3204 static void
3205 create_overlay_event_breakpoint (void)
3206 {
3207 struct objfile *objfile;
3208 const char *const func_name = "_ovly_debug_event";
3209
3210 ALL_OBJFILES (objfile)
3211 {
3212 struct breakpoint *b;
3213 struct breakpoint_objfile_data *bp_objfile_data;
3214 CORE_ADDR addr;
3215 struct explicit_location explicit_loc;
3216
3217 bp_objfile_data = get_breakpoint_objfile_data (objfile);
3218
3219 if (msym_not_found_p (bp_objfile_data->overlay_msym.minsym))
3220 continue;
3221
3222 if (bp_objfile_data->overlay_msym.minsym == NULL)
3223 {
3224 struct bound_minimal_symbol m;
3225
3226 m = lookup_minimal_symbol_text (func_name, objfile);
3227 if (m.minsym == NULL)
3228 {
3229 /* Avoid future lookups in this objfile. */
3230 bp_objfile_data->overlay_msym.minsym = &msym_not_found;
3231 continue;
3232 }
3233 bp_objfile_data->overlay_msym = m;
3234 }
3235
3236 addr = BMSYMBOL_VALUE_ADDRESS (bp_objfile_data->overlay_msym);
3237 b = create_internal_breakpoint (get_objfile_arch (objfile), addr,
3238 bp_overlay_event,
3239 &internal_breakpoint_ops);
3240 initialize_explicit_location (&explicit_loc);
3241 explicit_loc.function_name = ASTRDUP (func_name);
3242 b->location = new_explicit_location (&explicit_loc);
3243
3244 if (overlay_debugging == ovly_auto)
3245 {
3246 b->enable_state = bp_enabled;
3247 overlay_events_enabled = 1;
3248 }
3249 else
3250 {
3251 b->enable_state = bp_disabled;
3252 overlay_events_enabled = 0;
3253 }
3254 }
3255 }
3256
3257 static void
3258 create_longjmp_master_breakpoint (void)
3259 {
3260 struct program_space *pspace;
3261
3262 scoped_restore_current_program_space restore_pspace;
3263
3264 ALL_PSPACES (pspace)
3265 {
3266 struct objfile *objfile;
3267
3268 set_current_program_space (pspace);
3269
3270 ALL_OBJFILES (objfile)
3271 {
3272 int i;
3273 struct gdbarch *gdbarch;
3274 struct breakpoint_objfile_data *bp_objfile_data;
3275
3276 gdbarch = get_objfile_arch (objfile);
3277
3278 bp_objfile_data = get_breakpoint_objfile_data (objfile);
3279
3280 if (!bp_objfile_data->longjmp_searched)
3281 {
3282 std::vector<probe *> ret
3283 = find_probes_in_objfile (objfile, "libc", "longjmp");
3284
3285 if (!ret.empty ())
3286 {
3287 /* We are only interested in checking one element. */
3288 probe *p = ret[0];
3289
3290 if (!p->can_evaluate_arguments ())
3291 {
3292 /* We cannot use the probe interface here, because it does
3293 not know how to evaluate arguments. */
3294 ret.clear ();
3295 }
3296 }
3297 bp_objfile_data->longjmp_probes = ret;
3298 bp_objfile_data->longjmp_searched = 1;
3299 }
3300
3301 if (!bp_objfile_data->longjmp_probes.empty ())
3302 {
3303 struct gdbarch *gdbarch = get_objfile_arch (objfile);
3304
3305 for (probe *p : bp_objfile_data->longjmp_probes)
3306 {
3307 struct breakpoint *b;
3308
3309 b = create_internal_breakpoint (gdbarch,
3310 p->get_relocated_address (objfile),
3311 bp_longjmp_master,
3312 &internal_breakpoint_ops);
3313 b->location = new_probe_location ("-probe-stap libc:longjmp");
3314 b->enable_state = bp_disabled;
3315 }
3316
3317 continue;
3318 }
3319
3320 if (!gdbarch_get_longjmp_target_p (gdbarch))
3321 continue;
3322
3323 for (i = 0; i < NUM_LONGJMP_NAMES; i++)
3324 {
3325 struct breakpoint *b;
3326 const char *func_name;
3327 CORE_ADDR addr;
3328 struct explicit_location explicit_loc;
3329
3330 if (msym_not_found_p (bp_objfile_data->longjmp_msym[i].minsym))
3331 continue;
3332
3333 func_name = longjmp_names[i];
3334 if (bp_objfile_data->longjmp_msym[i].minsym == NULL)
3335 {
3336 struct bound_minimal_symbol m;
3337
3338 m = lookup_minimal_symbol_text (func_name, objfile);
3339 if (m.minsym == NULL)
3340 {
3341 /* Prevent future lookups in this objfile. */
3342 bp_objfile_data->longjmp_msym[i].minsym = &msym_not_found;
3343 continue;
3344 }
3345 bp_objfile_data->longjmp_msym[i] = m;
3346 }
3347
3348 addr = BMSYMBOL_VALUE_ADDRESS (bp_objfile_data->longjmp_msym[i]);
3349 b = create_internal_breakpoint (gdbarch, addr, bp_longjmp_master,
3350 &internal_breakpoint_ops);
3351 initialize_explicit_location (&explicit_loc);
3352 explicit_loc.function_name = ASTRDUP (func_name);
3353 b->location = new_explicit_location (&explicit_loc);
3354 b->enable_state = bp_disabled;
3355 }
3356 }
3357 }
3358 }
3359
3360 /* Create a master std::terminate breakpoint. */
3361 static void
3362 create_std_terminate_master_breakpoint (void)
3363 {
3364 struct program_space *pspace;
3365 const char *const func_name = "std::terminate()";
3366
3367 scoped_restore_current_program_space restore_pspace;
3368
3369 ALL_PSPACES (pspace)
3370 {
3371 struct objfile *objfile;
3372 CORE_ADDR addr;
3373
3374 set_current_program_space (pspace);
3375
3376 ALL_OBJFILES (objfile)
3377 {
3378 struct breakpoint *b;
3379 struct breakpoint_objfile_data *bp_objfile_data;
3380 struct explicit_location explicit_loc;
3381
3382 bp_objfile_data = get_breakpoint_objfile_data (objfile);
3383
3384 if (msym_not_found_p (bp_objfile_data->terminate_msym.minsym))
3385 continue;
3386
3387 if (bp_objfile_data->terminate_msym.minsym == NULL)
3388 {
3389 struct bound_minimal_symbol m;
3390
3391 m = lookup_minimal_symbol (func_name, NULL, objfile);
3392 if (m.minsym == NULL || (MSYMBOL_TYPE (m.minsym) != mst_text
3393 && MSYMBOL_TYPE (m.minsym) != mst_file_text))
3394 {
3395 /* Prevent future lookups in this objfile. */
3396 bp_objfile_data->terminate_msym.minsym = &msym_not_found;
3397 continue;
3398 }
3399 bp_objfile_data->terminate_msym = m;
3400 }
3401
3402 addr = BMSYMBOL_VALUE_ADDRESS (bp_objfile_data->terminate_msym);
3403 b = create_internal_breakpoint (get_objfile_arch (objfile), addr,
3404 bp_std_terminate_master,
3405 &internal_breakpoint_ops);
3406 initialize_explicit_location (&explicit_loc);
3407 explicit_loc.function_name = ASTRDUP (func_name);
3408 b->location = new_explicit_location (&explicit_loc);
3409 b->enable_state = bp_disabled;
3410 }
3411 }
3412 }
3413
3414 /* Install a master breakpoint on the unwinder's debug hook. */
3415
3416 static void
3417 create_exception_master_breakpoint (void)
3418 {
3419 struct objfile *objfile;
3420 const char *const func_name = "_Unwind_DebugHook";
3421
3422 ALL_OBJFILES (objfile)
3423 {
3424 struct breakpoint *b;
3425 struct gdbarch *gdbarch;
3426 struct breakpoint_objfile_data *bp_objfile_data;
3427 CORE_ADDR addr;
3428 struct explicit_location explicit_loc;
3429
3430 bp_objfile_data = get_breakpoint_objfile_data (objfile);
3431
3432 /* We prefer the SystemTap probe point if it exists. */
3433 if (!bp_objfile_data->exception_searched)
3434 {
3435 std::vector<probe *> ret
3436 = find_probes_in_objfile (objfile, "libgcc", "unwind");
3437
3438 if (!ret.empty ())
3439 {
3440 /* We are only interested in checking one element. */
3441 probe *p = ret[0];
3442
3443 if (!p->can_evaluate_arguments ())
3444 {
3445 /* We cannot use the probe interface here, because it does
3446 not know how to evaluate arguments. */
3447 ret.clear ();
3448 }
3449 }
3450 bp_objfile_data->exception_probes = ret;
3451 bp_objfile_data->exception_searched = 1;
3452 }
3453
3454 if (!bp_objfile_data->exception_probes.empty ())
3455 {
3456 struct gdbarch *gdbarch = get_objfile_arch (objfile);
3457
3458 for (probe *p : bp_objfile_data->exception_probes)
3459 {
3460 struct breakpoint *b;
3461
3462 b = create_internal_breakpoint (gdbarch,
3463 p->get_relocated_address (objfile),
3464 bp_exception_master,
3465 &internal_breakpoint_ops);
3466 b->location = new_probe_location ("-probe-stap libgcc:unwind");
3467 b->enable_state = bp_disabled;
3468 }
3469
3470 continue;
3471 }
3472
3473 /* Otherwise, try the hook function. */
3474
3475 if (msym_not_found_p (bp_objfile_data->exception_msym.minsym))
3476 continue;
3477
3478 gdbarch = get_objfile_arch (objfile);
3479
3480 if (bp_objfile_data->exception_msym.minsym == NULL)
3481 {
3482 struct bound_minimal_symbol debug_hook;
3483
3484 debug_hook = lookup_minimal_symbol (func_name, NULL, objfile);
3485 if (debug_hook.minsym == NULL)
3486 {
3487 bp_objfile_data->exception_msym.minsym = &msym_not_found;
3488 continue;
3489 }
3490
3491 bp_objfile_data->exception_msym = debug_hook;
3492 }
3493
3494 addr = BMSYMBOL_VALUE_ADDRESS (bp_objfile_data->exception_msym);
3495 addr = gdbarch_convert_from_func_ptr_addr (gdbarch, addr, target_stack);
3496 b = create_internal_breakpoint (gdbarch, addr, bp_exception_master,
3497 &internal_breakpoint_ops);
3498 initialize_explicit_location (&explicit_loc);
3499 explicit_loc.function_name = ASTRDUP (func_name);
3500 b->location = new_explicit_location (&explicit_loc);
3501 b->enable_state = bp_disabled;
3502 }
3503 }
3504
3505 /* Does B have a location spec? */
3506
3507 static int
3508 breakpoint_event_location_empty_p (const struct breakpoint *b)
3509 {
3510 return b->location != NULL && event_location_empty_p (b->location.get ());
3511 }
3512
3513 void
3514 update_breakpoints_after_exec (void)
3515 {
3516 struct breakpoint *b, *b_tmp;
3517 struct bp_location *bploc, **bplocp_tmp;
3518
3519 /* We're about to delete breakpoints from GDB's lists. If the
3520 INSERTED flag is true, GDB will try to lift the breakpoints by
3521 writing the breakpoints' "shadow contents" back into memory. The
3522 "shadow contents" are NOT valid after an exec, so GDB should not
3523 do that. Instead, the target is responsible from marking
3524 breakpoints out as soon as it detects an exec. We don't do that
3525 here instead, because there may be other attempts to delete
3526 breakpoints after detecting an exec and before reaching here. */
3527 ALL_BP_LOCATIONS (bploc, bplocp_tmp)
3528 if (bploc->pspace == current_program_space)
3529 gdb_assert (!bploc->inserted);
3530
3531 ALL_BREAKPOINTS_SAFE (b, b_tmp)
3532 {
3533 if (b->pspace != current_program_space)
3534 continue;
3535
3536 /* Solib breakpoints must be explicitly reset after an exec(). */
3537 if (b->type == bp_shlib_event)
3538 {
3539 delete_breakpoint (b);
3540 continue;
3541 }
3542
3543 /* JIT breakpoints must be explicitly reset after an exec(). */
3544 if (b->type == bp_jit_event)
3545 {
3546 delete_breakpoint (b);
3547 continue;
3548 }
3549
3550 /* Thread event breakpoints must be set anew after an exec(),
3551 as must overlay event and longjmp master breakpoints. */
3552 if (b->type == bp_thread_event || b->type == bp_overlay_event
3553 || b->type == bp_longjmp_master || b->type == bp_std_terminate_master
3554 || b->type == bp_exception_master)
3555 {
3556 delete_breakpoint (b);
3557 continue;
3558 }
3559
3560 /* Step-resume breakpoints are meaningless after an exec(). */
3561 if (b->type == bp_step_resume || b->type == bp_hp_step_resume)
3562 {
3563 delete_breakpoint (b);
3564 continue;
3565 }
3566
3567 /* Just like single-step breakpoints. */
3568 if (b->type == bp_single_step)
3569 {
3570 delete_breakpoint (b);
3571 continue;
3572 }
3573
3574 /* Longjmp and longjmp-resume breakpoints are also meaningless
3575 after an exec. */
3576 if (b->type == bp_longjmp || b->type == bp_longjmp_resume
3577 || b->type == bp_longjmp_call_dummy
3578 || b->type == bp_exception || b->type == bp_exception_resume)
3579 {
3580 delete_breakpoint (b);
3581 continue;
3582 }
3583
3584 if (b->type == bp_catchpoint)
3585 {
3586 /* For now, none of the bp_catchpoint breakpoints need to
3587 do anything at this point. In the future, if some of
3588 the catchpoints need to something, we will need to add
3589 a new method, and call this method from here. */
3590 continue;
3591 }
3592
3593 /* bp_finish is a special case. The only way we ought to be able
3594 to see one of these when an exec() has happened, is if the user
3595 caught a vfork, and then said "finish". Ordinarily a finish just
3596 carries them to the call-site of the current callee, by setting
3597 a temporary bp there and resuming. But in this case, the finish
3598 will carry them entirely through the vfork & exec.
3599
3600 We don't want to allow a bp_finish to remain inserted now. But
3601 we can't safely delete it, 'cause finish_command has a handle to
3602 the bp on a bpstat, and will later want to delete it. There's a
3603 chance (and I've seen it happen) that if we delete the bp_finish
3604 here, that its storage will get reused by the time finish_command
3605 gets 'round to deleting the "use to be a bp_finish" breakpoint.
3606 We really must allow finish_command to delete a bp_finish.
3607
3608 In the absence of a general solution for the "how do we know
3609 it's safe to delete something others may have handles to?"
3610 problem, what we'll do here is just uninsert the bp_finish, and
3611 let finish_command delete it.
3612
3613 (We know the bp_finish is "doomed" in the sense that it's
3614 momentary, and will be deleted as soon as finish_command sees
3615 the inferior stopped. So it doesn't matter that the bp's
3616 address is probably bogus in the new a.out, unlike e.g., the
3617 solib breakpoints.) */
3618
3619 if (b->type == bp_finish)
3620 {
3621 continue;
3622 }
3623
3624 /* Without a symbolic address, we have little hope of the
3625 pre-exec() address meaning the same thing in the post-exec()
3626 a.out. */
3627 if (breakpoint_event_location_empty_p (b))
3628 {
3629 delete_breakpoint (b);
3630 continue;
3631 }
3632 }
3633 }
3634
3635 int
3636 detach_breakpoints (ptid_t ptid)
3637 {
3638 struct bp_location *bl, **blp_tmp;
3639 int val = 0;
3640 scoped_restore save_inferior_ptid = make_scoped_restore (&inferior_ptid);
3641 struct inferior *inf = current_inferior ();
3642
3643 if (ptid_get_pid (ptid) == ptid_get_pid (inferior_ptid))
3644 error (_("Cannot detach breakpoints of inferior_ptid"));
3645
3646 /* Set inferior_ptid; remove_breakpoint_1 uses this global. */
3647 inferior_ptid = ptid;
3648 ALL_BP_LOCATIONS (bl, blp_tmp)
3649 {
3650 if (bl->pspace != inf->pspace)
3651 continue;
3652
3653 /* This function must physically remove breakpoints locations
3654 from the specified ptid, without modifying the breakpoint
3655 package's state. Locations of type bp_loc_other are only
3656 maintained at GDB side. So, there is no need to remove
3657 these bp_loc_other locations. Moreover, removing these
3658 would modify the breakpoint package's state. */
3659 if (bl->loc_type == bp_loc_other)
3660 continue;
3661
3662 if (bl->inserted)
3663 val |= remove_breakpoint_1 (bl, DETACH_BREAKPOINT);
3664 }
3665
3666 return val;
3667 }
3668
3669 /* Remove the breakpoint location BL from the current address space.
3670 Note that this is used to detach breakpoints from a child fork.
3671 When we get here, the child isn't in the inferior list, and neither
3672 do we have objects to represent its address space --- we should
3673 *not* look at bl->pspace->aspace here. */
3674
3675 static int
3676 remove_breakpoint_1 (struct bp_location *bl, enum remove_bp_reason reason)
3677 {
3678 int val;
3679
3680 /* BL is never in moribund_locations by our callers. */
3681 gdb_assert (bl->owner != NULL);
3682
3683 /* The type of none suggests that owner is actually deleted.
3684 This should not ever happen. */
3685 gdb_assert (bl->owner->type != bp_none);
3686
3687 if (bl->loc_type == bp_loc_software_breakpoint
3688 || bl->loc_type == bp_loc_hardware_breakpoint)
3689 {
3690 /* "Normal" instruction breakpoint: either the standard
3691 trap-instruction bp (bp_breakpoint), or a
3692 bp_hardware_breakpoint. */
3693
3694 /* First check to see if we have to handle an overlay. */
3695 if (overlay_debugging == ovly_off
3696 || bl->section == NULL
3697 || !(section_is_overlay (bl->section)))
3698 {
3699 /* No overlay handling: just remove the breakpoint. */
3700
3701 /* If we're trying to uninsert a memory breakpoint that we
3702 know is set in a dynamic object that is marked
3703 shlib_disabled, then either the dynamic object was
3704 removed with "remove-symbol-file" or with
3705 "nosharedlibrary". In the former case, we don't know
3706 whether another dynamic object might have loaded over the
3707 breakpoint's address -- the user might well let us know
3708 about it next with add-symbol-file (the whole point of
3709 add-symbol-file is letting the user manually maintain a
3710 list of dynamically loaded objects). If we have the
3711 breakpoint's shadow memory, that is, this is a software
3712 breakpoint managed by GDB, check whether the breakpoint
3713 is still inserted in memory, to avoid overwriting wrong
3714 code with stale saved shadow contents. Note that HW
3715 breakpoints don't have shadow memory, as they're
3716 implemented using a mechanism that is not dependent on
3717 being able to modify the target's memory, and as such
3718 they should always be removed. */
3719 if (bl->shlib_disabled
3720 && bl->target_info.shadow_len != 0
3721 && !memory_validate_breakpoint (bl->gdbarch, &bl->target_info))
3722 val = 0;
3723 else
3724 val = bl->owner->ops->remove_location (bl, reason);
3725 }
3726 else
3727 {
3728 /* This breakpoint is in an overlay section.
3729 Did we set a breakpoint at the LMA? */
3730 if (!overlay_events_enabled)
3731 {
3732 /* Yes -- overlay event support is not active, so we
3733 should have set a breakpoint at the LMA. Remove it.
3734 */
3735 /* Ignore any failures: if the LMA is in ROM, we will
3736 have already warned when we failed to insert it. */
3737 if (bl->loc_type == bp_loc_hardware_breakpoint)
3738 target_remove_hw_breakpoint (bl->gdbarch,
3739 &bl->overlay_target_info);
3740 else
3741 target_remove_breakpoint (bl->gdbarch,
3742 &bl->overlay_target_info,
3743 reason);
3744 }
3745 /* Did we set a breakpoint at the VMA?
3746 If so, we will have marked the breakpoint 'inserted'. */
3747 if (bl->inserted)
3748 {
3749 /* Yes -- remove it. Previously we did not bother to
3750 remove the breakpoint if the section had been
3751 unmapped, but let's not rely on that being safe. We
3752 don't know what the overlay manager might do. */
3753
3754 /* However, we should remove *software* breakpoints only
3755 if the section is still mapped, or else we overwrite
3756 wrong code with the saved shadow contents. */
3757 if (bl->loc_type == bp_loc_hardware_breakpoint
3758 || section_is_mapped (bl->section))
3759 val = bl->owner->ops->remove_location (bl, reason);
3760 else
3761 val = 0;
3762 }
3763 else
3764 {
3765 /* No -- not inserted, so no need to remove. No error. */
3766 val = 0;
3767 }
3768 }
3769
3770 /* In some cases, we might not be able to remove a breakpoint in
3771 a shared library that has already been removed, but we have
3772 not yet processed the shlib unload event. Similarly for an
3773 unloaded add-symbol-file object - the user might not yet have
3774 had the chance to remove-symbol-file it. shlib_disabled will
3775 be set if the library/object has already been removed, but
3776 the breakpoint hasn't been uninserted yet, e.g., after
3777 "nosharedlibrary" or "remove-symbol-file" with breakpoints
3778 always-inserted mode. */
3779 if (val
3780 && (bl->loc_type == bp_loc_software_breakpoint
3781 && (bl->shlib_disabled
3782 || solib_name_from_address (bl->pspace, bl->address)
3783 || shared_objfile_contains_address_p (bl->pspace,
3784 bl->address))))
3785 val = 0;
3786
3787 if (val)
3788 return val;
3789 bl->inserted = (reason == DETACH_BREAKPOINT);
3790 }
3791 else if (bl->loc_type == bp_loc_hardware_watchpoint)
3792 {
3793 gdb_assert (bl->owner->ops != NULL
3794 && bl->owner->ops->remove_location != NULL);
3795
3796 bl->inserted = (reason == DETACH_BREAKPOINT);
3797 bl->owner->ops->remove_location (bl, reason);
3798
3799 /* Failure to remove any of the hardware watchpoints comes here. */
3800 if (reason == REMOVE_BREAKPOINT && bl->inserted)
3801 warning (_("Could not remove hardware watchpoint %d."),
3802 bl->owner->number);
3803 }
3804 else if (bl->owner->type == bp_catchpoint
3805 && breakpoint_enabled (bl->owner)
3806 && !bl->duplicate)
3807 {
3808 gdb_assert (bl->owner->ops != NULL
3809 && bl->owner->ops->remove_location != NULL);
3810
3811 val = bl->owner->ops->remove_location (bl, reason);
3812 if (val)
3813 return val;
3814
3815 bl->inserted = (reason == DETACH_BREAKPOINT);
3816 }
3817
3818 return 0;
3819 }
3820
3821 static int
3822 remove_breakpoint (struct bp_location *bl)
3823 {
3824 /* BL is never in moribund_locations by our callers. */
3825 gdb_assert (bl->owner != NULL);
3826
3827 /* The type of none suggests that owner is actually deleted.
3828 This should not ever happen. */
3829 gdb_assert (bl->owner->type != bp_none);
3830
3831 scoped_restore_current_pspace_and_thread restore_pspace_thread;
3832
3833 switch_to_program_space_and_thread (bl->pspace);
3834
3835 return remove_breakpoint_1 (bl, REMOVE_BREAKPOINT);
3836 }
3837
3838 /* Clear the "inserted" flag in all breakpoints. */
3839
3840 void
3841 mark_breakpoints_out (void)
3842 {
3843 struct bp_location *bl, **blp_tmp;
3844
3845 ALL_BP_LOCATIONS (bl, blp_tmp)
3846 if (bl->pspace == current_program_space)
3847 bl->inserted = 0;
3848 }
3849
3850 /* Clear the "inserted" flag in all breakpoints and delete any
3851 breakpoints which should go away between runs of the program.
3852
3853 Plus other such housekeeping that has to be done for breakpoints
3854 between runs.
3855
3856 Note: this function gets called at the end of a run (by
3857 generic_mourn_inferior) and when a run begins (by
3858 init_wait_for_inferior). */
3859
3860
3861
3862 void
3863 breakpoint_init_inferior (enum inf_context context)
3864 {
3865 struct breakpoint *b, *b_tmp;
3866 struct bp_location *bl;
3867 int ix;
3868 struct program_space *pspace = current_program_space;
3869
3870 /* If breakpoint locations are shared across processes, then there's
3871 nothing to do. */
3872 if (gdbarch_has_global_breakpoints (target_gdbarch ()))
3873 return;
3874
3875 mark_breakpoints_out ();
3876
3877 ALL_BREAKPOINTS_SAFE (b, b_tmp)
3878 {
3879 if (b->loc && b->loc->pspace != pspace)
3880 continue;
3881
3882 switch (b->type)
3883 {
3884 case bp_call_dummy:
3885 case bp_longjmp_call_dummy:
3886
3887 /* If the call dummy breakpoint is at the entry point it will
3888 cause problems when the inferior is rerun, so we better get
3889 rid of it. */
3890
3891 case bp_watchpoint_scope:
3892
3893 /* Also get rid of scope breakpoints. */
3894
3895 case bp_shlib_event:
3896
3897 /* Also remove solib event breakpoints. Their addresses may
3898 have changed since the last time we ran the program.
3899 Actually we may now be debugging against different target;
3900 and so the solib backend that installed this breakpoint may
3901 not be used in by the target. E.g.,
3902
3903 (gdb) file prog-linux
3904 (gdb) run # native linux target
3905 ...
3906 (gdb) kill
3907 (gdb) file prog-win.exe
3908 (gdb) tar rem :9999 # remote Windows gdbserver.
3909 */
3910
3911 case bp_step_resume:
3912
3913 /* Also remove step-resume breakpoints. */
3914
3915 case bp_single_step:
3916
3917 /* Also remove single-step breakpoints. */
3918
3919 delete_breakpoint (b);
3920 break;
3921
3922 case bp_watchpoint:
3923 case bp_hardware_watchpoint:
3924 case bp_read_watchpoint:
3925 case bp_access_watchpoint:
3926 {
3927 struct watchpoint *w = (struct watchpoint *) b;
3928
3929 /* Likewise for watchpoints on local expressions. */
3930 if (w->exp_valid_block != NULL)
3931 delete_breakpoint (b);
3932 else
3933 {
3934 /* Get rid of existing locations, which are no longer
3935 valid. New ones will be created in
3936 update_watchpoint, when the inferior is restarted.
3937 The next update_global_location_list call will
3938 garbage collect them. */
3939 b->loc = NULL;
3940
3941 if (context == inf_starting)
3942 {
3943 /* Reset val field to force reread of starting value in
3944 insert_breakpoints. */
3945 w->val.reset (nullptr);
3946 w->val_valid = 0;
3947 }
3948 }
3949 }
3950 break;
3951 default:
3952 break;
3953 }
3954 }
3955
3956 /* Get rid of the moribund locations. */
3957 for (ix = 0; VEC_iterate (bp_location_p, moribund_locations, ix, bl); ++ix)
3958 decref_bp_location (&bl);
3959 VEC_free (bp_location_p, moribund_locations);
3960 }
3961
3962 /* These functions concern about actual breakpoints inserted in the
3963 target --- to e.g. check if we need to do decr_pc adjustment or if
3964 we need to hop over the bkpt --- so we check for address space
3965 match, not program space. */
3966
3967 /* breakpoint_here_p (PC) returns non-zero if an enabled breakpoint
3968 exists at PC. It returns ordinary_breakpoint_here if it's an
3969 ordinary breakpoint, or permanent_breakpoint_here if it's a
3970 permanent breakpoint.
3971 - When continuing from a location with an ordinary breakpoint, we
3972 actually single step once before calling insert_breakpoints.
3973 - When continuing from a location with a permanent breakpoint, we
3974 need to use the `SKIP_PERMANENT_BREAKPOINT' macro, provided by
3975 the target, to advance the PC past the breakpoint. */
3976
3977 enum breakpoint_here
3978 breakpoint_here_p (const address_space *aspace, CORE_ADDR pc)
3979 {
3980 struct bp_location *bl, **blp_tmp;
3981 int any_breakpoint_here = 0;
3982
3983 ALL_BP_LOCATIONS (bl, blp_tmp)
3984 {
3985 if (bl->loc_type != bp_loc_software_breakpoint
3986 && bl->loc_type != bp_loc_hardware_breakpoint)
3987 continue;
3988
3989 /* ALL_BP_LOCATIONS bp_location has BL->OWNER always non-NULL. */
3990 if ((breakpoint_enabled (bl->owner)
3991 || bl->permanent)
3992 && breakpoint_location_address_match (bl, aspace, pc))
3993 {
3994 if (overlay_debugging
3995 && section_is_overlay (bl->section)
3996 && !section_is_mapped (bl->section))
3997 continue; /* unmapped overlay -- can't be a match */
3998 else if (bl->permanent)
3999 return permanent_breakpoint_here;
4000 else
4001 any_breakpoint_here = 1;
4002 }
4003 }
4004
4005 return any_breakpoint_here ? ordinary_breakpoint_here : no_breakpoint_here;
4006 }
4007
4008 /* See breakpoint.h. */
4009
4010 int
4011 breakpoint_in_range_p (const address_space *aspace,
4012 CORE_ADDR addr, ULONGEST len)
4013 {
4014 struct bp_location *bl, **blp_tmp;
4015
4016 ALL_BP_LOCATIONS (bl, blp_tmp)
4017 {
4018 if (bl->loc_type != bp_loc_software_breakpoint
4019 && bl->loc_type != bp_loc_hardware_breakpoint)
4020 continue;
4021
4022 if ((breakpoint_enabled (bl->owner)
4023 || bl->permanent)
4024 && breakpoint_location_address_range_overlap (bl, aspace,
4025 addr, len))
4026 {
4027 if (overlay_debugging
4028 && section_is_overlay (bl->section)
4029 && !section_is_mapped (bl->section))
4030 {
4031 /* Unmapped overlay -- can't be a match. */
4032 continue;
4033 }
4034
4035 return 1;
4036 }
4037 }
4038
4039 return 0;
4040 }
4041
4042 /* Return true if there's a moribund breakpoint at PC. */
4043
4044 int
4045 moribund_breakpoint_here_p (const address_space *aspace, CORE_ADDR pc)
4046 {
4047 struct bp_location *loc;
4048 int ix;
4049
4050 for (ix = 0; VEC_iterate (bp_location_p, moribund_locations, ix, loc); ++ix)
4051 if (breakpoint_location_address_match (loc, aspace, pc))
4052 return 1;
4053
4054 return 0;
4055 }
4056
4057 /* Returns non-zero iff BL is inserted at PC, in address space
4058 ASPACE. */
4059
4060 static int
4061 bp_location_inserted_here_p (struct bp_location *bl,
4062 const address_space *aspace, CORE_ADDR pc)
4063 {
4064 if (bl->inserted
4065 && breakpoint_address_match (bl->pspace->aspace, bl->address,
4066 aspace, pc))
4067 {
4068 if (overlay_debugging
4069 && section_is_overlay (bl->section)
4070 && !section_is_mapped (bl->section))
4071 return 0; /* unmapped overlay -- can't be a match */
4072 else
4073 return 1;
4074 }
4075 return 0;
4076 }
4077
4078 /* Returns non-zero iff there's a breakpoint inserted at PC. */
4079
4080 int
4081 breakpoint_inserted_here_p (const address_space *aspace, CORE_ADDR pc)
4082 {
4083 struct bp_location **blp, **blp_tmp = NULL;
4084
4085 ALL_BP_LOCATIONS_AT_ADDR (blp, blp_tmp, pc)
4086 {
4087 struct bp_location *bl = *blp;
4088
4089 if (bl->loc_type != bp_loc_software_breakpoint
4090 && bl->loc_type != bp_loc_hardware_breakpoint)
4091 continue;
4092
4093 if (bp_location_inserted_here_p (bl, aspace, pc))
4094 return 1;
4095 }
4096 return 0;
4097 }
4098
4099 /* This function returns non-zero iff there is a software breakpoint
4100 inserted at PC. */
4101
4102 int
4103 software_breakpoint_inserted_here_p (const address_space *aspace,
4104 CORE_ADDR pc)
4105 {
4106 struct bp_location **blp, **blp_tmp = NULL;
4107
4108 ALL_BP_LOCATIONS_AT_ADDR (blp, blp_tmp, pc)
4109 {
4110 struct bp_location *bl = *blp;
4111
4112 if (bl->loc_type != bp_loc_software_breakpoint)
4113 continue;
4114
4115 if (bp_location_inserted_here_p (bl, aspace, pc))
4116 return 1;
4117 }
4118
4119 return 0;
4120 }
4121
4122 /* See breakpoint.h. */
4123
4124 int
4125 hardware_breakpoint_inserted_here_p (const address_space *aspace,
4126 CORE_ADDR pc)
4127 {
4128 struct bp_location **blp, **blp_tmp = NULL;
4129
4130 ALL_BP_LOCATIONS_AT_ADDR (blp, blp_tmp, pc)
4131 {
4132 struct bp_location *bl = *blp;
4133
4134 if (bl->loc_type != bp_loc_hardware_breakpoint)
4135 continue;
4136
4137 if (bp_location_inserted_here_p (bl, aspace, pc))
4138 return 1;
4139 }
4140
4141 return 0;
4142 }
4143
4144 int
4145 hardware_watchpoint_inserted_in_range (const address_space *aspace,
4146 CORE_ADDR addr, ULONGEST len)
4147 {
4148 struct breakpoint *bpt;
4149
4150 ALL_BREAKPOINTS (bpt)
4151 {
4152 struct bp_location *loc;
4153
4154 if (bpt->type != bp_hardware_watchpoint
4155 && bpt->type != bp_access_watchpoint)
4156 continue;
4157
4158 if (!breakpoint_enabled (bpt))
4159 continue;
4160
4161 for (loc = bpt->loc; loc; loc = loc->next)
4162 if (loc->pspace->aspace == aspace && loc->inserted)
4163 {
4164 CORE_ADDR l, h;
4165
4166 /* Check for intersection. */
4167 l = std::max<CORE_ADDR> (loc->address, addr);
4168 h = std::min<CORE_ADDR> (loc->address + loc->length, addr + len);
4169 if (l < h)
4170 return 1;
4171 }
4172 }
4173 return 0;
4174 }
4175 \f
4176
4177 /* bpstat stuff. External routines' interfaces are documented
4178 in breakpoint.h. */
4179
4180 int
4181 is_catchpoint (struct breakpoint *ep)
4182 {
4183 return (ep->type == bp_catchpoint);
4184 }
4185
4186 /* Frees any storage that is part of a bpstat. Does not walk the
4187 'next' chain. */
4188
4189 bpstats::~bpstats ()
4190 {
4191 if (bp_location_at != NULL)
4192 decref_bp_location (&bp_location_at);
4193 }
4194
4195 /* Clear a bpstat so that it says we are not at any breakpoint.
4196 Also free any storage that is part of a bpstat. */
4197
4198 void
4199 bpstat_clear (bpstat *bsp)
4200 {
4201 bpstat p;
4202 bpstat q;
4203
4204 if (bsp == 0)
4205 return;
4206 p = *bsp;
4207 while (p != NULL)
4208 {
4209 q = p->next;
4210 delete p;
4211 p = q;
4212 }
4213 *bsp = NULL;
4214 }
4215
4216 bpstats::bpstats (const bpstats &other)
4217 : next (NULL),
4218 bp_location_at (other.bp_location_at),
4219 breakpoint_at (other.breakpoint_at),
4220 commands (other.commands),
4221 print (other.print),
4222 stop (other.stop),
4223 print_it (other.print_it)
4224 {
4225 if (other.old_val != NULL)
4226 old_val = release_value (value_copy (other.old_val.get ()));
4227 incref_bp_location (bp_location_at);
4228 }
4229
4230 /* Return a copy of a bpstat. Like "bs1 = bs2" but all storage that
4231 is part of the bpstat is copied as well. */
4232
4233 bpstat
4234 bpstat_copy (bpstat bs)
4235 {
4236 bpstat p = NULL;
4237 bpstat tmp;
4238 bpstat retval = NULL;
4239
4240 if (bs == NULL)
4241 return bs;
4242
4243 for (; bs != NULL; bs = bs->next)
4244 {
4245 tmp = new bpstats (*bs);
4246
4247 if (p == NULL)
4248 /* This is the first thing in the chain. */
4249 retval = tmp;
4250 else
4251 p->next = tmp;
4252 p = tmp;
4253 }
4254 p->next = NULL;
4255 return retval;
4256 }
4257
4258 /* Find the bpstat associated with this breakpoint. */
4259
4260 bpstat
4261 bpstat_find_breakpoint (bpstat bsp, struct breakpoint *breakpoint)
4262 {
4263 if (bsp == NULL)
4264 return NULL;
4265
4266 for (; bsp != NULL; bsp = bsp->next)
4267 {
4268 if (bsp->breakpoint_at == breakpoint)
4269 return bsp;
4270 }
4271 return NULL;
4272 }
4273
4274 /* See breakpoint.h. */
4275
4276 int
4277 bpstat_explains_signal (bpstat bsp, enum gdb_signal sig)
4278 {
4279 for (; bsp != NULL; bsp = bsp->next)
4280 {
4281 if (bsp->breakpoint_at == NULL)
4282 {
4283 /* A moribund location can never explain a signal other than
4284 GDB_SIGNAL_TRAP. */
4285 if (sig == GDB_SIGNAL_TRAP)
4286 return 1;
4287 }
4288 else
4289 {
4290 if (bsp->breakpoint_at->ops->explains_signal (bsp->breakpoint_at,
4291 sig))
4292 return 1;
4293 }
4294 }
4295
4296 return 0;
4297 }
4298
4299 /* Put in *NUM the breakpoint number of the first breakpoint we are
4300 stopped at. *BSP upon return is a bpstat which points to the
4301 remaining breakpoints stopped at (but which is not guaranteed to be
4302 good for anything but further calls to bpstat_num).
4303
4304 Return 0 if passed a bpstat which does not indicate any breakpoints.
4305 Return -1 if stopped at a breakpoint that has been deleted since
4306 we set it.
4307 Return 1 otherwise. */
4308
4309 int
4310 bpstat_num (bpstat *bsp, int *num)
4311 {
4312 struct breakpoint *b;
4313
4314 if ((*bsp) == NULL)
4315 return 0; /* No more breakpoint values */
4316
4317 /* We assume we'll never have several bpstats that correspond to a
4318 single breakpoint -- otherwise, this function might return the
4319 same number more than once and this will look ugly. */
4320 b = (*bsp)->breakpoint_at;
4321 *bsp = (*bsp)->next;
4322 if (b == NULL)
4323 return -1; /* breakpoint that's been deleted since */
4324
4325 *num = b->number; /* We have its number */
4326 return 1;
4327 }
4328
4329 /* See breakpoint.h. */
4330
4331 void
4332 bpstat_clear_actions (void)
4333 {
4334 struct thread_info *tp;
4335 bpstat bs;
4336
4337 if (ptid_equal (inferior_ptid, null_ptid))
4338 return;
4339
4340 tp = find_thread_ptid (inferior_ptid);
4341 if (tp == NULL)
4342 return;
4343
4344 for (bs = tp->control.stop_bpstat; bs != NULL; bs = bs->next)
4345 {
4346 bs->commands = NULL;
4347 bs->old_val.reset (nullptr);
4348 }
4349 }
4350
4351 /* Called when a command is about to proceed the inferior. */
4352
4353 static void
4354 breakpoint_about_to_proceed (void)
4355 {
4356 if (!ptid_equal (inferior_ptid, null_ptid))
4357 {
4358 struct thread_info *tp = inferior_thread ();
4359
4360 /* Allow inferior function calls in breakpoint commands to not
4361 interrupt the command list. When the call finishes
4362 successfully, the inferior will be standing at the same
4363 breakpoint as if nothing happened. */
4364 if (tp->control.in_infcall)
4365 return;
4366 }
4367
4368 breakpoint_proceeded = 1;
4369 }
4370
4371 /* Return non-zero iff CMD as the first line of a command sequence is `silent'
4372 or its equivalent. */
4373
4374 static int
4375 command_line_is_silent (struct command_line *cmd)
4376 {
4377 return cmd && (strcmp ("silent", cmd->line) == 0);
4378 }
4379
4380 /* Execute all the commands associated with all the breakpoints at
4381 this location. Any of these commands could cause the process to
4382 proceed beyond this point, etc. We look out for such changes by
4383 checking the global "breakpoint_proceeded" after each command.
4384
4385 Returns true if a breakpoint command resumed the inferior. In that
4386 case, it is the caller's responsibility to recall it again with the
4387 bpstat of the current thread. */
4388
4389 static int
4390 bpstat_do_actions_1 (bpstat *bsp)
4391 {
4392 bpstat bs;
4393 int again = 0;
4394
4395 /* Avoid endless recursion if a `source' command is contained
4396 in bs->commands. */
4397 if (executing_breakpoint_commands)
4398 return 0;
4399
4400 scoped_restore save_executing
4401 = make_scoped_restore (&executing_breakpoint_commands, 1);
4402
4403 scoped_restore preventer = prevent_dont_repeat ();
4404
4405 /* This pointer will iterate over the list of bpstat's. */
4406 bs = *bsp;
4407
4408 breakpoint_proceeded = 0;
4409 for (; bs != NULL; bs = bs->next)
4410 {
4411 struct command_line *cmd = NULL;
4412
4413 /* Take ownership of the BSP's command tree, if it has one.
4414
4415 The command tree could legitimately contain commands like
4416 'step' and 'next', which call clear_proceed_status, which
4417 frees stop_bpstat's command tree. To make sure this doesn't
4418 free the tree we're executing out from under us, we need to
4419 take ownership of the tree ourselves. Since a given bpstat's
4420 commands are only executed once, we don't need to copy it; we
4421 can clear the pointer in the bpstat, and make sure we free
4422 the tree when we're done. */
4423 counted_command_line ccmd = bs->commands;
4424 bs->commands = NULL;
4425 if (ccmd != NULL)
4426 cmd = ccmd.get ();
4427 if (command_line_is_silent (cmd))
4428 {
4429 /* The action has been already done by bpstat_stop_status. */
4430 cmd = cmd->next;
4431 }
4432
4433 while (cmd != NULL)
4434 {
4435 execute_control_command (cmd);
4436
4437 if (breakpoint_proceeded)
4438 break;
4439 else
4440 cmd = cmd->next;
4441 }
4442
4443 if (breakpoint_proceeded)
4444 {
4445 if (current_ui->async)
4446 /* If we are in async mode, then the target might be still
4447 running, not stopped at any breakpoint, so nothing for
4448 us to do here -- just return to the event loop. */
4449 ;
4450 else
4451 /* In sync mode, when execute_control_command returns
4452 we're already standing on the next breakpoint.
4453 Breakpoint commands for that stop were not run, since
4454 execute_command does not run breakpoint commands --
4455 only command_line_handler does, but that one is not
4456 involved in execution of breakpoint commands. So, we
4457 can now execute breakpoint commands. It should be
4458 noted that making execute_command do bpstat actions is
4459 not an option -- in this case we'll have recursive
4460 invocation of bpstat for each breakpoint with a
4461 command, and can easily blow up GDB stack. Instead, we
4462 return true, which will trigger the caller to recall us
4463 with the new stop_bpstat. */
4464 again = 1;
4465 break;
4466 }
4467 }
4468 return again;
4469 }
4470
4471 void
4472 bpstat_do_actions (void)
4473 {
4474 struct cleanup *cleanup_if_error = make_bpstat_clear_actions_cleanup ();
4475
4476 /* Do any commands attached to breakpoint we are stopped at. */
4477 while (!ptid_equal (inferior_ptid, null_ptid)
4478 && target_has_execution
4479 && !is_exited (inferior_ptid)
4480 && !is_executing (inferior_ptid))
4481 /* Since in sync mode, bpstat_do_actions may resume the inferior,
4482 and only return when it is stopped at the next breakpoint, we
4483 keep doing breakpoint actions until it returns false to
4484 indicate the inferior was not resumed. */
4485 if (!bpstat_do_actions_1 (&inferior_thread ()->control.stop_bpstat))
4486 break;
4487
4488 discard_cleanups (cleanup_if_error);
4489 }
4490
4491 /* Print out the (old or new) value associated with a watchpoint. */
4492
4493 static void
4494 watchpoint_value_print (struct value *val, struct ui_file *stream)
4495 {
4496 if (val == NULL)
4497 fprintf_unfiltered (stream, _("<unreadable>"));
4498 else
4499 {
4500 struct value_print_options opts;
4501 get_user_print_options (&opts);
4502 value_print (val, stream, &opts);
4503 }
4504 }
4505
4506 /* Print the "Thread ID hit" part of "Thread ID hit Breakpoint N" if
4507 debugging multiple threads. */
4508
4509 void
4510 maybe_print_thread_hit_breakpoint (struct ui_out *uiout)
4511 {
4512 if (uiout->is_mi_like_p ())
4513 return;
4514
4515 uiout->text ("\n");
4516
4517 if (show_thread_that_caused_stop ())
4518 {
4519 const char *name;
4520 struct thread_info *thr = inferior_thread ();
4521
4522 uiout->text ("Thread ");
4523 uiout->field_fmt ("thread-id", "%s", print_thread_id (thr));
4524
4525 name = thr->name != NULL ? thr->name : target_thread_name (thr);
4526 if (name != NULL)
4527 {
4528 uiout->text (" \"");
4529 uiout->field_fmt ("name", "%s", name);
4530 uiout->text ("\"");
4531 }
4532
4533 uiout->text (" hit ");
4534 }
4535 }
4536
4537 /* Generic routine for printing messages indicating why we
4538 stopped. The behavior of this function depends on the value
4539 'print_it' in the bpstat structure. Under some circumstances we
4540 may decide not to print anything here and delegate the task to
4541 normal_stop(). */
4542
4543 static enum print_stop_action
4544 print_bp_stop_message (bpstat bs)
4545 {
4546 switch (bs->print_it)
4547 {
4548 case print_it_noop:
4549 /* Nothing should be printed for this bpstat entry. */
4550 return PRINT_UNKNOWN;
4551 break;
4552
4553 case print_it_done:
4554 /* We still want to print the frame, but we already printed the
4555 relevant messages. */
4556 return PRINT_SRC_AND_LOC;
4557 break;
4558
4559 case print_it_normal:
4560 {
4561 struct breakpoint *b = bs->breakpoint_at;
4562
4563 /* bs->breakpoint_at can be NULL if it was a momentary breakpoint
4564 which has since been deleted. */
4565 if (b == NULL)
4566 return PRINT_UNKNOWN;
4567
4568 /* Normal case. Call the breakpoint's print_it method. */
4569 return b->ops->print_it (bs);
4570 }
4571 break;
4572
4573 default:
4574 internal_error (__FILE__, __LINE__,
4575 _("print_bp_stop_message: unrecognized enum value"));
4576 break;
4577 }
4578 }
4579
4580 /* A helper function that prints a shared library stopped event. */
4581
4582 static void
4583 print_solib_event (int is_catchpoint)
4584 {
4585 bool any_deleted = !current_program_space->deleted_solibs.empty ();
4586 int any_added
4587 = !VEC_empty (so_list_ptr, current_program_space->added_solibs);
4588
4589 if (!is_catchpoint)
4590 {
4591 if (any_added || any_deleted)
4592 current_uiout->text (_("Stopped due to shared library event:\n"));
4593 else
4594 current_uiout->text (_("Stopped due to shared library event (no "
4595 "libraries added or removed)\n"));
4596 }
4597
4598 if (current_uiout->is_mi_like_p ())
4599 current_uiout->field_string ("reason",
4600 async_reason_lookup (EXEC_ASYNC_SOLIB_EVENT));
4601
4602 if (any_deleted)
4603 {
4604 current_uiout->text (_(" Inferior unloaded "));
4605 ui_out_emit_list list_emitter (current_uiout, "removed");
4606 for (int ix = 0; ix < current_program_space->deleted_solibs.size (); ix++)
4607 {
4608 const std::string &name = current_program_space->deleted_solibs[ix];
4609
4610 if (ix > 0)
4611 current_uiout->text (" ");
4612 current_uiout->field_string ("library", name);
4613 current_uiout->text ("\n");
4614 }
4615 }
4616
4617 if (any_added)
4618 {
4619 struct so_list *iter;
4620 int ix;
4621
4622 current_uiout->text (_(" Inferior loaded "));
4623 ui_out_emit_list list_emitter (current_uiout, "added");
4624 for (ix = 0;
4625 VEC_iterate (so_list_ptr, current_program_space->added_solibs,
4626 ix, iter);
4627 ++ix)
4628 {
4629 if (ix > 0)
4630 current_uiout->text (" ");
4631 current_uiout->field_string ("library", iter->so_name);
4632 current_uiout->text ("\n");
4633 }
4634 }
4635 }
4636
4637 /* Print a message indicating what happened. This is called from
4638 normal_stop(). The input to this routine is the head of the bpstat
4639 list - a list of the eventpoints that caused this stop. KIND is
4640 the target_waitkind for the stopping event. This
4641 routine calls the generic print routine for printing a message
4642 about reasons for stopping. This will print (for example) the
4643 "Breakpoint n," part of the output. The return value of this
4644 routine is one of:
4645
4646 PRINT_UNKNOWN: Means we printed nothing.
4647 PRINT_SRC_AND_LOC: Means we printed something, and expect subsequent
4648 code to print the location. An example is
4649 "Breakpoint 1, " which should be followed by
4650 the location.
4651 PRINT_SRC_ONLY: Means we printed something, but there is no need
4652 to also print the location part of the message.
4653 An example is the catch/throw messages, which
4654 don't require a location appended to the end.
4655 PRINT_NOTHING: We have done some printing and we don't need any
4656 further info to be printed. */
4657
4658 enum print_stop_action
4659 bpstat_print (bpstat bs, int kind)
4660 {
4661 enum print_stop_action val;
4662
4663 /* Maybe another breakpoint in the chain caused us to stop.
4664 (Currently all watchpoints go on the bpstat whether hit or not.
4665 That probably could (should) be changed, provided care is taken
4666 with respect to bpstat_explains_signal). */
4667 for (; bs; bs = bs->next)
4668 {
4669 val = print_bp_stop_message (bs);
4670 if (val == PRINT_SRC_ONLY
4671 || val == PRINT_SRC_AND_LOC
4672 || val == PRINT_NOTHING)
4673 return val;
4674 }
4675
4676 /* If we had hit a shared library event breakpoint,
4677 print_bp_stop_message would print out this message. If we hit an
4678 OS-level shared library event, do the same thing. */
4679 if (kind == TARGET_WAITKIND_LOADED)
4680 {
4681 print_solib_event (0);
4682 return PRINT_NOTHING;
4683 }
4684
4685 /* We reached the end of the chain, or we got a null BS to start
4686 with and nothing was printed. */
4687 return PRINT_UNKNOWN;
4688 }
4689
4690 /* Evaluate the boolean expression EXP and return the result. */
4691
4692 static bool
4693 breakpoint_cond_eval (expression *exp)
4694 {
4695 struct value *mark = value_mark ();
4696 bool res = value_true (evaluate_expression (exp));
4697
4698 value_free_to_mark (mark);
4699 return res;
4700 }
4701
4702 /* Allocate a new bpstat. Link it to the FIFO list by BS_LINK_POINTER. */
4703
4704 bpstats::bpstats (struct bp_location *bl, bpstat **bs_link_pointer)
4705 : next (NULL),
4706 bp_location_at (bl),
4707 breakpoint_at (bl->owner),
4708 commands (NULL),
4709 print (0),
4710 stop (0),
4711 print_it (print_it_normal)
4712 {
4713 incref_bp_location (bl);
4714 **bs_link_pointer = this;
4715 *bs_link_pointer = &next;
4716 }
4717
4718 bpstats::bpstats ()
4719 : next (NULL),
4720 bp_location_at (NULL),
4721 breakpoint_at (NULL),
4722 commands (NULL),
4723 print (0),
4724 stop (0),
4725 print_it (print_it_normal)
4726 {
4727 }
4728 \f
4729 /* The target has stopped with waitstatus WS. Check if any hardware
4730 watchpoints have triggered, according to the target. */
4731
4732 int
4733 watchpoints_triggered (struct target_waitstatus *ws)
4734 {
4735 bool stopped_by_watchpoint = target_stopped_by_watchpoint ();
4736 CORE_ADDR addr;
4737 struct breakpoint *b;
4738
4739 if (!stopped_by_watchpoint)
4740 {
4741 /* We were not stopped by a watchpoint. Mark all watchpoints
4742 as not triggered. */
4743 ALL_BREAKPOINTS (b)
4744 if (is_hardware_watchpoint (b))
4745 {
4746 struct watchpoint *w = (struct watchpoint *) b;
4747
4748 w->watchpoint_triggered = watch_triggered_no;
4749 }
4750
4751 return 0;
4752 }
4753
4754 if (!target_stopped_data_address (target_stack, &addr))
4755 {
4756 /* We were stopped by a watchpoint, but we don't know where.
4757 Mark all watchpoints as unknown. */
4758 ALL_BREAKPOINTS (b)
4759 if (is_hardware_watchpoint (b))
4760 {
4761 struct watchpoint *w = (struct watchpoint *) b;
4762
4763 w->watchpoint_triggered = watch_triggered_unknown;
4764 }
4765
4766 return 1;
4767 }
4768
4769 /* The target could report the data address. Mark watchpoints
4770 affected by this data address as triggered, and all others as not
4771 triggered. */
4772
4773 ALL_BREAKPOINTS (b)
4774 if (is_hardware_watchpoint (b))
4775 {
4776 struct watchpoint *w = (struct watchpoint *) b;
4777 struct bp_location *loc;
4778
4779 w->watchpoint_triggered = watch_triggered_no;
4780 for (loc = b->loc; loc; loc = loc->next)
4781 {
4782 if (is_masked_watchpoint (b))
4783 {
4784 CORE_ADDR newaddr = addr & w->hw_wp_mask;
4785 CORE_ADDR start = loc->address & w->hw_wp_mask;
4786
4787 if (newaddr == start)
4788 {
4789 w->watchpoint_triggered = watch_triggered_yes;
4790 break;
4791 }
4792 }
4793 /* Exact match not required. Within range is sufficient. */
4794 else if (target_watchpoint_addr_within_range (target_stack,
4795 addr, loc->address,
4796 loc->length))
4797 {
4798 w->watchpoint_triggered = watch_triggered_yes;
4799 break;
4800 }
4801 }
4802 }
4803
4804 return 1;
4805 }
4806
4807 /* Possible return values for watchpoint_check. */
4808 enum wp_check_result
4809 {
4810 /* The watchpoint has been deleted. */
4811 WP_DELETED = 1,
4812
4813 /* The value has changed. */
4814 WP_VALUE_CHANGED = 2,
4815
4816 /* The value has not changed. */
4817 WP_VALUE_NOT_CHANGED = 3,
4818
4819 /* Ignore this watchpoint, no matter if the value changed or not. */
4820 WP_IGNORE = 4,
4821 };
4822
4823 #define BP_TEMPFLAG 1
4824 #define BP_HARDWAREFLAG 2
4825
4826 /* Evaluate watchpoint condition expression and check if its value
4827 changed. */
4828
4829 static wp_check_result
4830 watchpoint_check (bpstat bs)
4831 {
4832 struct watchpoint *b;
4833 struct frame_info *fr;
4834 int within_current_scope;
4835
4836 /* BS is built from an existing struct breakpoint. */
4837 gdb_assert (bs->breakpoint_at != NULL);
4838 b = (struct watchpoint *) bs->breakpoint_at;
4839
4840 /* If this is a local watchpoint, we only want to check if the
4841 watchpoint frame is in scope if the current thread is the thread
4842 that was used to create the watchpoint. */
4843 if (!watchpoint_in_thread_scope (b))
4844 return WP_IGNORE;
4845
4846 if (b->exp_valid_block == NULL)
4847 within_current_scope = 1;
4848 else
4849 {
4850 struct frame_info *frame = get_current_frame ();
4851 struct gdbarch *frame_arch = get_frame_arch (frame);
4852 CORE_ADDR frame_pc = get_frame_pc (frame);
4853
4854 /* stack_frame_destroyed_p() returns a non-zero value if we're
4855 still in the function but the stack frame has already been
4856 invalidated. Since we can't rely on the values of local
4857 variables after the stack has been destroyed, we are treating
4858 the watchpoint in that state as `not changed' without further
4859 checking. Don't mark watchpoints as changed if the current
4860 frame is in an epilogue - even if they are in some other
4861 frame, our view of the stack is likely to be wrong and
4862 frame_find_by_id could error out. */
4863 if (gdbarch_stack_frame_destroyed_p (frame_arch, frame_pc))
4864 return WP_IGNORE;
4865
4866 fr = frame_find_by_id (b->watchpoint_frame);
4867 within_current_scope = (fr != NULL);
4868
4869 /* If we've gotten confused in the unwinder, we might have
4870 returned a frame that can't describe this variable. */
4871 if (within_current_scope)
4872 {
4873 struct symbol *function;
4874
4875 function = get_frame_function (fr);
4876 if (function == NULL
4877 || !contained_in (b->exp_valid_block,
4878 SYMBOL_BLOCK_VALUE (function)))
4879 within_current_scope = 0;
4880 }
4881
4882 if (within_current_scope)
4883 /* If we end up stopping, the current frame will get selected
4884 in normal_stop. So this call to select_frame won't affect
4885 the user. */
4886 select_frame (fr);
4887 }
4888
4889 if (within_current_scope)
4890 {
4891 /* We use value_{,free_to_}mark because it could be a *long*
4892 time before we return to the command level and call
4893 free_all_values. We can't call free_all_values because we
4894 might be in the middle of evaluating a function call. */
4895
4896 int pc = 0;
4897 struct value *mark;
4898 struct value *new_val;
4899
4900 if (is_masked_watchpoint (b))
4901 /* Since we don't know the exact trigger address (from
4902 stopped_data_address), just tell the user we've triggered
4903 a mask watchpoint. */
4904 return WP_VALUE_CHANGED;
4905
4906 mark = value_mark ();
4907 fetch_subexp_value (b->exp.get (), &pc, &new_val, NULL, NULL, 0);
4908
4909 if (b->val_bitsize != 0)
4910 new_val = extract_bitfield_from_watchpoint_value (b, new_val);
4911
4912 /* We use value_equal_contents instead of value_equal because
4913 the latter coerces an array to a pointer, thus comparing just
4914 the address of the array instead of its contents. This is
4915 not what we want. */
4916 if ((b->val != NULL) != (new_val != NULL)
4917 || (b->val != NULL && !value_equal_contents (b->val.get (),
4918 new_val)))
4919 {
4920 bs->old_val = b->val;
4921 b->val = release_value (new_val);
4922 b->val_valid = 1;
4923 if (new_val != NULL)
4924 value_free_to_mark (mark);
4925 return WP_VALUE_CHANGED;
4926 }
4927 else
4928 {
4929 /* Nothing changed. */
4930 value_free_to_mark (mark);
4931 return WP_VALUE_NOT_CHANGED;
4932 }
4933 }
4934 else
4935 {
4936 /* This seems like the only logical thing to do because
4937 if we temporarily ignored the watchpoint, then when
4938 we reenter the block in which it is valid it contains
4939 garbage (in the case of a function, it may have two
4940 garbage values, one before and one after the prologue).
4941 So we can't even detect the first assignment to it and
4942 watch after that (since the garbage may or may not equal
4943 the first value assigned). */
4944 /* We print all the stop information in
4945 breakpoint_ops->print_it, but in this case, by the time we
4946 call breakpoint_ops->print_it this bp will be deleted
4947 already. So we have no choice but print the information
4948 here. */
4949
4950 SWITCH_THRU_ALL_UIS ()
4951 {
4952 struct ui_out *uiout = current_uiout;
4953
4954 if (uiout->is_mi_like_p ())
4955 uiout->field_string
4956 ("reason", async_reason_lookup (EXEC_ASYNC_WATCHPOINT_SCOPE));
4957 uiout->text ("\nWatchpoint ");
4958 uiout->field_int ("wpnum", b->number);
4959 uiout->text (" deleted because the program has left the block in\n"
4960 "which its expression is valid.\n");
4961 }
4962
4963 /* Make sure the watchpoint's commands aren't executed. */
4964 b->commands = NULL;
4965 watchpoint_del_at_next_stop (b);
4966
4967 return WP_DELETED;
4968 }
4969 }
4970
4971 /* Return true if it looks like target has stopped due to hitting
4972 breakpoint location BL. This function does not check if we should
4973 stop, only if BL explains the stop. */
4974
4975 static int
4976 bpstat_check_location (const struct bp_location *bl,
4977 const address_space *aspace, CORE_ADDR bp_addr,
4978 const struct target_waitstatus *ws)
4979 {
4980 struct breakpoint *b = bl->owner;
4981
4982 /* BL is from an existing breakpoint. */
4983 gdb_assert (b != NULL);
4984
4985 return b->ops->breakpoint_hit (bl, aspace, bp_addr, ws);
4986 }
4987
4988 /* Determine if the watched values have actually changed, and we
4989 should stop. If not, set BS->stop to 0. */
4990
4991 static void
4992 bpstat_check_watchpoint (bpstat bs)
4993 {
4994 const struct bp_location *bl;
4995 struct watchpoint *b;
4996
4997 /* BS is built for existing struct breakpoint. */
4998 bl = bs->bp_location_at;
4999 gdb_assert (bl != NULL);
5000 b = (struct watchpoint *) bs->breakpoint_at;
5001 gdb_assert (b != NULL);
5002
5003 {
5004 int must_check_value = 0;
5005
5006 if (b->type == bp_watchpoint)
5007 /* For a software watchpoint, we must always check the
5008 watched value. */
5009 must_check_value = 1;
5010 else if (b->watchpoint_triggered == watch_triggered_yes)
5011 /* We have a hardware watchpoint (read, write, or access)
5012 and the target earlier reported an address watched by
5013 this watchpoint. */
5014 must_check_value = 1;
5015 else if (b->watchpoint_triggered == watch_triggered_unknown
5016 && b->type == bp_hardware_watchpoint)
5017 /* We were stopped by a hardware watchpoint, but the target could
5018 not report the data address. We must check the watchpoint's
5019 value. Access and read watchpoints are out of luck; without
5020 a data address, we can't figure it out. */
5021 must_check_value = 1;
5022
5023 if (must_check_value)
5024 {
5025 wp_check_result e;
5026
5027 TRY
5028 {
5029 e = watchpoint_check (bs);
5030 }
5031 CATCH (ex, RETURN_MASK_ALL)
5032 {
5033 exception_fprintf (gdb_stderr, ex,
5034 "Error evaluating expression "
5035 "for watchpoint %d\n",
5036 b->number);
5037
5038 SWITCH_THRU_ALL_UIS ()
5039 {
5040 printf_filtered (_("Watchpoint %d deleted.\n"),
5041 b->number);
5042 }
5043 watchpoint_del_at_next_stop (b);
5044 e = WP_DELETED;
5045 }
5046 END_CATCH
5047
5048 switch (e)
5049 {
5050 case WP_DELETED:
5051 /* We've already printed what needs to be printed. */
5052 bs->print_it = print_it_done;
5053 /* Stop. */
5054 break;
5055 case WP_IGNORE:
5056 bs->print_it = print_it_noop;
5057 bs->stop = 0;
5058 break;
5059 case WP_VALUE_CHANGED:
5060 if (b->type == bp_read_watchpoint)
5061 {
5062 /* There are two cases to consider here:
5063
5064 1. We're watching the triggered memory for reads.
5065 In that case, trust the target, and always report
5066 the watchpoint hit to the user. Even though
5067 reads don't cause value changes, the value may
5068 have changed since the last time it was read, and
5069 since we're not trapping writes, we will not see
5070 those, and as such we should ignore our notion of
5071 old value.
5072
5073 2. We're watching the triggered memory for both
5074 reads and writes. There are two ways this may
5075 happen:
5076
5077 2.1. This is a target that can't break on data
5078 reads only, but can break on accesses (reads or
5079 writes), such as e.g., x86. We detect this case
5080 at the time we try to insert read watchpoints.
5081
5082 2.2. Otherwise, the target supports read
5083 watchpoints, but, the user set an access or write
5084 watchpoint watching the same memory as this read
5085 watchpoint.
5086
5087 If we're watching memory writes as well as reads,
5088 ignore watchpoint hits when we find that the
5089 value hasn't changed, as reads don't cause
5090 changes. This still gives false positives when
5091 the program writes the same value to memory as
5092 what there was already in memory (we will confuse
5093 it for a read), but it's much better than
5094 nothing. */
5095
5096 int other_write_watchpoint = 0;
5097
5098 if (bl->watchpoint_type == hw_read)
5099 {
5100 struct breakpoint *other_b;
5101
5102 ALL_BREAKPOINTS (other_b)
5103 if (other_b->type == bp_hardware_watchpoint
5104 || other_b->type == bp_access_watchpoint)
5105 {
5106 struct watchpoint *other_w =
5107 (struct watchpoint *) other_b;
5108
5109 if (other_w->watchpoint_triggered
5110 == watch_triggered_yes)
5111 {
5112 other_write_watchpoint = 1;
5113 break;
5114 }
5115 }
5116 }
5117
5118 if (other_write_watchpoint
5119 || bl->watchpoint_type == hw_access)
5120 {
5121 /* We're watching the same memory for writes,
5122 and the value changed since the last time we
5123 updated it, so this trap must be for a write.
5124 Ignore it. */
5125 bs->print_it = print_it_noop;
5126 bs->stop = 0;
5127 }
5128 }
5129 break;
5130 case WP_VALUE_NOT_CHANGED:
5131 if (b->type == bp_hardware_watchpoint
5132 || b->type == bp_watchpoint)
5133 {
5134 /* Don't stop: write watchpoints shouldn't fire if
5135 the value hasn't changed. */
5136 bs->print_it = print_it_noop;
5137 bs->stop = 0;
5138 }
5139 /* Stop. */
5140 break;
5141 default:
5142 /* Can't happen. */
5143 break;
5144 }
5145 }
5146 else /* must_check_value == 0 */
5147 {
5148 /* This is a case where some watchpoint(s) triggered, but
5149 not at the address of this watchpoint, or else no
5150 watchpoint triggered after all. So don't print
5151 anything for this watchpoint. */
5152 bs->print_it = print_it_noop;
5153 bs->stop = 0;
5154 }
5155 }
5156 }
5157
5158 /* For breakpoints that are currently marked as telling gdb to stop,
5159 check conditions (condition proper, frame, thread and ignore count)
5160 of breakpoint referred to by BS. If we should not stop for this
5161 breakpoint, set BS->stop to 0. */
5162
5163 static void
5164 bpstat_check_breakpoint_conditions (bpstat bs, ptid_t ptid)
5165 {
5166 const struct bp_location *bl;
5167 struct breakpoint *b;
5168 /* Assume stop. */
5169 bool condition_result = true;
5170 struct expression *cond;
5171
5172 gdb_assert (bs->stop);
5173
5174 /* BS is built for existing struct breakpoint. */
5175 bl = bs->bp_location_at;
5176 gdb_assert (bl != NULL);
5177 b = bs->breakpoint_at;
5178 gdb_assert (b != NULL);
5179
5180 /* Even if the target evaluated the condition on its end and notified GDB, we
5181 need to do so again since GDB does not know if we stopped due to a
5182 breakpoint or a single step breakpoint. */
5183
5184 if (frame_id_p (b->frame_id)
5185 && !frame_id_eq (b->frame_id, get_stack_frame_id (get_current_frame ())))
5186 {
5187 bs->stop = 0;
5188 return;
5189 }
5190
5191 /* If this is a thread/task-specific breakpoint, don't waste cpu
5192 evaluating the condition if this isn't the specified
5193 thread/task. */
5194 if ((b->thread != -1 && b->thread != ptid_to_global_thread_id (ptid))
5195 || (b->task != 0 && b->task != ada_get_task_number (ptid)))
5196
5197 {
5198 bs->stop = 0;
5199 return;
5200 }
5201
5202 /* Evaluate extension language breakpoints that have a "stop" method
5203 implemented. */
5204 bs->stop = breakpoint_ext_lang_cond_says_stop (b);
5205
5206 if (is_watchpoint (b))
5207 {
5208 struct watchpoint *w = (struct watchpoint *) b;
5209
5210 cond = w->cond_exp.get ();
5211 }
5212 else
5213 cond = bl->cond.get ();
5214
5215 if (cond && b->disposition != disp_del_at_next_stop)
5216 {
5217 int within_current_scope = 1;
5218 struct watchpoint * w;
5219
5220 /* We use value_mark and value_free_to_mark because it could
5221 be a long time before we return to the command level and
5222 call free_all_values. We can't call free_all_values
5223 because we might be in the middle of evaluating a
5224 function call. */
5225 struct value *mark = value_mark ();
5226
5227 if (is_watchpoint (b))
5228 w = (struct watchpoint *) b;
5229 else
5230 w = NULL;
5231
5232 /* Need to select the frame, with all that implies so that
5233 the conditions will have the right context. Because we
5234 use the frame, we will not see an inlined function's
5235 variables when we arrive at a breakpoint at the start
5236 of the inlined function; the current frame will be the
5237 call site. */
5238 if (w == NULL || w->cond_exp_valid_block == NULL)
5239 select_frame (get_current_frame ());
5240 else
5241 {
5242 struct frame_info *frame;
5243
5244 /* For local watchpoint expressions, which particular
5245 instance of a local is being watched matters, so we
5246 keep track of the frame to evaluate the expression
5247 in. To evaluate the condition however, it doesn't
5248 really matter which instantiation of the function
5249 where the condition makes sense triggers the
5250 watchpoint. This allows an expression like "watch
5251 global if q > 10" set in `func', catch writes to
5252 global on all threads that call `func', or catch
5253 writes on all recursive calls of `func' by a single
5254 thread. We simply always evaluate the condition in
5255 the innermost frame that's executing where it makes
5256 sense to evaluate the condition. It seems
5257 intuitive. */
5258 frame = block_innermost_frame (w->cond_exp_valid_block);
5259 if (frame != NULL)
5260 select_frame (frame);
5261 else
5262 within_current_scope = 0;
5263 }
5264 if (within_current_scope)
5265 {
5266 TRY
5267 {
5268 condition_result = breakpoint_cond_eval (cond);
5269 }
5270 CATCH (ex, RETURN_MASK_ALL)
5271 {
5272 exception_fprintf (gdb_stderr, ex,
5273 "Error in testing breakpoint condition:\n");
5274 }
5275 END_CATCH
5276 }
5277 else
5278 {
5279 warning (_("Watchpoint condition cannot be tested "
5280 "in the current scope"));
5281 /* If we failed to set the right context for this
5282 watchpoint, unconditionally report it. */
5283 }
5284 /* FIXME-someday, should give breakpoint #. */
5285 value_free_to_mark (mark);
5286 }
5287
5288 if (cond && !condition_result)
5289 {
5290 bs->stop = 0;
5291 }
5292 else if (b->ignore_count > 0)
5293 {
5294 b->ignore_count--;
5295 bs->stop = 0;
5296 /* Increase the hit count even though we don't stop. */
5297 ++(b->hit_count);
5298 gdb::observers::breakpoint_modified.notify (b);
5299 }
5300 }
5301
5302 /* Returns true if we need to track moribund locations of LOC's type
5303 on the current target. */
5304
5305 static int
5306 need_moribund_for_location_type (struct bp_location *loc)
5307 {
5308 return ((loc->loc_type == bp_loc_software_breakpoint
5309 && !target_supports_stopped_by_sw_breakpoint ())
5310 || (loc->loc_type == bp_loc_hardware_breakpoint
5311 && !target_supports_stopped_by_hw_breakpoint ()));
5312 }
5313
5314
5315 /* Get a bpstat associated with having just stopped at address
5316 BP_ADDR in thread PTID.
5317
5318 Determine whether we stopped at a breakpoint, etc, or whether we
5319 don't understand this stop. Result is a chain of bpstat's such
5320 that:
5321
5322 if we don't understand the stop, the result is a null pointer.
5323
5324 if we understand why we stopped, the result is not null.
5325
5326 Each element of the chain refers to a particular breakpoint or
5327 watchpoint at which we have stopped. (We may have stopped for
5328 several reasons concurrently.)
5329
5330 Each element of the chain has valid next, breakpoint_at,
5331 commands, FIXME??? fields. */
5332
5333 bpstat
5334 bpstat_stop_status (const address_space *aspace,
5335 CORE_ADDR bp_addr, ptid_t ptid,
5336 const struct target_waitstatus *ws)
5337 {
5338 struct breakpoint *b = NULL;
5339 struct bp_location *bl;
5340 struct bp_location *loc;
5341 /* First item of allocated bpstat's. */
5342 bpstat bs_head = NULL, *bs_link = &bs_head;
5343 /* Pointer to the last thing in the chain currently. */
5344 bpstat bs;
5345 int ix;
5346 int need_remove_insert;
5347 int removed_any;
5348
5349 /* First, build the bpstat chain with locations that explain a
5350 target stop, while being careful to not set the target running,
5351 as that may invalidate locations (in particular watchpoint
5352 locations are recreated). Resuming will happen here with
5353 breakpoint conditions or watchpoint expressions that include
5354 inferior function calls. */
5355
5356 ALL_BREAKPOINTS (b)
5357 {
5358 if (!breakpoint_enabled (b))
5359 continue;
5360
5361 for (bl = b->loc; bl != NULL; bl = bl->next)
5362 {
5363 /* For hardware watchpoints, we look only at the first
5364 location. The watchpoint_check function will work on the
5365 entire expression, not the individual locations. For
5366 read watchpoints, the watchpoints_triggered function has
5367 checked all locations already. */
5368 if (b->type == bp_hardware_watchpoint && bl != b->loc)
5369 break;
5370
5371 if (!bl->enabled || bl->shlib_disabled)
5372 continue;
5373
5374 if (!bpstat_check_location (bl, aspace, bp_addr, ws))
5375 continue;
5376
5377 /* Come here if it's a watchpoint, or if the break address
5378 matches. */
5379
5380 bs = new bpstats (bl, &bs_link); /* Alloc a bpstat to
5381 explain stop. */
5382
5383 /* Assume we stop. Should we find a watchpoint that is not
5384 actually triggered, or if the condition of the breakpoint
5385 evaluates as false, we'll reset 'stop' to 0. */
5386 bs->stop = 1;
5387 bs->print = 1;
5388
5389 /* If this is a scope breakpoint, mark the associated
5390 watchpoint as triggered so that we will handle the
5391 out-of-scope event. We'll get to the watchpoint next
5392 iteration. */
5393 if (b->type == bp_watchpoint_scope && b->related_breakpoint != b)
5394 {
5395 struct watchpoint *w = (struct watchpoint *) b->related_breakpoint;
5396
5397 w->watchpoint_triggered = watch_triggered_yes;
5398 }
5399 }
5400 }
5401
5402 /* Check if a moribund breakpoint explains the stop. */
5403 if (!target_supports_stopped_by_sw_breakpoint ()
5404 || !target_supports_stopped_by_hw_breakpoint ())
5405 {
5406 for (ix = 0; VEC_iterate (bp_location_p, moribund_locations, ix, loc); ++ix)
5407 {
5408 if (breakpoint_location_address_match (loc, aspace, bp_addr)
5409 && need_moribund_for_location_type (loc))
5410 {
5411 bs = new bpstats (loc, &bs_link);
5412 /* For hits of moribund locations, we should just proceed. */
5413 bs->stop = 0;
5414 bs->print = 0;
5415 bs->print_it = print_it_noop;
5416 }
5417 }
5418 }
5419
5420 /* A bit of special processing for shlib breakpoints. We need to
5421 process solib loading here, so that the lists of loaded and
5422 unloaded libraries are correct before we handle "catch load" and
5423 "catch unload". */
5424 for (bs = bs_head; bs != NULL; bs = bs->next)
5425 {
5426 if (bs->breakpoint_at && bs->breakpoint_at->type == bp_shlib_event)
5427 {
5428 handle_solib_event ();
5429 break;
5430 }
5431 }
5432
5433 /* Now go through the locations that caused the target to stop, and
5434 check whether we're interested in reporting this stop to higher
5435 layers, or whether we should resume the target transparently. */
5436
5437 removed_any = 0;
5438
5439 for (bs = bs_head; bs != NULL; bs = bs->next)
5440 {
5441 if (!bs->stop)
5442 continue;
5443
5444 b = bs->breakpoint_at;
5445 b->ops->check_status (bs);
5446 if (bs->stop)
5447 {
5448 bpstat_check_breakpoint_conditions (bs, ptid);
5449
5450 if (bs->stop)
5451 {
5452 ++(b->hit_count);
5453 gdb::observers::breakpoint_modified.notify (b);
5454
5455 /* We will stop here. */
5456 if (b->disposition == disp_disable)
5457 {
5458 --(b->enable_count);
5459 if (b->enable_count <= 0)
5460 b->enable_state = bp_disabled;
5461 removed_any = 1;
5462 }
5463 if (b->silent)
5464 bs->print = 0;
5465 bs->commands = b->commands;
5466 if (command_line_is_silent (bs->commands
5467 ? bs->commands.get () : NULL))
5468 bs->print = 0;
5469
5470 b->ops->after_condition_true (bs);
5471 }
5472
5473 }
5474
5475 /* Print nothing for this entry if we don't stop or don't
5476 print. */
5477 if (!bs->stop || !bs->print)
5478 bs->print_it = print_it_noop;
5479 }
5480
5481 /* If we aren't stopping, the value of some hardware watchpoint may
5482 not have changed, but the intermediate memory locations we are
5483 watching may have. Don't bother if we're stopping; this will get
5484 done later. */
5485 need_remove_insert = 0;
5486 if (! bpstat_causes_stop (bs_head))
5487 for (bs = bs_head; bs != NULL; bs = bs->next)
5488 if (!bs->stop
5489 && bs->breakpoint_at
5490 && is_hardware_watchpoint (bs->breakpoint_at))
5491 {
5492 struct watchpoint *w = (struct watchpoint *) bs->breakpoint_at;
5493
5494 update_watchpoint (w, 0 /* don't reparse. */);
5495 need_remove_insert = 1;
5496 }
5497
5498 if (need_remove_insert)
5499 update_global_location_list (UGLL_MAY_INSERT);
5500 else if (removed_any)
5501 update_global_location_list (UGLL_DONT_INSERT);
5502
5503 return bs_head;
5504 }
5505
5506 static void
5507 handle_jit_event (void)
5508 {
5509 struct frame_info *frame;
5510 struct gdbarch *gdbarch;
5511
5512 if (debug_infrun)
5513 fprintf_unfiltered (gdb_stdlog, "handling bp_jit_event\n");
5514
5515 /* Switch terminal for any messages produced by
5516 breakpoint_re_set. */
5517 target_terminal::ours_for_output ();
5518
5519 frame = get_current_frame ();
5520 gdbarch = get_frame_arch (frame);
5521
5522 jit_event_handler (gdbarch);
5523
5524 target_terminal::inferior ();
5525 }
5526
5527 /* Prepare WHAT final decision for infrun. */
5528
5529 /* Decide what infrun needs to do with this bpstat. */
5530
5531 struct bpstat_what
5532 bpstat_what (bpstat bs_head)
5533 {
5534 struct bpstat_what retval;
5535 bpstat bs;
5536
5537 retval.main_action = BPSTAT_WHAT_KEEP_CHECKING;
5538 retval.call_dummy = STOP_NONE;
5539 retval.is_longjmp = 0;
5540
5541 for (bs = bs_head; bs != NULL; bs = bs->next)
5542 {
5543 /* Extract this BS's action. After processing each BS, we check
5544 if its action overrides all we've seem so far. */
5545 enum bpstat_what_main_action this_action = BPSTAT_WHAT_KEEP_CHECKING;
5546 enum bptype bptype;
5547
5548 if (bs->breakpoint_at == NULL)
5549 {
5550 /* I suspect this can happen if it was a momentary
5551 breakpoint which has since been deleted. */
5552 bptype = bp_none;
5553 }
5554 else
5555 bptype = bs->breakpoint_at->type;
5556
5557 switch (bptype)
5558 {
5559 case bp_none:
5560 break;
5561 case bp_breakpoint:
5562 case bp_hardware_breakpoint:
5563 case bp_single_step:
5564 case bp_until:
5565 case bp_finish:
5566 case bp_shlib_event:
5567 if (bs->stop)
5568 {
5569 if (bs->print)
5570 this_action = BPSTAT_WHAT_STOP_NOISY;
5571 else
5572 this_action = BPSTAT_WHAT_STOP_SILENT;
5573 }
5574 else
5575 this_action = BPSTAT_WHAT_SINGLE;
5576 break;
5577 case bp_watchpoint:
5578 case bp_hardware_watchpoint:
5579 case bp_read_watchpoint:
5580 case bp_access_watchpoint:
5581 if (bs->stop)
5582 {
5583 if (bs->print)
5584 this_action = BPSTAT_WHAT_STOP_NOISY;
5585 else
5586 this_action = BPSTAT_WHAT_STOP_SILENT;
5587 }
5588 else
5589 {
5590 /* There was a watchpoint, but we're not stopping.
5591 This requires no further action. */
5592 }
5593 break;
5594 case bp_longjmp:
5595 case bp_longjmp_call_dummy:
5596 case bp_exception:
5597 if (bs->stop)
5598 {
5599 this_action = BPSTAT_WHAT_SET_LONGJMP_RESUME;
5600 retval.is_longjmp = bptype != bp_exception;
5601 }
5602 else
5603 this_action = BPSTAT_WHAT_SINGLE;
5604 break;
5605 case bp_longjmp_resume:
5606 case bp_exception_resume:
5607 if (bs->stop)
5608 {
5609 this_action = BPSTAT_WHAT_CLEAR_LONGJMP_RESUME;
5610 retval.is_longjmp = bptype == bp_longjmp_resume;
5611 }
5612 else
5613 this_action = BPSTAT_WHAT_SINGLE;
5614 break;
5615 case bp_step_resume:
5616 if (bs->stop)
5617 this_action = BPSTAT_WHAT_STEP_RESUME;
5618 else
5619 {
5620 /* It is for the wrong frame. */
5621 this_action = BPSTAT_WHAT_SINGLE;
5622 }
5623 break;
5624 case bp_hp_step_resume:
5625 if (bs->stop)
5626 this_action = BPSTAT_WHAT_HP_STEP_RESUME;
5627 else
5628 {
5629 /* It is for the wrong frame. */
5630 this_action = BPSTAT_WHAT_SINGLE;
5631 }
5632 break;
5633 case bp_watchpoint_scope:
5634 case bp_thread_event:
5635 case bp_overlay_event:
5636 case bp_longjmp_master:
5637 case bp_std_terminate_master:
5638 case bp_exception_master:
5639 this_action = BPSTAT_WHAT_SINGLE;
5640 break;
5641 case bp_catchpoint:
5642 if (bs->stop)
5643 {
5644 if (bs->print)
5645 this_action = BPSTAT_WHAT_STOP_NOISY;
5646 else
5647 this_action = BPSTAT_WHAT_STOP_SILENT;
5648 }
5649 else
5650 {
5651 /* There was a catchpoint, but we're not stopping.
5652 This requires no further action. */
5653 }
5654 break;
5655 case bp_jit_event:
5656 this_action = BPSTAT_WHAT_SINGLE;
5657 break;
5658 case bp_call_dummy:
5659 /* Make sure the action is stop (silent or noisy),
5660 so infrun.c pops the dummy frame. */
5661 retval.call_dummy = STOP_STACK_DUMMY;
5662 this_action = BPSTAT_WHAT_STOP_SILENT;
5663 break;
5664 case bp_std_terminate:
5665 /* Make sure the action is stop (silent or noisy),
5666 so infrun.c pops the dummy frame. */
5667 retval.call_dummy = STOP_STD_TERMINATE;
5668 this_action = BPSTAT_WHAT_STOP_SILENT;
5669 break;
5670 case bp_tracepoint:
5671 case bp_fast_tracepoint:
5672 case bp_static_tracepoint:
5673 /* Tracepoint hits should not be reported back to GDB, and
5674 if one got through somehow, it should have been filtered
5675 out already. */
5676 internal_error (__FILE__, __LINE__,
5677 _("bpstat_what: tracepoint encountered"));
5678 break;
5679 case bp_gnu_ifunc_resolver:
5680 /* Step over it (and insert bp_gnu_ifunc_resolver_return). */
5681 this_action = BPSTAT_WHAT_SINGLE;
5682 break;
5683 case bp_gnu_ifunc_resolver_return:
5684 /* The breakpoint will be removed, execution will restart from the
5685 PC of the former breakpoint. */
5686 this_action = BPSTAT_WHAT_KEEP_CHECKING;
5687 break;
5688
5689 case bp_dprintf:
5690 if (bs->stop)
5691 this_action = BPSTAT_WHAT_STOP_SILENT;
5692 else
5693 this_action = BPSTAT_WHAT_SINGLE;
5694 break;
5695
5696 default:
5697 internal_error (__FILE__, __LINE__,
5698 _("bpstat_what: unhandled bptype %d"), (int) bptype);
5699 }
5700
5701 retval.main_action = std::max (retval.main_action, this_action);
5702 }
5703
5704 return retval;
5705 }
5706
5707 void
5708 bpstat_run_callbacks (bpstat bs_head)
5709 {
5710 bpstat bs;
5711
5712 for (bs = bs_head; bs != NULL; bs = bs->next)
5713 {
5714 struct breakpoint *b = bs->breakpoint_at;
5715
5716 if (b == NULL)
5717 continue;
5718 switch (b->type)
5719 {
5720 case bp_jit_event:
5721 handle_jit_event ();
5722 break;
5723 case bp_gnu_ifunc_resolver:
5724 gnu_ifunc_resolver_stop (b);
5725 break;
5726 case bp_gnu_ifunc_resolver_return:
5727 gnu_ifunc_resolver_return_stop (b);
5728 break;
5729 }
5730 }
5731 }
5732
5733 /* Nonzero if we should step constantly (e.g. watchpoints on machines
5734 without hardware support). This isn't related to a specific bpstat,
5735 just to things like whether watchpoints are set. */
5736
5737 int
5738 bpstat_should_step (void)
5739 {
5740 struct breakpoint *b;
5741
5742 ALL_BREAKPOINTS (b)
5743 if (breakpoint_enabled (b) && b->type == bp_watchpoint && b->loc != NULL)
5744 return 1;
5745 return 0;
5746 }
5747
5748 int
5749 bpstat_causes_stop (bpstat bs)
5750 {
5751 for (; bs != NULL; bs = bs->next)
5752 if (bs->stop)
5753 return 1;
5754
5755 return 0;
5756 }
5757
5758 \f
5759
5760 /* Compute a string of spaces suitable to indent the next line
5761 so it starts at the position corresponding to the table column
5762 named COL_NAME in the currently active table of UIOUT. */
5763
5764 static char *
5765 wrap_indent_at_field (struct ui_out *uiout, const char *col_name)
5766 {
5767 static char wrap_indent[80];
5768 int i, total_width, width, align;
5769 const char *text;
5770
5771 total_width = 0;
5772 for (i = 1; uiout->query_table_field (i, &width, &align, &text); i++)
5773 {
5774 if (strcmp (text, col_name) == 0)
5775 {
5776 gdb_assert (total_width < sizeof wrap_indent);
5777 memset (wrap_indent, ' ', total_width);
5778 wrap_indent[total_width] = 0;
5779
5780 return wrap_indent;
5781 }
5782
5783 total_width += width + 1;
5784 }
5785
5786 return NULL;
5787 }
5788
5789 /* Determine if the locations of this breakpoint will have their conditions
5790 evaluated by the target, host or a mix of both. Returns the following:
5791
5792 "host": Host evals condition.
5793 "host or target": Host or Target evals condition.
5794 "target": Target evals condition.
5795 */
5796
5797 static const char *
5798 bp_condition_evaluator (struct breakpoint *b)
5799 {
5800 struct bp_location *bl;
5801 char host_evals = 0;
5802 char target_evals = 0;
5803
5804 if (!b)
5805 return NULL;
5806
5807 if (!is_breakpoint (b))
5808 return NULL;
5809
5810 if (gdb_evaluates_breakpoint_condition_p ()
5811 || !target_supports_evaluation_of_breakpoint_conditions ())
5812 return condition_evaluation_host;
5813
5814 for (bl = b->loc; bl; bl = bl->next)
5815 {
5816 if (bl->cond_bytecode)
5817 target_evals++;
5818 else
5819 host_evals++;
5820 }
5821
5822 if (host_evals && target_evals)
5823 return condition_evaluation_both;
5824 else if (target_evals)
5825 return condition_evaluation_target;
5826 else
5827 return condition_evaluation_host;
5828 }
5829
5830 /* Determine the breakpoint location's condition evaluator. This is
5831 similar to bp_condition_evaluator, but for locations. */
5832
5833 static const char *
5834 bp_location_condition_evaluator (struct bp_location *bl)
5835 {
5836 if (bl && !is_breakpoint (bl->owner))
5837 return NULL;
5838
5839 if (gdb_evaluates_breakpoint_condition_p ()
5840 || !target_supports_evaluation_of_breakpoint_conditions ())
5841 return condition_evaluation_host;
5842
5843 if (bl && bl->cond_bytecode)
5844 return condition_evaluation_target;
5845 else
5846 return condition_evaluation_host;
5847 }
5848
5849 /* Print the LOC location out of the list of B->LOC locations. */
5850
5851 static void
5852 print_breakpoint_location (struct breakpoint *b,
5853 struct bp_location *loc)
5854 {
5855 struct ui_out *uiout = current_uiout;
5856
5857 scoped_restore_current_program_space restore_pspace;
5858
5859 if (loc != NULL && loc->shlib_disabled)
5860 loc = NULL;
5861
5862 if (loc != NULL)
5863 set_current_program_space (loc->pspace);
5864
5865 if (b->display_canonical)
5866 uiout->field_string ("what", event_location_to_string (b->location.get ()));
5867 else if (loc && loc->symtab)
5868 {
5869 const struct symbol *sym = loc->symbol;
5870
5871 if (sym == NULL)
5872 sym = find_pc_sect_function (loc->address, loc->section);
5873
5874 if (sym)
5875 {
5876 uiout->text ("in ");
5877 uiout->field_string ("func", SYMBOL_PRINT_NAME (sym));
5878 uiout->text (" ");
5879 uiout->wrap_hint (wrap_indent_at_field (uiout, "what"));
5880 uiout->text ("at ");
5881 }
5882 uiout->field_string ("file",
5883 symtab_to_filename_for_display (loc->symtab));
5884 uiout->text (":");
5885
5886 if (uiout->is_mi_like_p ())
5887 uiout->field_string ("fullname", symtab_to_fullname (loc->symtab));
5888
5889 uiout->field_int ("line", loc->line_number);
5890 }
5891 else if (loc)
5892 {
5893 string_file stb;
5894
5895 print_address_symbolic (loc->gdbarch, loc->address, &stb,
5896 demangle, "");
5897 uiout->field_stream ("at", stb);
5898 }
5899 else
5900 {
5901 uiout->field_string ("pending",
5902 event_location_to_string (b->location.get ()));
5903 /* If extra_string is available, it could be holding a condition
5904 or dprintf arguments. In either case, make sure it is printed,
5905 too, but only for non-MI streams. */
5906 if (!uiout->is_mi_like_p () && b->extra_string != NULL)
5907 {
5908 if (b->type == bp_dprintf)
5909 uiout->text (",");
5910 else
5911 uiout->text (" ");
5912 uiout->text (b->extra_string);
5913 }
5914 }
5915
5916 if (loc && is_breakpoint (b)
5917 && breakpoint_condition_evaluation_mode () == condition_evaluation_target
5918 && bp_condition_evaluator (b) == condition_evaluation_both)
5919 {
5920 uiout->text (" (");
5921 uiout->field_string ("evaluated-by",
5922 bp_location_condition_evaluator (loc));
5923 uiout->text (")");
5924 }
5925 }
5926
5927 static const char *
5928 bptype_string (enum bptype type)
5929 {
5930 struct ep_type_description
5931 {
5932 enum bptype type;
5933 const char *description;
5934 };
5935 static struct ep_type_description bptypes[] =
5936 {
5937 {bp_none, "?deleted?"},
5938 {bp_breakpoint, "breakpoint"},
5939 {bp_hardware_breakpoint, "hw breakpoint"},
5940 {bp_single_step, "sw single-step"},
5941 {bp_until, "until"},
5942 {bp_finish, "finish"},
5943 {bp_watchpoint, "watchpoint"},
5944 {bp_hardware_watchpoint, "hw watchpoint"},
5945 {bp_read_watchpoint, "read watchpoint"},
5946 {bp_access_watchpoint, "acc watchpoint"},
5947 {bp_longjmp, "longjmp"},
5948 {bp_longjmp_resume, "longjmp resume"},
5949 {bp_longjmp_call_dummy, "longjmp for call dummy"},
5950 {bp_exception, "exception"},
5951 {bp_exception_resume, "exception resume"},
5952 {bp_step_resume, "step resume"},
5953 {bp_hp_step_resume, "high-priority step resume"},
5954 {bp_watchpoint_scope, "watchpoint scope"},
5955 {bp_call_dummy, "call dummy"},
5956 {bp_std_terminate, "std::terminate"},
5957 {bp_shlib_event, "shlib events"},
5958 {bp_thread_event, "thread events"},
5959 {bp_overlay_event, "overlay events"},
5960 {bp_longjmp_master, "longjmp master"},
5961 {bp_std_terminate_master, "std::terminate master"},
5962 {bp_exception_master, "exception master"},
5963 {bp_catchpoint, "catchpoint"},
5964 {bp_tracepoint, "tracepoint"},
5965 {bp_fast_tracepoint, "fast tracepoint"},
5966 {bp_static_tracepoint, "static tracepoint"},
5967 {bp_dprintf, "dprintf"},
5968 {bp_jit_event, "jit events"},
5969 {bp_gnu_ifunc_resolver, "STT_GNU_IFUNC resolver"},
5970 {bp_gnu_ifunc_resolver_return, "STT_GNU_IFUNC resolver return"},
5971 };
5972
5973 if (((int) type >= (sizeof (bptypes) / sizeof (bptypes[0])))
5974 || ((int) type != bptypes[(int) type].type))
5975 internal_error (__FILE__, __LINE__,
5976 _("bptypes table does not describe type #%d."),
5977 (int) type);
5978
5979 return bptypes[(int) type].description;
5980 }
5981
5982 /* For MI, output a field named 'thread-groups' with a list as the value.
5983 For CLI, prefix the list with the string 'inf'. */
5984
5985 static void
5986 output_thread_groups (struct ui_out *uiout,
5987 const char *field_name,
5988 const std::vector<int> &inf_nums,
5989 int mi_only)
5990 {
5991 int is_mi = uiout->is_mi_like_p ();
5992
5993 /* For backward compatibility, don't display inferiors in CLI unless
5994 there are several. Always display them for MI. */
5995 if (!is_mi && mi_only)
5996 return;
5997
5998 ui_out_emit_list list_emitter (uiout, field_name);
5999
6000 for (size_t i = 0; i < inf_nums.size (); i++)
6001 {
6002 if (is_mi)
6003 {
6004 char mi_group[10];
6005
6006 xsnprintf (mi_group, sizeof (mi_group), "i%d", inf_nums[i]);
6007 uiout->field_string (NULL, mi_group);
6008 }
6009 else
6010 {
6011 if (i == 0)
6012 uiout->text (" inf ");
6013 else
6014 uiout->text (", ");
6015
6016 uiout->text (plongest (inf_nums[i]));
6017 }
6018 }
6019 }
6020
6021 /* Print B to gdb_stdout. */
6022
6023 static void
6024 print_one_breakpoint_location (struct breakpoint *b,
6025 struct bp_location *loc,
6026 int loc_number,
6027 struct bp_location **last_loc,
6028 int allflag)
6029 {
6030 struct command_line *l;
6031 static char bpenables[] = "nynny";
6032
6033 struct ui_out *uiout = current_uiout;
6034 int header_of_multiple = 0;
6035 int part_of_multiple = (loc != NULL);
6036 struct value_print_options opts;
6037
6038 get_user_print_options (&opts);
6039
6040 gdb_assert (!loc || loc_number != 0);
6041 /* See comment in print_one_breakpoint concerning treatment of
6042 breakpoints with single disabled location. */
6043 if (loc == NULL
6044 && (b->loc != NULL
6045 && (b->loc->next != NULL || !b->loc->enabled)))
6046 header_of_multiple = 1;
6047 if (loc == NULL)
6048 loc = b->loc;
6049
6050 annotate_record ();
6051
6052 /* 1 */
6053 annotate_field (0);
6054 if (part_of_multiple)
6055 {
6056 char *formatted;
6057 formatted = xstrprintf ("%d.%d", b->number, loc_number);
6058 uiout->field_string ("number", formatted);
6059 xfree (formatted);
6060 }
6061 else
6062 {
6063 uiout->field_int ("number", b->number);
6064 }
6065
6066 /* 2 */
6067 annotate_field (1);
6068 if (part_of_multiple)
6069 uiout->field_skip ("type");
6070 else
6071 uiout->field_string ("type", bptype_string (b->type));
6072
6073 /* 3 */
6074 annotate_field (2);
6075 if (part_of_multiple)
6076 uiout->field_skip ("disp");
6077 else
6078 uiout->field_string ("disp", bpdisp_text (b->disposition));
6079
6080
6081 /* 4 */
6082 annotate_field (3);
6083 if (part_of_multiple)
6084 uiout->field_string ("enabled", loc->enabled ? "y" : "n");
6085 else
6086 uiout->field_fmt ("enabled", "%c", bpenables[(int) b->enable_state]);
6087 uiout->spaces (2);
6088
6089
6090 /* 5 and 6 */
6091 if (b->ops != NULL && b->ops->print_one != NULL)
6092 {
6093 /* Although the print_one can possibly print all locations,
6094 calling it here is not likely to get any nice result. So,
6095 make sure there's just one location. */
6096 gdb_assert (b->loc == NULL || b->loc->next == NULL);
6097 b->ops->print_one (b, last_loc);
6098 }
6099 else
6100 switch (b->type)
6101 {
6102 case bp_none:
6103 internal_error (__FILE__, __LINE__,
6104 _("print_one_breakpoint: bp_none encountered\n"));
6105 break;
6106
6107 case bp_watchpoint:
6108 case bp_hardware_watchpoint:
6109 case bp_read_watchpoint:
6110 case bp_access_watchpoint:
6111 {
6112 struct watchpoint *w = (struct watchpoint *) b;
6113
6114 /* Field 4, the address, is omitted (which makes the columns
6115 not line up too nicely with the headers, but the effect
6116 is relatively readable). */
6117 if (opts.addressprint)
6118 uiout->field_skip ("addr");
6119 annotate_field (5);
6120 uiout->field_string ("what", w->exp_string);
6121 }
6122 break;
6123
6124 case bp_breakpoint:
6125 case bp_hardware_breakpoint:
6126 case bp_single_step:
6127 case bp_until:
6128 case bp_finish:
6129 case bp_longjmp:
6130 case bp_longjmp_resume:
6131 case bp_longjmp_call_dummy:
6132 case bp_exception:
6133 case bp_exception_resume:
6134 case bp_step_resume:
6135 case bp_hp_step_resume:
6136 case bp_watchpoint_scope:
6137 case bp_call_dummy:
6138 case bp_std_terminate:
6139 case bp_shlib_event:
6140 case bp_thread_event:
6141 case bp_overlay_event:
6142 case bp_longjmp_master:
6143 case bp_std_terminate_master:
6144 case bp_exception_master:
6145 case bp_tracepoint:
6146 case bp_fast_tracepoint:
6147 case bp_static_tracepoint:
6148 case bp_dprintf:
6149 case bp_jit_event:
6150 case bp_gnu_ifunc_resolver:
6151 case bp_gnu_ifunc_resolver_return:
6152 if (opts.addressprint)
6153 {
6154 annotate_field (4);
6155 if (header_of_multiple)
6156 uiout->field_string ("addr", "<MULTIPLE>");
6157 else if (b->loc == NULL || loc->shlib_disabled)
6158 uiout->field_string ("addr", "<PENDING>");
6159 else
6160 uiout->field_core_addr ("addr",
6161 loc->gdbarch, loc->address);
6162 }
6163 annotate_field (5);
6164 if (!header_of_multiple)
6165 print_breakpoint_location (b, loc);
6166 if (b->loc)
6167 *last_loc = b->loc;
6168 break;
6169 }
6170
6171
6172 if (loc != NULL && !header_of_multiple)
6173 {
6174 struct inferior *inf;
6175 std::vector<int> inf_nums;
6176 int mi_only = 1;
6177
6178 ALL_INFERIORS (inf)
6179 {
6180 if (inf->pspace == loc->pspace)
6181 inf_nums.push_back (inf->num);
6182 }
6183
6184 /* For backward compatibility, don't display inferiors in CLI unless
6185 there are several. Always display for MI. */
6186 if (allflag
6187 || (!gdbarch_has_global_breakpoints (target_gdbarch ())
6188 && (number_of_program_spaces () > 1
6189 || number_of_inferiors () > 1)
6190 /* LOC is for existing B, it cannot be in
6191 moribund_locations and thus having NULL OWNER. */
6192 && loc->owner->type != bp_catchpoint))
6193 mi_only = 0;
6194 output_thread_groups (uiout, "thread-groups", inf_nums, mi_only);
6195 }
6196
6197 if (!part_of_multiple)
6198 {
6199 if (b->thread != -1)
6200 {
6201 /* FIXME: This seems to be redundant and lost here; see the
6202 "stop only in" line a little further down. */
6203 uiout->text (" thread ");
6204 uiout->field_int ("thread", b->thread);
6205 }
6206 else if (b->task != 0)
6207 {
6208 uiout->text (" task ");
6209 uiout->field_int ("task", b->task);
6210 }
6211 }
6212
6213 uiout->text ("\n");
6214
6215 if (!part_of_multiple)
6216 b->ops->print_one_detail (b, uiout);
6217
6218 if (part_of_multiple && frame_id_p (b->frame_id))
6219 {
6220 annotate_field (6);
6221 uiout->text ("\tstop only in stack frame at ");
6222 /* FIXME: cagney/2002-12-01: Shouldn't be poking around inside
6223 the frame ID. */
6224 uiout->field_core_addr ("frame",
6225 b->gdbarch, b->frame_id.stack_addr);
6226 uiout->text ("\n");
6227 }
6228
6229 if (!part_of_multiple && b->cond_string)
6230 {
6231 annotate_field (7);
6232 if (is_tracepoint (b))
6233 uiout->text ("\ttrace only if ");
6234 else
6235 uiout->text ("\tstop only if ");
6236 uiout->field_string ("cond", b->cond_string);
6237
6238 /* Print whether the target is doing the breakpoint's condition
6239 evaluation. If GDB is doing the evaluation, don't print anything. */
6240 if (is_breakpoint (b)
6241 && breakpoint_condition_evaluation_mode ()
6242 == condition_evaluation_target)
6243 {
6244 uiout->text (" (");
6245 uiout->field_string ("evaluated-by",
6246 bp_condition_evaluator (b));
6247 uiout->text (" evals)");
6248 }
6249 uiout->text ("\n");
6250 }
6251
6252 if (!part_of_multiple && b->thread != -1)
6253 {
6254 /* FIXME should make an annotation for this. */
6255 uiout->text ("\tstop only in thread ");
6256 if (uiout->is_mi_like_p ())
6257 uiout->field_int ("thread", b->thread);
6258 else
6259 {
6260 struct thread_info *thr = find_thread_global_id (b->thread);
6261
6262 uiout->field_string ("thread", print_thread_id (thr));
6263 }
6264 uiout->text ("\n");
6265 }
6266
6267 if (!part_of_multiple)
6268 {
6269 if (b->hit_count)
6270 {
6271 /* FIXME should make an annotation for this. */
6272 if (is_catchpoint (b))
6273 uiout->text ("\tcatchpoint");
6274 else if (is_tracepoint (b))
6275 uiout->text ("\ttracepoint");
6276 else
6277 uiout->text ("\tbreakpoint");
6278 uiout->text (" already hit ");
6279 uiout->field_int ("times", b->hit_count);
6280 if (b->hit_count == 1)
6281 uiout->text (" time\n");
6282 else
6283 uiout->text (" times\n");
6284 }
6285 else
6286 {
6287 /* Output the count also if it is zero, but only if this is mi. */
6288 if (uiout->is_mi_like_p ())
6289 uiout->field_int ("times", b->hit_count);
6290 }
6291 }
6292
6293 if (!part_of_multiple && b->ignore_count)
6294 {
6295 annotate_field (8);
6296 uiout->text ("\tignore next ");
6297 uiout->field_int ("ignore", b->ignore_count);
6298 uiout->text (" hits\n");
6299 }
6300
6301 /* Note that an enable count of 1 corresponds to "enable once"
6302 behavior, which is reported by the combination of enablement and
6303 disposition, so we don't need to mention it here. */
6304 if (!part_of_multiple && b->enable_count > 1)
6305 {
6306 annotate_field (8);
6307 uiout->text ("\tdisable after ");
6308 /* Tweak the wording to clarify that ignore and enable counts
6309 are distinct, and have additive effect. */
6310 if (b->ignore_count)
6311 uiout->text ("additional ");
6312 else
6313 uiout->text ("next ");
6314 uiout->field_int ("enable", b->enable_count);
6315 uiout->text (" hits\n");
6316 }
6317
6318 if (!part_of_multiple && is_tracepoint (b))
6319 {
6320 struct tracepoint *tp = (struct tracepoint *) b;
6321
6322 if (tp->traceframe_usage)
6323 {
6324 uiout->text ("\ttrace buffer usage ");
6325 uiout->field_int ("traceframe-usage", tp->traceframe_usage);
6326 uiout->text (" bytes\n");
6327 }
6328 }
6329
6330 l = b->commands ? b->commands.get () : NULL;
6331 if (!part_of_multiple && l)
6332 {
6333 annotate_field (9);
6334 ui_out_emit_tuple tuple_emitter (uiout, "script");
6335 print_command_lines (uiout, l, 4);
6336 }
6337
6338 if (is_tracepoint (b))
6339 {
6340 struct tracepoint *t = (struct tracepoint *) b;
6341
6342 if (!part_of_multiple && t->pass_count)
6343 {
6344 annotate_field (10);
6345 uiout->text ("\tpass count ");
6346 uiout->field_int ("pass", t->pass_count);
6347 uiout->text (" \n");
6348 }
6349
6350 /* Don't display it when tracepoint or tracepoint location is
6351 pending. */
6352 if (!header_of_multiple && loc != NULL && !loc->shlib_disabled)
6353 {
6354 annotate_field (11);
6355
6356 if (uiout->is_mi_like_p ())
6357 uiout->field_string ("installed",
6358 loc->inserted ? "y" : "n");
6359 else
6360 {
6361 if (loc->inserted)
6362 uiout->text ("\t");
6363 else
6364 uiout->text ("\tnot ");
6365 uiout->text ("installed on target\n");
6366 }
6367 }
6368 }
6369
6370 if (uiout->is_mi_like_p () && !part_of_multiple)
6371 {
6372 if (is_watchpoint (b))
6373 {
6374 struct watchpoint *w = (struct watchpoint *) b;
6375
6376 uiout->field_string ("original-location", w->exp_string);
6377 }
6378 else if (b->location != NULL
6379 && event_location_to_string (b->location.get ()) != NULL)
6380 uiout->field_string ("original-location",
6381 event_location_to_string (b->location.get ()));
6382 }
6383 }
6384
6385 static void
6386 print_one_breakpoint (struct breakpoint *b,
6387 struct bp_location **last_loc,
6388 int allflag)
6389 {
6390 struct ui_out *uiout = current_uiout;
6391
6392 {
6393 ui_out_emit_tuple tuple_emitter (uiout, "bkpt");
6394
6395 print_one_breakpoint_location (b, NULL, 0, last_loc, allflag);
6396 }
6397
6398 /* If this breakpoint has custom print function,
6399 it's already printed. Otherwise, print individual
6400 locations, if any. */
6401 if (b->ops == NULL || b->ops->print_one == NULL)
6402 {
6403 /* If breakpoint has a single location that is disabled, we
6404 print it as if it had several locations, since otherwise it's
6405 hard to represent "breakpoint enabled, location disabled"
6406 situation.
6407
6408 Note that while hardware watchpoints have several locations
6409 internally, that's not a property exposed to user. */
6410 if (b->loc
6411 && !is_hardware_watchpoint (b)
6412 && (b->loc->next || !b->loc->enabled))
6413 {
6414 struct bp_location *loc;
6415 int n = 1;
6416
6417 for (loc = b->loc; loc; loc = loc->next, ++n)
6418 {
6419 ui_out_emit_tuple tuple_emitter (uiout, NULL);
6420 print_one_breakpoint_location (b, loc, n, last_loc, allflag);
6421 }
6422 }
6423 }
6424 }
6425
6426 static int
6427 breakpoint_address_bits (struct breakpoint *b)
6428 {
6429 int print_address_bits = 0;
6430 struct bp_location *loc;
6431
6432 /* Software watchpoints that aren't watching memory don't have an
6433 address to print. */
6434 if (is_no_memory_software_watchpoint (b))
6435 return 0;
6436
6437 for (loc = b->loc; loc; loc = loc->next)
6438 {
6439 int addr_bit;
6440
6441 addr_bit = gdbarch_addr_bit (loc->gdbarch);
6442 if (addr_bit > print_address_bits)
6443 print_address_bits = addr_bit;
6444 }
6445
6446 return print_address_bits;
6447 }
6448
6449 /* See breakpoint.h. */
6450
6451 void
6452 print_breakpoint (breakpoint *b)
6453 {
6454 struct bp_location *dummy_loc = NULL;
6455 print_one_breakpoint (b, &dummy_loc, 0);
6456 }
6457
6458 /* Return true if this breakpoint was set by the user, false if it is
6459 internal or momentary. */
6460
6461 int
6462 user_breakpoint_p (struct breakpoint *b)
6463 {
6464 return b->number > 0;
6465 }
6466
6467 /* See breakpoint.h. */
6468
6469 int
6470 pending_breakpoint_p (struct breakpoint *b)
6471 {
6472 return b->loc == NULL;
6473 }
6474
6475 /* Print information on user settable breakpoint (watchpoint, etc)
6476 number BNUM. If BNUM is -1 print all user-settable breakpoints.
6477 If ALLFLAG is non-zero, include non-user-settable breakpoints. If
6478 FILTER is non-NULL, call it on each breakpoint and only include the
6479 ones for which it returns non-zero. Return the total number of
6480 breakpoints listed. */
6481
6482 static int
6483 breakpoint_1 (const char *args, int allflag,
6484 int (*filter) (const struct breakpoint *))
6485 {
6486 struct breakpoint *b;
6487 struct bp_location *last_loc = NULL;
6488 int nr_printable_breakpoints;
6489 struct value_print_options opts;
6490 int print_address_bits = 0;
6491 int print_type_col_width = 14;
6492 struct ui_out *uiout = current_uiout;
6493
6494 get_user_print_options (&opts);
6495
6496 /* Compute the number of rows in the table, as well as the size
6497 required for address fields. */
6498 nr_printable_breakpoints = 0;
6499 ALL_BREAKPOINTS (b)
6500 {
6501 /* If we have a filter, only list the breakpoints it accepts. */
6502 if (filter && !filter (b))
6503 continue;
6504
6505 /* If we have an "args" string, it is a list of breakpoints to
6506 accept. Skip the others. */
6507 if (args != NULL && *args != '\0')
6508 {
6509 if (allflag && parse_and_eval_long (args) != b->number)
6510 continue;
6511 if (!allflag && !number_is_in_list (args, b->number))
6512 continue;
6513 }
6514
6515 if (allflag || user_breakpoint_p (b))
6516 {
6517 int addr_bit, type_len;
6518
6519 addr_bit = breakpoint_address_bits (b);
6520 if (addr_bit > print_address_bits)
6521 print_address_bits = addr_bit;
6522
6523 type_len = strlen (bptype_string (b->type));
6524 if (type_len > print_type_col_width)
6525 print_type_col_width = type_len;
6526
6527 nr_printable_breakpoints++;
6528 }
6529 }
6530
6531 {
6532 ui_out_emit_table table_emitter (uiout,
6533 opts.addressprint ? 6 : 5,
6534 nr_printable_breakpoints,
6535 "BreakpointTable");
6536
6537 if (nr_printable_breakpoints > 0)
6538 annotate_breakpoints_headers ();
6539 if (nr_printable_breakpoints > 0)
6540 annotate_field (0);
6541 uiout->table_header (7, ui_left, "number", "Num"); /* 1 */
6542 if (nr_printable_breakpoints > 0)
6543 annotate_field (1);
6544 uiout->table_header (print_type_col_width, ui_left, "type", "Type"); /* 2 */
6545 if (nr_printable_breakpoints > 0)
6546 annotate_field (2);
6547 uiout->table_header (4, ui_left, "disp", "Disp"); /* 3 */
6548 if (nr_printable_breakpoints > 0)
6549 annotate_field (3);
6550 uiout->table_header (3, ui_left, "enabled", "Enb"); /* 4 */
6551 if (opts.addressprint)
6552 {
6553 if (nr_printable_breakpoints > 0)
6554 annotate_field (4);
6555 if (print_address_bits <= 32)
6556 uiout->table_header (10, ui_left, "addr", "Address"); /* 5 */
6557 else
6558 uiout->table_header (18, ui_left, "addr", "Address"); /* 5 */
6559 }
6560 if (nr_printable_breakpoints > 0)
6561 annotate_field (5);
6562 uiout->table_header (40, ui_noalign, "what", "What"); /* 6 */
6563 uiout->table_body ();
6564 if (nr_printable_breakpoints > 0)
6565 annotate_breakpoints_table ();
6566
6567 ALL_BREAKPOINTS (b)
6568 {
6569 QUIT;
6570 /* If we have a filter, only list the breakpoints it accepts. */
6571 if (filter && !filter (b))
6572 continue;
6573
6574 /* If we have an "args" string, it is a list of breakpoints to
6575 accept. Skip the others. */
6576
6577 if (args != NULL && *args != '\0')
6578 {
6579 if (allflag) /* maintenance info breakpoint */
6580 {
6581 if (parse_and_eval_long (args) != b->number)
6582 continue;
6583 }
6584 else /* all others */
6585 {
6586 if (!number_is_in_list (args, b->number))
6587 continue;
6588 }
6589 }
6590 /* We only print out user settable breakpoints unless the
6591 allflag is set. */
6592 if (allflag || user_breakpoint_p (b))
6593 print_one_breakpoint (b, &last_loc, allflag);
6594 }
6595 }
6596
6597 if (nr_printable_breakpoints == 0)
6598 {
6599 /* If there's a filter, let the caller decide how to report
6600 empty list. */
6601 if (!filter)
6602 {
6603 if (args == NULL || *args == '\0')
6604 uiout->message ("No breakpoints or watchpoints.\n");
6605 else
6606 uiout->message ("No breakpoint or watchpoint matching '%s'.\n",
6607 args);
6608 }
6609 }
6610 else
6611 {
6612 if (last_loc && !server_command)
6613 set_next_address (last_loc->gdbarch, last_loc->address);
6614 }
6615
6616 /* FIXME? Should this be moved up so that it is only called when
6617 there have been breakpoints? */
6618 annotate_breakpoints_table_end ();
6619
6620 return nr_printable_breakpoints;
6621 }
6622
6623 /* Display the value of default-collect in a way that is generally
6624 compatible with the breakpoint list. */
6625
6626 static void
6627 default_collect_info (void)
6628 {
6629 struct ui_out *uiout = current_uiout;
6630
6631 /* If it has no value (which is frequently the case), say nothing; a
6632 message like "No default-collect." gets in user's face when it's
6633 not wanted. */
6634 if (!*default_collect)
6635 return;
6636
6637 /* The following phrase lines up nicely with per-tracepoint collect
6638 actions. */
6639 uiout->text ("default collect ");
6640 uiout->field_string ("default-collect", default_collect);
6641 uiout->text (" \n");
6642 }
6643
6644 static void
6645 info_breakpoints_command (const char *args, int from_tty)
6646 {
6647 breakpoint_1 (args, 0, NULL);
6648
6649 default_collect_info ();
6650 }
6651
6652 static void
6653 info_watchpoints_command (const char *args, int from_tty)
6654 {
6655 int num_printed = breakpoint_1 (args, 0, is_watchpoint);
6656 struct ui_out *uiout = current_uiout;
6657
6658 if (num_printed == 0)
6659 {
6660 if (args == NULL || *args == '\0')
6661 uiout->message ("No watchpoints.\n");
6662 else
6663 uiout->message ("No watchpoint matching '%s'.\n", args);
6664 }
6665 }
6666
6667 static void
6668 maintenance_info_breakpoints (const char *args, int from_tty)
6669 {
6670 breakpoint_1 (args, 1, NULL);
6671
6672 default_collect_info ();
6673 }
6674
6675 static int
6676 breakpoint_has_pc (struct breakpoint *b,
6677 struct program_space *pspace,
6678 CORE_ADDR pc, struct obj_section *section)
6679 {
6680 struct bp_location *bl = b->loc;
6681
6682 for (; bl; bl = bl->next)
6683 {
6684 if (bl->pspace == pspace
6685 && bl->address == pc
6686 && (!overlay_debugging || bl->section == section))
6687 return 1;
6688 }
6689 return 0;
6690 }
6691
6692 /* Print a message describing any user-breakpoints set at PC. This
6693 concerns with logical breakpoints, so we match program spaces, not
6694 address spaces. */
6695
6696 static void
6697 describe_other_breakpoints (struct gdbarch *gdbarch,
6698 struct program_space *pspace, CORE_ADDR pc,
6699 struct obj_section *section, int thread)
6700 {
6701 int others = 0;
6702 struct breakpoint *b;
6703
6704 ALL_BREAKPOINTS (b)
6705 others += (user_breakpoint_p (b)
6706 && breakpoint_has_pc (b, pspace, pc, section));
6707 if (others > 0)
6708 {
6709 if (others == 1)
6710 printf_filtered (_("Note: breakpoint "));
6711 else /* if (others == ???) */
6712 printf_filtered (_("Note: breakpoints "));
6713 ALL_BREAKPOINTS (b)
6714 if (user_breakpoint_p (b) && breakpoint_has_pc (b, pspace, pc, section))
6715 {
6716 others--;
6717 printf_filtered ("%d", b->number);
6718 if (b->thread == -1 && thread != -1)
6719 printf_filtered (" (all threads)");
6720 else if (b->thread != -1)
6721 printf_filtered (" (thread %d)", b->thread);
6722 printf_filtered ("%s%s ",
6723 ((b->enable_state == bp_disabled
6724 || b->enable_state == bp_call_disabled)
6725 ? " (disabled)"
6726 : ""),
6727 (others > 1) ? ","
6728 : ((others == 1) ? " and" : ""));
6729 }
6730 printf_filtered (_("also set at pc "));
6731 fputs_filtered (paddress (gdbarch, pc), gdb_stdout);
6732 printf_filtered (".\n");
6733 }
6734 }
6735 \f
6736
6737 /* Return true iff it is meaningful to use the address member of
6738 BPT locations. For some breakpoint types, the locations' address members
6739 are irrelevant and it makes no sense to attempt to compare them to other
6740 addresses (or use them for any other purpose either).
6741
6742 More specifically, each of the following breakpoint types will
6743 always have a zero valued location address and we don't want to mark
6744 breakpoints of any of these types to be a duplicate of an actual
6745 breakpoint location at address zero:
6746
6747 bp_watchpoint
6748 bp_catchpoint
6749
6750 */
6751
6752 static int
6753 breakpoint_address_is_meaningful (struct breakpoint *bpt)
6754 {
6755 enum bptype type = bpt->type;
6756
6757 return (type != bp_watchpoint && type != bp_catchpoint);
6758 }
6759
6760 /* Assuming LOC1 and LOC2's owners are hardware watchpoints, returns
6761 true if LOC1 and LOC2 represent the same watchpoint location. */
6762
6763 static int
6764 watchpoint_locations_match (struct bp_location *loc1,
6765 struct bp_location *loc2)
6766 {
6767 struct watchpoint *w1 = (struct watchpoint *) loc1->owner;
6768 struct watchpoint *w2 = (struct watchpoint *) loc2->owner;
6769
6770 /* Both of them must exist. */
6771 gdb_assert (w1 != NULL);
6772 gdb_assert (w2 != NULL);
6773
6774 /* If the target can evaluate the condition expression in hardware,
6775 then we we need to insert both watchpoints even if they are at
6776 the same place. Otherwise the watchpoint will only trigger when
6777 the condition of whichever watchpoint was inserted evaluates to
6778 true, not giving a chance for GDB to check the condition of the
6779 other watchpoint. */
6780 if ((w1->cond_exp
6781 && target_can_accel_watchpoint_condition (loc1->address,
6782 loc1->length,
6783 loc1->watchpoint_type,
6784 w1->cond_exp.get ()))
6785 || (w2->cond_exp
6786 && target_can_accel_watchpoint_condition (loc2->address,
6787 loc2->length,
6788 loc2->watchpoint_type,
6789 w2->cond_exp.get ())))
6790 return 0;
6791
6792 /* Note that this checks the owner's type, not the location's. In
6793 case the target does not support read watchpoints, but does
6794 support access watchpoints, we'll have bp_read_watchpoint
6795 watchpoints with hw_access locations. Those should be considered
6796 duplicates of hw_read locations. The hw_read locations will
6797 become hw_access locations later. */
6798 return (loc1->owner->type == loc2->owner->type
6799 && loc1->pspace->aspace == loc2->pspace->aspace
6800 && loc1->address == loc2->address
6801 && loc1->length == loc2->length);
6802 }
6803
6804 /* See breakpoint.h. */
6805
6806 int
6807 breakpoint_address_match (const address_space *aspace1, CORE_ADDR addr1,
6808 const address_space *aspace2, CORE_ADDR addr2)
6809 {
6810 return ((gdbarch_has_global_breakpoints (target_gdbarch ())
6811 || aspace1 == aspace2)
6812 && addr1 == addr2);
6813 }
6814
6815 /* Returns true if {ASPACE2,ADDR2} falls within the range determined by
6816 {ASPACE1,ADDR1,LEN1}. In most targets, this can only be true if ASPACE1
6817 matches ASPACE2. On targets that have global breakpoints, the address
6818 space doesn't really matter. */
6819
6820 static int
6821 breakpoint_address_match_range (const address_space *aspace1,
6822 CORE_ADDR addr1,
6823 int len1, const address_space *aspace2,
6824 CORE_ADDR addr2)
6825 {
6826 return ((gdbarch_has_global_breakpoints (target_gdbarch ())
6827 || aspace1 == aspace2)
6828 && addr2 >= addr1 && addr2 < addr1 + len1);
6829 }
6830
6831 /* Returns true if {ASPACE,ADDR} matches the breakpoint BL. BL may be
6832 a ranged breakpoint. In most targets, a match happens only if ASPACE
6833 matches the breakpoint's address space. On targets that have global
6834 breakpoints, the address space doesn't really matter. */
6835
6836 static int
6837 breakpoint_location_address_match (struct bp_location *bl,
6838 const address_space *aspace,
6839 CORE_ADDR addr)
6840 {
6841 return (breakpoint_address_match (bl->pspace->aspace, bl->address,
6842 aspace, addr)
6843 || (bl->length
6844 && breakpoint_address_match_range (bl->pspace->aspace,
6845 bl->address, bl->length,
6846 aspace, addr)));
6847 }
6848
6849 /* Returns true if the [ADDR,ADDR+LEN) range in ASPACE overlaps
6850 breakpoint BL. BL may be a ranged breakpoint. In most targets, a
6851 match happens only if ASPACE matches the breakpoint's address
6852 space. On targets that have global breakpoints, the address space
6853 doesn't really matter. */
6854
6855 static int
6856 breakpoint_location_address_range_overlap (struct bp_location *bl,
6857 const address_space *aspace,
6858 CORE_ADDR addr, int len)
6859 {
6860 if (gdbarch_has_global_breakpoints (target_gdbarch ())
6861 || bl->pspace->aspace == aspace)
6862 {
6863 int bl_len = bl->length != 0 ? bl->length : 1;
6864
6865 if (mem_ranges_overlap (addr, len, bl->address, bl_len))
6866 return 1;
6867 }
6868 return 0;
6869 }
6870
6871 /* If LOC1 and LOC2's owners are not tracepoints, returns false directly.
6872 Then, if LOC1 and LOC2 represent the same tracepoint location, returns
6873 true, otherwise returns false. */
6874
6875 static int
6876 tracepoint_locations_match (struct bp_location *loc1,
6877 struct bp_location *loc2)
6878 {
6879 if (is_tracepoint (loc1->owner) && is_tracepoint (loc2->owner))
6880 /* Since tracepoint locations are never duplicated with others', tracepoint
6881 locations at the same address of different tracepoints are regarded as
6882 different locations. */
6883 return (loc1->address == loc2->address && loc1->owner == loc2->owner);
6884 else
6885 return 0;
6886 }
6887
6888 /* Assuming LOC1 and LOC2's types' have meaningful target addresses
6889 (breakpoint_address_is_meaningful), returns true if LOC1 and LOC2
6890 represent the same location. */
6891
6892 static int
6893 breakpoint_locations_match (struct bp_location *loc1,
6894 struct bp_location *loc2)
6895 {
6896 int hw_point1, hw_point2;
6897
6898 /* Both of them must not be in moribund_locations. */
6899 gdb_assert (loc1->owner != NULL);
6900 gdb_assert (loc2->owner != NULL);
6901
6902 hw_point1 = is_hardware_watchpoint (loc1->owner);
6903 hw_point2 = is_hardware_watchpoint (loc2->owner);
6904
6905 if (hw_point1 != hw_point2)
6906 return 0;
6907 else if (hw_point1)
6908 return watchpoint_locations_match (loc1, loc2);
6909 else if (is_tracepoint (loc1->owner) || is_tracepoint (loc2->owner))
6910 return tracepoint_locations_match (loc1, loc2);
6911 else
6912 /* We compare bp_location.length in order to cover ranged breakpoints. */
6913 return (breakpoint_address_match (loc1->pspace->aspace, loc1->address,
6914 loc2->pspace->aspace, loc2->address)
6915 && loc1->length == loc2->length);
6916 }
6917
6918 static void
6919 breakpoint_adjustment_warning (CORE_ADDR from_addr, CORE_ADDR to_addr,
6920 int bnum, int have_bnum)
6921 {
6922 /* The longest string possibly returned by hex_string_custom
6923 is 50 chars. These must be at least that big for safety. */
6924 char astr1[64];
6925 char astr2[64];
6926
6927 strcpy (astr1, hex_string_custom ((unsigned long) from_addr, 8));
6928 strcpy (astr2, hex_string_custom ((unsigned long) to_addr, 8));
6929 if (have_bnum)
6930 warning (_("Breakpoint %d address previously adjusted from %s to %s."),
6931 bnum, astr1, astr2);
6932 else
6933 warning (_("Breakpoint address adjusted from %s to %s."), astr1, astr2);
6934 }
6935
6936 /* Adjust a breakpoint's address to account for architectural
6937 constraints on breakpoint placement. Return the adjusted address.
6938 Note: Very few targets require this kind of adjustment. For most
6939 targets, this function is simply the identity function. */
6940
6941 static CORE_ADDR
6942 adjust_breakpoint_address (struct gdbarch *gdbarch,
6943 CORE_ADDR bpaddr, enum bptype bptype)
6944 {
6945 if (bptype == bp_watchpoint
6946 || bptype == bp_hardware_watchpoint
6947 || bptype == bp_read_watchpoint
6948 || bptype == bp_access_watchpoint
6949 || bptype == bp_catchpoint)
6950 {
6951 /* Watchpoints and the various bp_catch_* eventpoints should not
6952 have their addresses modified. */
6953 return bpaddr;
6954 }
6955 else if (bptype == bp_single_step)
6956 {
6957 /* Single-step breakpoints should not have their addresses
6958 modified. If there's any architectural constrain that
6959 applies to this address, then it should have already been
6960 taken into account when the breakpoint was created in the
6961 first place. If we didn't do this, stepping through e.g.,
6962 Thumb-2 IT blocks would break. */
6963 return bpaddr;
6964 }
6965 else
6966 {
6967 CORE_ADDR adjusted_bpaddr = bpaddr;
6968
6969 if (gdbarch_adjust_breakpoint_address_p (gdbarch))
6970 {
6971 /* Some targets have architectural constraints on the placement
6972 of breakpoint instructions. Obtain the adjusted address. */
6973 adjusted_bpaddr = gdbarch_adjust_breakpoint_address (gdbarch, bpaddr);
6974 }
6975
6976 adjusted_bpaddr = address_significant (gdbarch, adjusted_bpaddr);
6977
6978 /* An adjusted breakpoint address can significantly alter
6979 a user's expectations. Print a warning if an adjustment
6980 is required. */
6981 if (adjusted_bpaddr != bpaddr)
6982 breakpoint_adjustment_warning (bpaddr, adjusted_bpaddr, 0, 0);
6983
6984 return adjusted_bpaddr;
6985 }
6986 }
6987
6988 bp_location::bp_location (const bp_location_ops *ops, breakpoint *owner)
6989 {
6990 bp_location *loc = this;
6991
6992 gdb_assert (ops != NULL);
6993
6994 loc->ops = ops;
6995 loc->owner = owner;
6996 loc->cond_bytecode = NULL;
6997 loc->shlib_disabled = 0;
6998 loc->enabled = 1;
6999
7000 switch (owner->type)
7001 {
7002 case bp_breakpoint:
7003 case bp_single_step:
7004 case bp_until:
7005 case bp_finish:
7006 case bp_longjmp:
7007 case bp_longjmp_resume:
7008 case bp_longjmp_call_dummy:
7009 case bp_exception:
7010 case bp_exception_resume:
7011 case bp_step_resume:
7012 case bp_hp_step_resume:
7013 case bp_watchpoint_scope:
7014 case bp_call_dummy:
7015 case bp_std_terminate:
7016 case bp_shlib_event:
7017 case bp_thread_event:
7018 case bp_overlay_event:
7019 case bp_jit_event:
7020 case bp_longjmp_master:
7021 case bp_std_terminate_master:
7022 case bp_exception_master:
7023 case bp_gnu_ifunc_resolver:
7024 case bp_gnu_ifunc_resolver_return:
7025 case bp_dprintf:
7026 loc->loc_type = bp_loc_software_breakpoint;
7027 mark_breakpoint_location_modified (loc);
7028 break;
7029 case bp_hardware_breakpoint:
7030 loc->loc_type = bp_loc_hardware_breakpoint;
7031 mark_breakpoint_location_modified (loc);
7032 break;
7033 case bp_hardware_watchpoint:
7034 case bp_read_watchpoint:
7035 case bp_access_watchpoint:
7036 loc->loc_type = bp_loc_hardware_watchpoint;
7037 break;
7038 case bp_watchpoint:
7039 case bp_catchpoint:
7040 case bp_tracepoint:
7041 case bp_fast_tracepoint:
7042 case bp_static_tracepoint:
7043 loc->loc_type = bp_loc_other;
7044 break;
7045 default:
7046 internal_error (__FILE__, __LINE__, _("unknown breakpoint type"));
7047 }
7048
7049 loc->refc = 1;
7050 }
7051
7052 /* Allocate a struct bp_location. */
7053
7054 static struct bp_location *
7055 allocate_bp_location (struct breakpoint *bpt)
7056 {
7057 return bpt->ops->allocate_location (bpt);
7058 }
7059
7060 static void
7061 free_bp_location (struct bp_location *loc)
7062 {
7063 loc->ops->dtor (loc);
7064 delete loc;
7065 }
7066
7067 /* Increment reference count. */
7068
7069 static void
7070 incref_bp_location (struct bp_location *bl)
7071 {
7072 ++bl->refc;
7073 }
7074
7075 /* Decrement reference count. If the reference count reaches 0,
7076 destroy the bp_location. Sets *BLP to NULL. */
7077
7078 static void
7079 decref_bp_location (struct bp_location **blp)
7080 {
7081 gdb_assert ((*blp)->refc > 0);
7082
7083 if (--(*blp)->refc == 0)
7084 free_bp_location (*blp);
7085 *blp = NULL;
7086 }
7087
7088 /* Add breakpoint B at the end of the global breakpoint chain. */
7089
7090 static breakpoint *
7091 add_to_breakpoint_chain (std::unique_ptr<breakpoint> &&b)
7092 {
7093 struct breakpoint *b1;
7094 struct breakpoint *result = b.get ();
7095
7096 /* Add this breakpoint to the end of the chain so that a list of
7097 breakpoints will come out in order of increasing numbers. */
7098
7099 b1 = breakpoint_chain;
7100 if (b1 == 0)
7101 breakpoint_chain = b.release ();
7102 else
7103 {
7104 while (b1->next)
7105 b1 = b1->next;
7106 b1->next = b.release ();
7107 }
7108
7109 return result;
7110 }
7111
7112 /* Initializes breakpoint B with type BPTYPE and no locations yet. */
7113
7114 static void
7115 init_raw_breakpoint_without_location (struct breakpoint *b,
7116 struct gdbarch *gdbarch,
7117 enum bptype bptype,
7118 const struct breakpoint_ops *ops)
7119 {
7120 gdb_assert (ops != NULL);
7121
7122 b->ops = ops;
7123 b->type = bptype;
7124 b->gdbarch = gdbarch;
7125 b->language = current_language->la_language;
7126 b->input_radix = input_radix;
7127 b->related_breakpoint = b;
7128 }
7129
7130 /* Helper to set_raw_breakpoint below. Creates a breakpoint
7131 that has type BPTYPE and has no locations as yet. */
7132
7133 static struct breakpoint *
7134 set_raw_breakpoint_without_location (struct gdbarch *gdbarch,
7135 enum bptype bptype,
7136 const struct breakpoint_ops *ops)
7137 {
7138 std::unique_ptr<breakpoint> b = new_breakpoint_from_type (bptype);
7139
7140 init_raw_breakpoint_without_location (b.get (), gdbarch, bptype, ops);
7141 return add_to_breakpoint_chain (std::move (b));
7142 }
7143
7144 /* Initialize loc->function_name. EXPLICIT_LOC says no indirect function
7145 resolutions should be made as the user specified the location explicitly
7146 enough. */
7147
7148 static void
7149 set_breakpoint_location_function (struct bp_location *loc, int explicit_loc)
7150 {
7151 gdb_assert (loc->owner != NULL);
7152
7153 if (loc->owner->type == bp_breakpoint
7154 || loc->owner->type == bp_hardware_breakpoint
7155 || is_tracepoint (loc->owner))
7156 {
7157 const char *function_name;
7158
7159 if (loc->msymbol != NULL
7160 && (MSYMBOL_TYPE (loc->msymbol) == mst_text_gnu_ifunc
7161 || MSYMBOL_TYPE (loc->msymbol) == mst_data_gnu_ifunc)
7162 && !explicit_loc)
7163 {
7164 struct breakpoint *b = loc->owner;
7165
7166 function_name = MSYMBOL_LINKAGE_NAME (loc->msymbol);
7167
7168 if (b->type == bp_breakpoint && b->loc == loc
7169 && loc->next == NULL && b->related_breakpoint == b)
7170 {
7171 /* Create only the whole new breakpoint of this type but do not
7172 mess more complicated breakpoints with multiple locations. */
7173 b->type = bp_gnu_ifunc_resolver;
7174 /* Remember the resolver's address for use by the return
7175 breakpoint. */
7176 loc->related_address = loc->address;
7177 }
7178 }
7179 else
7180 find_pc_partial_function (loc->address, &function_name, NULL, NULL);
7181
7182 if (function_name)
7183 loc->function_name = xstrdup (function_name);
7184 }
7185 }
7186
7187 /* Attempt to determine architecture of location identified by SAL. */
7188 struct gdbarch *
7189 get_sal_arch (struct symtab_and_line sal)
7190 {
7191 if (sal.section)
7192 return get_objfile_arch (sal.section->objfile);
7193 if (sal.symtab)
7194 return get_objfile_arch (SYMTAB_OBJFILE (sal.symtab));
7195
7196 return NULL;
7197 }
7198
7199 /* Low level routine for partially initializing a breakpoint of type
7200 BPTYPE. The newly created breakpoint's address, section, source
7201 file name, and line number are provided by SAL.
7202
7203 It is expected that the caller will complete the initialization of
7204 the newly created breakpoint struct as well as output any status
7205 information regarding the creation of a new breakpoint. */
7206
7207 static void
7208 init_raw_breakpoint (struct breakpoint *b, struct gdbarch *gdbarch,
7209 struct symtab_and_line sal, enum bptype bptype,
7210 const struct breakpoint_ops *ops)
7211 {
7212 init_raw_breakpoint_without_location (b, gdbarch, bptype, ops);
7213
7214 add_location_to_breakpoint (b, &sal);
7215
7216 if (bptype != bp_catchpoint)
7217 gdb_assert (sal.pspace != NULL);
7218
7219 /* Store the program space that was used to set the breakpoint,
7220 except for ordinary breakpoints, which are independent of the
7221 program space. */
7222 if (bptype != bp_breakpoint && bptype != bp_hardware_breakpoint)
7223 b->pspace = sal.pspace;
7224 }
7225
7226 /* set_raw_breakpoint is a low level routine for allocating and
7227 partially initializing a breakpoint of type BPTYPE. The newly
7228 created breakpoint's address, section, source file name, and line
7229 number are provided by SAL. The newly created and partially
7230 initialized breakpoint is added to the breakpoint chain and
7231 is also returned as the value of this function.
7232
7233 It is expected that the caller will complete the initialization of
7234 the newly created breakpoint struct as well as output any status
7235 information regarding the creation of a new breakpoint. In
7236 particular, set_raw_breakpoint does NOT set the breakpoint
7237 number! Care should be taken to not allow an error to occur
7238 prior to completing the initialization of the breakpoint. If this
7239 should happen, a bogus breakpoint will be left on the chain. */
7240
7241 struct breakpoint *
7242 set_raw_breakpoint (struct gdbarch *gdbarch,
7243 struct symtab_and_line sal, enum bptype bptype,
7244 const struct breakpoint_ops *ops)
7245 {
7246 std::unique_ptr<breakpoint> b = new_breakpoint_from_type (bptype);
7247
7248 init_raw_breakpoint (b.get (), gdbarch, sal, bptype, ops);
7249 return add_to_breakpoint_chain (std::move (b));
7250 }
7251
7252 /* Call this routine when stepping and nexting to enable a breakpoint
7253 if we do a longjmp() or 'throw' in TP. FRAME is the frame which
7254 initiated the operation. */
7255
7256 void
7257 set_longjmp_breakpoint (struct thread_info *tp, struct frame_id frame)
7258 {
7259 struct breakpoint *b, *b_tmp;
7260 int thread = tp->global_num;
7261
7262 /* To avoid having to rescan all objfile symbols at every step,
7263 we maintain a list of continually-inserted but always disabled
7264 longjmp "master" breakpoints. Here, we simply create momentary
7265 clones of those and enable them for the requested thread. */
7266 ALL_BREAKPOINTS_SAFE (b, b_tmp)
7267 if (b->pspace == current_program_space
7268 && (b->type == bp_longjmp_master
7269 || b->type == bp_exception_master))
7270 {
7271 enum bptype type = b->type == bp_longjmp_master ? bp_longjmp : bp_exception;
7272 struct breakpoint *clone;
7273
7274 /* longjmp_breakpoint_ops ensures INITIATING_FRAME is cleared again
7275 after their removal. */
7276 clone = momentary_breakpoint_from_master (b, type,
7277 &momentary_breakpoint_ops, 1);
7278 clone->thread = thread;
7279 }
7280
7281 tp->initiating_frame = frame;
7282 }
7283
7284 /* Delete all longjmp breakpoints from THREAD. */
7285 void
7286 delete_longjmp_breakpoint (int thread)
7287 {
7288 struct breakpoint *b, *b_tmp;
7289
7290 ALL_BREAKPOINTS_SAFE (b, b_tmp)
7291 if (b->type == bp_longjmp || b->type == bp_exception)
7292 {
7293 if (b->thread == thread)
7294 delete_breakpoint (b);
7295 }
7296 }
7297
7298 void
7299 delete_longjmp_breakpoint_at_next_stop (int thread)
7300 {
7301 struct breakpoint *b, *b_tmp;
7302
7303 ALL_BREAKPOINTS_SAFE (b, b_tmp)
7304 if (b->type == bp_longjmp || b->type == bp_exception)
7305 {
7306 if (b->thread == thread)
7307 b->disposition = disp_del_at_next_stop;
7308 }
7309 }
7310
7311 /* Place breakpoints of type bp_longjmp_call_dummy to catch longjmp for
7312 INFERIOR_PTID thread. Chain them all by RELATED_BREAKPOINT and return
7313 pointer to any of them. Return NULL if this system cannot place longjmp
7314 breakpoints. */
7315
7316 struct breakpoint *
7317 set_longjmp_breakpoint_for_call_dummy (void)
7318 {
7319 struct breakpoint *b, *retval = NULL;
7320
7321 ALL_BREAKPOINTS (b)
7322 if (b->pspace == current_program_space && b->type == bp_longjmp_master)
7323 {
7324 struct breakpoint *new_b;
7325
7326 new_b = momentary_breakpoint_from_master (b, bp_longjmp_call_dummy,
7327 &momentary_breakpoint_ops,
7328 1);
7329 new_b->thread = ptid_to_global_thread_id (inferior_ptid);
7330
7331 /* Link NEW_B into the chain of RETVAL breakpoints. */
7332
7333 gdb_assert (new_b->related_breakpoint == new_b);
7334 if (retval == NULL)
7335 retval = new_b;
7336 new_b->related_breakpoint = retval;
7337 while (retval->related_breakpoint != new_b->related_breakpoint)
7338 retval = retval->related_breakpoint;
7339 retval->related_breakpoint = new_b;
7340 }
7341
7342 return retval;
7343 }
7344
7345 /* Verify all existing dummy frames and their associated breakpoints for
7346 TP. Remove those which can no longer be found in the current frame
7347 stack.
7348
7349 You should call this function only at places where it is safe to currently
7350 unwind the whole stack. Failed stack unwind would discard live dummy
7351 frames. */
7352
7353 void
7354 check_longjmp_breakpoint_for_call_dummy (struct thread_info *tp)
7355 {
7356 struct breakpoint *b, *b_tmp;
7357
7358 ALL_BREAKPOINTS_SAFE (b, b_tmp)
7359 if (b->type == bp_longjmp_call_dummy && b->thread == tp->global_num)
7360 {
7361 struct breakpoint *dummy_b = b->related_breakpoint;
7362
7363 while (dummy_b != b && dummy_b->type != bp_call_dummy)
7364 dummy_b = dummy_b->related_breakpoint;
7365 if (dummy_b->type != bp_call_dummy
7366 || frame_find_by_id (dummy_b->frame_id) != NULL)
7367 continue;
7368
7369 dummy_frame_discard (dummy_b->frame_id, tp->ptid);
7370
7371 while (b->related_breakpoint != b)
7372 {
7373 if (b_tmp == b->related_breakpoint)
7374 b_tmp = b->related_breakpoint->next;
7375 delete_breakpoint (b->related_breakpoint);
7376 }
7377 delete_breakpoint (b);
7378 }
7379 }
7380
7381 void
7382 enable_overlay_breakpoints (void)
7383 {
7384 struct breakpoint *b;
7385
7386 ALL_BREAKPOINTS (b)
7387 if (b->type == bp_overlay_event)
7388 {
7389 b->enable_state = bp_enabled;
7390 update_global_location_list (UGLL_MAY_INSERT);
7391 overlay_events_enabled = 1;
7392 }
7393 }
7394
7395 void
7396 disable_overlay_breakpoints (void)
7397 {
7398 struct breakpoint *b;
7399
7400 ALL_BREAKPOINTS (b)
7401 if (b->type == bp_overlay_event)
7402 {
7403 b->enable_state = bp_disabled;
7404 update_global_location_list (UGLL_DONT_INSERT);
7405 overlay_events_enabled = 0;
7406 }
7407 }
7408
7409 /* Set an active std::terminate breakpoint for each std::terminate
7410 master breakpoint. */
7411 void
7412 set_std_terminate_breakpoint (void)
7413 {
7414 struct breakpoint *b, *b_tmp;
7415
7416 ALL_BREAKPOINTS_SAFE (b, b_tmp)
7417 if (b->pspace == current_program_space
7418 && b->type == bp_std_terminate_master)
7419 {
7420 momentary_breakpoint_from_master (b, bp_std_terminate,
7421 &momentary_breakpoint_ops, 1);
7422 }
7423 }
7424
7425 /* Delete all the std::terminate breakpoints. */
7426 void
7427 delete_std_terminate_breakpoint (void)
7428 {
7429 struct breakpoint *b, *b_tmp;
7430
7431 ALL_BREAKPOINTS_SAFE (b, b_tmp)
7432 if (b->type == bp_std_terminate)
7433 delete_breakpoint (b);
7434 }
7435
7436 struct breakpoint *
7437 create_thread_event_breakpoint (struct gdbarch *gdbarch, CORE_ADDR address)
7438 {
7439 struct breakpoint *b;
7440
7441 b = create_internal_breakpoint (gdbarch, address, bp_thread_event,
7442 &internal_breakpoint_ops);
7443
7444 b->enable_state = bp_enabled;
7445 /* location has to be used or breakpoint_re_set will delete me. */
7446 b->location = new_address_location (b->loc->address, NULL, 0);
7447
7448 update_global_location_list_nothrow (UGLL_MAY_INSERT);
7449
7450 return b;
7451 }
7452
7453 struct lang_and_radix
7454 {
7455 enum language lang;
7456 int radix;
7457 };
7458
7459 /* Create a breakpoint for JIT code registration and unregistration. */
7460
7461 struct breakpoint *
7462 create_jit_event_breakpoint (struct gdbarch *gdbarch, CORE_ADDR address)
7463 {
7464 return create_internal_breakpoint (gdbarch, address, bp_jit_event,
7465 &internal_breakpoint_ops);
7466 }
7467
7468 /* Remove JIT code registration and unregistration breakpoint(s). */
7469
7470 void
7471 remove_jit_event_breakpoints (void)
7472 {
7473 struct breakpoint *b, *b_tmp;
7474
7475 ALL_BREAKPOINTS_SAFE (b, b_tmp)
7476 if (b->type == bp_jit_event
7477 && b->loc->pspace == current_program_space)
7478 delete_breakpoint (b);
7479 }
7480
7481 void
7482 remove_solib_event_breakpoints (void)
7483 {
7484 struct breakpoint *b, *b_tmp;
7485
7486 ALL_BREAKPOINTS_SAFE (b, b_tmp)
7487 if (b->type == bp_shlib_event
7488 && b->loc->pspace == current_program_space)
7489 delete_breakpoint (b);
7490 }
7491
7492 /* See breakpoint.h. */
7493
7494 void
7495 remove_solib_event_breakpoints_at_next_stop (void)
7496 {
7497 struct breakpoint *b, *b_tmp;
7498
7499 ALL_BREAKPOINTS_SAFE (b, b_tmp)
7500 if (b->type == bp_shlib_event
7501 && b->loc->pspace == current_program_space)
7502 b->disposition = disp_del_at_next_stop;
7503 }
7504
7505 /* Helper for create_solib_event_breakpoint /
7506 create_and_insert_solib_event_breakpoint. Allows specifying which
7507 INSERT_MODE to pass through to update_global_location_list. */
7508
7509 static struct breakpoint *
7510 create_solib_event_breakpoint_1 (struct gdbarch *gdbarch, CORE_ADDR address,
7511 enum ugll_insert_mode insert_mode)
7512 {
7513 struct breakpoint *b;
7514
7515 b = create_internal_breakpoint (gdbarch, address, bp_shlib_event,
7516 &internal_breakpoint_ops);
7517 update_global_location_list_nothrow (insert_mode);
7518 return b;
7519 }
7520
7521 struct breakpoint *
7522 create_solib_event_breakpoint (struct gdbarch *gdbarch, CORE_ADDR address)
7523 {
7524 return create_solib_event_breakpoint_1 (gdbarch, address, UGLL_MAY_INSERT);
7525 }
7526
7527 /* See breakpoint.h. */
7528
7529 struct breakpoint *
7530 create_and_insert_solib_event_breakpoint (struct gdbarch *gdbarch, CORE_ADDR address)
7531 {
7532 struct breakpoint *b;
7533
7534 /* Explicitly tell update_global_location_list to insert
7535 locations. */
7536 b = create_solib_event_breakpoint_1 (gdbarch, address, UGLL_INSERT);
7537 if (!b->loc->inserted)
7538 {
7539 delete_breakpoint (b);
7540 return NULL;
7541 }
7542 return b;
7543 }
7544
7545 /* Disable any breakpoints that are on code in shared libraries. Only
7546 apply to enabled breakpoints, disabled ones can just stay disabled. */
7547
7548 void
7549 disable_breakpoints_in_shlibs (void)
7550 {
7551 struct bp_location *loc, **locp_tmp;
7552
7553 ALL_BP_LOCATIONS (loc, locp_tmp)
7554 {
7555 /* ALL_BP_LOCATIONS bp_location has LOC->OWNER always non-NULL. */
7556 struct breakpoint *b = loc->owner;
7557
7558 /* We apply the check to all breakpoints, including disabled for
7559 those with loc->duplicate set. This is so that when breakpoint
7560 becomes enabled, or the duplicate is removed, gdb will try to
7561 insert all breakpoints. If we don't set shlib_disabled here,
7562 we'll try to insert those breakpoints and fail. */
7563 if (((b->type == bp_breakpoint)
7564 || (b->type == bp_jit_event)
7565 || (b->type == bp_hardware_breakpoint)
7566 || (is_tracepoint (b)))
7567 && loc->pspace == current_program_space
7568 && !loc->shlib_disabled
7569 && solib_name_from_address (loc->pspace, loc->address)
7570 )
7571 {
7572 loc->shlib_disabled = 1;
7573 }
7574 }
7575 }
7576
7577 /* Disable any breakpoints and tracepoints that are in SOLIB upon
7578 notification of unloaded_shlib. Only apply to enabled breakpoints,
7579 disabled ones can just stay disabled. */
7580
7581 static void
7582 disable_breakpoints_in_unloaded_shlib (struct so_list *solib)
7583 {
7584 struct bp_location *loc, **locp_tmp;
7585 int disabled_shlib_breaks = 0;
7586
7587 ALL_BP_LOCATIONS (loc, locp_tmp)
7588 {
7589 /* ALL_BP_LOCATIONS bp_location has LOC->OWNER always non-NULL. */
7590 struct breakpoint *b = loc->owner;
7591
7592 if (solib->pspace == loc->pspace
7593 && !loc->shlib_disabled
7594 && (((b->type == bp_breakpoint
7595 || b->type == bp_jit_event
7596 || b->type == bp_hardware_breakpoint)
7597 && (loc->loc_type == bp_loc_hardware_breakpoint
7598 || loc->loc_type == bp_loc_software_breakpoint))
7599 || is_tracepoint (b))
7600 && solib_contains_address_p (solib, loc->address))
7601 {
7602 loc->shlib_disabled = 1;
7603 /* At this point, we cannot rely on remove_breakpoint
7604 succeeding so we must mark the breakpoint as not inserted
7605 to prevent future errors occurring in remove_breakpoints. */
7606 loc->inserted = 0;
7607
7608 /* This may cause duplicate notifications for the same breakpoint. */
7609 gdb::observers::breakpoint_modified.notify (b);
7610
7611 if (!disabled_shlib_breaks)
7612 {
7613 target_terminal::ours_for_output ();
7614 warning (_("Temporarily disabling breakpoints "
7615 "for unloaded shared library \"%s\""),
7616 solib->so_name);
7617 }
7618 disabled_shlib_breaks = 1;
7619 }
7620 }
7621 }
7622
7623 /* Disable any breakpoints and tracepoints in OBJFILE upon
7624 notification of free_objfile. Only apply to enabled breakpoints,
7625 disabled ones can just stay disabled. */
7626
7627 static void
7628 disable_breakpoints_in_freed_objfile (struct objfile *objfile)
7629 {
7630 struct breakpoint *b;
7631
7632 if (objfile == NULL)
7633 return;
7634
7635 /* OBJF_SHARED|OBJF_USERLOADED objfiles are dynamic modules manually
7636 managed by the user with add-symbol-file/remove-symbol-file.
7637 Similarly to how breakpoints in shared libraries are handled in
7638 response to "nosharedlibrary", mark breakpoints in such modules
7639 shlib_disabled so they end up uninserted on the next global
7640 location list update. Shared libraries not loaded by the user
7641 aren't handled here -- they're already handled in
7642 disable_breakpoints_in_unloaded_shlib, called by solib.c's
7643 solib_unloaded observer. We skip objfiles that are not
7644 OBJF_SHARED as those aren't considered dynamic objects (e.g. the
7645 main objfile). */
7646 if ((objfile->flags & OBJF_SHARED) == 0
7647 || (objfile->flags & OBJF_USERLOADED) == 0)
7648 return;
7649
7650 ALL_BREAKPOINTS (b)
7651 {
7652 struct bp_location *loc;
7653 int bp_modified = 0;
7654
7655 if (!is_breakpoint (b) && !is_tracepoint (b))
7656 continue;
7657
7658 for (loc = b->loc; loc != NULL; loc = loc->next)
7659 {
7660 CORE_ADDR loc_addr = loc->address;
7661
7662 if (loc->loc_type != bp_loc_hardware_breakpoint
7663 && loc->loc_type != bp_loc_software_breakpoint)
7664 continue;
7665
7666 if (loc->shlib_disabled != 0)
7667 continue;
7668
7669 if (objfile->pspace != loc->pspace)
7670 continue;
7671
7672 if (loc->loc_type != bp_loc_hardware_breakpoint
7673 && loc->loc_type != bp_loc_software_breakpoint)
7674 continue;
7675
7676 if (is_addr_in_objfile (loc_addr, objfile))
7677 {
7678 loc->shlib_disabled = 1;
7679 /* At this point, we don't know whether the object was
7680 unmapped from the inferior or not, so leave the
7681 inserted flag alone. We'll handle failure to
7682 uninsert quietly, in case the object was indeed
7683 unmapped. */
7684
7685 mark_breakpoint_location_modified (loc);
7686
7687 bp_modified = 1;
7688 }
7689 }
7690
7691 if (bp_modified)
7692 gdb::observers::breakpoint_modified.notify (b);
7693 }
7694 }
7695
7696 /* FORK & VFORK catchpoints. */
7697
7698 /* An instance of this type is used to represent a fork or vfork
7699 catchpoint. A breakpoint is really of this type iff its ops pointer points
7700 to CATCH_FORK_BREAKPOINT_OPS. */
7701
7702 struct fork_catchpoint : public breakpoint
7703 {
7704 /* Process id of a child process whose forking triggered this
7705 catchpoint. This field is only valid immediately after this
7706 catchpoint has triggered. */
7707 ptid_t forked_inferior_pid;
7708 };
7709
7710 /* Implement the "insert" breakpoint_ops method for fork
7711 catchpoints. */
7712
7713 static int
7714 insert_catch_fork (struct bp_location *bl)
7715 {
7716 return target_insert_fork_catchpoint (ptid_get_pid (inferior_ptid));
7717 }
7718
7719 /* Implement the "remove" breakpoint_ops method for fork
7720 catchpoints. */
7721
7722 static int
7723 remove_catch_fork (struct bp_location *bl, enum remove_bp_reason reason)
7724 {
7725 return target_remove_fork_catchpoint (ptid_get_pid (inferior_ptid));
7726 }
7727
7728 /* Implement the "breakpoint_hit" breakpoint_ops method for fork
7729 catchpoints. */
7730
7731 static int
7732 breakpoint_hit_catch_fork (const struct bp_location *bl,
7733 const address_space *aspace, CORE_ADDR bp_addr,
7734 const struct target_waitstatus *ws)
7735 {
7736 struct fork_catchpoint *c = (struct fork_catchpoint *) bl->owner;
7737
7738 if (ws->kind != TARGET_WAITKIND_FORKED)
7739 return 0;
7740
7741 c->forked_inferior_pid = ws->value.related_pid;
7742 return 1;
7743 }
7744
7745 /* Implement the "print_it" breakpoint_ops method for fork
7746 catchpoints. */
7747
7748 static enum print_stop_action
7749 print_it_catch_fork (bpstat bs)
7750 {
7751 struct ui_out *uiout = current_uiout;
7752 struct breakpoint *b = bs->breakpoint_at;
7753 struct fork_catchpoint *c = (struct fork_catchpoint *) bs->breakpoint_at;
7754
7755 annotate_catchpoint (b->number);
7756 maybe_print_thread_hit_breakpoint (uiout);
7757 if (b->disposition == disp_del)
7758 uiout->text ("Temporary catchpoint ");
7759 else
7760 uiout->text ("Catchpoint ");
7761 if (uiout->is_mi_like_p ())
7762 {
7763 uiout->field_string ("reason", async_reason_lookup (EXEC_ASYNC_FORK));
7764 uiout->field_string ("disp", bpdisp_text (b->disposition));
7765 }
7766 uiout->field_int ("bkptno", b->number);
7767 uiout->text (" (forked process ");
7768 uiout->field_int ("newpid", ptid_get_pid (c->forked_inferior_pid));
7769 uiout->text ("), ");
7770 return PRINT_SRC_AND_LOC;
7771 }
7772
7773 /* Implement the "print_one" breakpoint_ops method for fork
7774 catchpoints. */
7775
7776 static void
7777 print_one_catch_fork (struct breakpoint *b, struct bp_location **last_loc)
7778 {
7779 struct fork_catchpoint *c = (struct fork_catchpoint *) b;
7780 struct value_print_options opts;
7781 struct ui_out *uiout = current_uiout;
7782
7783 get_user_print_options (&opts);
7784
7785 /* Field 4, the address, is omitted (which makes the columns not
7786 line up too nicely with the headers, but the effect is relatively
7787 readable). */
7788 if (opts.addressprint)
7789 uiout->field_skip ("addr");
7790 annotate_field (5);
7791 uiout->text ("fork");
7792 if (!ptid_equal (c->forked_inferior_pid, null_ptid))
7793 {
7794 uiout->text (", process ");
7795 uiout->field_int ("what", ptid_get_pid (c->forked_inferior_pid));
7796 uiout->spaces (1);
7797 }
7798
7799 if (uiout->is_mi_like_p ())
7800 uiout->field_string ("catch-type", "fork");
7801 }
7802
7803 /* Implement the "print_mention" breakpoint_ops method for fork
7804 catchpoints. */
7805
7806 static void
7807 print_mention_catch_fork (struct breakpoint *b)
7808 {
7809 printf_filtered (_("Catchpoint %d (fork)"), b->number);
7810 }
7811
7812 /* Implement the "print_recreate" breakpoint_ops method for fork
7813 catchpoints. */
7814
7815 static void
7816 print_recreate_catch_fork (struct breakpoint *b, struct ui_file *fp)
7817 {
7818 fprintf_unfiltered (fp, "catch fork");
7819 print_recreate_thread (b, fp);
7820 }
7821
7822 /* The breakpoint_ops structure to be used in fork catchpoints. */
7823
7824 static struct breakpoint_ops catch_fork_breakpoint_ops;
7825
7826 /* Implement the "insert" breakpoint_ops method for vfork
7827 catchpoints. */
7828
7829 static int
7830 insert_catch_vfork (struct bp_location *bl)
7831 {
7832 return target_insert_vfork_catchpoint (ptid_get_pid (inferior_ptid));
7833 }
7834
7835 /* Implement the "remove" breakpoint_ops method for vfork
7836 catchpoints. */
7837
7838 static int
7839 remove_catch_vfork (struct bp_location *bl, enum remove_bp_reason reason)
7840 {
7841 return target_remove_vfork_catchpoint (ptid_get_pid (inferior_ptid));
7842 }
7843
7844 /* Implement the "breakpoint_hit" breakpoint_ops method for vfork
7845 catchpoints. */
7846
7847 static int
7848 breakpoint_hit_catch_vfork (const struct bp_location *bl,
7849 const address_space *aspace, CORE_ADDR bp_addr,
7850 const struct target_waitstatus *ws)
7851 {
7852 struct fork_catchpoint *c = (struct fork_catchpoint *) bl->owner;
7853
7854 if (ws->kind != TARGET_WAITKIND_VFORKED)
7855 return 0;
7856
7857 c->forked_inferior_pid = ws->value.related_pid;
7858 return 1;
7859 }
7860
7861 /* Implement the "print_it" breakpoint_ops method for vfork
7862 catchpoints. */
7863
7864 static enum print_stop_action
7865 print_it_catch_vfork (bpstat bs)
7866 {
7867 struct ui_out *uiout = current_uiout;
7868 struct breakpoint *b = bs->breakpoint_at;
7869 struct fork_catchpoint *c = (struct fork_catchpoint *) b;
7870
7871 annotate_catchpoint (b->number);
7872 maybe_print_thread_hit_breakpoint (uiout);
7873 if (b->disposition == disp_del)
7874 uiout->text ("Temporary catchpoint ");
7875 else
7876 uiout->text ("Catchpoint ");
7877 if (uiout->is_mi_like_p ())
7878 {
7879 uiout->field_string ("reason", async_reason_lookup (EXEC_ASYNC_VFORK));
7880 uiout->field_string ("disp", bpdisp_text (b->disposition));
7881 }
7882 uiout->field_int ("bkptno", b->number);
7883 uiout->text (" (vforked process ");
7884 uiout->field_int ("newpid", ptid_get_pid (c->forked_inferior_pid));
7885 uiout->text ("), ");
7886 return PRINT_SRC_AND_LOC;
7887 }
7888
7889 /* Implement the "print_one" breakpoint_ops method for vfork
7890 catchpoints. */
7891
7892 static void
7893 print_one_catch_vfork (struct breakpoint *b, struct bp_location **last_loc)
7894 {
7895 struct fork_catchpoint *c = (struct fork_catchpoint *) b;
7896 struct value_print_options opts;
7897 struct ui_out *uiout = current_uiout;
7898
7899 get_user_print_options (&opts);
7900 /* Field 4, the address, is omitted (which makes the columns not
7901 line up too nicely with the headers, but the effect is relatively
7902 readable). */
7903 if (opts.addressprint)
7904 uiout->field_skip ("addr");
7905 annotate_field (5);
7906 uiout->text ("vfork");
7907 if (!ptid_equal (c->forked_inferior_pid, null_ptid))
7908 {
7909 uiout->text (", process ");
7910 uiout->field_int ("what", ptid_get_pid (c->forked_inferior_pid));
7911 uiout->spaces (1);
7912 }
7913
7914 if (uiout->is_mi_like_p ())
7915 uiout->field_string ("catch-type", "vfork");
7916 }
7917
7918 /* Implement the "print_mention" breakpoint_ops method for vfork
7919 catchpoints. */
7920
7921 static void
7922 print_mention_catch_vfork (struct breakpoint *b)
7923 {
7924 printf_filtered (_("Catchpoint %d (vfork)"), b->number);
7925 }
7926
7927 /* Implement the "print_recreate" breakpoint_ops method for vfork
7928 catchpoints. */
7929
7930 static void
7931 print_recreate_catch_vfork (struct breakpoint *b, struct ui_file *fp)
7932 {
7933 fprintf_unfiltered (fp, "catch vfork");
7934 print_recreate_thread (b, fp);
7935 }
7936
7937 /* The breakpoint_ops structure to be used in vfork catchpoints. */
7938
7939 static struct breakpoint_ops catch_vfork_breakpoint_ops;
7940
7941 /* An instance of this type is used to represent an solib catchpoint.
7942 A breakpoint is really of this type iff its ops pointer points to
7943 CATCH_SOLIB_BREAKPOINT_OPS. */
7944
7945 struct solib_catchpoint : public breakpoint
7946 {
7947 ~solib_catchpoint () override;
7948
7949 /* True for "catch load", false for "catch unload". */
7950 unsigned char is_load;
7951
7952 /* Regular expression to match, if any. COMPILED is only valid when
7953 REGEX is non-NULL. */
7954 char *regex;
7955 std::unique_ptr<compiled_regex> compiled;
7956 };
7957
7958 solib_catchpoint::~solib_catchpoint ()
7959 {
7960 xfree (this->regex);
7961 }
7962
7963 static int
7964 insert_catch_solib (struct bp_location *ignore)
7965 {
7966 return 0;
7967 }
7968
7969 static int
7970 remove_catch_solib (struct bp_location *ignore, enum remove_bp_reason reason)
7971 {
7972 return 0;
7973 }
7974
7975 static int
7976 breakpoint_hit_catch_solib (const struct bp_location *bl,
7977 const address_space *aspace,
7978 CORE_ADDR bp_addr,
7979 const struct target_waitstatus *ws)
7980 {
7981 struct solib_catchpoint *self = (struct solib_catchpoint *) bl->owner;
7982 struct breakpoint *other;
7983
7984 if (ws->kind == TARGET_WAITKIND_LOADED)
7985 return 1;
7986
7987 ALL_BREAKPOINTS (other)
7988 {
7989 struct bp_location *other_bl;
7990
7991 if (other == bl->owner)
7992 continue;
7993
7994 if (other->type != bp_shlib_event)
7995 continue;
7996
7997 if (self->pspace != NULL && other->pspace != self->pspace)
7998 continue;
7999
8000 for (other_bl = other->loc; other_bl != NULL; other_bl = other_bl->next)
8001 {
8002 if (other->ops->breakpoint_hit (other_bl, aspace, bp_addr, ws))
8003 return 1;
8004 }
8005 }
8006
8007 return 0;
8008 }
8009
8010 static void
8011 check_status_catch_solib (struct bpstats *bs)
8012 {
8013 struct solib_catchpoint *self
8014 = (struct solib_catchpoint *) bs->breakpoint_at;
8015
8016 if (self->is_load)
8017 {
8018 struct so_list *iter;
8019
8020 for (int ix = 0;
8021 VEC_iterate (so_list_ptr, current_program_space->added_solibs,
8022 ix, iter);
8023 ++ix)
8024 {
8025 if (!self->regex
8026 || self->compiled->exec (iter->so_name, 0, NULL, 0) == 0)
8027 return;
8028 }
8029 }
8030 else
8031 {
8032 for (const std::string &iter : current_program_space->deleted_solibs)
8033 {
8034 if (!self->regex
8035 || self->compiled->exec (iter.c_str (), 0, NULL, 0) == 0)
8036 return;
8037 }
8038 }
8039
8040 bs->stop = 0;
8041 bs->print_it = print_it_noop;
8042 }
8043
8044 static enum print_stop_action
8045 print_it_catch_solib (bpstat bs)
8046 {
8047 struct breakpoint *b = bs->breakpoint_at;
8048 struct ui_out *uiout = current_uiout;
8049
8050 annotate_catchpoint (b->number);
8051 maybe_print_thread_hit_breakpoint (uiout);
8052 if (b->disposition == disp_del)
8053 uiout->text ("Temporary catchpoint ");
8054 else
8055 uiout->text ("Catchpoint ");
8056 uiout->field_int ("bkptno", b->number);
8057 uiout->text ("\n");
8058 if (uiout->is_mi_like_p ())
8059 uiout->field_string ("disp", bpdisp_text (b->disposition));
8060 print_solib_event (1);
8061 return PRINT_SRC_AND_LOC;
8062 }
8063
8064 static void
8065 print_one_catch_solib (struct breakpoint *b, struct bp_location **locs)
8066 {
8067 struct solib_catchpoint *self = (struct solib_catchpoint *) b;
8068 struct value_print_options opts;
8069 struct ui_out *uiout = current_uiout;
8070 char *msg;
8071
8072 get_user_print_options (&opts);
8073 /* Field 4, the address, is omitted (which makes the columns not
8074 line up too nicely with the headers, but the effect is relatively
8075 readable). */
8076 if (opts.addressprint)
8077 {
8078 annotate_field (4);
8079 uiout->field_skip ("addr");
8080 }
8081
8082 annotate_field (5);
8083 if (self->is_load)
8084 {
8085 if (self->regex)
8086 msg = xstrprintf (_("load of library matching %s"), self->regex);
8087 else
8088 msg = xstrdup (_("load of library"));
8089 }
8090 else
8091 {
8092 if (self->regex)
8093 msg = xstrprintf (_("unload of library matching %s"), self->regex);
8094 else
8095 msg = xstrdup (_("unload of library"));
8096 }
8097 uiout->field_string ("what", msg);
8098 xfree (msg);
8099
8100 if (uiout->is_mi_like_p ())
8101 uiout->field_string ("catch-type", self->is_load ? "load" : "unload");
8102 }
8103
8104 static void
8105 print_mention_catch_solib (struct breakpoint *b)
8106 {
8107 struct solib_catchpoint *self = (struct solib_catchpoint *) b;
8108
8109 printf_filtered (_("Catchpoint %d (%s)"), b->number,
8110 self->is_load ? "load" : "unload");
8111 }
8112
8113 static void
8114 print_recreate_catch_solib (struct breakpoint *b, struct ui_file *fp)
8115 {
8116 struct solib_catchpoint *self = (struct solib_catchpoint *) b;
8117
8118 fprintf_unfiltered (fp, "%s %s",
8119 b->disposition == disp_del ? "tcatch" : "catch",
8120 self->is_load ? "load" : "unload");
8121 if (self->regex)
8122 fprintf_unfiltered (fp, " %s", self->regex);
8123 fprintf_unfiltered (fp, "\n");
8124 }
8125
8126 static struct breakpoint_ops catch_solib_breakpoint_ops;
8127
8128 /* Shared helper function (MI and CLI) for creating and installing
8129 a shared object event catchpoint. If IS_LOAD is non-zero then
8130 the events to be caught are load events, otherwise they are
8131 unload events. If IS_TEMP is non-zero the catchpoint is a
8132 temporary one. If ENABLED is non-zero the catchpoint is
8133 created in an enabled state. */
8134
8135 void
8136 add_solib_catchpoint (const char *arg, int is_load, int is_temp, int enabled)
8137 {
8138 struct gdbarch *gdbarch = get_current_arch ();
8139
8140 if (!arg)
8141 arg = "";
8142 arg = skip_spaces (arg);
8143
8144 std::unique_ptr<solib_catchpoint> c (new solib_catchpoint ());
8145
8146 if (*arg != '\0')
8147 {
8148 c->compiled.reset (new compiled_regex (arg, REG_NOSUB,
8149 _("Invalid regexp")));
8150 c->regex = xstrdup (arg);
8151 }
8152
8153 c->is_load = is_load;
8154 init_catchpoint (c.get (), gdbarch, is_temp, NULL,
8155 &catch_solib_breakpoint_ops);
8156
8157 c->enable_state = enabled ? bp_enabled : bp_disabled;
8158
8159 install_breakpoint (0, std::move (c), 1);
8160 }
8161
8162 /* A helper function that does all the work for "catch load" and
8163 "catch unload". */
8164
8165 static void
8166 catch_load_or_unload (const char *arg, int from_tty, int is_load,
8167 struct cmd_list_element *command)
8168 {
8169 int tempflag;
8170 const int enabled = 1;
8171
8172 tempflag = get_cmd_context (command) == CATCH_TEMPORARY;
8173
8174 add_solib_catchpoint (arg, is_load, tempflag, enabled);
8175 }
8176
8177 static void
8178 catch_load_command_1 (const char *arg, int from_tty,
8179 struct cmd_list_element *command)
8180 {
8181 catch_load_or_unload (arg, from_tty, 1, command);
8182 }
8183
8184 static void
8185 catch_unload_command_1 (const char *arg, int from_tty,
8186 struct cmd_list_element *command)
8187 {
8188 catch_load_or_unload (arg, from_tty, 0, command);
8189 }
8190
8191 /* Initialize a new breakpoint of the bp_catchpoint kind. If TEMPFLAG
8192 is non-zero, then make the breakpoint temporary. If COND_STRING is
8193 not NULL, then store it in the breakpoint. OPS, if not NULL, is
8194 the breakpoint_ops structure associated to the catchpoint. */
8195
8196 void
8197 init_catchpoint (struct breakpoint *b,
8198 struct gdbarch *gdbarch, int tempflag,
8199 const char *cond_string,
8200 const struct breakpoint_ops *ops)
8201 {
8202 symtab_and_line sal;
8203 sal.pspace = current_program_space;
8204
8205 init_raw_breakpoint (b, gdbarch, sal, bp_catchpoint, ops);
8206
8207 b->cond_string = (cond_string == NULL) ? NULL : xstrdup (cond_string);
8208 b->disposition = tempflag ? disp_del : disp_donttouch;
8209 }
8210
8211 void
8212 install_breakpoint (int internal, std::unique_ptr<breakpoint> &&arg, int update_gll)
8213 {
8214 breakpoint *b = add_to_breakpoint_chain (std::move (arg));
8215 set_breakpoint_number (internal, b);
8216 if (is_tracepoint (b))
8217 set_tracepoint_count (breakpoint_count);
8218 if (!internal)
8219 mention (b);
8220 gdb::observers::breakpoint_created.notify (b);
8221
8222 if (update_gll)
8223 update_global_location_list (UGLL_MAY_INSERT);
8224 }
8225
8226 static void
8227 create_fork_vfork_event_catchpoint (struct gdbarch *gdbarch,
8228 int tempflag, const char *cond_string,
8229 const struct breakpoint_ops *ops)
8230 {
8231 std::unique_ptr<fork_catchpoint> c (new fork_catchpoint ());
8232
8233 init_catchpoint (c.get (), gdbarch, tempflag, cond_string, ops);
8234
8235 c->forked_inferior_pid = null_ptid;
8236
8237 install_breakpoint (0, std::move (c), 1);
8238 }
8239
8240 /* Exec catchpoints. */
8241
8242 /* An instance of this type is used to represent an exec catchpoint.
8243 A breakpoint is really of this type iff its ops pointer points to
8244 CATCH_EXEC_BREAKPOINT_OPS. */
8245
8246 struct exec_catchpoint : public breakpoint
8247 {
8248 ~exec_catchpoint () override;
8249
8250 /* Filename of a program whose exec triggered this catchpoint.
8251 This field is only valid immediately after this catchpoint has
8252 triggered. */
8253 char *exec_pathname;
8254 };
8255
8256 /* Exec catchpoint destructor. */
8257
8258 exec_catchpoint::~exec_catchpoint ()
8259 {
8260 xfree (this->exec_pathname);
8261 }
8262
8263 static int
8264 insert_catch_exec (struct bp_location *bl)
8265 {
8266 return target_insert_exec_catchpoint (ptid_get_pid (inferior_ptid));
8267 }
8268
8269 static int
8270 remove_catch_exec (struct bp_location *bl, enum remove_bp_reason reason)
8271 {
8272 return target_remove_exec_catchpoint (ptid_get_pid (inferior_ptid));
8273 }
8274
8275 static int
8276 breakpoint_hit_catch_exec (const struct bp_location *bl,
8277 const address_space *aspace, CORE_ADDR bp_addr,
8278 const struct target_waitstatus *ws)
8279 {
8280 struct exec_catchpoint *c = (struct exec_catchpoint *) bl->owner;
8281
8282 if (ws->kind != TARGET_WAITKIND_EXECD)
8283 return 0;
8284
8285 c->exec_pathname = xstrdup (ws->value.execd_pathname);
8286 return 1;
8287 }
8288
8289 static enum print_stop_action
8290 print_it_catch_exec (bpstat bs)
8291 {
8292 struct ui_out *uiout = current_uiout;
8293 struct breakpoint *b = bs->breakpoint_at;
8294 struct exec_catchpoint *c = (struct exec_catchpoint *) b;
8295
8296 annotate_catchpoint (b->number);
8297 maybe_print_thread_hit_breakpoint (uiout);
8298 if (b->disposition == disp_del)
8299 uiout->text ("Temporary catchpoint ");
8300 else
8301 uiout->text ("Catchpoint ");
8302 if (uiout->is_mi_like_p ())
8303 {
8304 uiout->field_string ("reason", async_reason_lookup (EXEC_ASYNC_EXEC));
8305 uiout->field_string ("disp", bpdisp_text (b->disposition));
8306 }
8307 uiout->field_int ("bkptno", b->number);
8308 uiout->text (" (exec'd ");
8309 uiout->field_string ("new-exec", c->exec_pathname);
8310 uiout->text ("), ");
8311
8312 return PRINT_SRC_AND_LOC;
8313 }
8314
8315 static void
8316 print_one_catch_exec (struct breakpoint *b, struct bp_location **last_loc)
8317 {
8318 struct exec_catchpoint *c = (struct exec_catchpoint *) b;
8319 struct value_print_options opts;
8320 struct ui_out *uiout = current_uiout;
8321
8322 get_user_print_options (&opts);
8323
8324 /* Field 4, the address, is omitted (which makes the columns
8325 not line up too nicely with the headers, but the effect
8326 is relatively readable). */
8327 if (opts.addressprint)
8328 uiout->field_skip ("addr");
8329 annotate_field (5);
8330 uiout->text ("exec");
8331 if (c->exec_pathname != NULL)
8332 {
8333 uiout->text (", program \"");
8334 uiout->field_string ("what", c->exec_pathname);
8335 uiout->text ("\" ");
8336 }
8337
8338 if (uiout->is_mi_like_p ())
8339 uiout->field_string ("catch-type", "exec");
8340 }
8341
8342 static void
8343 print_mention_catch_exec (struct breakpoint *b)
8344 {
8345 printf_filtered (_("Catchpoint %d (exec)"), b->number);
8346 }
8347
8348 /* Implement the "print_recreate" breakpoint_ops method for exec
8349 catchpoints. */
8350
8351 static void
8352 print_recreate_catch_exec (struct breakpoint *b, struct ui_file *fp)
8353 {
8354 fprintf_unfiltered (fp, "catch exec");
8355 print_recreate_thread (b, fp);
8356 }
8357
8358 static struct breakpoint_ops catch_exec_breakpoint_ops;
8359
8360 static int
8361 hw_breakpoint_used_count (void)
8362 {
8363 int i = 0;
8364 struct breakpoint *b;
8365 struct bp_location *bl;
8366
8367 ALL_BREAKPOINTS (b)
8368 {
8369 if (b->type == bp_hardware_breakpoint && breakpoint_enabled (b))
8370 for (bl = b->loc; bl; bl = bl->next)
8371 {
8372 /* Special types of hardware breakpoints may use more than
8373 one register. */
8374 i += b->ops->resources_needed (bl);
8375 }
8376 }
8377
8378 return i;
8379 }
8380
8381 /* Returns the resources B would use if it were a hardware
8382 watchpoint. */
8383
8384 static int
8385 hw_watchpoint_use_count (struct breakpoint *b)
8386 {
8387 int i = 0;
8388 struct bp_location *bl;
8389
8390 if (!breakpoint_enabled (b))
8391 return 0;
8392
8393 for (bl = b->loc; bl; bl = bl->next)
8394 {
8395 /* Special types of hardware watchpoints may use more than
8396 one register. */
8397 i += b->ops->resources_needed (bl);
8398 }
8399
8400 return i;
8401 }
8402
8403 /* Returns the sum the used resources of all hardware watchpoints of
8404 type TYPE in the breakpoints list. Also returns in OTHER_TYPE_USED
8405 the sum of the used resources of all hardware watchpoints of other
8406 types _not_ TYPE. */
8407
8408 static int
8409 hw_watchpoint_used_count_others (struct breakpoint *except,
8410 enum bptype type, int *other_type_used)
8411 {
8412 int i = 0;
8413 struct breakpoint *b;
8414
8415 *other_type_used = 0;
8416 ALL_BREAKPOINTS (b)
8417 {
8418 if (b == except)
8419 continue;
8420 if (!breakpoint_enabled (b))
8421 continue;
8422
8423 if (b->type == type)
8424 i += hw_watchpoint_use_count (b);
8425 else if (is_hardware_watchpoint (b))
8426 *other_type_used = 1;
8427 }
8428
8429 return i;
8430 }
8431
8432 void
8433 disable_watchpoints_before_interactive_call_start (void)
8434 {
8435 struct breakpoint *b;
8436
8437 ALL_BREAKPOINTS (b)
8438 {
8439 if (is_watchpoint (b) && breakpoint_enabled (b))
8440 {
8441 b->enable_state = bp_call_disabled;
8442 update_global_location_list (UGLL_DONT_INSERT);
8443 }
8444 }
8445 }
8446
8447 void
8448 enable_watchpoints_after_interactive_call_stop (void)
8449 {
8450 struct breakpoint *b;
8451
8452 ALL_BREAKPOINTS (b)
8453 {
8454 if (is_watchpoint (b) && b->enable_state == bp_call_disabled)
8455 {
8456 b->enable_state = bp_enabled;
8457 update_global_location_list (UGLL_MAY_INSERT);
8458 }
8459 }
8460 }
8461
8462 void
8463 disable_breakpoints_before_startup (void)
8464 {
8465 current_program_space->executing_startup = 1;
8466 update_global_location_list (UGLL_DONT_INSERT);
8467 }
8468
8469 void
8470 enable_breakpoints_after_startup (void)
8471 {
8472 current_program_space->executing_startup = 0;
8473 breakpoint_re_set ();
8474 }
8475
8476 /* Create a new single-step breakpoint for thread THREAD, with no
8477 locations. */
8478
8479 static struct breakpoint *
8480 new_single_step_breakpoint (int thread, struct gdbarch *gdbarch)
8481 {
8482 std::unique_ptr<breakpoint> b (new breakpoint ());
8483
8484 init_raw_breakpoint_without_location (b.get (), gdbarch, bp_single_step,
8485 &momentary_breakpoint_ops);
8486
8487 b->disposition = disp_donttouch;
8488 b->frame_id = null_frame_id;
8489
8490 b->thread = thread;
8491 gdb_assert (b->thread != 0);
8492
8493 return add_to_breakpoint_chain (std::move (b));
8494 }
8495
8496 /* Set a momentary breakpoint of type TYPE at address specified by
8497 SAL. If FRAME_ID is valid, the breakpoint is restricted to that
8498 frame. */
8499
8500 breakpoint_up
8501 set_momentary_breakpoint (struct gdbarch *gdbarch, struct symtab_and_line sal,
8502 struct frame_id frame_id, enum bptype type)
8503 {
8504 struct breakpoint *b;
8505
8506 /* If FRAME_ID is valid, it should be a real frame, not an inlined or
8507 tail-called one. */
8508 gdb_assert (!frame_id_artificial_p (frame_id));
8509
8510 b = set_raw_breakpoint (gdbarch, sal, type, &momentary_breakpoint_ops);
8511 b->enable_state = bp_enabled;
8512 b->disposition = disp_donttouch;
8513 b->frame_id = frame_id;
8514
8515 /* If we're debugging a multi-threaded program, then we want
8516 momentary breakpoints to be active in only a single thread of
8517 control. */
8518 if (in_thread_list (inferior_ptid))
8519 b->thread = ptid_to_global_thread_id (inferior_ptid);
8520
8521 update_global_location_list_nothrow (UGLL_MAY_INSERT);
8522
8523 return breakpoint_up (b);
8524 }
8525
8526 /* Make a momentary breakpoint based on the master breakpoint ORIG.
8527 The new breakpoint will have type TYPE, use OPS as its
8528 breakpoint_ops, and will set enabled to LOC_ENABLED. */
8529
8530 static struct breakpoint *
8531 momentary_breakpoint_from_master (struct breakpoint *orig,
8532 enum bptype type,
8533 const struct breakpoint_ops *ops,
8534 int loc_enabled)
8535 {
8536 struct breakpoint *copy;
8537
8538 copy = set_raw_breakpoint_without_location (orig->gdbarch, type, ops);
8539 copy->loc = allocate_bp_location (copy);
8540 set_breakpoint_location_function (copy->loc, 1);
8541
8542 copy->loc->gdbarch = orig->loc->gdbarch;
8543 copy->loc->requested_address = orig->loc->requested_address;
8544 copy->loc->address = orig->loc->address;
8545 copy->loc->section = orig->loc->section;
8546 copy->loc->pspace = orig->loc->pspace;
8547 copy->loc->probe = orig->loc->probe;
8548 copy->loc->line_number = orig->loc->line_number;
8549 copy->loc->symtab = orig->loc->symtab;
8550 copy->loc->enabled = loc_enabled;
8551 copy->frame_id = orig->frame_id;
8552 copy->thread = orig->thread;
8553 copy->pspace = orig->pspace;
8554
8555 copy->enable_state = bp_enabled;
8556 copy->disposition = disp_donttouch;
8557 copy->number = internal_breakpoint_number--;
8558
8559 update_global_location_list_nothrow (UGLL_DONT_INSERT);
8560 return copy;
8561 }
8562
8563 /* Make a deep copy of momentary breakpoint ORIG. Returns NULL if
8564 ORIG is NULL. */
8565
8566 struct breakpoint *
8567 clone_momentary_breakpoint (struct breakpoint *orig)
8568 {
8569 /* If there's nothing to clone, then return nothing. */
8570 if (orig == NULL)
8571 return NULL;
8572
8573 return momentary_breakpoint_from_master (orig, orig->type, orig->ops, 0);
8574 }
8575
8576 breakpoint_up
8577 set_momentary_breakpoint_at_pc (struct gdbarch *gdbarch, CORE_ADDR pc,
8578 enum bptype type)
8579 {
8580 struct symtab_and_line sal;
8581
8582 sal = find_pc_line (pc, 0);
8583 sal.pc = pc;
8584 sal.section = find_pc_overlay (pc);
8585 sal.explicit_pc = 1;
8586
8587 return set_momentary_breakpoint (gdbarch, sal, null_frame_id, type);
8588 }
8589 \f
8590
8591 /* Tell the user we have just set a breakpoint B. */
8592
8593 static void
8594 mention (struct breakpoint *b)
8595 {
8596 b->ops->print_mention (b);
8597 current_uiout->text ("\n");
8598 }
8599 \f
8600
8601 static int bp_loc_is_permanent (struct bp_location *loc);
8602
8603 static struct bp_location *
8604 add_location_to_breakpoint (struct breakpoint *b,
8605 const struct symtab_and_line *sal)
8606 {
8607 struct bp_location *loc, **tmp;
8608 CORE_ADDR adjusted_address;
8609 struct gdbarch *loc_gdbarch = get_sal_arch (*sal);
8610
8611 if (loc_gdbarch == NULL)
8612 loc_gdbarch = b->gdbarch;
8613
8614 /* Adjust the breakpoint's address prior to allocating a location.
8615 Once we call allocate_bp_location(), that mostly uninitialized
8616 location will be placed on the location chain. Adjustment of the
8617 breakpoint may cause target_read_memory() to be called and we do
8618 not want its scan of the location chain to find a breakpoint and
8619 location that's only been partially initialized. */
8620 adjusted_address = adjust_breakpoint_address (loc_gdbarch,
8621 sal->pc, b->type);
8622
8623 /* Sort the locations by their ADDRESS. */
8624 loc = allocate_bp_location (b);
8625 for (tmp = &(b->loc); *tmp != NULL && (*tmp)->address <= adjusted_address;
8626 tmp = &((*tmp)->next))
8627 ;
8628 loc->next = *tmp;
8629 *tmp = loc;
8630
8631 loc->requested_address = sal->pc;
8632 loc->address = adjusted_address;
8633 loc->pspace = sal->pspace;
8634 loc->probe.prob = sal->prob;
8635 loc->probe.objfile = sal->objfile;
8636 gdb_assert (loc->pspace != NULL);
8637 loc->section = sal->section;
8638 loc->gdbarch = loc_gdbarch;
8639 loc->line_number = sal->line;
8640 loc->symtab = sal->symtab;
8641 loc->symbol = sal->symbol;
8642 loc->msymbol = sal->msymbol;
8643 loc->objfile = sal->objfile;
8644
8645 set_breakpoint_location_function (loc,
8646 sal->explicit_pc || sal->explicit_line);
8647
8648 /* While by definition, permanent breakpoints are already present in the
8649 code, we don't mark the location as inserted. Normally one would expect
8650 that GDB could rely on that breakpoint instruction to stop the program,
8651 thus removing the need to insert its own breakpoint, except that executing
8652 the breakpoint instruction can kill the target instead of reporting a
8653 SIGTRAP. E.g., on SPARC, when interrupts are disabled, executing the
8654 instruction resets the CPU, so QEMU 2.0.0 for SPARC correspondingly dies
8655 with "Trap 0x02 while interrupts disabled, Error state". Letting the
8656 breakpoint be inserted normally results in QEMU knowing about the GDB
8657 breakpoint, and thus trap before the breakpoint instruction is executed.
8658 (If GDB later needs to continue execution past the permanent breakpoint,
8659 it manually increments the PC, thus avoiding executing the breakpoint
8660 instruction.) */
8661 if (bp_loc_is_permanent (loc))
8662 loc->permanent = 1;
8663
8664 return loc;
8665 }
8666 \f
8667
8668 /* See breakpoint.h. */
8669
8670 int
8671 program_breakpoint_here_p (struct gdbarch *gdbarch, CORE_ADDR address)
8672 {
8673 int len;
8674 CORE_ADDR addr;
8675 const gdb_byte *bpoint;
8676 gdb_byte *target_mem;
8677
8678 addr = address;
8679 bpoint = gdbarch_breakpoint_from_pc (gdbarch, &addr, &len);
8680
8681 /* Software breakpoints unsupported? */
8682 if (bpoint == NULL)
8683 return 0;
8684
8685 target_mem = (gdb_byte *) alloca (len);
8686
8687 /* Enable the automatic memory restoration from breakpoints while
8688 we read the memory. Otherwise we could say about our temporary
8689 breakpoints they are permanent. */
8690 scoped_restore restore_memory
8691 = make_scoped_restore_show_memory_breakpoints (0);
8692
8693 if (target_read_memory (address, target_mem, len) == 0
8694 && memcmp (target_mem, bpoint, len) == 0)
8695 return 1;
8696
8697 return 0;
8698 }
8699
8700 /* Return 1 if LOC is pointing to a permanent breakpoint,
8701 return 0 otherwise. */
8702
8703 static int
8704 bp_loc_is_permanent (struct bp_location *loc)
8705 {
8706 gdb_assert (loc != NULL);
8707
8708 /* If we have a catchpoint or a watchpoint, just return 0. We should not
8709 attempt to read from the addresses the locations of these breakpoint types
8710 point to. program_breakpoint_here_p, below, will attempt to read
8711 memory. */
8712 if (!breakpoint_address_is_meaningful (loc->owner))
8713 return 0;
8714
8715 scoped_restore_current_pspace_and_thread restore_pspace_thread;
8716 switch_to_program_space_and_thread (loc->pspace);
8717 return program_breakpoint_here_p (loc->gdbarch, loc->address);
8718 }
8719
8720 /* Build a command list for the dprintf corresponding to the current
8721 settings of the dprintf style options. */
8722
8723 static void
8724 update_dprintf_command_list (struct breakpoint *b)
8725 {
8726 char *dprintf_args = b->extra_string;
8727 char *printf_line = NULL;
8728
8729 if (!dprintf_args)
8730 return;
8731
8732 dprintf_args = skip_spaces (dprintf_args);
8733
8734 /* Allow a comma, as it may have terminated a location, but don't
8735 insist on it. */
8736 if (*dprintf_args == ',')
8737 ++dprintf_args;
8738 dprintf_args = skip_spaces (dprintf_args);
8739
8740 if (*dprintf_args != '"')
8741 error (_("Bad format string, missing '\"'."));
8742
8743 if (strcmp (dprintf_style, dprintf_style_gdb) == 0)
8744 printf_line = xstrprintf ("printf %s", dprintf_args);
8745 else if (strcmp (dprintf_style, dprintf_style_call) == 0)
8746 {
8747 if (!dprintf_function)
8748 error (_("No function supplied for dprintf call"));
8749
8750 if (dprintf_channel && strlen (dprintf_channel) > 0)
8751 printf_line = xstrprintf ("call (void) %s (%s,%s)",
8752 dprintf_function,
8753 dprintf_channel,
8754 dprintf_args);
8755 else
8756 printf_line = xstrprintf ("call (void) %s (%s)",
8757 dprintf_function,
8758 dprintf_args);
8759 }
8760 else if (strcmp (dprintf_style, dprintf_style_agent) == 0)
8761 {
8762 if (target_can_run_breakpoint_commands ())
8763 printf_line = xstrprintf ("agent-printf %s", dprintf_args);
8764 else
8765 {
8766 warning (_("Target cannot run dprintf commands, falling back to GDB printf"));
8767 printf_line = xstrprintf ("printf %s", dprintf_args);
8768 }
8769 }
8770 else
8771 internal_error (__FILE__, __LINE__,
8772 _("Invalid dprintf style."));
8773
8774 gdb_assert (printf_line != NULL);
8775
8776 /* Manufacture a printf sequence. */
8777 struct command_line *printf_cmd_line
8778 = new struct command_line (simple_control, printf_line);
8779 breakpoint_set_commands (b, counted_command_line (printf_cmd_line,
8780 command_lines_deleter ()));
8781 }
8782
8783 /* Update all dprintf commands, making their command lists reflect
8784 current style settings. */
8785
8786 static void
8787 update_dprintf_commands (const char *args, int from_tty,
8788 struct cmd_list_element *c)
8789 {
8790 struct breakpoint *b;
8791
8792 ALL_BREAKPOINTS (b)
8793 {
8794 if (b->type == bp_dprintf)
8795 update_dprintf_command_list (b);
8796 }
8797 }
8798
8799 /* Create a breakpoint with SAL as location. Use LOCATION
8800 as a description of the location, and COND_STRING
8801 as condition expression. If LOCATION is NULL then create an
8802 "address location" from the address in the SAL. */
8803
8804 static void
8805 init_breakpoint_sal (struct breakpoint *b, struct gdbarch *gdbarch,
8806 gdb::array_view<const symtab_and_line> sals,
8807 event_location_up &&location,
8808 gdb::unique_xmalloc_ptr<char> filter,
8809 gdb::unique_xmalloc_ptr<char> cond_string,
8810 gdb::unique_xmalloc_ptr<char> extra_string,
8811 enum bptype type, enum bpdisp disposition,
8812 int thread, int task, int ignore_count,
8813 const struct breakpoint_ops *ops, int from_tty,
8814 int enabled, int internal, unsigned flags,
8815 int display_canonical)
8816 {
8817 int i;
8818
8819 if (type == bp_hardware_breakpoint)
8820 {
8821 int target_resources_ok;
8822
8823 i = hw_breakpoint_used_count ();
8824 target_resources_ok =
8825 target_can_use_hardware_watchpoint (bp_hardware_breakpoint,
8826 i + 1, 0);
8827 if (target_resources_ok == 0)
8828 error (_("No hardware breakpoint support in the target."));
8829 else if (target_resources_ok < 0)
8830 error (_("Hardware breakpoints used exceeds limit."));
8831 }
8832
8833 gdb_assert (!sals.empty ());
8834
8835 for (const auto &sal : sals)
8836 {
8837 struct bp_location *loc;
8838
8839 if (from_tty)
8840 {
8841 struct gdbarch *loc_gdbarch = get_sal_arch (sal);
8842 if (!loc_gdbarch)
8843 loc_gdbarch = gdbarch;
8844
8845 describe_other_breakpoints (loc_gdbarch,
8846 sal.pspace, sal.pc, sal.section, thread);
8847 }
8848
8849 if (&sal == &sals[0])
8850 {
8851 init_raw_breakpoint (b, gdbarch, sal, type, ops);
8852 b->thread = thread;
8853 b->task = task;
8854
8855 b->cond_string = cond_string.release ();
8856 b->extra_string = extra_string.release ();
8857 b->ignore_count = ignore_count;
8858 b->enable_state = enabled ? bp_enabled : bp_disabled;
8859 b->disposition = disposition;
8860
8861 if ((flags & CREATE_BREAKPOINT_FLAGS_INSERTED) != 0)
8862 b->loc->inserted = 1;
8863
8864 if (type == bp_static_tracepoint)
8865 {
8866 struct tracepoint *t = (struct tracepoint *) b;
8867 struct static_tracepoint_marker marker;
8868
8869 if (strace_marker_p (b))
8870 {
8871 /* We already know the marker exists, otherwise, we
8872 wouldn't see a sal for it. */
8873 const char *p
8874 = &event_location_to_string (b->location.get ())[3];
8875 const char *endp;
8876
8877 p = skip_spaces (p);
8878
8879 endp = skip_to_space (p);
8880
8881 t->static_trace_marker_id.assign (p, endp - p);
8882
8883 printf_filtered (_("Probed static tracepoint "
8884 "marker \"%s\"\n"),
8885 t->static_trace_marker_id.c_str ());
8886 }
8887 else if (target_static_tracepoint_marker_at (sal.pc, &marker))
8888 {
8889 t->static_trace_marker_id = std::move (marker.str_id);
8890
8891 printf_filtered (_("Probed static tracepoint "
8892 "marker \"%s\"\n"),
8893 t->static_trace_marker_id.c_str ());
8894 }
8895 else
8896 warning (_("Couldn't determine the static "
8897 "tracepoint marker to probe"));
8898 }
8899
8900 loc = b->loc;
8901 }
8902 else
8903 {
8904 loc = add_location_to_breakpoint (b, &sal);
8905 if ((flags & CREATE_BREAKPOINT_FLAGS_INSERTED) != 0)
8906 loc->inserted = 1;
8907 }
8908
8909 if (b->cond_string)
8910 {
8911 const char *arg = b->cond_string;
8912
8913 loc->cond = parse_exp_1 (&arg, loc->address,
8914 block_for_pc (loc->address), 0);
8915 if (*arg)
8916 error (_("Garbage '%s' follows condition"), arg);
8917 }
8918
8919 /* Dynamic printf requires and uses additional arguments on the
8920 command line, otherwise it's an error. */
8921 if (type == bp_dprintf)
8922 {
8923 if (b->extra_string)
8924 update_dprintf_command_list (b);
8925 else
8926 error (_("Format string required"));
8927 }
8928 else if (b->extra_string)
8929 error (_("Garbage '%s' at end of command"), b->extra_string);
8930 }
8931
8932 b->display_canonical = display_canonical;
8933 if (location != NULL)
8934 b->location = std::move (location);
8935 else
8936 b->location = new_address_location (b->loc->address, NULL, 0);
8937 b->filter = filter.release ();
8938 }
8939
8940 static void
8941 create_breakpoint_sal (struct gdbarch *gdbarch,
8942 gdb::array_view<const symtab_and_line> sals,
8943 event_location_up &&location,
8944 gdb::unique_xmalloc_ptr<char> filter,
8945 gdb::unique_xmalloc_ptr<char> cond_string,
8946 gdb::unique_xmalloc_ptr<char> extra_string,
8947 enum bptype type, enum bpdisp disposition,
8948 int thread, int task, int ignore_count,
8949 const struct breakpoint_ops *ops, int from_tty,
8950 int enabled, int internal, unsigned flags,
8951 int display_canonical)
8952 {
8953 std::unique_ptr<breakpoint> b = new_breakpoint_from_type (type);
8954
8955 init_breakpoint_sal (b.get (), gdbarch,
8956 sals, std::move (location),
8957 std::move (filter),
8958 std::move (cond_string),
8959 std::move (extra_string),
8960 type, disposition,
8961 thread, task, ignore_count,
8962 ops, from_tty,
8963 enabled, internal, flags,
8964 display_canonical);
8965
8966 install_breakpoint (internal, std::move (b), 0);
8967 }
8968
8969 /* Add SALS.nelts breakpoints to the breakpoint table. For each
8970 SALS.sal[i] breakpoint, include the corresponding ADDR_STRING[i]
8971 value. COND_STRING, if not NULL, specified the condition to be
8972 used for all breakpoints. Essentially the only case where
8973 SALS.nelts is not 1 is when we set a breakpoint on an overloaded
8974 function. In that case, it's still not possible to specify
8975 separate conditions for different overloaded functions, so
8976 we take just a single condition string.
8977
8978 NOTE: If the function succeeds, the caller is expected to cleanup
8979 the arrays ADDR_STRING, COND_STRING, and SALS (but not the
8980 array contents). If the function fails (error() is called), the
8981 caller is expected to cleanups both the ADDR_STRING, COND_STRING,
8982 COND and SALS arrays and each of those arrays contents. */
8983
8984 static void
8985 create_breakpoints_sal (struct gdbarch *gdbarch,
8986 struct linespec_result *canonical,
8987 gdb::unique_xmalloc_ptr<char> cond_string,
8988 gdb::unique_xmalloc_ptr<char> extra_string,
8989 enum bptype type, enum bpdisp disposition,
8990 int thread, int task, int ignore_count,
8991 const struct breakpoint_ops *ops, int from_tty,
8992 int enabled, int internal, unsigned flags)
8993 {
8994 if (canonical->pre_expanded)
8995 gdb_assert (canonical->lsals.size () == 1);
8996
8997 for (const auto &lsal : canonical->lsals)
8998 {
8999 /* Note that 'location' can be NULL in the case of a plain
9000 'break', without arguments. */
9001 event_location_up location
9002 = (canonical->location != NULL
9003 ? copy_event_location (canonical->location.get ()) : NULL);
9004 gdb::unique_xmalloc_ptr<char> filter_string
9005 (lsal.canonical != NULL ? xstrdup (lsal.canonical) : NULL);
9006
9007 create_breakpoint_sal (gdbarch, lsal.sals,
9008 std::move (location),
9009 std::move (filter_string),
9010 std::move (cond_string),
9011 std::move (extra_string),
9012 type, disposition,
9013 thread, task, ignore_count, ops,
9014 from_tty, enabled, internal, flags,
9015 canonical->special_display);
9016 }
9017 }
9018
9019 /* Parse LOCATION which is assumed to be a SAL specification possibly
9020 followed by conditionals. On return, SALS contains an array of SAL
9021 addresses found. LOCATION points to the end of the SAL (for
9022 linespec locations).
9023
9024 The array and the line spec strings are allocated on the heap, it is
9025 the caller's responsibility to free them. */
9026
9027 static void
9028 parse_breakpoint_sals (const struct event_location *location,
9029 struct linespec_result *canonical)
9030 {
9031 struct symtab_and_line cursal;
9032
9033 if (event_location_type (location) == LINESPEC_LOCATION)
9034 {
9035 const char *spec = get_linespec_location (location)->spec_string;
9036
9037 if (spec == NULL)
9038 {
9039 /* The last displayed codepoint, if it's valid, is our default
9040 breakpoint address. */
9041 if (last_displayed_sal_is_valid ())
9042 {
9043 /* Set sal's pspace, pc, symtab, and line to the values
9044 corresponding to the last call to print_frame_info.
9045 Be sure to reinitialize LINE with NOTCURRENT == 0
9046 as the breakpoint line number is inappropriate otherwise.
9047 find_pc_line would adjust PC, re-set it back. */
9048 symtab_and_line sal = get_last_displayed_sal ();
9049 CORE_ADDR pc = sal.pc;
9050
9051 sal = find_pc_line (pc, 0);
9052
9053 /* "break" without arguments is equivalent to "break *PC"
9054 where PC is the last displayed codepoint's address. So
9055 make sure to set sal.explicit_pc to prevent GDB from
9056 trying to expand the list of sals to include all other
9057 instances with the same symtab and line. */
9058 sal.pc = pc;
9059 sal.explicit_pc = 1;
9060
9061 struct linespec_sals lsal;
9062 lsal.sals = {sal};
9063 lsal.canonical = NULL;
9064
9065 canonical->lsals.push_back (std::move (lsal));
9066 return;
9067 }
9068 else
9069 error (_("No default breakpoint address now."));
9070 }
9071 }
9072
9073 /* Force almost all breakpoints to be in terms of the
9074 current_source_symtab (which is decode_line_1's default).
9075 This should produce the results we want almost all of the
9076 time while leaving default_breakpoint_* alone.
9077
9078 ObjC: However, don't match an Objective-C method name which
9079 may have a '+' or '-' succeeded by a '['. */
9080 cursal = get_current_source_symtab_and_line ();
9081 if (last_displayed_sal_is_valid ())
9082 {
9083 const char *spec = NULL;
9084
9085 if (event_location_type (location) == LINESPEC_LOCATION)
9086 spec = get_linespec_location (location)->spec_string;
9087
9088 if (!cursal.symtab
9089 || (spec != NULL
9090 && strchr ("+-", spec[0]) != NULL
9091 && spec[1] != '['))
9092 {
9093 decode_line_full (location, DECODE_LINE_FUNFIRSTLINE, NULL,
9094 get_last_displayed_symtab (),
9095 get_last_displayed_line (),
9096 canonical, NULL, NULL);
9097 return;
9098 }
9099 }
9100
9101 decode_line_full (location, DECODE_LINE_FUNFIRSTLINE, NULL,
9102 cursal.symtab, cursal.line, canonical, NULL, NULL);
9103 }
9104
9105
9106 /* Convert each SAL into a real PC. Verify that the PC can be
9107 inserted as a breakpoint. If it can't throw an error. */
9108
9109 static void
9110 breakpoint_sals_to_pc (std::vector<symtab_and_line> &sals)
9111 {
9112 for (auto &sal : sals)
9113 resolve_sal_pc (&sal);
9114 }
9115
9116 /* Fast tracepoints may have restrictions on valid locations. For
9117 instance, a fast tracepoint using a jump instead of a trap will
9118 likely have to overwrite more bytes than a trap would, and so can
9119 only be placed where the instruction is longer than the jump, or a
9120 multi-instruction sequence does not have a jump into the middle of
9121 it, etc. */
9122
9123 static void
9124 check_fast_tracepoint_sals (struct gdbarch *gdbarch,
9125 gdb::array_view<const symtab_and_line> sals)
9126 {
9127 for (const auto &sal : sals)
9128 {
9129 struct gdbarch *sarch;
9130
9131 sarch = get_sal_arch (sal);
9132 /* We fall back to GDBARCH if there is no architecture
9133 associated with SAL. */
9134 if (sarch == NULL)
9135 sarch = gdbarch;
9136 std::string msg;
9137 if (!gdbarch_fast_tracepoint_valid_at (sarch, sal.pc, &msg))
9138 error (_("May not have a fast tracepoint at %s%s"),
9139 paddress (sarch, sal.pc), msg.c_str ());
9140 }
9141 }
9142
9143 /* Given TOK, a string specification of condition and thread, as
9144 accepted by the 'break' command, extract the condition
9145 string and thread number and set *COND_STRING and *THREAD.
9146 PC identifies the context at which the condition should be parsed.
9147 If no condition is found, *COND_STRING is set to NULL.
9148 If no thread is found, *THREAD is set to -1. */
9149
9150 static void
9151 find_condition_and_thread (const char *tok, CORE_ADDR pc,
9152 char **cond_string, int *thread, int *task,
9153 char **rest)
9154 {
9155 *cond_string = NULL;
9156 *thread = -1;
9157 *task = 0;
9158 *rest = NULL;
9159
9160 while (tok && *tok)
9161 {
9162 const char *end_tok;
9163 int toklen;
9164 const char *cond_start = NULL;
9165 const char *cond_end = NULL;
9166
9167 tok = skip_spaces (tok);
9168
9169 if ((*tok == '"' || *tok == ',') && rest)
9170 {
9171 *rest = savestring (tok, strlen (tok));
9172 return;
9173 }
9174
9175 end_tok = skip_to_space (tok);
9176
9177 toklen = end_tok - tok;
9178
9179 if (toklen >= 1 && strncmp (tok, "if", toklen) == 0)
9180 {
9181 tok = cond_start = end_tok + 1;
9182 parse_exp_1 (&tok, pc, block_for_pc (pc), 0);
9183 cond_end = tok;
9184 *cond_string = savestring (cond_start, cond_end - cond_start);
9185 }
9186 else if (toklen >= 1 && strncmp (tok, "thread", toklen) == 0)
9187 {
9188 const char *tmptok;
9189 struct thread_info *thr;
9190
9191 tok = end_tok + 1;
9192 thr = parse_thread_id (tok, &tmptok);
9193 if (tok == tmptok)
9194 error (_("Junk after thread keyword."));
9195 *thread = thr->global_num;
9196 tok = tmptok;
9197 }
9198 else if (toklen >= 1 && strncmp (tok, "task", toklen) == 0)
9199 {
9200 char *tmptok;
9201
9202 tok = end_tok + 1;
9203 *task = strtol (tok, &tmptok, 0);
9204 if (tok == tmptok)
9205 error (_("Junk after task keyword."));
9206 if (!valid_task_id (*task))
9207 error (_("Unknown task %d."), *task);
9208 tok = tmptok;
9209 }
9210 else if (rest)
9211 {
9212 *rest = savestring (tok, strlen (tok));
9213 return;
9214 }
9215 else
9216 error (_("Junk at end of arguments."));
9217 }
9218 }
9219
9220 /* Decode a static tracepoint marker spec. */
9221
9222 static std::vector<symtab_and_line>
9223 decode_static_tracepoint_spec (const char **arg_p)
9224 {
9225 const char *p = &(*arg_p)[3];
9226 const char *endp;
9227
9228 p = skip_spaces (p);
9229
9230 endp = skip_to_space (p);
9231
9232 std::string marker_str (p, endp - p);
9233
9234 std::vector<static_tracepoint_marker> markers
9235 = target_static_tracepoint_markers_by_strid (marker_str.c_str ());
9236 if (markers.empty ())
9237 error (_("No known static tracepoint marker named %s"),
9238 marker_str.c_str ());
9239
9240 std::vector<symtab_and_line> sals;
9241 sals.reserve (markers.size ());
9242
9243 for (const static_tracepoint_marker &marker : markers)
9244 {
9245 symtab_and_line sal = find_pc_line (marker.address, 0);
9246 sal.pc = marker.address;
9247 sals.push_back (sal);
9248 }
9249
9250 *arg_p = endp;
9251 return sals;
9252 }
9253
9254 /* See breakpoint.h. */
9255
9256 int
9257 create_breakpoint (struct gdbarch *gdbarch,
9258 const struct event_location *location,
9259 const char *cond_string,
9260 int thread, const char *extra_string,
9261 int parse_extra,
9262 int tempflag, enum bptype type_wanted,
9263 int ignore_count,
9264 enum auto_boolean pending_break_support,
9265 const struct breakpoint_ops *ops,
9266 int from_tty, int enabled, int internal,
9267 unsigned flags)
9268 {
9269 struct linespec_result canonical;
9270 struct cleanup *bkpt_chain = NULL;
9271 int pending = 0;
9272 int task = 0;
9273 int prev_bkpt_count = breakpoint_count;
9274
9275 gdb_assert (ops != NULL);
9276
9277 /* If extra_string isn't useful, set it to NULL. */
9278 if (extra_string != NULL && *extra_string == '\0')
9279 extra_string = NULL;
9280
9281 TRY
9282 {
9283 ops->create_sals_from_location (location, &canonical, type_wanted);
9284 }
9285 CATCH (e, RETURN_MASK_ERROR)
9286 {
9287 /* If caller is interested in rc value from parse, set
9288 value. */
9289 if (e.error == NOT_FOUND_ERROR)
9290 {
9291 /* If pending breakpoint support is turned off, throw
9292 error. */
9293
9294 if (pending_break_support == AUTO_BOOLEAN_FALSE)
9295 throw_exception (e);
9296
9297 exception_print (gdb_stderr, e);
9298
9299 /* If pending breakpoint support is auto query and the user
9300 selects no, then simply return the error code. */
9301 if (pending_break_support == AUTO_BOOLEAN_AUTO
9302 && !nquery (_("Make %s pending on future shared library load? "),
9303 bptype_string (type_wanted)))
9304 return 0;
9305
9306 /* At this point, either the user was queried about setting
9307 a pending breakpoint and selected yes, or pending
9308 breakpoint behavior is on and thus a pending breakpoint
9309 is defaulted on behalf of the user. */
9310 pending = 1;
9311 }
9312 else
9313 throw_exception (e);
9314 }
9315 END_CATCH
9316
9317 if (!pending && canonical.lsals.empty ())
9318 return 0;
9319
9320 /* ----------------------------- SNIP -----------------------------
9321 Anything added to the cleanup chain beyond this point is assumed
9322 to be part of a breakpoint. If the breakpoint create succeeds
9323 then the memory is not reclaimed. */
9324 bkpt_chain = make_cleanup (null_cleanup, 0);
9325
9326 /* Resolve all line numbers to PC's and verify that the addresses
9327 are ok for the target. */
9328 if (!pending)
9329 {
9330 for (auto &lsal : canonical.lsals)
9331 breakpoint_sals_to_pc (lsal.sals);
9332 }
9333
9334 /* Fast tracepoints may have additional restrictions on location. */
9335 if (!pending && type_wanted == bp_fast_tracepoint)
9336 {
9337 for (const auto &lsal : canonical.lsals)
9338 check_fast_tracepoint_sals (gdbarch, lsal.sals);
9339 }
9340
9341 /* Verify that condition can be parsed, before setting any
9342 breakpoints. Allocate a separate condition expression for each
9343 breakpoint. */
9344 if (!pending)
9345 {
9346 gdb::unique_xmalloc_ptr<char> cond_string_copy;
9347 gdb::unique_xmalloc_ptr<char> extra_string_copy;
9348
9349 if (parse_extra)
9350 {
9351 char *rest;
9352 char *cond;
9353
9354 const linespec_sals &lsal = canonical.lsals[0];
9355
9356 /* Here we only parse 'arg' to separate condition
9357 from thread number, so parsing in context of first
9358 sal is OK. When setting the breakpoint we'll
9359 re-parse it in context of each sal. */
9360
9361 find_condition_and_thread (extra_string, lsal.sals[0].pc,
9362 &cond, &thread, &task, &rest);
9363 cond_string_copy.reset (cond);
9364 extra_string_copy.reset (rest);
9365 }
9366 else
9367 {
9368 if (type_wanted != bp_dprintf
9369 && extra_string != NULL && *extra_string != '\0')
9370 error (_("Garbage '%s' at end of location"), extra_string);
9371
9372 /* Create a private copy of condition string. */
9373 if (cond_string)
9374 cond_string_copy.reset (xstrdup (cond_string));
9375 /* Create a private copy of any extra string. */
9376 if (extra_string)
9377 extra_string_copy.reset (xstrdup (extra_string));
9378 }
9379
9380 ops->create_breakpoints_sal (gdbarch, &canonical,
9381 std::move (cond_string_copy),
9382 std::move (extra_string_copy),
9383 type_wanted,
9384 tempflag ? disp_del : disp_donttouch,
9385 thread, task, ignore_count, ops,
9386 from_tty, enabled, internal, flags);
9387 }
9388 else
9389 {
9390 std::unique_ptr <breakpoint> b = new_breakpoint_from_type (type_wanted);
9391
9392 init_raw_breakpoint_without_location (b.get (), gdbarch, type_wanted, ops);
9393 b->location = copy_event_location (location);
9394
9395 if (parse_extra)
9396 b->cond_string = NULL;
9397 else
9398 {
9399 /* Create a private copy of condition string. */
9400 b->cond_string = cond_string != NULL ? xstrdup (cond_string) : NULL;
9401 b->thread = thread;
9402 }
9403
9404 /* Create a private copy of any extra string. */
9405 b->extra_string = extra_string != NULL ? xstrdup (extra_string) : NULL;
9406 b->ignore_count = ignore_count;
9407 b->disposition = tempflag ? disp_del : disp_donttouch;
9408 b->condition_not_parsed = 1;
9409 b->enable_state = enabled ? bp_enabled : bp_disabled;
9410 if ((type_wanted != bp_breakpoint
9411 && type_wanted != bp_hardware_breakpoint) || thread != -1)
9412 b->pspace = current_program_space;
9413
9414 install_breakpoint (internal, std::move (b), 0);
9415 }
9416
9417 if (canonical.lsals.size () > 1)
9418 {
9419 warning (_("Multiple breakpoints were set.\nUse the "
9420 "\"delete\" command to delete unwanted breakpoints."));
9421 prev_breakpoint_count = prev_bkpt_count;
9422 }
9423
9424 /* That's it. Discard the cleanups for data inserted into the
9425 breakpoint. */
9426 discard_cleanups (bkpt_chain);
9427
9428 /* error call may happen here - have BKPT_CHAIN already discarded. */
9429 update_global_location_list (UGLL_MAY_INSERT);
9430
9431 return 1;
9432 }
9433
9434 /* Set a breakpoint.
9435 ARG is a string describing breakpoint address,
9436 condition, and thread.
9437 FLAG specifies if a breakpoint is hardware on,
9438 and if breakpoint is temporary, using BP_HARDWARE_FLAG
9439 and BP_TEMPFLAG. */
9440
9441 static void
9442 break_command_1 (const char *arg, int flag, int from_tty)
9443 {
9444 int tempflag = flag & BP_TEMPFLAG;
9445 enum bptype type_wanted = (flag & BP_HARDWAREFLAG
9446 ? bp_hardware_breakpoint
9447 : bp_breakpoint);
9448 struct breakpoint_ops *ops;
9449
9450 event_location_up location = string_to_event_location (&arg, current_language);
9451
9452 /* Matching breakpoints on probes. */
9453 if (location != NULL
9454 && event_location_type (location.get ()) == PROBE_LOCATION)
9455 ops = &bkpt_probe_breakpoint_ops;
9456 else
9457 ops = &bkpt_breakpoint_ops;
9458
9459 create_breakpoint (get_current_arch (),
9460 location.get (),
9461 NULL, 0, arg, 1 /* parse arg */,
9462 tempflag, type_wanted,
9463 0 /* Ignore count */,
9464 pending_break_support,
9465 ops,
9466 from_tty,
9467 1 /* enabled */,
9468 0 /* internal */,
9469 0);
9470 }
9471
9472 /* Helper function for break_command_1 and disassemble_command. */
9473
9474 void
9475 resolve_sal_pc (struct symtab_and_line *sal)
9476 {
9477 CORE_ADDR pc;
9478
9479 if (sal->pc == 0 && sal->symtab != NULL)
9480 {
9481 if (!find_line_pc (sal->symtab, sal->line, &pc))
9482 error (_("No line %d in file \"%s\"."),
9483 sal->line, symtab_to_filename_for_display (sal->symtab));
9484 sal->pc = pc;
9485
9486 /* If this SAL corresponds to a breakpoint inserted using a line
9487 number, then skip the function prologue if necessary. */
9488 if (sal->explicit_line)
9489 skip_prologue_sal (sal);
9490 }
9491
9492 if (sal->section == 0 && sal->symtab != NULL)
9493 {
9494 const struct blockvector *bv;
9495 const struct block *b;
9496 struct symbol *sym;
9497
9498 bv = blockvector_for_pc_sect (sal->pc, 0, &b,
9499 SYMTAB_COMPUNIT (sal->symtab));
9500 if (bv != NULL)
9501 {
9502 sym = block_linkage_function (b);
9503 if (sym != NULL)
9504 {
9505 fixup_symbol_section (sym, SYMTAB_OBJFILE (sal->symtab));
9506 sal->section = SYMBOL_OBJ_SECTION (SYMTAB_OBJFILE (sal->symtab),
9507 sym);
9508 }
9509 else
9510 {
9511 /* It really is worthwhile to have the section, so we'll
9512 just have to look harder. This case can be executed
9513 if we have line numbers but no functions (as can
9514 happen in assembly source). */
9515
9516 scoped_restore_current_pspace_and_thread restore_pspace_thread;
9517 switch_to_program_space_and_thread (sal->pspace);
9518
9519 bound_minimal_symbol msym = lookup_minimal_symbol_by_pc (sal->pc);
9520 if (msym.minsym)
9521 sal->section = MSYMBOL_OBJ_SECTION (msym.objfile, msym.minsym);
9522 }
9523 }
9524 }
9525 }
9526
9527 void
9528 break_command (const char *arg, int from_tty)
9529 {
9530 break_command_1 (arg, 0, from_tty);
9531 }
9532
9533 void
9534 tbreak_command (const char *arg, int from_tty)
9535 {
9536 break_command_1 (arg, BP_TEMPFLAG, from_tty);
9537 }
9538
9539 static void
9540 hbreak_command (const char *arg, int from_tty)
9541 {
9542 break_command_1 (arg, BP_HARDWAREFLAG, from_tty);
9543 }
9544
9545 static void
9546 thbreak_command (const char *arg, int from_tty)
9547 {
9548 break_command_1 (arg, (BP_TEMPFLAG | BP_HARDWAREFLAG), from_tty);
9549 }
9550
9551 static void
9552 stop_command (const char *arg, int from_tty)
9553 {
9554 printf_filtered (_("Specify the type of breakpoint to set.\n\
9555 Usage: stop in <function | address>\n\
9556 stop at <line>\n"));
9557 }
9558
9559 static void
9560 stopin_command (const char *arg, int from_tty)
9561 {
9562 int badInput = 0;
9563
9564 if (arg == (char *) NULL)
9565 badInput = 1;
9566 else if (*arg != '*')
9567 {
9568 const char *argptr = arg;
9569 int hasColon = 0;
9570
9571 /* Look for a ':'. If this is a line number specification, then
9572 say it is bad, otherwise, it should be an address or
9573 function/method name. */
9574 while (*argptr && !hasColon)
9575 {
9576 hasColon = (*argptr == ':');
9577 argptr++;
9578 }
9579
9580 if (hasColon)
9581 badInput = (*argptr != ':'); /* Not a class::method */
9582 else
9583 badInput = isdigit (*arg); /* a simple line number */
9584 }
9585
9586 if (badInput)
9587 printf_filtered (_("Usage: stop in <function | address>\n"));
9588 else
9589 break_command_1 (arg, 0, from_tty);
9590 }
9591
9592 static void
9593 stopat_command (const char *arg, int from_tty)
9594 {
9595 int badInput = 0;
9596
9597 if (arg == (char *) NULL || *arg == '*') /* no line number */
9598 badInput = 1;
9599 else
9600 {
9601 const char *argptr = arg;
9602 int hasColon = 0;
9603
9604 /* Look for a ':'. If there is a '::' then get out, otherwise
9605 it is probably a line number. */
9606 while (*argptr && !hasColon)
9607 {
9608 hasColon = (*argptr == ':');
9609 argptr++;
9610 }
9611
9612 if (hasColon)
9613 badInput = (*argptr == ':'); /* we have class::method */
9614 else
9615 badInput = !isdigit (*arg); /* not a line number */
9616 }
9617
9618 if (badInput)
9619 printf_filtered (_("Usage: stop at <line>\n"));
9620 else
9621 break_command_1 (arg, 0, from_tty);
9622 }
9623
9624 /* The dynamic printf command is mostly like a regular breakpoint, but
9625 with a prewired command list consisting of a single output command,
9626 built from extra arguments supplied on the dprintf command
9627 line. */
9628
9629 static void
9630 dprintf_command (const char *arg, int from_tty)
9631 {
9632 event_location_up location = string_to_event_location (&arg, current_language);
9633
9634 /* If non-NULL, ARG should have been advanced past the location;
9635 the next character must be ','. */
9636 if (arg != NULL)
9637 {
9638 if (arg[0] != ',' || arg[1] == '\0')
9639 error (_("Format string required"));
9640 else
9641 {
9642 /* Skip the comma. */
9643 ++arg;
9644 }
9645 }
9646
9647 create_breakpoint (get_current_arch (),
9648 location.get (),
9649 NULL, 0, arg, 1 /* parse arg */,
9650 0, bp_dprintf,
9651 0 /* Ignore count */,
9652 pending_break_support,
9653 &dprintf_breakpoint_ops,
9654 from_tty,
9655 1 /* enabled */,
9656 0 /* internal */,
9657 0);
9658 }
9659
9660 static void
9661 agent_printf_command (const char *arg, int from_tty)
9662 {
9663 error (_("May only run agent-printf on the target"));
9664 }
9665
9666 /* Implement the "breakpoint_hit" breakpoint_ops method for
9667 ranged breakpoints. */
9668
9669 static int
9670 breakpoint_hit_ranged_breakpoint (const struct bp_location *bl,
9671 const address_space *aspace,
9672 CORE_ADDR bp_addr,
9673 const struct target_waitstatus *ws)
9674 {
9675 if (ws->kind != TARGET_WAITKIND_STOPPED
9676 || ws->value.sig != GDB_SIGNAL_TRAP)
9677 return 0;
9678
9679 return breakpoint_address_match_range (bl->pspace->aspace, bl->address,
9680 bl->length, aspace, bp_addr);
9681 }
9682
9683 /* Implement the "resources_needed" breakpoint_ops method for
9684 ranged breakpoints. */
9685
9686 static int
9687 resources_needed_ranged_breakpoint (const struct bp_location *bl)
9688 {
9689 return target_ranged_break_num_registers ();
9690 }
9691
9692 /* Implement the "print_it" breakpoint_ops method for
9693 ranged breakpoints. */
9694
9695 static enum print_stop_action
9696 print_it_ranged_breakpoint (bpstat bs)
9697 {
9698 struct breakpoint *b = bs->breakpoint_at;
9699 struct bp_location *bl = b->loc;
9700 struct ui_out *uiout = current_uiout;
9701
9702 gdb_assert (b->type == bp_hardware_breakpoint);
9703
9704 /* Ranged breakpoints have only one location. */
9705 gdb_assert (bl && bl->next == NULL);
9706
9707 annotate_breakpoint (b->number);
9708
9709 maybe_print_thread_hit_breakpoint (uiout);
9710
9711 if (b->disposition == disp_del)
9712 uiout->text ("Temporary ranged breakpoint ");
9713 else
9714 uiout->text ("Ranged breakpoint ");
9715 if (uiout->is_mi_like_p ())
9716 {
9717 uiout->field_string ("reason",
9718 async_reason_lookup (EXEC_ASYNC_BREAKPOINT_HIT));
9719 uiout->field_string ("disp", bpdisp_text (b->disposition));
9720 }
9721 uiout->field_int ("bkptno", b->number);
9722 uiout->text (", ");
9723
9724 return PRINT_SRC_AND_LOC;
9725 }
9726
9727 /* Implement the "print_one" breakpoint_ops method for
9728 ranged breakpoints. */
9729
9730 static void
9731 print_one_ranged_breakpoint (struct breakpoint *b,
9732 struct bp_location **last_loc)
9733 {
9734 struct bp_location *bl = b->loc;
9735 struct value_print_options opts;
9736 struct ui_out *uiout = current_uiout;
9737
9738 /* Ranged breakpoints have only one location. */
9739 gdb_assert (bl && bl->next == NULL);
9740
9741 get_user_print_options (&opts);
9742
9743 if (opts.addressprint)
9744 /* We don't print the address range here, it will be printed later
9745 by print_one_detail_ranged_breakpoint. */
9746 uiout->field_skip ("addr");
9747 annotate_field (5);
9748 print_breakpoint_location (b, bl);
9749 *last_loc = bl;
9750 }
9751
9752 /* Implement the "print_one_detail" breakpoint_ops method for
9753 ranged breakpoints. */
9754
9755 static void
9756 print_one_detail_ranged_breakpoint (const struct breakpoint *b,
9757 struct ui_out *uiout)
9758 {
9759 CORE_ADDR address_start, address_end;
9760 struct bp_location *bl = b->loc;
9761 string_file stb;
9762
9763 gdb_assert (bl);
9764
9765 address_start = bl->address;
9766 address_end = address_start + bl->length - 1;
9767
9768 uiout->text ("\taddress range: ");
9769 stb.printf ("[%s, %s]",
9770 print_core_address (bl->gdbarch, address_start),
9771 print_core_address (bl->gdbarch, address_end));
9772 uiout->field_stream ("addr", stb);
9773 uiout->text ("\n");
9774 }
9775
9776 /* Implement the "print_mention" breakpoint_ops method for
9777 ranged breakpoints. */
9778
9779 static void
9780 print_mention_ranged_breakpoint (struct breakpoint *b)
9781 {
9782 struct bp_location *bl = b->loc;
9783 struct ui_out *uiout = current_uiout;
9784
9785 gdb_assert (bl);
9786 gdb_assert (b->type == bp_hardware_breakpoint);
9787
9788 uiout->message (_("Hardware assisted ranged breakpoint %d from %s to %s."),
9789 b->number, paddress (bl->gdbarch, bl->address),
9790 paddress (bl->gdbarch, bl->address + bl->length - 1));
9791 }
9792
9793 /* Implement the "print_recreate" breakpoint_ops method for
9794 ranged breakpoints. */
9795
9796 static void
9797 print_recreate_ranged_breakpoint (struct breakpoint *b, struct ui_file *fp)
9798 {
9799 fprintf_unfiltered (fp, "break-range %s, %s",
9800 event_location_to_string (b->location.get ()),
9801 event_location_to_string (b->location_range_end.get ()));
9802 print_recreate_thread (b, fp);
9803 }
9804
9805 /* The breakpoint_ops structure to be used in ranged breakpoints. */
9806
9807 static struct breakpoint_ops ranged_breakpoint_ops;
9808
9809 /* Find the address where the end of the breakpoint range should be
9810 placed, given the SAL of the end of the range. This is so that if
9811 the user provides a line number, the end of the range is set to the
9812 last instruction of the given line. */
9813
9814 static CORE_ADDR
9815 find_breakpoint_range_end (struct symtab_and_line sal)
9816 {
9817 CORE_ADDR end;
9818
9819 /* If the user provided a PC value, use it. Otherwise,
9820 find the address of the end of the given location. */
9821 if (sal.explicit_pc)
9822 end = sal.pc;
9823 else
9824 {
9825 int ret;
9826 CORE_ADDR start;
9827
9828 ret = find_line_pc_range (sal, &start, &end);
9829 if (!ret)
9830 error (_("Could not find location of the end of the range."));
9831
9832 /* find_line_pc_range returns the start of the next line. */
9833 end--;
9834 }
9835
9836 return end;
9837 }
9838
9839 /* Implement the "break-range" CLI command. */
9840
9841 static void
9842 break_range_command (const char *arg, int from_tty)
9843 {
9844 const char *arg_start;
9845 struct linespec_result canonical_start, canonical_end;
9846 int bp_count, can_use_bp, length;
9847 CORE_ADDR end;
9848 struct breakpoint *b;
9849
9850 /* We don't support software ranged breakpoints. */
9851 if (target_ranged_break_num_registers () < 0)
9852 error (_("This target does not support hardware ranged breakpoints."));
9853
9854 bp_count = hw_breakpoint_used_count ();
9855 bp_count += target_ranged_break_num_registers ();
9856 can_use_bp = target_can_use_hardware_watchpoint (bp_hardware_breakpoint,
9857 bp_count, 0);
9858 if (can_use_bp < 0)
9859 error (_("Hardware breakpoints used exceeds limit."));
9860
9861 arg = skip_spaces (arg);
9862 if (arg == NULL || arg[0] == '\0')
9863 error(_("No address range specified."));
9864
9865 arg_start = arg;
9866 event_location_up start_location = string_to_event_location (&arg,
9867 current_language);
9868 parse_breakpoint_sals (start_location.get (), &canonical_start);
9869
9870 if (arg[0] != ',')
9871 error (_("Too few arguments."));
9872 else if (canonical_start.lsals.empty ())
9873 error (_("Could not find location of the beginning of the range."));
9874
9875 const linespec_sals &lsal_start = canonical_start.lsals[0];
9876
9877 if (canonical_start.lsals.size () > 1
9878 || lsal_start.sals.size () != 1)
9879 error (_("Cannot create a ranged breakpoint with multiple locations."));
9880
9881 const symtab_and_line &sal_start = lsal_start.sals[0];
9882 std::string addr_string_start (arg_start, arg - arg_start);
9883
9884 arg++; /* Skip the comma. */
9885 arg = skip_spaces (arg);
9886
9887 /* Parse the end location. */
9888
9889 arg_start = arg;
9890
9891 /* We call decode_line_full directly here instead of using
9892 parse_breakpoint_sals because we need to specify the start location's
9893 symtab and line as the default symtab and line for the end of the
9894 range. This makes it possible to have ranges like "foo.c:27, +14",
9895 where +14 means 14 lines from the start location. */
9896 event_location_up end_location = string_to_event_location (&arg,
9897 current_language);
9898 decode_line_full (end_location.get (), DECODE_LINE_FUNFIRSTLINE, NULL,
9899 sal_start.symtab, sal_start.line,
9900 &canonical_end, NULL, NULL);
9901
9902 if (canonical_end.lsals.empty ())
9903 error (_("Could not find location of the end of the range."));
9904
9905 const linespec_sals &lsal_end = canonical_end.lsals[0];
9906 if (canonical_end.lsals.size () > 1
9907 || lsal_end.sals.size () != 1)
9908 error (_("Cannot create a ranged breakpoint with multiple locations."));
9909
9910 const symtab_and_line &sal_end = lsal_end.sals[0];
9911
9912 end = find_breakpoint_range_end (sal_end);
9913 if (sal_start.pc > end)
9914 error (_("Invalid address range, end precedes start."));
9915
9916 length = end - sal_start.pc + 1;
9917 if (length < 0)
9918 /* Length overflowed. */
9919 error (_("Address range too large."));
9920 else if (length == 1)
9921 {
9922 /* This range is simple enough to be handled by
9923 the `hbreak' command. */
9924 hbreak_command (&addr_string_start[0], 1);
9925
9926 return;
9927 }
9928
9929 /* Now set up the breakpoint. */
9930 b = set_raw_breakpoint (get_current_arch (), sal_start,
9931 bp_hardware_breakpoint, &ranged_breakpoint_ops);
9932 set_breakpoint_count (breakpoint_count + 1);
9933 b->number = breakpoint_count;
9934 b->disposition = disp_donttouch;
9935 b->location = std::move (start_location);
9936 b->location_range_end = std::move (end_location);
9937 b->loc->length = length;
9938
9939 mention (b);
9940 gdb::observers::breakpoint_created.notify (b);
9941 update_global_location_list (UGLL_MAY_INSERT);
9942 }
9943
9944 /* Return non-zero if EXP is verified as constant. Returned zero
9945 means EXP is variable. Also the constant detection may fail for
9946 some constant expressions and in such case still falsely return
9947 zero. */
9948
9949 static int
9950 watchpoint_exp_is_const (const struct expression *exp)
9951 {
9952 int i = exp->nelts;
9953
9954 while (i > 0)
9955 {
9956 int oplenp, argsp;
9957
9958 /* We are only interested in the descriptor of each element. */
9959 operator_length (exp, i, &oplenp, &argsp);
9960 i -= oplenp;
9961
9962 switch (exp->elts[i].opcode)
9963 {
9964 case BINOP_ADD:
9965 case BINOP_SUB:
9966 case BINOP_MUL:
9967 case BINOP_DIV:
9968 case BINOP_REM:
9969 case BINOP_MOD:
9970 case BINOP_LSH:
9971 case BINOP_RSH:
9972 case BINOP_LOGICAL_AND:
9973 case BINOP_LOGICAL_OR:
9974 case BINOP_BITWISE_AND:
9975 case BINOP_BITWISE_IOR:
9976 case BINOP_BITWISE_XOR:
9977 case BINOP_EQUAL:
9978 case BINOP_NOTEQUAL:
9979 case BINOP_LESS:
9980 case BINOP_GTR:
9981 case BINOP_LEQ:
9982 case BINOP_GEQ:
9983 case BINOP_REPEAT:
9984 case BINOP_COMMA:
9985 case BINOP_EXP:
9986 case BINOP_MIN:
9987 case BINOP_MAX:
9988 case BINOP_INTDIV:
9989 case BINOP_CONCAT:
9990 case TERNOP_COND:
9991 case TERNOP_SLICE:
9992
9993 case OP_LONG:
9994 case OP_FLOAT:
9995 case OP_LAST:
9996 case OP_COMPLEX:
9997 case OP_STRING:
9998 case OP_ARRAY:
9999 case OP_TYPE:
10000 case OP_TYPEOF:
10001 case OP_DECLTYPE:
10002 case OP_TYPEID:
10003 case OP_NAME:
10004 case OP_OBJC_NSSTRING:
10005
10006 case UNOP_NEG:
10007 case UNOP_LOGICAL_NOT:
10008 case UNOP_COMPLEMENT:
10009 case UNOP_ADDR:
10010 case UNOP_HIGH:
10011 case UNOP_CAST:
10012
10013 case UNOP_CAST_TYPE:
10014 case UNOP_REINTERPRET_CAST:
10015 case UNOP_DYNAMIC_CAST:
10016 /* Unary, binary and ternary operators: We have to check
10017 their operands. If they are constant, then so is the
10018 result of that operation. For instance, if A and B are
10019 determined to be constants, then so is "A + B".
10020
10021 UNOP_IND is one exception to the rule above, because the
10022 value of *ADDR is not necessarily a constant, even when
10023 ADDR is. */
10024 break;
10025
10026 case OP_VAR_VALUE:
10027 /* Check whether the associated symbol is a constant.
10028
10029 We use SYMBOL_CLASS rather than TYPE_CONST because it's
10030 possible that a buggy compiler could mark a variable as
10031 constant even when it is not, and TYPE_CONST would return
10032 true in this case, while SYMBOL_CLASS wouldn't.
10033
10034 We also have to check for function symbols because they
10035 are always constant. */
10036 {
10037 struct symbol *s = exp->elts[i + 2].symbol;
10038
10039 if (SYMBOL_CLASS (s) != LOC_BLOCK
10040 && SYMBOL_CLASS (s) != LOC_CONST
10041 && SYMBOL_CLASS (s) != LOC_CONST_BYTES)
10042 return 0;
10043 break;
10044 }
10045
10046 /* The default action is to return 0 because we are using
10047 the optimistic approach here: If we don't know something,
10048 then it is not a constant. */
10049 default:
10050 return 0;
10051 }
10052 }
10053
10054 return 1;
10055 }
10056
10057 /* Watchpoint destructor. */
10058
10059 watchpoint::~watchpoint ()
10060 {
10061 xfree (this->exp_string);
10062 xfree (this->exp_string_reparse);
10063 }
10064
10065 /* Implement the "re_set" breakpoint_ops method for watchpoints. */
10066
10067 static void
10068 re_set_watchpoint (struct breakpoint *b)
10069 {
10070 struct watchpoint *w = (struct watchpoint *) b;
10071
10072 /* Watchpoint can be either on expression using entirely global
10073 variables, or it can be on local variables.
10074
10075 Watchpoints of the first kind are never auto-deleted, and even
10076 persist across program restarts. Since they can use variables
10077 from shared libraries, we need to reparse expression as libraries
10078 are loaded and unloaded.
10079
10080 Watchpoints on local variables can also change meaning as result
10081 of solib event. For example, if a watchpoint uses both a local
10082 and a global variables in expression, it's a local watchpoint,
10083 but unloading of a shared library will make the expression
10084 invalid. This is not a very common use case, but we still
10085 re-evaluate expression, to avoid surprises to the user.
10086
10087 Note that for local watchpoints, we re-evaluate it only if
10088 watchpoints frame id is still valid. If it's not, it means the
10089 watchpoint is out of scope and will be deleted soon. In fact,
10090 I'm not sure we'll ever be called in this case.
10091
10092 If a local watchpoint's frame id is still valid, then
10093 w->exp_valid_block is likewise valid, and we can safely use it.
10094
10095 Don't do anything about disabled watchpoints, since they will be
10096 reevaluated again when enabled. */
10097 update_watchpoint (w, 1 /* reparse */);
10098 }
10099
10100 /* Implement the "insert" breakpoint_ops method for hardware watchpoints. */
10101
10102 static int
10103 insert_watchpoint (struct bp_location *bl)
10104 {
10105 struct watchpoint *w = (struct watchpoint *) bl->owner;
10106 int length = w->exact ? 1 : bl->length;
10107
10108 return target_insert_watchpoint (bl->address, length, bl->watchpoint_type,
10109 w->cond_exp.get ());
10110 }
10111
10112 /* Implement the "remove" breakpoint_ops method for hardware watchpoints. */
10113
10114 static int
10115 remove_watchpoint (struct bp_location *bl, enum remove_bp_reason reason)
10116 {
10117 struct watchpoint *w = (struct watchpoint *) bl->owner;
10118 int length = w->exact ? 1 : bl->length;
10119
10120 return target_remove_watchpoint (bl->address, length, bl->watchpoint_type,
10121 w->cond_exp.get ());
10122 }
10123
10124 static int
10125 breakpoint_hit_watchpoint (const struct bp_location *bl,
10126 const address_space *aspace, CORE_ADDR bp_addr,
10127 const struct target_waitstatus *ws)
10128 {
10129 struct breakpoint *b = bl->owner;
10130 struct watchpoint *w = (struct watchpoint *) b;
10131
10132 /* Continuable hardware watchpoints are treated as non-existent if the
10133 reason we stopped wasn't a hardware watchpoint (we didn't stop on
10134 some data address). Otherwise gdb won't stop on a break instruction
10135 in the code (not from a breakpoint) when a hardware watchpoint has
10136 been defined. Also skip watchpoints which we know did not trigger
10137 (did not match the data address). */
10138 if (is_hardware_watchpoint (b)
10139 && w->watchpoint_triggered == watch_triggered_no)
10140 return 0;
10141
10142 return 1;
10143 }
10144
10145 static void
10146 check_status_watchpoint (bpstat bs)
10147 {
10148 gdb_assert (is_watchpoint (bs->breakpoint_at));
10149
10150 bpstat_check_watchpoint (bs);
10151 }
10152
10153 /* Implement the "resources_needed" breakpoint_ops method for
10154 hardware watchpoints. */
10155
10156 static int
10157 resources_needed_watchpoint (const struct bp_location *bl)
10158 {
10159 struct watchpoint *w = (struct watchpoint *) bl->owner;
10160 int length = w->exact? 1 : bl->length;
10161
10162 return target_region_ok_for_hw_watchpoint (bl->address, length);
10163 }
10164
10165 /* Implement the "works_in_software_mode" breakpoint_ops method for
10166 hardware watchpoints. */
10167
10168 static int
10169 works_in_software_mode_watchpoint (const struct breakpoint *b)
10170 {
10171 /* Read and access watchpoints only work with hardware support. */
10172 return b->type == bp_watchpoint || b->type == bp_hardware_watchpoint;
10173 }
10174
10175 static enum print_stop_action
10176 print_it_watchpoint (bpstat bs)
10177 {
10178 struct breakpoint *b;
10179 enum print_stop_action result;
10180 struct watchpoint *w;
10181 struct ui_out *uiout = current_uiout;
10182
10183 gdb_assert (bs->bp_location_at != NULL);
10184
10185 b = bs->breakpoint_at;
10186 w = (struct watchpoint *) b;
10187
10188 annotate_watchpoint (b->number);
10189 maybe_print_thread_hit_breakpoint (uiout);
10190
10191 string_file stb;
10192
10193 gdb::optional<ui_out_emit_tuple> tuple_emitter;
10194 switch (b->type)
10195 {
10196 case bp_watchpoint:
10197 case bp_hardware_watchpoint:
10198 if (uiout->is_mi_like_p ())
10199 uiout->field_string
10200 ("reason", async_reason_lookup (EXEC_ASYNC_WATCHPOINT_TRIGGER));
10201 mention (b);
10202 tuple_emitter.emplace (uiout, "value");
10203 uiout->text ("\nOld value = ");
10204 watchpoint_value_print (bs->old_val.get (), &stb);
10205 uiout->field_stream ("old", stb);
10206 uiout->text ("\nNew value = ");
10207 watchpoint_value_print (w->val.get (), &stb);
10208 uiout->field_stream ("new", stb);
10209 uiout->text ("\n");
10210 /* More than one watchpoint may have been triggered. */
10211 result = PRINT_UNKNOWN;
10212 break;
10213
10214 case bp_read_watchpoint:
10215 if (uiout->is_mi_like_p ())
10216 uiout->field_string
10217 ("reason", async_reason_lookup (EXEC_ASYNC_READ_WATCHPOINT_TRIGGER));
10218 mention (b);
10219 tuple_emitter.emplace (uiout, "value");
10220 uiout->text ("\nValue = ");
10221 watchpoint_value_print (w->val.get (), &stb);
10222 uiout->field_stream ("value", stb);
10223 uiout->text ("\n");
10224 result = PRINT_UNKNOWN;
10225 break;
10226
10227 case bp_access_watchpoint:
10228 if (bs->old_val != NULL)
10229 {
10230 if (uiout->is_mi_like_p ())
10231 uiout->field_string
10232 ("reason",
10233 async_reason_lookup (EXEC_ASYNC_ACCESS_WATCHPOINT_TRIGGER));
10234 mention (b);
10235 tuple_emitter.emplace (uiout, "value");
10236 uiout->text ("\nOld value = ");
10237 watchpoint_value_print (bs->old_val.get (), &stb);
10238 uiout->field_stream ("old", stb);
10239 uiout->text ("\nNew value = ");
10240 }
10241 else
10242 {
10243 mention (b);
10244 if (uiout->is_mi_like_p ())
10245 uiout->field_string
10246 ("reason",
10247 async_reason_lookup (EXEC_ASYNC_ACCESS_WATCHPOINT_TRIGGER));
10248 tuple_emitter.emplace (uiout, "value");
10249 uiout->text ("\nValue = ");
10250 }
10251 watchpoint_value_print (w->val.get (), &stb);
10252 uiout->field_stream ("new", stb);
10253 uiout->text ("\n");
10254 result = PRINT_UNKNOWN;
10255 break;
10256 default:
10257 result = PRINT_UNKNOWN;
10258 }
10259
10260 return result;
10261 }
10262
10263 /* Implement the "print_mention" breakpoint_ops method for hardware
10264 watchpoints. */
10265
10266 static void
10267 print_mention_watchpoint (struct breakpoint *b)
10268 {
10269 struct watchpoint *w = (struct watchpoint *) b;
10270 struct ui_out *uiout = current_uiout;
10271 const char *tuple_name;
10272
10273 switch (b->type)
10274 {
10275 case bp_watchpoint:
10276 uiout->text ("Watchpoint ");
10277 tuple_name = "wpt";
10278 break;
10279 case bp_hardware_watchpoint:
10280 uiout->text ("Hardware watchpoint ");
10281 tuple_name = "wpt";
10282 break;
10283 case bp_read_watchpoint:
10284 uiout->text ("Hardware read watchpoint ");
10285 tuple_name = "hw-rwpt";
10286 break;
10287 case bp_access_watchpoint:
10288 uiout->text ("Hardware access (read/write) watchpoint ");
10289 tuple_name = "hw-awpt";
10290 break;
10291 default:
10292 internal_error (__FILE__, __LINE__,
10293 _("Invalid hardware watchpoint type."));
10294 }
10295
10296 ui_out_emit_tuple tuple_emitter (uiout, tuple_name);
10297 uiout->field_int ("number", b->number);
10298 uiout->text (": ");
10299 uiout->field_string ("exp", w->exp_string);
10300 }
10301
10302 /* Implement the "print_recreate" breakpoint_ops method for
10303 watchpoints. */
10304
10305 static void
10306 print_recreate_watchpoint (struct breakpoint *b, struct ui_file *fp)
10307 {
10308 struct watchpoint *w = (struct watchpoint *) b;
10309
10310 switch (b->type)
10311 {
10312 case bp_watchpoint:
10313 case bp_hardware_watchpoint:
10314 fprintf_unfiltered (fp, "watch");
10315 break;
10316 case bp_read_watchpoint:
10317 fprintf_unfiltered (fp, "rwatch");
10318 break;
10319 case bp_access_watchpoint:
10320 fprintf_unfiltered (fp, "awatch");
10321 break;
10322 default:
10323 internal_error (__FILE__, __LINE__,
10324 _("Invalid watchpoint type."));
10325 }
10326
10327 fprintf_unfiltered (fp, " %s", w->exp_string);
10328 print_recreate_thread (b, fp);
10329 }
10330
10331 /* Implement the "explains_signal" breakpoint_ops method for
10332 watchpoints. */
10333
10334 static int
10335 explains_signal_watchpoint (struct breakpoint *b, enum gdb_signal sig)
10336 {
10337 /* A software watchpoint cannot cause a signal other than
10338 GDB_SIGNAL_TRAP. */
10339 if (b->type == bp_watchpoint && sig != GDB_SIGNAL_TRAP)
10340 return 0;
10341
10342 return 1;
10343 }
10344
10345 /* The breakpoint_ops structure to be used in hardware watchpoints. */
10346
10347 static struct breakpoint_ops watchpoint_breakpoint_ops;
10348
10349 /* Implement the "insert" breakpoint_ops method for
10350 masked hardware watchpoints. */
10351
10352 static int
10353 insert_masked_watchpoint (struct bp_location *bl)
10354 {
10355 struct watchpoint *w = (struct watchpoint *) bl->owner;
10356
10357 return target_insert_mask_watchpoint (bl->address, w->hw_wp_mask,
10358 bl->watchpoint_type);
10359 }
10360
10361 /* Implement the "remove" breakpoint_ops method for
10362 masked hardware watchpoints. */
10363
10364 static int
10365 remove_masked_watchpoint (struct bp_location *bl, enum remove_bp_reason reason)
10366 {
10367 struct watchpoint *w = (struct watchpoint *) bl->owner;
10368
10369 return target_remove_mask_watchpoint (bl->address, w->hw_wp_mask,
10370 bl->watchpoint_type);
10371 }
10372
10373 /* Implement the "resources_needed" breakpoint_ops method for
10374 masked hardware watchpoints. */
10375
10376 static int
10377 resources_needed_masked_watchpoint (const struct bp_location *bl)
10378 {
10379 struct watchpoint *w = (struct watchpoint *) bl->owner;
10380
10381 return target_masked_watch_num_registers (bl->address, w->hw_wp_mask);
10382 }
10383
10384 /* Implement the "works_in_software_mode" breakpoint_ops method for
10385 masked hardware watchpoints. */
10386
10387 static int
10388 works_in_software_mode_masked_watchpoint (const struct breakpoint *b)
10389 {
10390 return 0;
10391 }
10392
10393 /* Implement the "print_it" breakpoint_ops method for
10394 masked hardware watchpoints. */
10395
10396 static enum print_stop_action
10397 print_it_masked_watchpoint (bpstat bs)
10398 {
10399 struct breakpoint *b = bs->breakpoint_at;
10400 struct ui_out *uiout = current_uiout;
10401
10402 /* Masked watchpoints have only one location. */
10403 gdb_assert (b->loc && b->loc->next == NULL);
10404
10405 annotate_watchpoint (b->number);
10406 maybe_print_thread_hit_breakpoint (uiout);
10407
10408 switch (b->type)
10409 {
10410 case bp_hardware_watchpoint:
10411 if (uiout->is_mi_like_p ())
10412 uiout->field_string
10413 ("reason", async_reason_lookup (EXEC_ASYNC_WATCHPOINT_TRIGGER));
10414 break;
10415
10416 case bp_read_watchpoint:
10417 if (uiout->is_mi_like_p ())
10418 uiout->field_string
10419 ("reason", async_reason_lookup (EXEC_ASYNC_READ_WATCHPOINT_TRIGGER));
10420 break;
10421
10422 case bp_access_watchpoint:
10423 if (uiout->is_mi_like_p ())
10424 uiout->field_string
10425 ("reason",
10426 async_reason_lookup (EXEC_ASYNC_ACCESS_WATCHPOINT_TRIGGER));
10427 break;
10428 default:
10429 internal_error (__FILE__, __LINE__,
10430 _("Invalid hardware watchpoint type."));
10431 }
10432
10433 mention (b);
10434 uiout->text (_("\n\
10435 Check the underlying instruction at PC for the memory\n\
10436 address and value which triggered this watchpoint.\n"));
10437 uiout->text ("\n");
10438
10439 /* More than one watchpoint may have been triggered. */
10440 return PRINT_UNKNOWN;
10441 }
10442
10443 /* Implement the "print_one_detail" breakpoint_ops method for
10444 masked hardware watchpoints. */
10445
10446 static void
10447 print_one_detail_masked_watchpoint (const struct breakpoint *b,
10448 struct ui_out *uiout)
10449 {
10450 struct watchpoint *w = (struct watchpoint *) b;
10451
10452 /* Masked watchpoints have only one location. */
10453 gdb_assert (b->loc && b->loc->next == NULL);
10454
10455 uiout->text ("\tmask ");
10456 uiout->field_core_addr ("mask", b->loc->gdbarch, w->hw_wp_mask);
10457 uiout->text ("\n");
10458 }
10459
10460 /* Implement the "print_mention" breakpoint_ops method for
10461 masked hardware watchpoints. */
10462
10463 static void
10464 print_mention_masked_watchpoint (struct breakpoint *b)
10465 {
10466 struct watchpoint *w = (struct watchpoint *) b;
10467 struct ui_out *uiout = current_uiout;
10468 const char *tuple_name;
10469
10470 switch (b->type)
10471 {
10472 case bp_hardware_watchpoint:
10473 uiout->text ("Masked hardware watchpoint ");
10474 tuple_name = "wpt";
10475 break;
10476 case bp_read_watchpoint:
10477 uiout->text ("Masked hardware read watchpoint ");
10478 tuple_name = "hw-rwpt";
10479 break;
10480 case bp_access_watchpoint:
10481 uiout->text ("Masked hardware access (read/write) watchpoint ");
10482 tuple_name = "hw-awpt";
10483 break;
10484 default:
10485 internal_error (__FILE__, __LINE__,
10486 _("Invalid hardware watchpoint type."));
10487 }
10488
10489 ui_out_emit_tuple tuple_emitter (uiout, tuple_name);
10490 uiout->field_int ("number", b->number);
10491 uiout->text (": ");
10492 uiout->field_string ("exp", w->exp_string);
10493 }
10494
10495 /* Implement the "print_recreate" breakpoint_ops method for
10496 masked hardware watchpoints. */
10497
10498 static void
10499 print_recreate_masked_watchpoint (struct breakpoint *b, struct ui_file *fp)
10500 {
10501 struct watchpoint *w = (struct watchpoint *) b;
10502 char tmp[40];
10503
10504 switch (b->type)
10505 {
10506 case bp_hardware_watchpoint:
10507 fprintf_unfiltered (fp, "watch");
10508 break;
10509 case bp_read_watchpoint:
10510 fprintf_unfiltered (fp, "rwatch");
10511 break;
10512 case bp_access_watchpoint:
10513 fprintf_unfiltered (fp, "awatch");
10514 break;
10515 default:
10516 internal_error (__FILE__, __LINE__,
10517 _("Invalid hardware watchpoint type."));
10518 }
10519
10520 sprintf_vma (tmp, w->hw_wp_mask);
10521 fprintf_unfiltered (fp, " %s mask 0x%s", w->exp_string, tmp);
10522 print_recreate_thread (b, fp);
10523 }
10524
10525 /* The breakpoint_ops structure to be used in masked hardware watchpoints. */
10526
10527 static struct breakpoint_ops masked_watchpoint_breakpoint_ops;
10528
10529 /* Tell whether the given watchpoint is a masked hardware watchpoint. */
10530
10531 static int
10532 is_masked_watchpoint (const struct breakpoint *b)
10533 {
10534 return b->ops == &masked_watchpoint_breakpoint_ops;
10535 }
10536
10537 /* accessflag: hw_write: watch write,
10538 hw_read: watch read,
10539 hw_access: watch access (read or write) */
10540 static void
10541 watch_command_1 (const char *arg, int accessflag, int from_tty,
10542 int just_location, int internal)
10543 {
10544 struct breakpoint *scope_breakpoint = NULL;
10545 const struct block *exp_valid_block = NULL, *cond_exp_valid_block = NULL;
10546 struct value *mark, *result;
10547 int saved_bitpos = 0, saved_bitsize = 0;
10548 const char *exp_start = NULL;
10549 const char *exp_end = NULL;
10550 const char *tok, *end_tok;
10551 int toklen = -1;
10552 const char *cond_start = NULL;
10553 const char *cond_end = NULL;
10554 enum bptype bp_type;
10555 int thread = -1;
10556 int pc = 0;
10557 /* Flag to indicate whether we are going to use masks for
10558 the hardware watchpoint. */
10559 int use_mask = 0;
10560 CORE_ADDR mask = 0;
10561
10562 /* Make sure that we actually have parameters to parse. */
10563 if (arg != NULL && arg[0] != '\0')
10564 {
10565 const char *value_start;
10566
10567 exp_end = arg + strlen (arg);
10568
10569 /* Look for "parameter value" pairs at the end
10570 of the arguments string. */
10571 for (tok = exp_end - 1; tok > arg; tok--)
10572 {
10573 /* Skip whitespace at the end of the argument list. */
10574 while (tok > arg && (*tok == ' ' || *tok == '\t'))
10575 tok--;
10576
10577 /* Find the beginning of the last token.
10578 This is the value of the parameter. */
10579 while (tok > arg && (*tok != ' ' && *tok != '\t'))
10580 tok--;
10581 value_start = tok + 1;
10582
10583 /* Skip whitespace. */
10584 while (tok > arg && (*tok == ' ' || *tok == '\t'))
10585 tok--;
10586
10587 end_tok = tok;
10588
10589 /* Find the beginning of the second to last token.
10590 This is the parameter itself. */
10591 while (tok > arg && (*tok != ' ' && *tok != '\t'))
10592 tok--;
10593 tok++;
10594 toklen = end_tok - tok + 1;
10595
10596 if (toklen == 6 && startswith (tok, "thread"))
10597 {
10598 struct thread_info *thr;
10599 /* At this point we've found a "thread" token, which means
10600 the user is trying to set a watchpoint that triggers
10601 only in a specific thread. */
10602 const char *endp;
10603
10604 if (thread != -1)
10605 error(_("You can specify only one thread."));
10606
10607 /* Extract the thread ID from the next token. */
10608 thr = parse_thread_id (value_start, &endp);
10609
10610 /* Check if the user provided a valid thread ID. */
10611 if (*endp != ' ' && *endp != '\t' && *endp != '\0')
10612 invalid_thread_id_error (value_start);
10613
10614 thread = thr->global_num;
10615 }
10616 else if (toklen == 4 && startswith (tok, "mask"))
10617 {
10618 /* We've found a "mask" token, which means the user wants to
10619 create a hardware watchpoint that is going to have the mask
10620 facility. */
10621 struct value *mask_value, *mark;
10622
10623 if (use_mask)
10624 error(_("You can specify only one mask."));
10625
10626 use_mask = just_location = 1;
10627
10628 mark = value_mark ();
10629 mask_value = parse_to_comma_and_eval (&value_start);
10630 mask = value_as_address (mask_value);
10631 value_free_to_mark (mark);
10632 }
10633 else
10634 /* We didn't recognize what we found. We should stop here. */
10635 break;
10636
10637 /* Truncate the string and get rid of the "parameter value" pair before
10638 the arguments string is parsed by the parse_exp_1 function. */
10639 exp_end = tok;
10640 }
10641 }
10642 else
10643 exp_end = arg;
10644
10645 /* Parse the rest of the arguments. From here on out, everything
10646 is in terms of a newly allocated string instead of the original
10647 ARG. */
10648 innermost_block.reset ();
10649 std::string expression (arg, exp_end - arg);
10650 exp_start = arg = expression.c_str ();
10651 expression_up exp = parse_exp_1 (&arg, 0, 0, 0);
10652 exp_end = arg;
10653 /* Remove trailing whitespace from the expression before saving it.
10654 This makes the eventual display of the expression string a bit
10655 prettier. */
10656 while (exp_end > exp_start && (exp_end[-1] == ' ' || exp_end[-1] == '\t'))
10657 --exp_end;
10658
10659 /* Checking if the expression is not constant. */
10660 if (watchpoint_exp_is_const (exp.get ()))
10661 {
10662 int len;
10663
10664 len = exp_end - exp_start;
10665 while (len > 0 && isspace (exp_start[len - 1]))
10666 len--;
10667 error (_("Cannot watch constant value `%.*s'."), len, exp_start);
10668 }
10669
10670 exp_valid_block = innermost_block.block ();
10671 mark = value_mark ();
10672 struct value *val_as_value = nullptr;
10673 fetch_subexp_value (exp.get (), &pc, &val_as_value, &result, NULL,
10674 just_location);
10675
10676 if (val_as_value != NULL && just_location)
10677 {
10678 saved_bitpos = value_bitpos (val_as_value);
10679 saved_bitsize = value_bitsize (val_as_value);
10680 }
10681
10682 value_ref_ptr val;
10683 if (just_location)
10684 {
10685 int ret;
10686
10687 exp_valid_block = NULL;
10688 val = release_value (value_addr (result));
10689 value_free_to_mark (mark);
10690
10691 if (use_mask)
10692 {
10693 ret = target_masked_watch_num_registers (value_as_address (val.get ()),
10694 mask);
10695 if (ret == -1)
10696 error (_("This target does not support masked watchpoints."));
10697 else if (ret == -2)
10698 error (_("Invalid mask or memory region."));
10699 }
10700 }
10701 else if (val_as_value != NULL)
10702 val = release_value (val_as_value);
10703
10704 tok = skip_spaces (arg);
10705 end_tok = skip_to_space (tok);
10706
10707 toklen = end_tok - tok;
10708 if (toklen >= 1 && strncmp (tok, "if", toklen) == 0)
10709 {
10710 innermost_block.reset ();
10711 tok = cond_start = end_tok + 1;
10712 parse_exp_1 (&tok, 0, 0, 0);
10713
10714 /* The watchpoint expression may not be local, but the condition
10715 may still be. E.g.: `watch global if local > 0'. */
10716 cond_exp_valid_block = innermost_block.block ();
10717
10718 cond_end = tok;
10719 }
10720 if (*tok)
10721 error (_("Junk at end of command."));
10722
10723 frame_info *wp_frame = block_innermost_frame (exp_valid_block);
10724
10725 /* Save this because create_internal_breakpoint below invalidates
10726 'wp_frame'. */
10727 frame_id watchpoint_frame = get_frame_id (wp_frame);
10728
10729 /* If the expression is "local", then set up a "watchpoint scope"
10730 breakpoint at the point where we've left the scope of the watchpoint
10731 expression. Create the scope breakpoint before the watchpoint, so
10732 that we will encounter it first in bpstat_stop_status. */
10733 if (exp_valid_block != NULL && wp_frame != NULL)
10734 {
10735 frame_id caller_frame_id = frame_unwind_caller_id (wp_frame);
10736
10737 if (frame_id_p (caller_frame_id))
10738 {
10739 gdbarch *caller_arch = frame_unwind_caller_arch (wp_frame);
10740 CORE_ADDR caller_pc = frame_unwind_caller_pc (wp_frame);
10741
10742 scope_breakpoint
10743 = create_internal_breakpoint (caller_arch, caller_pc,
10744 bp_watchpoint_scope,
10745 &momentary_breakpoint_ops);
10746
10747 /* create_internal_breakpoint could invalidate WP_FRAME. */
10748 wp_frame = NULL;
10749
10750 scope_breakpoint->enable_state = bp_enabled;
10751
10752 /* Automatically delete the breakpoint when it hits. */
10753 scope_breakpoint->disposition = disp_del;
10754
10755 /* Only break in the proper frame (help with recursion). */
10756 scope_breakpoint->frame_id = caller_frame_id;
10757
10758 /* Set the address at which we will stop. */
10759 scope_breakpoint->loc->gdbarch = caller_arch;
10760 scope_breakpoint->loc->requested_address = caller_pc;
10761 scope_breakpoint->loc->address
10762 = adjust_breakpoint_address (scope_breakpoint->loc->gdbarch,
10763 scope_breakpoint->loc->requested_address,
10764 scope_breakpoint->type);
10765 }
10766 }
10767
10768 /* Now set up the breakpoint. We create all watchpoints as hardware
10769 watchpoints here even if hardware watchpoints are turned off, a call
10770 to update_watchpoint later in this function will cause the type to
10771 drop back to bp_watchpoint (software watchpoint) if required. */
10772
10773 if (accessflag == hw_read)
10774 bp_type = bp_read_watchpoint;
10775 else if (accessflag == hw_access)
10776 bp_type = bp_access_watchpoint;
10777 else
10778 bp_type = bp_hardware_watchpoint;
10779
10780 std::unique_ptr<watchpoint> w (new watchpoint ());
10781
10782 if (use_mask)
10783 init_raw_breakpoint_without_location (w.get (), NULL, bp_type,
10784 &masked_watchpoint_breakpoint_ops);
10785 else
10786 init_raw_breakpoint_without_location (w.get (), NULL, bp_type,
10787 &watchpoint_breakpoint_ops);
10788 w->thread = thread;
10789 w->disposition = disp_donttouch;
10790 w->pspace = current_program_space;
10791 w->exp = std::move (exp);
10792 w->exp_valid_block = exp_valid_block;
10793 w->cond_exp_valid_block = cond_exp_valid_block;
10794 if (just_location)
10795 {
10796 struct type *t = value_type (val.get ());
10797 CORE_ADDR addr = value_as_address (val.get ());
10798
10799 w->exp_string_reparse
10800 = current_language->la_watch_location_expression (t, addr).release ();
10801
10802 w->exp_string = xstrprintf ("-location %.*s",
10803 (int) (exp_end - exp_start), exp_start);
10804 }
10805 else
10806 w->exp_string = savestring (exp_start, exp_end - exp_start);
10807
10808 if (use_mask)
10809 {
10810 w->hw_wp_mask = mask;
10811 }
10812 else
10813 {
10814 w->val = val;
10815 w->val_bitpos = saved_bitpos;
10816 w->val_bitsize = saved_bitsize;
10817 w->val_valid = 1;
10818 }
10819
10820 if (cond_start)
10821 w->cond_string = savestring (cond_start, cond_end - cond_start);
10822 else
10823 w->cond_string = 0;
10824
10825 if (frame_id_p (watchpoint_frame))
10826 {
10827 w->watchpoint_frame = watchpoint_frame;
10828 w->watchpoint_thread = inferior_ptid;
10829 }
10830 else
10831 {
10832 w->watchpoint_frame = null_frame_id;
10833 w->watchpoint_thread = null_ptid;
10834 }
10835
10836 if (scope_breakpoint != NULL)
10837 {
10838 /* The scope breakpoint is related to the watchpoint. We will
10839 need to act on them together. */
10840 w->related_breakpoint = scope_breakpoint;
10841 scope_breakpoint->related_breakpoint = w.get ();
10842 }
10843
10844 if (!just_location)
10845 value_free_to_mark (mark);
10846
10847 /* Finally update the new watchpoint. This creates the locations
10848 that should be inserted. */
10849 update_watchpoint (w.get (), 1);
10850
10851 install_breakpoint (internal, std::move (w), 1);
10852 }
10853
10854 /* Return count of debug registers needed to watch the given expression.
10855 If the watchpoint cannot be handled in hardware return zero. */
10856
10857 static int
10858 can_use_hardware_watchpoint (const std::vector<value_ref_ptr> &vals)
10859 {
10860 int found_memory_cnt = 0;
10861
10862 /* Did the user specifically forbid us to use hardware watchpoints? */
10863 if (!can_use_hw_watchpoints)
10864 return 0;
10865
10866 gdb_assert (!vals.empty ());
10867 struct value *head = vals[0].get ();
10868
10869 /* Make sure that the value of the expression depends only upon
10870 memory contents, and values computed from them within GDB. If we
10871 find any register references or function calls, we can't use a
10872 hardware watchpoint.
10873
10874 The idea here is that evaluating an expression generates a series
10875 of values, one holding the value of every subexpression. (The
10876 expression a*b+c has five subexpressions: a, b, a*b, c, and
10877 a*b+c.) GDB's values hold almost enough information to establish
10878 the criteria given above --- they identify memory lvalues,
10879 register lvalues, computed values, etcetera. So we can evaluate
10880 the expression, and then scan the chain of values that leaves
10881 behind to decide whether we can detect any possible change to the
10882 expression's final value using only hardware watchpoints.
10883
10884 However, I don't think that the values returned by inferior
10885 function calls are special in any way. So this function may not
10886 notice that an expression involving an inferior function call
10887 can't be watched with hardware watchpoints. FIXME. */
10888 for (const value_ref_ptr &iter : vals)
10889 {
10890 struct value *v = iter.get ();
10891
10892 if (VALUE_LVAL (v) == lval_memory)
10893 {
10894 if (v != head && value_lazy (v))
10895 /* A lazy memory lvalue in the chain is one that GDB never
10896 needed to fetch; we either just used its address (e.g.,
10897 `a' in `a.b') or we never needed it at all (e.g., `a'
10898 in `a,b'). This doesn't apply to HEAD; if that is
10899 lazy then it was not readable, but watch it anyway. */
10900 ;
10901 else
10902 {
10903 /* Ahh, memory we actually used! Check if we can cover
10904 it with hardware watchpoints. */
10905 struct type *vtype = check_typedef (value_type (v));
10906
10907 /* We only watch structs and arrays if user asked for it
10908 explicitly, never if they just happen to appear in a
10909 middle of some value chain. */
10910 if (v == head
10911 || (TYPE_CODE (vtype) != TYPE_CODE_STRUCT
10912 && TYPE_CODE (vtype) != TYPE_CODE_ARRAY))
10913 {
10914 CORE_ADDR vaddr = value_address (v);
10915 int len;
10916 int num_regs;
10917
10918 len = (target_exact_watchpoints
10919 && is_scalar_type_recursive (vtype))?
10920 1 : TYPE_LENGTH (value_type (v));
10921
10922 num_regs = target_region_ok_for_hw_watchpoint (vaddr, len);
10923 if (!num_regs)
10924 return 0;
10925 else
10926 found_memory_cnt += num_regs;
10927 }
10928 }
10929 }
10930 else if (VALUE_LVAL (v) != not_lval
10931 && deprecated_value_modifiable (v) == 0)
10932 return 0; /* These are values from the history (e.g., $1). */
10933 else if (VALUE_LVAL (v) == lval_register)
10934 return 0; /* Cannot watch a register with a HW watchpoint. */
10935 }
10936
10937 /* The expression itself looks suitable for using a hardware
10938 watchpoint, but give the target machine a chance to reject it. */
10939 return found_memory_cnt;
10940 }
10941
10942 void
10943 watch_command_wrapper (const char *arg, int from_tty, int internal)
10944 {
10945 watch_command_1 (arg, hw_write, from_tty, 0, internal);
10946 }
10947
10948 /* A helper function that looks for the "-location" argument and then
10949 calls watch_command_1. */
10950
10951 static void
10952 watch_maybe_just_location (const char *arg, int accessflag, int from_tty)
10953 {
10954 int just_location = 0;
10955
10956 if (arg
10957 && (check_for_argument (&arg, "-location", sizeof ("-location") - 1)
10958 || check_for_argument (&arg, "-l", sizeof ("-l") - 1)))
10959 {
10960 arg = skip_spaces (arg);
10961 just_location = 1;
10962 }
10963
10964 watch_command_1 (arg, accessflag, from_tty, just_location, 0);
10965 }
10966
10967 static void
10968 watch_command (const char *arg, int from_tty)
10969 {
10970 watch_maybe_just_location (arg, hw_write, from_tty);
10971 }
10972
10973 void
10974 rwatch_command_wrapper (const char *arg, int from_tty, int internal)
10975 {
10976 watch_command_1 (arg, hw_read, from_tty, 0, internal);
10977 }
10978
10979 static void
10980 rwatch_command (const char *arg, int from_tty)
10981 {
10982 watch_maybe_just_location (arg, hw_read, from_tty);
10983 }
10984
10985 void
10986 awatch_command_wrapper (const char *arg, int from_tty, int internal)
10987 {
10988 watch_command_1 (arg, hw_access, from_tty, 0, internal);
10989 }
10990
10991 static void
10992 awatch_command (const char *arg, int from_tty)
10993 {
10994 watch_maybe_just_location (arg, hw_access, from_tty);
10995 }
10996 \f
10997
10998 /* Data for the FSM that manages the until(location)/advance commands
10999 in infcmd.c. Here because it uses the mechanisms of
11000 breakpoints. */
11001
11002 struct until_break_fsm
11003 {
11004 /* The base class. */
11005 struct thread_fsm thread_fsm;
11006
11007 /* The thread that as current when the command was executed. */
11008 int thread;
11009
11010 /* The breakpoint set at the destination location. */
11011 struct breakpoint *location_breakpoint;
11012
11013 /* Breakpoint set at the return address in the caller frame. May be
11014 NULL. */
11015 struct breakpoint *caller_breakpoint;
11016 };
11017
11018 static void until_break_fsm_clean_up (struct thread_fsm *self,
11019 struct thread_info *thread);
11020 static int until_break_fsm_should_stop (struct thread_fsm *self,
11021 struct thread_info *thread);
11022 static enum async_reply_reason
11023 until_break_fsm_async_reply_reason (struct thread_fsm *self);
11024
11025 /* until_break_fsm's vtable. */
11026
11027 static struct thread_fsm_ops until_break_fsm_ops =
11028 {
11029 NULL, /* dtor */
11030 until_break_fsm_clean_up,
11031 until_break_fsm_should_stop,
11032 NULL, /* return_value */
11033 until_break_fsm_async_reply_reason,
11034 };
11035
11036 /* Allocate a new until_break_command_fsm. */
11037
11038 static struct until_break_fsm *
11039 new_until_break_fsm (struct interp *cmd_interp, int thread,
11040 breakpoint_up &&location_breakpoint,
11041 breakpoint_up &&caller_breakpoint)
11042 {
11043 struct until_break_fsm *sm;
11044
11045 sm = XCNEW (struct until_break_fsm);
11046 thread_fsm_ctor (&sm->thread_fsm, &until_break_fsm_ops, cmd_interp);
11047
11048 sm->thread = thread;
11049 sm->location_breakpoint = location_breakpoint.release ();
11050 sm->caller_breakpoint = caller_breakpoint.release ();
11051
11052 return sm;
11053 }
11054
11055 /* Implementation of the 'should_stop' FSM method for the
11056 until(location)/advance commands. */
11057
11058 static int
11059 until_break_fsm_should_stop (struct thread_fsm *self,
11060 struct thread_info *tp)
11061 {
11062 struct until_break_fsm *sm = (struct until_break_fsm *) self;
11063
11064 if (bpstat_find_breakpoint (tp->control.stop_bpstat,
11065 sm->location_breakpoint) != NULL
11066 || (sm->caller_breakpoint != NULL
11067 && bpstat_find_breakpoint (tp->control.stop_bpstat,
11068 sm->caller_breakpoint) != NULL))
11069 thread_fsm_set_finished (self);
11070
11071 return 1;
11072 }
11073
11074 /* Implementation of the 'clean_up' FSM method for the
11075 until(location)/advance commands. */
11076
11077 static void
11078 until_break_fsm_clean_up (struct thread_fsm *self,
11079 struct thread_info *thread)
11080 {
11081 struct until_break_fsm *sm = (struct until_break_fsm *) self;
11082
11083 /* Clean up our temporary breakpoints. */
11084 if (sm->location_breakpoint != NULL)
11085 {
11086 delete_breakpoint (sm->location_breakpoint);
11087 sm->location_breakpoint = NULL;
11088 }
11089 if (sm->caller_breakpoint != NULL)
11090 {
11091 delete_breakpoint (sm->caller_breakpoint);
11092 sm->caller_breakpoint = NULL;
11093 }
11094 delete_longjmp_breakpoint (sm->thread);
11095 }
11096
11097 /* Implementation of the 'async_reply_reason' FSM method for the
11098 until(location)/advance commands. */
11099
11100 static enum async_reply_reason
11101 until_break_fsm_async_reply_reason (struct thread_fsm *self)
11102 {
11103 return EXEC_ASYNC_LOCATION_REACHED;
11104 }
11105
11106 void
11107 until_break_command (const char *arg, int from_tty, int anywhere)
11108 {
11109 struct frame_info *frame;
11110 struct gdbarch *frame_gdbarch;
11111 struct frame_id stack_frame_id;
11112 struct frame_id caller_frame_id;
11113 struct cleanup *old_chain;
11114 int thread;
11115 struct thread_info *tp;
11116 struct until_break_fsm *sm;
11117
11118 clear_proceed_status (0);
11119
11120 /* Set a breakpoint where the user wants it and at return from
11121 this function. */
11122
11123 event_location_up location = string_to_event_location (&arg, current_language);
11124
11125 std::vector<symtab_and_line> sals
11126 = (last_displayed_sal_is_valid ()
11127 ? decode_line_1 (location.get (), DECODE_LINE_FUNFIRSTLINE, NULL,
11128 get_last_displayed_symtab (),
11129 get_last_displayed_line ())
11130 : decode_line_1 (location.get (), DECODE_LINE_FUNFIRSTLINE,
11131 NULL, (struct symtab *) NULL, 0));
11132
11133 if (sals.size () != 1)
11134 error (_("Couldn't get information on specified line."));
11135
11136 symtab_and_line &sal = sals[0];
11137
11138 if (*arg)
11139 error (_("Junk at end of arguments."));
11140
11141 resolve_sal_pc (&sal);
11142
11143 tp = inferior_thread ();
11144 thread = tp->global_num;
11145
11146 old_chain = make_cleanup (null_cleanup, NULL);
11147
11148 /* Note linespec handling above invalidates the frame chain.
11149 Installing a breakpoint also invalidates the frame chain (as it
11150 may need to switch threads), so do any frame handling before
11151 that. */
11152
11153 frame = get_selected_frame (NULL);
11154 frame_gdbarch = get_frame_arch (frame);
11155 stack_frame_id = get_stack_frame_id (frame);
11156 caller_frame_id = frame_unwind_caller_id (frame);
11157
11158 /* Keep within the current frame, or in frames called by the current
11159 one. */
11160
11161 breakpoint_up caller_breakpoint;
11162 if (frame_id_p (caller_frame_id))
11163 {
11164 struct symtab_and_line sal2;
11165 struct gdbarch *caller_gdbarch;
11166
11167 sal2 = find_pc_line (frame_unwind_caller_pc (frame), 0);
11168 sal2.pc = frame_unwind_caller_pc (frame);
11169 caller_gdbarch = frame_unwind_caller_arch (frame);
11170 caller_breakpoint = set_momentary_breakpoint (caller_gdbarch,
11171 sal2,
11172 caller_frame_id,
11173 bp_until);
11174
11175 set_longjmp_breakpoint (tp, caller_frame_id);
11176 make_cleanup (delete_longjmp_breakpoint_cleanup, &thread);
11177 }
11178
11179 /* set_momentary_breakpoint could invalidate FRAME. */
11180 frame = NULL;
11181
11182 breakpoint_up location_breakpoint;
11183 if (anywhere)
11184 /* If the user told us to continue until a specified location,
11185 we don't specify a frame at which we need to stop. */
11186 location_breakpoint = set_momentary_breakpoint (frame_gdbarch, sal,
11187 null_frame_id, bp_until);
11188 else
11189 /* Otherwise, specify the selected frame, because we want to stop
11190 only at the very same frame. */
11191 location_breakpoint = set_momentary_breakpoint (frame_gdbarch, sal,
11192 stack_frame_id, bp_until);
11193
11194 sm = new_until_break_fsm (command_interp (), tp->global_num,
11195 std::move (location_breakpoint),
11196 std::move (caller_breakpoint));
11197 tp->thread_fsm = &sm->thread_fsm;
11198
11199 discard_cleanups (old_chain);
11200
11201 proceed (-1, GDB_SIGNAL_DEFAULT);
11202 }
11203
11204 /* This function attempts to parse an optional "if <cond>" clause
11205 from the arg string. If one is not found, it returns NULL.
11206
11207 Else, it returns a pointer to the condition string. (It does not
11208 attempt to evaluate the string against a particular block.) And,
11209 it updates arg to point to the first character following the parsed
11210 if clause in the arg string. */
11211
11212 const char *
11213 ep_parse_optional_if_clause (const char **arg)
11214 {
11215 const char *cond_string;
11216
11217 if (((*arg)[0] != 'i') || ((*arg)[1] != 'f') || !isspace ((*arg)[2]))
11218 return NULL;
11219
11220 /* Skip the "if" keyword. */
11221 (*arg) += 2;
11222
11223 /* Skip any extra leading whitespace, and record the start of the
11224 condition string. */
11225 *arg = skip_spaces (*arg);
11226 cond_string = *arg;
11227
11228 /* Assume that the condition occupies the remainder of the arg
11229 string. */
11230 (*arg) += strlen (cond_string);
11231
11232 return cond_string;
11233 }
11234
11235 /* Commands to deal with catching events, such as signals, exceptions,
11236 process start/exit, etc. */
11237
11238 typedef enum
11239 {
11240 catch_fork_temporary, catch_vfork_temporary,
11241 catch_fork_permanent, catch_vfork_permanent
11242 }
11243 catch_fork_kind;
11244
11245 static void
11246 catch_fork_command_1 (const char *arg, int from_tty,
11247 struct cmd_list_element *command)
11248 {
11249 struct gdbarch *gdbarch = get_current_arch ();
11250 const char *cond_string = NULL;
11251 catch_fork_kind fork_kind;
11252 int tempflag;
11253
11254 fork_kind = (catch_fork_kind) (uintptr_t) get_cmd_context (command);
11255 tempflag = (fork_kind == catch_fork_temporary
11256 || fork_kind == catch_vfork_temporary);
11257
11258 if (!arg)
11259 arg = "";
11260 arg = skip_spaces (arg);
11261
11262 /* The allowed syntax is:
11263 catch [v]fork
11264 catch [v]fork if <cond>
11265
11266 First, check if there's an if clause. */
11267 cond_string = ep_parse_optional_if_clause (&arg);
11268
11269 if ((*arg != '\0') && !isspace (*arg))
11270 error (_("Junk at end of arguments."));
11271
11272 /* If this target supports it, create a fork or vfork catchpoint
11273 and enable reporting of such events. */
11274 switch (fork_kind)
11275 {
11276 case catch_fork_temporary:
11277 case catch_fork_permanent:
11278 create_fork_vfork_event_catchpoint (gdbarch, tempflag, cond_string,
11279 &catch_fork_breakpoint_ops);
11280 break;
11281 case catch_vfork_temporary:
11282 case catch_vfork_permanent:
11283 create_fork_vfork_event_catchpoint (gdbarch, tempflag, cond_string,
11284 &catch_vfork_breakpoint_ops);
11285 break;
11286 default:
11287 error (_("unsupported or unknown fork kind; cannot catch it"));
11288 break;
11289 }
11290 }
11291
11292 static void
11293 catch_exec_command_1 (const char *arg, int from_tty,
11294 struct cmd_list_element *command)
11295 {
11296 struct gdbarch *gdbarch = get_current_arch ();
11297 int tempflag;
11298 const char *cond_string = NULL;
11299
11300 tempflag = get_cmd_context (command) == CATCH_TEMPORARY;
11301
11302 if (!arg)
11303 arg = "";
11304 arg = skip_spaces (arg);
11305
11306 /* The allowed syntax is:
11307 catch exec
11308 catch exec if <cond>
11309
11310 First, check if there's an if clause. */
11311 cond_string = ep_parse_optional_if_clause (&arg);
11312
11313 if ((*arg != '\0') && !isspace (*arg))
11314 error (_("Junk at end of arguments."));
11315
11316 std::unique_ptr<exec_catchpoint> c (new exec_catchpoint ());
11317 init_catchpoint (c.get (), gdbarch, tempflag, cond_string,
11318 &catch_exec_breakpoint_ops);
11319 c->exec_pathname = NULL;
11320
11321 install_breakpoint (0, std::move (c), 1);
11322 }
11323
11324 void
11325 init_ada_exception_breakpoint (struct breakpoint *b,
11326 struct gdbarch *gdbarch,
11327 struct symtab_and_line sal,
11328 const char *addr_string,
11329 const struct breakpoint_ops *ops,
11330 int tempflag,
11331 int enabled,
11332 int from_tty)
11333 {
11334 if (from_tty)
11335 {
11336 struct gdbarch *loc_gdbarch = get_sal_arch (sal);
11337 if (!loc_gdbarch)
11338 loc_gdbarch = gdbarch;
11339
11340 describe_other_breakpoints (loc_gdbarch,
11341 sal.pspace, sal.pc, sal.section, -1);
11342 /* FIXME: brobecker/2006-12-28: Actually, re-implement a special
11343 version for exception catchpoints, because two catchpoints
11344 used for different exception names will use the same address.
11345 In this case, a "breakpoint ... also set at..." warning is
11346 unproductive. Besides, the warning phrasing is also a bit
11347 inappropriate, we should use the word catchpoint, and tell
11348 the user what type of catchpoint it is. The above is good
11349 enough for now, though. */
11350 }
11351
11352 init_raw_breakpoint (b, gdbarch, sal, bp_breakpoint, ops);
11353
11354 b->enable_state = enabled ? bp_enabled : bp_disabled;
11355 b->disposition = tempflag ? disp_del : disp_donttouch;
11356 b->location = string_to_event_location (&addr_string,
11357 language_def (language_ada));
11358 b->language = language_ada;
11359 }
11360
11361 static void
11362 catch_command (const char *arg, int from_tty)
11363 {
11364 error (_("Catch requires an event name."));
11365 }
11366 \f
11367
11368 static void
11369 tcatch_command (const char *arg, int from_tty)
11370 {
11371 error (_("Catch requires an event name."));
11372 }
11373
11374 /* Compare two breakpoints and return a strcmp-like result. */
11375
11376 static int
11377 compare_breakpoints (const breakpoint *a, const breakpoint *b)
11378 {
11379 uintptr_t ua = (uintptr_t) a;
11380 uintptr_t ub = (uintptr_t) b;
11381
11382 if (a->number < b->number)
11383 return -1;
11384 else if (a->number > b->number)
11385 return 1;
11386
11387 /* Now sort by address, in case we see, e..g, two breakpoints with
11388 the number 0. */
11389 if (ua < ub)
11390 return -1;
11391 return ua > ub ? 1 : 0;
11392 }
11393
11394 /* Delete breakpoints by address or line. */
11395
11396 static void
11397 clear_command (const char *arg, int from_tty)
11398 {
11399 struct breakpoint *b;
11400 int default_match;
11401
11402 std::vector<symtab_and_line> decoded_sals;
11403 symtab_and_line last_sal;
11404 gdb::array_view<symtab_and_line> sals;
11405 if (arg)
11406 {
11407 decoded_sals
11408 = decode_line_with_current_source (arg,
11409 (DECODE_LINE_FUNFIRSTLINE
11410 | DECODE_LINE_LIST_MODE));
11411 default_match = 0;
11412 sals = decoded_sals;
11413 }
11414 else
11415 {
11416 /* Set sal's line, symtab, pc, and pspace to the values
11417 corresponding to the last call to print_frame_info. If the
11418 codepoint is not valid, this will set all the fields to 0. */
11419 last_sal = get_last_displayed_sal ();
11420 if (last_sal.symtab == 0)
11421 error (_("No source file specified."));
11422
11423 default_match = 1;
11424 sals = last_sal;
11425 }
11426
11427 /* We don't call resolve_sal_pc here. That's not as bad as it
11428 seems, because all existing breakpoints typically have both
11429 file/line and pc set. So, if clear is given file/line, we can
11430 match this to existing breakpoint without obtaining pc at all.
11431
11432 We only support clearing given the address explicitly
11433 present in breakpoint table. Say, we've set breakpoint
11434 at file:line. There were several PC values for that file:line,
11435 due to optimization, all in one block.
11436
11437 We've picked one PC value. If "clear" is issued with another
11438 PC corresponding to the same file:line, the breakpoint won't
11439 be cleared. We probably can still clear the breakpoint, but
11440 since the other PC value is never presented to user, user
11441 can only find it by guessing, and it does not seem important
11442 to support that. */
11443
11444 /* For each line spec given, delete bps which correspond to it. Do
11445 it in two passes, solely to preserve the current behavior that
11446 from_tty is forced true if we delete more than one
11447 breakpoint. */
11448
11449 std::vector<struct breakpoint *> found;
11450 for (const auto &sal : sals)
11451 {
11452 const char *sal_fullname;
11453
11454 /* If exact pc given, clear bpts at that pc.
11455 If line given (pc == 0), clear all bpts on specified line.
11456 If defaulting, clear all bpts on default line
11457 or at default pc.
11458
11459 defaulting sal.pc != 0 tests to do
11460
11461 0 1 pc
11462 1 1 pc _and_ line
11463 0 0 line
11464 1 0 <can't happen> */
11465
11466 sal_fullname = (sal.symtab == NULL
11467 ? NULL : symtab_to_fullname (sal.symtab));
11468
11469 /* Find all matching breakpoints and add them to 'found'. */
11470 ALL_BREAKPOINTS (b)
11471 {
11472 int match = 0;
11473 /* Are we going to delete b? */
11474 if (b->type != bp_none && !is_watchpoint (b))
11475 {
11476 struct bp_location *loc = b->loc;
11477 for (; loc; loc = loc->next)
11478 {
11479 /* If the user specified file:line, don't allow a PC
11480 match. This matches historical gdb behavior. */
11481 int pc_match = (!sal.explicit_line
11482 && sal.pc
11483 && (loc->pspace == sal.pspace)
11484 && (loc->address == sal.pc)
11485 && (!section_is_overlay (loc->section)
11486 || loc->section == sal.section));
11487 int line_match = 0;
11488
11489 if ((default_match || sal.explicit_line)
11490 && loc->symtab != NULL
11491 && sal_fullname != NULL
11492 && sal.pspace == loc->pspace
11493 && loc->line_number == sal.line
11494 && filename_cmp (symtab_to_fullname (loc->symtab),
11495 sal_fullname) == 0)
11496 line_match = 1;
11497
11498 if (pc_match || line_match)
11499 {
11500 match = 1;
11501 break;
11502 }
11503 }
11504 }
11505
11506 if (match)
11507 found.push_back (b);
11508 }
11509 }
11510
11511 /* Now go thru the 'found' chain and delete them. */
11512 if (found.empty ())
11513 {
11514 if (arg)
11515 error (_("No breakpoint at %s."), arg);
11516 else
11517 error (_("No breakpoint at this line."));
11518 }
11519
11520 /* Remove duplicates from the vec. */
11521 std::sort (found.begin (), found.end (),
11522 [] (const breakpoint *a, const breakpoint *b)
11523 {
11524 return compare_breakpoints (a, b) < 0;
11525 });
11526 found.erase (std::unique (found.begin (), found.end (),
11527 [] (const breakpoint *a, const breakpoint *b)
11528 {
11529 return compare_breakpoints (a, b) == 0;
11530 }),
11531 found.end ());
11532
11533 if (found.size () > 1)
11534 from_tty = 1; /* Always report if deleted more than one. */
11535 if (from_tty)
11536 {
11537 if (found.size () == 1)
11538 printf_unfiltered (_("Deleted breakpoint "));
11539 else
11540 printf_unfiltered (_("Deleted breakpoints "));
11541 }
11542
11543 for (breakpoint *iter : found)
11544 {
11545 if (from_tty)
11546 printf_unfiltered ("%d ", iter->number);
11547 delete_breakpoint (iter);
11548 }
11549 if (from_tty)
11550 putchar_unfiltered ('\n');
11551 }
11552 \f
11553 /* Delete breakpoint in BS if they are `delete' breakpoints and
11554 all breakpoints that are marked for deletion, whether hit or not.
11555 This is called after any breakpoint is hit, or after errors. */
11556
11557 void
11558 breakpoint_auto_delete (bpstat bs)
11559 {
11560 struct breakpoint *b, *b_tmp;
11561
11562 for (; bs; bs = bs->next)
11563 if (bs->breakpoint_at
11564 && bs->breakpoint_at->disposition == disp_del
11565 && bs->stop)
11566 delete_breakpoint (bs->breakpoint_at);
11567
11568 ALL_BREAKPOINTS_SAFE (b, b_tmp)
11569 {
11570 if (b->disposition == disp_del_at_next_stop)
11571 delete_breakpoint (b);
11572 }
11573 }
11574
11575 /* A comparison function for bp_location AP and BP being interfaced to
11576 qsort. Sort elements primarily by their ADDRESS (no matter what
11577 does breakpoint_address_is_meaningful say for its OWNER),
11578 secondarily by ordering first permanent elements and
11579 terciarily just ensuring the array is sorted stable way despite
11580 qsort being an unstable algorithm. */
11581
11582 static int
11583 bp_locations_compare (const void *ap, const void *bp)
11584 {
11585 const struct bp_location *a = *(const struct bp_location **) ap;
11586 const struct bp_location *b = *(const struct bp_location **) bp;
11587
11588 if (a->address != b->address)
11589 return (a->address > b->address) - (a->address < b->address);
11590
11591 /* Sort locations at the same address by their pspace number, keeping
11592 locations of the same inferior (in a multi-inferior environment)
11593 grouped. */
11594
11595 if (a->pspace->num != b->pspace->num)
11596 return ((a->pspace->num > b->pspace->num)
11597 - (a->pspace->num < b->pspace->num));
11598
11599 /* Sort permanent breakpoints first. */
11600 if (a->permanent != b->permanent)
11601 return (a->permanent < b->permanent) - (a->permanent > b->permanent);
11602
11603 /* Make the internal GDB representation stable across GDB runs
11604 where A and B memory inside GDB can differ. Breakpoint locations of
11605 the same type at the same address can be sorted in arbitrary order. */
11606
11607 if (a->owner->number != b->owner->number)
11608 return ((a->owner->number > b->owner->number)
11609 - (a->owner->number < b->owner->number));
11610
11611 return (a > b) - (a < b);
11612 }
11613
11614 /* Set bp_locations_placed_address_before_address_max and
11615 bp_locations_shadow_len_after_address_max according to the current
11616 content of the bp_locations array. */
11617
11618 static void
11619 bp_locations_target_extensions_update (void)
11620 {
11621 struct bp_location *bl, **blp_tmp;
11622
11623 bp_locations_placed_address_before_address_max = 0;
11624 bp_locations_shadow_len_after_address_max = 0;
11625
11626 ALL_BP_LOCATIONS (bl, blp_tmp)
11627 {
11628 CORE_ADDR start, end, addr;
11629
11630 if (!bp_location_has_shadow (bl))
11631 continue;
11632
11633 start = bl->target_info.placed_address;
11634 end = start + bl->target_info.shadow_len;
11635
11636 gdb_assert (bl->address >= start);
11637 addr = bl->address - start;
11638 if (addr > bp_locations_placed_address_before_address_max)
11639 bp_locations_placed_address_before_address_max = addr;
11640
11641 /* Zero SHADOW_LEN would not pass bp_location_has_shadow. */
11642
11643 gdb_assert (bl->address < end);
11644 addr = end - bl->address;
11645 if (addr > bp_locations_shadow_len_after_address_max)
11646 bp_locations_shadow_len_after_address_max = addr;
11647 }
11648 }
11649
11650 /* Download tracepoint locations if they haven't been. */
11651
11652 static void
11653 download_tracepoint_locations (void)
11654 {
11655 struct breakpoint *b;
11656 enum tribool can_download_tracepoint = TRIBOOL_UNKNOWN;
11657
11658 scoped_restore_current_pspace_and_thread restore_pspace_thread;
11659
11660 ALL_TRACEPOINTS (b)
11661 {
11662 struct bp_location *bl;
11663 struct tracepoint *t;
11664 int bp_location_downloaded = 0;
11665
11666 if ((b->type == bp_fast_tracepoint
11667 ? !may_insert_fast_tracepoints
11668 : !may_insert_tracepoints))
11669 continue;
11670
11671 if (can_download_tracepoint == TRIBOOL_UNKNOWN)
11672 {
11673 if (target_can_download_tracepoint ())
11674 can_download_tracepoint = TRIBOOL_TRUE;
11675 else
11676 can_download_tracepoint = TRIBOOL_FALSE;
11677 }
11678
11679 if (can_download_tracepoint == TRIBOOL_FALSE)
11680 break;
11681
11682 for (bl = b->loc; bl; bl = bl->next)
11683 {
11684 /* In tracepoint, locations are _never_ duplicated, so
11685 should_be_inserted is equivalent to
11686 unduplicated_should_be_inserted. */
11687 if (!should_be_inserted (bl) || bl->inserted)
11688 continue;
11689
11690 switch_to_program_space_and_thread (bl->pspace);
11691
11692 target_download_tracepoint (bl);
11693
11694 bl->inserted = 1;
11695 bp_location_downloaded = 1;
11696 }
11697 t = (struct tracepoint *) b;
11698 t->number_on_target = b->number;
11699 if (bp_location_downloaded)
11700 gdb::observers::breakpoint_modified.notify (b);
11701 }
11702 }
11703
11704 /* Swap the insertion/duplication state between two locations. */
11705
11706 static void
11707 swap_insertion (struct bp_location *left, struct bp_location *right)
11708 {
11709 const int left_inserted = left->inserted;
11710 const int left_duplicate = left->duplicate;
11711 const int left_needs_update = left->needs_update;
11712 const struct bp_target_info left_target_info = left->target_info;
11713
11714 /* Locations of tracepoints can never be duplicated. */
11715 if (is_tracepoint (left->owner))
11716 gdb_assert (!left->duplicate);
11717 if (is_tracepoint (right->owner))
11718 gdb_assert (!right->duplicate);
11719
11720 left->inserted = right->inserted;
11721 left->duplicate = right->duplicate;
11722 left->needs_update = right->needs_update;
11723 left->target_info = right->target_info;
11724 right->inserted = left_inserted;
11725 right->duplicate = left_duplicate;
11726 right->needs_update = left_needs_update;
11727 right->target_info = left_target_info;
11728 }
11729
11730 /* Force the re-insertion of the locations at ADDRESS. This is called
11731 once a new/deleted/modified duplicate location is found and we are evaluating
11732 conditions on the target's side. Such conditions need to be updated on
11733 the target. */
11734
11735 static void
11736 force_breakpoint_reinsertion (struct bp_location *bl)
11737 {
11738 struct bp_location **locp = NULL, **loc2p;
11739 struct bp_location *loc;
11740 CORE_ADDR address = 0;
11741 int pspace_num;
11742
11743 address = bl->address;
11744 pspace_num = bl->pspace->num;
11745
11746 /* This is only meaningful if the target is
11747 evaluating conditions and if the user has
11748 opted for condition evaluation on the target's
11749 side. */
11750 if (gdb_evaluates_breakpoint_condition_p ()
11751 || !target_supports_evaluation_of_breakpoint_conditions ())
11752 return;
11753
11754 /* Flag all breakpoint locations with this address and
11755 the same program space as the location
11756 as "its condition has changed". We need to
11757 update the conditions on the target's side. */
11758 ALL_BP_LOCATIONS_AT_ADDR (loc2p, locp, address)
11759 {
11760 loc = *loc2p;
11761
11762 if (!is_breakpoint (loc->owner)
11763 || pspace_num != loc->pspace->num)
11764 continue;
11765
11766 /* Flag the location appropriately. We use a different state to
11767 let everyone know that we already updated the set of locations
11768 with addr bl->address and program space bl->pspace. This is so
11769 we don't have to keep calling these functions just to mark locations
11770 that have already been marked. */
11771 loc->condition_changed = condition_updated;
11772
11773 /* Free the agent expression bytecode as well. We will compute
11774 it later on. */
11775 loc->cond_bytecode.reset ();
11776 }
11777 }
11778 /* Called whether new breakpoints are created, or existing breakpoints
11779 deleted, to update the global location list and recompute which
11780 locations are duplicate of which.
11781
11782 The INSERT_MODE flag determines whether locations may not, may, or
11783 shall be inserted now. See 'enum ugll_insert_mode' for more
11784 info. */
11785
11786 static void
11787 update_global_location_list (enum ugll_insert_mode insert_mode)
11788 {
11789 struct breakpoint *b;
11790 struct bp_location **locp, *loc;
11791 /* Last breakpoint location address that was marked for update. */
11792 CORE_ADDR last_addr = 0;
11793 /* Last breakpoint location program space that was marked for update. */
11794 int last_pspace_num = -1;
11795
11796 /* Used in the duplicates detection below. When iterating over all
11797 bp_locations, points to the first bp_location of a given address.
11798 Breakpoints and watchpoints of different types are never
11799 duplicates of each other. Keep one pointer for each type of
11800 breakpoint/watchpoint, so we only need to loop over all locations
11801 once. */
11802 struct bp_location *bp_loc_first; /* breakpoint */
11803 struct bp_location *wp_loc_first; /* hardware watchpoint */
11804 struct bp_location *awp_loc_first; /* access watchpoint */
11805 struct bp_location *rwp_loc_first; /* read watchpoint */
11806
11807 /* Saved former bp_locations array which we compare against the newly
11808 built bp_locations from the current state of ALL_BREAKPOINTS. */
11809 struct bp_location **old_locp;
11810 unsigned old_locations_count;
11811 gdb::unique_xmalloc_ptr<struct bp_location *> old_locations (bp_locations);
11812
11813 old_locations_count = bp_locations_count;
11814 bp_locations = NULL;
11815 bp_locations_count = 0;
11816
11817 ALL_BREAKPOINTS (b)
11818 for (loc = b->loc; loc; loc = loc->next)
11819 bp_locations_count++;
11820
11821 bp_locations = XNEWVEC (struct bp_location *, bp_locations_count);
11822 locp = bp_locations;
11823 ALL_BREAKPOINTS (b)
11824 for (loc = b->loc; loc; loc = loc->next)
11825 *locp++ = loc;
11826 qsort (bp_locations, bp_locations_count, sizeof (*bp_locations),
11827 bp_locations_compare);
11828
11829 bp_locations_target_extensions_update ();
11830
11831 /* Identify bp_location instances that are no longer present in the
11832 new list, and therefore should be freed. Note that it's not
11833 necessary that those locations should be removed from inferior --
11834 if there's another location at the same address (previously
11835 marked as duplicate), we don't need to remove/insert the
11836 location.
11837
11838 LOCP is kept in sync with OLD_LOCP, each pointing to the current
11839 and former bp_location array state respectively. */
11840
11841 locp = bp_locations;
11842 for (old_locp = old_locations.get ();
11843 old_locp < old_locations.get () + old_locations_count;
11844 old_locp++)
11845 {
11846 struct bp_location *old_loc = *old_locp;
11847 struct bp_location **loc2p;
11848
11849 /* Tells if 'old_loc' is found among the new locations. If
11850 not, we have to free it. */
11851 int found_object = 0;
11852 /* Tells if the location should remain inserted in the target. */
11853 int keep_in_target = 0;
11854 int removed = 0;
11855
11856 /* Skip LOCP entries which will definitely never be needed.
11857 Stop either at or being the one matching OLD_LOC. */
11858 while (locp < bp_locations + bp_locations_count
11859 && (*locp)->address < old_loc->address)
11860 locp++;
11861
11862 for (loc2p = locp;
11863 (loc2p < bp_locations + bp_locations_count
11864 && (*loc2p)->address == old_loc->address);
11865 loc2p++)
11866 {
11867 /* Check if this is a new/duplicated location or a duplicated
11868 location that had its condition modified. If so, we want to send
11869 its condition to the target if evaluation of conditions is taking
11870 place there. */
11871 if ((*loc2p)->condition_changed == condition_modified
11872 && (last_addr != old_loc->address
11873 || last_pspace_num != old_loc->pspace->num))
11874 {
11875 force_breakpoint_reinsertion (*loc2p);
11876 last_pspace_num = old_loc->pspace->num;
11877 }
11878
11879 if (*loc2p == old_loc)
11880 found_object = 1;
11881 }
11882
11883 /* We have already handled this address, update it so that we don't
11884 have to go through updates again. */
11885 last_addr = old_loc->address;
11886
11887 /* Target-side condition evaluation: Handle deleted locations. */
11888 if (!found_object)
11889 force_breakpoint_reinsertion (old_loc);
11890
11891 /* If this location is no longer present, and inserted, look if
11892 there's maybe a new location at the same address. If so,
11893 mark that one inserted, and don't remove this one. This is
11894 needed so that we don't have a time window where a breakpoint
11895 at certain location is not inserted. */
11896
11897 if (old_loc->inserted)
11898 {
11899 /* If the location is inserted now, we might have to remove
11900 it. */
11901
11902 if (found_object && should_be_inserted (old_loc))
11903 {
11904 /* The location is still present in the location list,
11905 and still should be inserted. Don't do anything. */
11906 keep_in_target = 1;
11907 }
11908 else
11909 {
11910 /* This location still exists, but it won't be kept in the
11911 target since it may have been disabled. We proceed to
11912 remove its target-side condition. */
11913
11914 /* The location is either no longer present, or got
11915 disabled. See if there's another location at the
11916 same address, in which case we don't need to remove
11917 this one from the target. */
11918
11919 /* OLD_LOC comes from existing struct breakpoint. */
11920 if (breakpoint_address_is_meaningful (old_loc->owner))
11921 {
11922 for (loc2p = locp;
11923 (loc2p < bp_locations + bp_locations_count
11924 && (*loc2p)->address == old_loc->address);
11925 loc2p++)
11926 {
11927 struct bp_location *loc2 = *loc2p;
11928
11929 if (breakpoint_locations_match (loc2, old_loc))
11930 {
11931 /* Read watchpoint locations are switched to
11932 access watchpoints, if the former are not
11933 supported, but the latter are. */
11934 if (is_hardware_watchpoint (old_loc->owner))
11935 {
11936 gdb_assert (is_hardware_watchpoint (loc2->owner));
11937 loc2->watchpoint_type = old_loc->watchpoint_type;
11938 }
11939
11940 /* loc2 is a duplicated location. We need to check
11941 if it should be inserted in case it will be
11942 unduplicated. */
11943 if (loc2 != old_loc
11944 && unduplicated_should_be_inserted (loc2))
11945 {
11946 swap_insertion (old_loc, loc2);
11947 keep_in_target = 1;
11948 break;
11949 }
11950 }
11951 }
11952 }
11953 }
11954
11955 if (!keep_in_target)
11956 {
11957 if (remove_breakpoint (old_loc))
11958 {
11959 /* This is just about all we can do. We could keep
11960 this location on the global list, and try to
11961 remove it next time, but there's no particular
11962 reason why we will succeed next time.
11963
11964 Note that at this point, old_loc->owner is still
11965 valid, as delete_breakpoint frees the breakpoint
11966 only after calling us. */
11967 printf_filtered (_("warning: Error removing "
11968 "breakpoint %d\n"),
11969 old_loc->owner->number);
11970 }
11971 removed = 1;
11972 }
11973 }
11974
11975 if (!found_object)
11976 {
11977 if (removed && target_is_non_stop_p ()
11978 && need_moribund_for_location_type (old_loc))
11979 {
11980 /* This location was removed from the target. In
11981 non-stop mode, a race condition is possible where
11982 we've removed a breakpoint, but stop events for that
11983 breakpoint are already queued and will arrive later.
11984 We apply an heuristic to be able to distinguish such
11985 SIGTRAPs from other random SIGTRAPs: we keep this
11986 breakpoint location for a bit, and will retire it
11987 after we see some number of events. The theory here
11988 is that reporting of events should, "on the average",
11989 be fair, so after a while we'll see events from all
11990 threads that have anything of interest, and no longer
11991 need to keep this breakpoint location around. We
11992 don't hold locations forever so to reduce chances of
11993 mistaking a non-breakpoint SIGTRAP for a breakpoint
11994 SIGTRAP.
11995
11996 The heuristic failing can be disastrous on
11997 decr_pc_after_break targets.
11998
11999 On decr_pc_after_break targets, like e.g., x86-linux,
12000 if we fail to recognize a late breakpoint SIGTRAP,
12001 because events_till_retirement has reached 0 too
12002 soon, we'll fail to do the PC adjustment, and report
12003 a random SIGTRAP to the user. When the user resumes
12004 the inferior, it will most likely immediately crash
12005 with SIGILL/SIGBUS/SIGSEGV, or worse, get silently
12006 corrupted, because of being resumed e.g., in the
12007 middle of a multi-byte instruction, or skipped a
12008 one-byte instruction. This was actually seen happen
12009 on native x86-linux, and should be less rare on
12010 targets that do not support new thread events, like
12011 remote, due to the heuristic depending on
12012 thread_count.
12013
12014 Mistaking a random SIGTRAP for a breakpoint trap
12015 causes similar symptoms (PC adjustment applied when
12016 it shouldn't), but then again, playing with SIGTRAPs
12017 behind the debugger's back is asking for trouble.
12018
12019 Since hardware watchpoint traps are always
12020 distinguishable from other traps, so we don't need to
12021 apply keep hardware watchpoint moribund locations
12022 around. We simply always ignore hardware watchpoint
12023 traps we can no longer explain. */
12024
12025 old_loc->events_till_retirement = 3 * (thread_count () + 1);
12026 old_loc->owner = NULL;
12027
12028 VEC_safe_push (bp_location_p, moribund_locations, old_loc);
12029 }
12030 else
12031 {
12032 old_loc->owner = NULL;
12033 decref_bp_location (&old_loc);
12034 }
12035 }
12036 }
12037
12038 /* Rescan breakpoints at the same address and section, marking the
12039 first one as "first" and any others as "duplicates". This is so
12040 that the bpt instruction is only inserted once. If we have a
12041 permanent breakpoint at the same place as BPT, make that one the
12042 official one, and the rest as duplicates. Permanent breakpoints
12043 are sorted first for the same address.
12044
12045 Do the same for hardware watchpoints, but also considering the
12046 watchpoint's type (regular/access/read) and length. */
12047
12048 bp_loc_first = NULL;
12049 wp_loc_first = NULL;
12050 awp_loc_first = NULL;
12051 rwp_loc_first = NULL;
12052 ALL_BP_LOCATIONS (loc, locp)
12053 {
12054 /* ALL_BP_LOCATIONS bp_location has LOC->OWNER always
12055 non-NULL. */
12056 struct bp_location **loc_first_p;
12057 b = loc->owner;
12058
12059 if (!unduplicated_should_be_inserted (loc)
12060 || !breakpoint_address_is_meaningful (b)
12061 /* Don't detect duplicate for tracepoint locations because they are
12062 never duplicated. See the comments in field `duplicate' of
12063 `struct bp_location'. */
12064 || is_tracepoint (b))
12065 {
12066 /* Clear the condition modification flag. */
12067 loc->condition_changed = condition_unchanged;
12068 continue;
12069 }
12070
12071 if (b->type == bp_hardware_watchpoint)
12072 loc_first_p = &wp_loc_first;
12073 else if (b->type == bp_read_watchpoint)
12074 loc_first_p = &rwp_loc_first;
12075 else if (b->type == bp_access_watchpoint)
12076 loc_first_p = &awp_loc_first;
12077 else
12078 loc_first_p = &bp_loc_first;
12079
12080 if (*loc_first_p == NULL
12081 || (overlay_debugging && loc->section != (*loc_first_p)->section)
12082 || !breakpoint_locations_match (loc, *loc_first_p))
12083 {
12084 *loc_first_p = loc;
12085 loc->duplicate = 0;
12086
12087 if (is_breakpoint (loc->owner) && loc->condition_changed)
12088 {
12089 loc->needs_update = 1;
12090 /* Clear the condition modification flag. */
12091 loc->condition_changed = condition_unchanged;
12092 }
12093 continue;
12094 }
12095
12096
12097 /* This and the above ensure the invariant that the first location
12098 is not duplicated, and is the inserted one.
12099 All following are marked as duplicated, and are not inserted. */
12100 if (loc->inserted)
12101 swap_insertion (loc, *loc_first_p);
12102 loc->duplicate = 1;
12103
12104 /* Clear the condition modification flag. */
12105 loc->condition_changed = condition_unchanged;
12106 }
12107
12108 if (insert_mode == UGLL_INSERT || breakpoints_should_be_inserted_now ())
12109 {
12110 if (insert_mode != UGLL_DONT_INSERT)
12111 insert_breakpoint_locations ();
12112 else
12113 {
12114 /* Even though the caller told us to not insert new
12115 locations, we may still need to update conditions on the
12116 target's side of breakpoints that were already inserted
12117 if the target is evaluating breakpoint conditions. We
12118 only update conditions for locations that are marked
12119 "needs_update". */
12120 update_inserted_breakpoint_locations ();
12121 }
12122 }
12123
12124 if (insert_mode != UGLL_DONT_INSERT)
12125 download_tracepoint_locations ();
12126 }
12127
12128 void
12129 breakpoint_retire_moribund (void)
12130 {
12131 struct bp_location *loc;
12132 int ix;
12133
12134 for (ix = 0; VEC_iterate (bp_location_p, moribund_locations, ix, loc); ++ix)
12135 if (--(loc->events_till_retirement) == 0)
12136 {
12137 decref_bp_location (&loc);
12138 VEC_unordered_remove (bp_location_p, moribund_locations, ix);
12139 --ix;
12140 }
12141 }
12142
12143 static void
12144 update_global_location_list_nothrow (enum ugll_insert_mode insert_mode)
12145 {
12146
12147 TRY
12148 {
12149 update_global_location_list (insert_mode);
12150 }
12151 CATCH (e, RETURN_MASK_ERROR)
12152 {
12153 }
12154 END_CATCH
12155 }
12156
12157 /* Clear BKP from a BPS. */
12158
12159 static void
12160 bpstat_remove_bp_location (bpstat bps, struct breakpoint *bpt)
12161 {
12162 bpstat bs;
12163
12164 for (bs = bps; bs; bs = bs->next)
12165 if (bs->breakpoint_at == bpt)
12166 {
12167 bs->breakpoint_at = NULL;
12168 bs->old_val = NULL;
12169 /* bs->commands will be freed later. */
12170 }
12171 }
12172
12173 /* Callback for iterate_over_threads. */
12174 static int
12175 bpstat_remove_breakpoint_callback (struct thread_info *th, void *data)
12176 {
12177 struct breakpoint *bpt = (struct breakpoint *) data;
12178
12179 bpstat_remove_bp_location (th->control.stop_bpstat, bpt);
12180 return 0;
12181 }
12182
12183 /* Helper for breakpoint and tracepoint breakpoint_ops->mention
12184 callbacks. */
12185
12186 static void
12187 say_where (struct breakpoint *b)
12188 {
12189 struct value_print_options opts;
12190
12191 get_user_print_options (&opts);
12192
12193 /* i18n: cagney/2005-02-11: Below needs to be merged into a
12194 single string. */
12195 if (b->loc == NULL)
12196 {
12197 /* For pending locations, the output differs slightly based
12198 on b->extra_string. If this is non-NULL, it contains either
12199 a condition or dprintf arguments. */
12200 if (b->extra_string == NULL)
12201 {
12202 printf_filtered (_(" (%s) pending."),
12203 event_location_to_string (b->location.get ()));
12204 }
12205 else if (b->type == bp_dprintf)
12206 {
12207 printf_filtered (_(" (%s,%s) pending."),
12208 event_location_to_string (b->location.get ()),
12209 b->extra_string);
12210 }
12211 else
12212 {
12213 printf_filtered (_(" (%s %s) pending."),
12214 event_location_to_string (b->location.get ()),
12215 b->extra_string);
12216 }
12217 }
12218 else
12219 {
12220 if (opts.addressprint || b->loc->symtab == NULL)
12221 {
12222 printf_filtered (" at ");
12223 fputs_filtered (paddress (b->loc->gdbarch, b->loc->address),
12224 gdb_stdout);
12225 }
12226 if (b->loc->symtab != NULL)
12227 {
12228 /* If there is a single location, we can print the location
12229 more nicely. */
12230 if (b->loc->next == NULL)
12231 printf_filtered (": file %s, line %d.",
12232 symtab_to_filename_for_display (b->loc->symtab),
12233 b->loc->line_number);
12234 else
12235 /* This is not ideal, but each location may have a
12236 different file name, and this at least reflects the
12237 real situation somewhat. */
12238 printf_filtered (": %s.",
12239 event_location_to_string (b->location.get ()));
12240 }
12241
12242 if (b->loc->next)
12243 {
12244 struct bp_location *loc = b->loc;
12245 int n = 0;
12246 for (; loc; loc = loc->next)
12247 ++n;
12248 printf_filtered (" (%d locations)", n);
12249 }
12250 }
12251 }
12252
12253 /* Default bp_location_ops methods. */
12254
12255 static void
12256 bp_location_dtor (struct bp_location *self)
12257 {
12258 xfree (self->function_name);
12259 }
12260
12261 static const struct bp_location_ops bp_location_ops =
12262 {
12263 bp_location_dtor
12264 };
12265
12266 /* Destructor for the breakpoint base class. */
12267
12268 breakpoint::~breakpoint ()
12269 {
12270 xfree (this->cond_string);
12271 xfree (this->extra_string);
12272 xfree (this->filter);
12273 }
12274
12275 static struct bp_location *
12276 base_breakpoint_allocate_location (struct breakpoint *self)
12277 {
12278 return new bp_location (&bp_location_ops, self);
12279 }
12280
12281 static void
12282 base_breakpoint_re_set (struct breakpoint *b)
12283 {
12284 /* Nothing to re-set. */
12285 }
12286
12287 #define internal_error_pure_virtual_called() \
12288 gdb_assert_not_reached ("pure virtual function called")
12289
12290 static int
12291 base_breakpoint_insert_location (struct bp_location *bl)
12292 {
12293 internal_error_pure_virtual_called ();
12294 }
12295
12296 static int
12297 base_breakpoint_remove_location (struct bp_location *bl,
12298 enum remove_bp_reason reason)
12299 {
12300 internal_error_pure_virtual_called ();
12301 }
12302
12303 static int
12304 base_breakpoint_breakpoint_hit (const struct bp_location *bl,
12305 const address_space *aspace,
12306 CORE_ADDR bp_addr,
12307 const struct target_waitstatus *ws)
12308 {
12309 internal_error_pure_virtual_called ();
12310 }
12311
12312 static void
12313 base_breakpoint_check_status (bpstat bs)
12314 {
12315 /* Always stop. */
12316 }
12317
12318 /* A "works_in_software_mode" breakpoint_ops method that just internal
12319 errors. */
12320
12321 static int
12322 base_breakpoint_works_in_software_mode (const struct breakpoint *b)
12323 {
12324 internal_error_pure_virtual_called ();
12325 }
12326
12327 /* A "resources_needed" breakpoint_ops method that just internal
12328 errors. */
12329
12330 static int
12331 base_breakpoint_resources_needed (const struct bp_location *bl)
12332 {
12333 internal_error_pure_virtual_called ();
12334 }
12335
12336 static enum print_stop_action
12337 base_breakpoint_print_it (bpstat bs)
12338 {
12339 internal_error_pure_virtual_called ();
12340 }
12341
12342 static void
12343 base_breakpoint_print_one_detail (const struct breakpoint *self,
12344 struct ui_out *uiout)
12345 {
12346 /* nothing */
12347 }
12348
12349 static void
12350 base_breakpoint_print_mention (struct breakpoint *b)
12351 {
12352 internal_error_pure_virtual_called ();
12353 }
12354
12355 static void
12356 base_breakpoint_print_recreate (struct breakpoint *b, struct ui_file *fp)
12357 {
12358 internal_error_pure_virtual_called ();
12359 }
12360
12361 static void
12362 base_breakpoint_create_sals_from_location
12363 (const struct event_location *location,
12364 struct linespec_result *canonical,
12365 enum bptype type_wanted)
12366 {
12367 internal_error_pure_virtual_called ();
12368 }
12369
12370 static void
12371 base_breakpoint_create_breakpoints_sal (struct gdbarch *gdbarch,
12372 struct linespec_result *c,
12373 gdb::unique_xmalloc_ptr<char> cond_string,
12374 gdb::unique_xmalloc_ptr<char> extra_string,
12375 enum bptype type_wanted,
12376 enum bpdisp disposition,
12377 int thread,
12378 int task, int ignore_count,
12379 const struct breakpoint_ops *o,
12380 int from_tty, int enabled,
12381 int internal, unsigned flags)
12382 {
12383 internal_error_pure_virtual_called ();
12384 }
12385
12386 static std::vector<symtab_and_line>
12387 base_breakpoint_decode_location (struct breakpoint *b,
12388 const struct event_location *location,
12389 struct program_space *search_pspace)
12390 {
12391 internal_error_pure_virtual_called ();
12392 }
12393
12394 /* The default 'explains_signal' method. */
12395
12396 static int
12397 base_breakpoint_explains_signal (struct breakpoint *b, enum gdb_signal sig)
12398 {
12399 return 1;
12400 }
12401
12402 /* The default "after_condition_true" method. */
12403
12404 static void
12405 base_breakpoint_after_condition_true (struct bpstats *bs)
12406 {
12407 /* Nothing to do. */
12408 }
12409
12410 struct breakpoint_ops base_breakpoint_ops =
12411 {
12412 base_breakpoint_allocate_location,
12413 base_breakpoint_re_set,
12414 base_breakpoint_insert_location,
12415 base_breakpoint_remove_location,
12416 base_breakpoint_breakpoint_hit,
12417 base_breakpoint_check_status,
12418 base_breakpoint_resources_needed,
12419 base_breakpoint_works_in_software_mode,
12420 base_breakpoint_print_it,
12421 NULL,
12422 base_breakpoint_print_one_detail,
12423 base_breakpoint_print_mention,
12424 base_breakpoint_print_recreate,
12425 base_breakpoint_create_sals_from_location,
12426 base_breakpoint_create_breakpoints_sal,
12427 base_breakpoint_decode_location,
12428 base_breakpoint_explains_signal,
12429 base_breakpoint_after_condition_true,
12430 };
12431
12432 /* Default breakpoint_ops methods. */
12433
12434 static void
12435 bkpt_re_set (struct breakpoint *b)
12436 {
12437 /* FIXME: is this still reachable? */
12438 if (breakpoint_event_location_empty_p (b))
12439 {
12440 /* Anything without a location can't be re-set. */
12441 delete_breakpoint (b);
12442 return;
12443 }
12444
12445 breakpoint_re_set_default (b);
12446 }
12447
12448 static int
12449 bkpt_insert_location (struct bp_location *bl)
12450 {
12451 CORE_ADDR addr = bl->target_info.reqstd_address;
12452
12453 bl->target_info.kind = breakpoint_kind (bl, &addr);
12454 bl->target_info.placed_address = addr;
12455
12456 if (bl->loc_type == bp_loc_hardware_breakpoint)
12457 return target_insert_hw_breakpoint (bl->gdbarch, &bl->target_info);
12458 else
12459 return target_insert_breakpoint (bl->gdbarch, &bl->target_info);
12460 }
12461
12462 static int
12463 bkpt_remove_location (struct bp_location *bl, enum remove_bp_reason reason)
12464 {
12465 if (bl->loc_type == bp_loc_hardware_breakpoint)
12466 return target_remove_hw_breakpoint (bl->gdbarch, &bl->target_info);
12467 else
12468 return target_remove_breakpoint (bl->gdbarch, &bl->target_info, reason);
12469 }
12470
12471 static int
12472 bkpt_breakpoint_hit (const struct bp_location *bl,
12473 const address_space *aspace, CORE_ADDR bp_addr,
12474 const struct target_waitstatus *ws)
12475 {
12476 if (ws->kind != TARGET_WAITKIND_STOPPED
12477 || ws->value.sig != GDB_SIGNAL_TRAP)
12478 return 0;
12479
12480 if (!breakpoint_address_match (bl->pspace->aspace, bl->address,
12481 aspace, bp_addr))
12482 return 0;
12483
12484 if (overlay_debugging /* unmapped overlay section */
12485 && section_is_overlay (bl->section)
12486 && !section_is_mapped (bl->section))
12487 return 0;
12488
12489 return 1;
12490 }
12491
12492 static int
12493 dprintf_breakpoint_hit (const struct bp_location *bl,
12494 const address_space *aspace, CORE_ADDR bp_addr,
12495 const struct target_waitstatus *ws)
12496 {
12497 if (dprintf_style == dprintf_style_agent
12498 && target_can_run_breakpoint_commands ())
12499 {
12500 /* An agent-style dprintf never causes a stop. If we see a trap
12501 for this address it must be for a breakpoint that happens to
12502 be set at the same address. */
12503 return 0;
12504 }
12505
12506 return bkpt_breakpoint_hit (bl, aspace, bp_addr, ws);
12507 }
12508
12509 static int
12510 bkpt_resources_needed (const struct bp_location *bl)
12511 {
12512 gdb_assert (bl->owner->type == bp_hardware_breakpoint);
12513
12514 return 1;
12515 }
12516
12517 static enum print_stop_action
12518 bkpt_print_it (bpstat bs)
12519 {
12520 struct breakpoint *b;
12521 const struct bp_location *bl;
12522 int bp_temp;
12523 struct ui_out *uiout = current_uiout;
12524
12525 gdb_assert (bs->bp_location_at != NULL);
12526
12527 bl = bs->bp_location_at;
12528 b = bs->breakpoint_at;
12529
12530 bp_temp = b->disposition == disp_del;
12531 if (bl->address != bl->requested_address)
12532 breakpoint_adjustment_warning (bl->requested_address,
12533 bl->address,
12534 b->number, 1);
12535 annotate_breakpoint (b->number);
12536 maybe_print_thread_hit_breakpoint (uiout);
12537
12538 if (bp_temp)
12539 uiout->text ("Temporary breakpoint ");
12540 else
12541 uiout->text ("Breakpoint ");
12542 if (uiout->is_mi_like_p ())
12543 {
12544 uiout->field_string ("reason",
12545 async_reason_lookup (EXEC_ASYNC_BREAKPOINT_HIT));
12546 uiout->field_string ("disp", bpdisp_text (b->disposition));
12547 }
12548 uiout->field_int ("bkptno", b->number);
12549 uiout->text (", ");
12550
12551 return PRINT_SRC_AND_LOC;
12552 }
12553
12554 static void
12555 bkpt_print_mention (struct breakpoint *b)
12556 {
12557 if (current_uiout->is_mi_like_p ())
12558 return;
12559
12560 switch (b->type)
12561 {
12562 case bp_breakpoint:
12563 case bp_gnu_ifunc_resolver:
12564 if (b->disposition == disp_del)
12565 printf_filtered (_("Temporary breakpoint"));
12566 else
12567 printf_filtered (_("Breakpoint"));
12568 printf_filtered (_(" %d"), b->number);
12569 if (b->type == bp_gnu_ifunc_resolver)
12570 printf_filtered (_(" at gnu-indirect-function resolver"));
12571 break;
12572 case bp_hardware_breakpoint:
12573 printf_filtered (_("Hardware assisted breakpoint %d"), b->number);
12574 break;
12575 case bp_dprintf:
12576 printf_filtered (_("Dprintf %d"), b->number);
12577 break;
12578 }
12579
12580 say_where (b);
12581 }
12582
12583 static void
12584 bkpt_print_recreate (struct breakpoint *tp, struct ui_file *fp)
12585 {
12586 if (tp->type == bp_breakpoint && tp->disposition == disp_del)
12587 fprintf_unfiltered (fp, "tbreak");
12588 else if (tp->type == bp_breakpoint)
12589 fprintf_unfiltered (fp, "break");
12590 else if (tp->type == bp_hardware_breakpoint
12591 && tp->disposition == disp_del)
12592 fprintf_unfiltered (fp, "thbreak");
12593 else if (tp->type == bp_hardware_breakpoint)
12594 fprintf_unfiltered (fp, "hbreak");
12595 else
12596 internal_error (__FILE__, __LINE__,
12597 _("unhandled breakpoint type %d"), (int) tp->type);
12598
12599 fprintf_unfiltered (fp, " %s",
12600 event_location_to_string (tp->location.get ()));
12601
12602 /* Print out extra_string if this breakpoint is pending. It might
12603 contain, for example, conditions that were set by the user. */
12604 if (tp->loc == NULL && tp->extra_string != NULL)
12605 fprintf_unfiltered (fp, " %s", tp->extra_string);
12606
12607 print_recreate_thread (tp, fp);
12608 }
12609
12610 static void
12611 bkpt_create_sals_from_location (const struct event_location *location,
12612 struct linespec_result *canonical,
12613 enum bptype type_wanted)
12614 {
12615 create_sals_from_location_default (location, canonical, type_wanted);
12616 }
12617
12618 static void
12619 bkpt_create_breakpoints_sal (struct gdbarch *gdbarch,
12620 struct linespec_result *canonical,
12621 gdb::unique_xmalloc_ptr<char> cond_string,
12622 gdb::unique_xmalloc_ptr<char> extra_string,
12623 enum bptype type_wanted,
12624 enum bpdisp disposition,
12625 int thread,
12626 int task, int ignore_count,
12627 const struct breakpoint_ops *ops,
12628 int from_tty, int enabled,
12629 int internal, unsigned flags)
12630 {
12631 create_breakpoints_sal_default (gdbarch, canonical,
12632 std::move (cond_string),
12633 std::move (extra_string),
12634 type_wanted,
12635 disposition, thread, task,
12636 ignore_count, ops, from_tty,
12637 enabled, internal, flags);
12638 }
12639
12640 static std::vector<symtab_and_line>
12641 bkpt_decode_location (struct breakpoint *b,
12642 const struct event_location *location,
12643 struct program_space *search_pspace)
12644 {
12645 return decode_location_default (b, location, search_pspace);
12646 }
12647
12648 /* Virtual table for internal breakpoints. */
12649
12650 static void
12651 internal_bkpt_re_set (struct breakpoint *b)
12652 {
12653 switch (b->type)
12654 {
12655 /* Delete overlay event and longjmp master breakpoints; they
12656 will be reset later by breakpoint_re_set. */
12657 case bp_overlay_event:
12658 case bp_longjmp_master:
12659 case bp_std_terminate_master:
12660 case bp_exception_master:
12661 delete_breakpoint (b);
12662 break;
12663
12664 /* This breakpoint is special, it's set up when the inferior
12665 starts and we really don't want to touch it. */
12666 case bp_shlib_event:
12667
12668 /* Like bp_shlib_event, this breakpoint type is special. Once
12669 it is set up, we do not want to touch it. */
12670 case bp_thread_event:
12671 break;
12672 }
12673 }
12674
12675 static void
12676 internal_bkpt_check_status (bpstat bs)
12677 {
12678 if (bs->breakpoint_at->type == bp_shlib_event)
12679 {
12680 /* If requested, stop when the dynamic linker notifies GDB of
12681 events. This allows the user to get control and place
12682 breakpoints in initializer routines for dynamically loaded
12683 objects (among other things). */
12684 bs->stop = stop_on_solib_events;
12685 bs->print = stop_on_solib_events;
12686 }
12687 else
12688 bs->stop = 0;
12689 }
12690
12691 static enum print_stop_action
12692 internal_bkpt_print_it (bpstat bs)
12693 {
12694 struct breakpoint *b;
12695
12696 b = bs->breakpoint_at;
12697
12698 switch (b->type)
12699 {
12700 case bp_shlib_event:
12701 /* Did we stop because the user set the stop_on_solib_events
12702 variable? (If so, we report this as a generic, "Stopped due
12703 to shlib event" message.) */
12704 print_solib_event (0);
12705 break;
12706
12707 case bp_thread_event:
12708 /* Not sure how we will get here.
12709 GDB should not stop for these breakpoints. */
12710 printf_filtered (_("Thread Event Breakpoint: gdb should not stop!\n"));
12711 break;
12712
12713 case bp_overlay_event:
12714 /* By analogy with the thread event, GDB should not stop for these. */
12715 printf_filtered (_("Overlay Event Breakpoint: gdb should not stop!\n"));
12716 break;
12717
12718 case bp_longjmp_master:
12719 /* These should never be enabled. */
12720 printf_filtered (_("Longjmp Master Breakpoint: gdb should not stop!\n"));
12721 break;
12722
12723 case bp_std_terminate_master:
12724 /* These should never be enabled. */
12725 printf_filtered (_("std::terminate Master Breakpoint: "
12726 "gdb should not stop!\n"));
12727 break;
12728
12729 case bp_exception_master:
12730 /* These should never be enabled. */
12731 printf_filtered (_("Exception Master Breakpoint: "
12732 "gdb should not stop!\n"));
12733 break;
12734 }
12735
12736 return PRINT_NOTHING;
12737 }
12738
12739 static void
12740 internal_bkpt_print_mention (struct breakpoint *b)
12741 {
12742 /* Nothing to mention. These breakpoints are internal. */
12743 }
12744
12745 /* Virtual table for momentary breakpoints */
12746
12747 static void
12748 momentary_bkpt_re_set (struct breakpoint *b)
12749 {
12750 /* Keep temporary breakpoints, which can be encountered when we step
12751 over a dlopen call and solib_add is resetting the breakpoints.
12752 Otherwise these should have been blown away via the cleanup chain
12753 or by breakpoint_init_inferior when we rerun the executable. */
12754 }
12755
12756 static void
12757 momentary_bkpt_check_status (bpstat bs)
12758 {
12759 /* Nothing. The point of these breakpoints is causing a stop. */
12760 }
12761
12762 static enum print_stop_action
12763 momentary_bkpt_print_it (bpstat bs)
12764 {
12765 return PRINT_UNKNOWN;
12766 }
12767
12768 static void
12769 momentary_bkpt_print_mention (struct breakpoint *b)
12770 {
12771 /* Nothing to mention. These breakpoints are internal. */
12772 }
12773
12774 /* Ensure INITIATING_FRAME is cleared when no such breakpoint exists.
12775
12776 It gets cleared already on the removal of the first one of such placed
12777 breakpoints. This is OK as they get all removed altogether. */
12778
12779 longjmp_breakpoint::~longjmp_breakpoint ()
12780 {
12781 thread_info *tp = find_thread_global_id (this->thread);
12782
12783 if (tp != NULL)
12784 tp->initiating_frame = null_frame_id;
12785 }
12786
12787 /* Specific methods for probe breakpoints. */
12788
12789 static int
12790 bkpt_probe_insert_location (struct bp_location *bl)
12791 {
12792 int v = bkpt_insert_location (bl);
12793
12794 if (v == 0)
12795 {
12796 /* The insertion was successful, now let's set the probe's semaphore
12797 if needed. */
12798 bl->probe.prob->set_semaphore (bl->probe.objfile, bl->gdbarch);
12799 }
12800
12801 return v;
12802 }
12803
12804 static int
12805 bkpt_probe_remove_location (struct bp_location *bl,
12806 enum remove_bp_reason reason)
12807 {
12808 /* Let's clear the semaphore before removing the location. */
12809 bl->probe.prob->clear_semaphore (bl->probe.objfile, bl->gdbarch);
12810
12811 return bkpt_remove_location (bl, reason);
12812 }
12813
12814 static void
12815 bkpt_probe_create_sals_from_location (const struct event_location *location,
12816 struct linespec_result *canonical,
12817 enum bptype type_wanted)
12818 {
12819 struct linespec_sals lsal;
12820
12821 lsal.sals = parse_probes (location, NULL, canonical);
12822 lsal.canonical
12823 = xstrdup (event_location_to_string (canonical->location.get ()));
12824 canonical->lsals.push_back (std::move (lsal));
12825 }
12826
12827 static std::vector<symtab_and_line>
12828 bkpt_probe_decode_location (struct breakpoint *b,
12829 const struct event_location *location,
12830 struct program_space *search_pspace)
12831 {
12832 std::vector<symtab_and_line> sals = parse_probes (location, search_pspace, NULL);
12833 if (sals.empty ())
12834 error (_("probe not found"));
12835 return sals;
12836 }
12837
12838 /* The breakpoint_ops structure to be used in tracepoints. */
12839
12840 static void
12841 tracepoint_re_set (struct breakpoint *b)
12842 {
12843 breakpoint_re_set_default (b);
12844 }
12845
12846 static int
12847 tracepoint_breakpoint_hit (const struct bp_location *bl,
12848 const address_space *aspace, CORE_ADDR bp_addr,
12849 const struct target_waitstatus *ws)
12850 {
12851 /* By definition, the inferior does not report stops at
12852 tracepoints. */
12853 return 0;
12854 }
12855
12856 static void
12857 tracepoint_print_one_detail (const struct breakpoint *self,
12858 struct ui_out *uiout)
12859 {
12860 struct tracepoint *tp = (struct tracepoint *) self;
12861 if (!tp->static_trace_marker_id.empty ())
12862 {
12863 gdb_assert (self->type == bp_static_tracepoint);
12864
12865 uiout->text ("\tmarker id is ");
12866 uiout->field_string ("static-tracepoint-marker-string-id",
12867 tp->static_trace_marker_id);
12868 uiout->text ("\n");
12869 }
12870 }
12871
12872 static void
12873 tracepoint_print_mention (struct breakpoint *b)
12874 {
12875 if (current_uiout->is_mi_like_p ())
12876 return;
12877
12878 switch (b->type)
12879 {
12880 case bp_tracepoint:
12881 printf_filtered (_("Tracepoint"));
12882 printf_filtered (_(" %d"), b->number);
12883 break;
12884 case bp_fast_tracepoint:
12885 printf_filtered (_("Fast tracepoint"));
12886 printf_filtered (_(" %d"), b->number);
12887 break;
12888 case bp_static_tracepoint:
12889 printf_filtered (_("Static tracepoint"));
12890 printf_filtered (_(" %d"), b->number);
12891 break;
12892 default:
12893 internal_error (__FILE__, __LINE__,
12894 _("unhandled tracepoint type %d"), (int) b->type);
12895 }
12896
12897 say_where (b);
12898 }
12899
12900 static void
12901 tracepoint_print_recreate (struct breakpoint *self, struct ui_file *fp)
12902 {
12903 struct tracepoint *tp = (struct tracepoint *) self;
12904
12905 if (self->type == bp_fast_tracepoint)
12906 fprintf_unfiltered (fp, "ftrace");
12907 else if (self->type == bp_static_tracepoint)
12908 fprintf_unfiltered (fp, "strace");
12909 else if (self->type == bp_tracepoint)
12910 fprintf_unfiltered (fp, "trace");
12911 else
12912 internal_error (__FILE__, __LINE__,
12913 _("unhandled tracepoint type %d"), (int) self->type);
12914
12915 fprintf_unfiltered (fp, " %s",
12916 event_location_to_string (self->location.get ()));
12917 print_recreate_thread (self, fp);
12918
12919 if (tp->pass_count)
12920 fprintf_unfiltered (fp, " passcount %d\n", tp->pass_count);
12921 }
12922
12923 static void
12924 tracepoint_create_sals_from_location (const struct event_location *location,
12925 struct linespec_result *canonical,
12926 enum bptype type_wanted)
12927 {
12928 create_sals_from_location_default (location, canonical, type_wanted);
12929 }
12930
12931 static void
12932 tracepoint_create_breakpoints_sal (struct gdbarch *gdbarch,
12933 struct linespec_result *canonical,
12934 gdb::unique_xmalloc_ptr<char> cond_string,
12935 gdb::unique_xmalloc_ptr<char> extra_string,
12936 enum bptype type_wanted,
12937 enum bpdisp disposition,
12938 int thread,
12939 int task, int ignore_count,
12940 const struct breakpoint_ops *ops,
12941 int from_tty, int enabled,
12942 int internal, unsigned flags)
12943 {
12944 create_breakpoints_sal_default (gdbarch, canonical,
12945 std::move (cond_string),
12946 std::move (extra_string),
12947 type_wanted,
12948 disposition, thread, task,
12949 ignore_count, ops, from_tty,
12950 enabled, internal, flags);
12951 }
12952
12953 static std::vector<symtab_and_line>
12954 tracepoint_decode_location (struct breakpoint *b,
12955 const struct event_location *location,
12956 struct program_space *search_pspace)
12957 {
12958 return decode_location_default (b, location, search_pspace);
12959 }
12960
12961 struct breakpoint_ops tracepoint_breakpoint_ops;
12962
12963 /* The breakpoint_ops structure to be use on tracepoints placed in a
12964 static probe. */
12965
12966 static void
12967 tracepoint_probe_create_sals_from_location
12968 (const struct event_location *location,
12969 struct linespec_result *canonical,
12970 enum bptype type_wanted)
12971 {
12972 /* We use the same method for breakpoint on probes. */
12973 bkpt_probe_create_sals_from_location (location, canonical, type_wanted);
12974 }
12975
12976 static std::vector<symtab_and_line>
12977 tracepoint_probe_decode_location (struct breakpoint *b,
12978 const struct event_location *location,
12979 struct program_space *search_pspace)
12980 {
12981 /* We use the same method for breakpoint on probes. */
12982 return bkpt_probe_decode_location (b, location, search_pspace);
12983 }
12984
12985 static struct breakpoint_ops tracepoint_probe_breakpoint_ops;
12986
12987 /* Dprintf breakpoint_ops methods. */
12988
12989 static void
12990 dprintf_re_set (struct breakpoint *b)
12991 {
12992 breakpoint_re_set_default (b);
12993
12994 /* extra_string should never be non-NULL for dprintf. */
12995 gdb_assert (b->extra_string != NULL);
12996
12997 /* 1 - connect to target 1, that can run breakpoint commands.
12998 2 - create a dprintf, which resolves fine.
12999 3 - disconnect from target 1
13000 4 - connect to target 2, that can NOT run breakpoint commands.
13001
13002 After steps #3/#4, you'll want the dprintf command list to
13003 be updated, because target 1 and 2 may well return different
13004 answers for target_can_run_breakpoint_commands().
13005 Given absence of finer grained resetting, we get to do
13006 it all the time. */
13007 if (b->extra_string != NULL)
13008 update_dprintf_command_list (b);
13009 }
13010
13011 /* Implement the "print_recreate" breakpoint_ops method for dprintf. */
13012
13013 static void
13014 dprintf_print_recreate (struct breakpoint *tp, struct ui_file *fp)
13015 {
13016 fprintf_unfiltered (fp, "dprintf %s,%s",
13017 event_location_to_string (tp->location.get ()),
13018 tp->extra_string);
13019 print_recreate_thread (tp, fp);
13020 }
13021
13022 /* Implement the "after_condition_true" breakpoint_ops method for
13023 dprintf.
13024
13025 dprintf's are implemented with regular commands in their command
13026 list, but we run the commands here instead of before presenting the
13027 stop to the user, as dprintf's don't actually cause a stop. This
13028 also makes it so that the commands of multiple dprintfs at the same
13029 address are all handled. */
13030
13031 static void
13032 dprintf_after_condition_true (struct bpstats *bs)
13033 {
13034 struct bpstats tmp_bs;
13035 struct bpstats *tmp_bs_p = &tmp_bs;
13036
13037 /* dprintf's never cause a stop. This wasn't set in the
13038 check_status hook instead because that would make the dprintf's
13039 condition not be evaluated. */
13040 bs->stop = 0;
13041
13042 /* Run the command list here. Take ownership of it instead of
13043 copying. We never want these commands to run later in
13044 bpstat_do_actions, if a breakpoint that causes a stop happens to
13045 be set at same address as this dprintf, or even if running the
13046 commands here throws. */
13047 tmp_bs.commands = bs->commands;
13048 bs->commands = NULL;
13049
13050 bpstat_do_actions_1 (&tmp_bs_p);
13051
13052 /* 'tmp_bs.commands' will usually be NULL by now, but
13053 bpstat_do_actions_1 may return early without processing the whole
13054 list. */
13055 }
13056
13057 /* The breakpoint_ops structure to be used on static tracepoints with
13058 markers (`-m'). */
13059
13060 static void
13061 strace_marker_create_sals_from_location (const struct event_location *location,
13062 struct linespec_result *canonical,
13063 enum bptype type_wanted)
13064 {
13065 struct linespec_sals lsal;
13066 const char *arg_start, *arg;
13067
13068 arg = arg_start = get_linespec_location (location)->spec_string;
13069 lsal.sals = decode_static_tracepoint_spec (&arg);
13070
13071 std::string str (arg_start, arg - arg_start);
13072 const char *ptr = str.c_str ();
13073 canonical->location
13074 = new_linespec_location (&ptr, symbol_name_match_type::FULL);
13075
13076 lsal.canonical
13077 = xstrdup (event_location_to_string (canonical->location.get ()));
13078 canonical->lsals.push_back (std::move (lsal));
13079 }
13080
13081 static void
13082 strace_marker_create_breakpoints_sal (struct gdbarch *gdbarch,
13083 struct linespec_result *canonical,
13084 gdb::unique_xmalloc_ptr<char> cond_string,
13085 gdb::unique_xmalloc_ptr<char> extra_string,
13086 enum bptype type_wanted,
13087 enum bpdisp disposition,
13088 int thread,
13089 int task, int ignore_count,
13090 const struct breakpoint_ops *ops,
13091 int from_tty, int enabled,
13092 int internal, unsigned flags)
13093 {
13094 const linespec_sals &lsal = canonical->lsals[0];
13095
13096 /* If the user is creating a static tracepoint by marker id
13097 (strace -m MARKER_ID), then store the sals index, so that
13098 breakpoint_re_set can try to match up which of the newly
13099 found markers corresponds to this one, and, don't try to
13100 expand multiple locations for each sal, given than SALS
13101 already should contain all sals for MARKER_ID. */
13102
13103 for (size_t i = 0; i < lsal.sals.size (); i++)
13104 {
13105 event_location_up location
13106 = copy_event_location (canonical->location.get ());
13107
13108 std::unique_ptr<tracepoint> tp (new tracepoint ());
13109 init_breakpoint_sal (tp.get (), gdbarch, lsal.sals[i],
13110 std::move (location), NULL,
13111 std::move (cond_string),
13112 std::move (extra_string),
13113 type_wanted, disposition,
13114 thread, task, ignore_count, ops,
13115 from_tty, enabled, internal, flags,
13116 canonical->special_display);
13117 /* Given that its possible to have multiple markers with
13118 the same string id, if the user is creating a static
13119 tracepoint by marker id ("strace -m MARKER_ID"), then
13120 store the sals index, so that breakpoint_re_set can
13121 try to match up which of the newly found markers
13122 corresponds to this one */
13123 tp->static_trace_marker_id_idx = i;
13124
13125 install_breakpoint (internal, std::move (tp), 0);
13126 }
13127 }
13128
13129 static std::vector<symtab_and_line>
13130 strace_marker_decode_location (struct breakpoint *b,
13131 const struct event_location *location,
13132 struct program_space *search_pspace)
13133 {
13134 struct tracepoint *tp = (struct tracepoint *) b;
13135 const char *s = get_linespec_location (location)->spec_string;
13136
13137 std::vector<symtab_and_line> sals = decode_static_tracepoint_spec (&s);
13138 if (sals.size () > tp->static_trace_marker_id_idx)
13139 {
13140 sals[0] = sals[tp->static_trace_marker_id_idx];
13141 sals.resize (1);
13142 return sals;
13143 }
13144 else
13145 error (_("marker %s not found"), tp->static_trace_marker_id.c_str ());
13146 }
13147
13148 static struct breakpoint_ops strace_marker_breakpoint_ops;
13149
13150 static int
13151 strace_marker_p (struct breakpoint *b)
13152 {
13153 return b->ops == &strace_marker_breakpoint_ops;
13154 }
13155
13156 /* Delete a breakpoint and clean up all traces of it in the data
13157 structures. */
13158
13159 void
13160 delete_breakpoint (struct breakpoint *bpt)
13161 {
13162 struct breakpoint *b;
13163
13164 gdb_assert (bpt != NULL);
13165
13166 /* Has this bp already been deleted? This can happen because
13167 multiple lists can hold pointers to bp's. bpstat lists are
13168 especial culprits.
13169
13170 One example of this happening is a watchpoint's scope bp. When
13171 the scope bp triggers, we notice that the watchpoint is out of
13172 scope, and delete it. We also delete its scope bp. But the
13173 scope bp is marked "auto-deleting", and is already on a bpstat.
13174 That bpstat is then checked for auto-deleting bp's, which are
13175 deleted.
13176
13177 A real solution to this problem might involve reference counts in
13178 bp's, and/or giving them pointers back to their referencing
13179 bpstat's, and teaching delete_breakpoint to only free a bp's
13180 storage when no more references were extent. A cheaper bandaid
13181 was chosen. */
13182 if (bpt->type == bp_none)
13183 return;
13184
13185 /* At least avoid this stale reference until the reference counting
13186 of breakpoints gets resolved. */
13187 if (bpt->related_breakpoint != bpt)
13188 {
13189 struct breakpoint *related;
13190 struct watchpoint *w;
13191
13192 if (bpt->type == bp_watchpoint_scope)
13193 w = (struct watchpoint *) bpt->related_breakpoint;
13194 else if (bpt->related_breakpoint->type == bp_watchpoint_scope)
13195 w = (struct watchpoint *) bpt;
13196 else
13197 w = NULL;
13198 if (w != NULL)
13199 watchpoint_del_at_next_stop (w);
13200
13201 /* Unlink bpt from the bpt->related_breakpoint ring. */
13202 for (related = bpt; related->related_breakpoint != bpt;
13203 related = related->related_breakpoint);
13204 related->related_breakpoint = bpt->related_breakpoint;
13205 bpt->related_breakpoint = bpt;
13206 }
13207
13208 /* watch_command_1 creates a watchpoint but only sets its number if
13209 update_watchpoint succeeds in creating its bp_locations. If there's
13210 a problem in that process, we'll be asked to delete the half-created
13211 watchpoint. In that case, don't announce the deletion. */
13212 if (bpt->number)
13213 gdb::observers::breakpoint_deleted.notify (bpt);
13214
13215 if (breakpoint_chain == bpt)
13216 breakpoint_chain = bpt->next;
13217
13218 ALL_BREAKPOINTS (b)
13219 if (b->next == bpt)
13220 {
13221 b->next = bpt->next;
13222 break;
13223 }
13224
13225 /* Be sure no bpstat's are pointing at the breakpoint after it's
13226 been freed. */
13227 /* FIXME, how can we find all bpstat's? We just check stop_bpstat
13228 in all threads for now. Note that we cannot just remove bpstats
13229 pointing at bpt from the stop_bpstat list entirely, as breakpoint
13230 commands are associated with the bpstat; if we remove it here,
13231 then the later call to bpstat_do_actions (&stop_bpstat); in
13232 event-top.c won't do anything, and temporary breakpoints with
13233 commands won't work. */
13234
13235 iterate_over_threads (bpstat_remove_breakpoint_callback, bpt);
13236
13237 /* Now that breakpoint is removed from breakpoint list, update the
13238 global location list. This will remove locations that used to
13239 belong to this breakpoint. Do this before freeing the breakpoint
13240 itself, since remove_breakpoint looks at location's owner. It
13241 might be better design to have location completely
13242 self-contained, but it's not the case now. */
13243 update_global_location_list (UGLL_DONT_INSERT);
13244
13245 /* On the chance that someone will soon try again to delete this
13246 same bp, we mark it as deleted before freeing its storage. */
13247 bpt->type = bp_none;
13248 delete bpt;
13249 }
13250
13251 /* Iterator function to call a user-provided callback function once
13252 for each of B and its related breakpoints. */
13253
13254 static void
13255 iterate_over_related_breakpoints (struct breakpoint *b,
13256 gdb::function_view<void (breakpoint *)> function)
13257 {
13258 struct breakpoint *related;
13259
13260 related = b;
13261 do
13262 {
13263 struct breakpoint *next;
13264
13265 /* FUNCTION may delete RELATED. */
13266 next = related->related_breakpoint;
13267
13268 if (next == related)
13269 {
13270 /* RELATED is the last ring entry. */
13271 function (related);
13272
13273 /* FUNCTION may have deleted it, so we'd never reach back to
13274 B. There's nothing left to do anyway, so just break
13275 out. */
13276 break;
13277 }
13278 else
13279 function (related);
13280
13281 related = next;
13282 }
13283 while (related != b);
13284 }
13285
13286 static void
13287 delete_command (const char *arg, int from_tty)
13288 {
13289 struct breakpoint *b, *b_tmp;
13290
13291 dont_repeat ();
13292
13293 if (arg == 0)
13294 {
13295 int breaks_to_delete = 0;
13296
13297 /* Delete all breakpoints if no argument. Do not delete
13298 internal breakpoints, these have to be deleted with an
13299 explicit breakpoint number argument. */
13300 ALL_BREAKPOINTS (b)
13301 if (user_breakpoint_p (b))
13302 {
13303 breaks_to_delete = 1;
13304 break;
13305 }
13306
13307 /* Ask user only if there are some breakpoints to delete. */
13308 if (!from_tty
13309 || (breaks_to_delete && query (_("Delete all breakpoints? "))))
13310 {
13311 ALL_BREAKPOINTS_SAFE (b, b_tmp)
13312 if (user_breakpoint_p (b))
13313 delete_breakpoint (b);
13314 }
13315 }
13316 else
13317 map_breakpoint_numbers
13318 (arg, [&] (breakpoint *b)
13319 {
13320 iterate_over_related_breakpoints (b, delete_breakpoint);
13321 });
13322 }
13323
13324 /* Return true if all locations of B bound to PSPACE are pending. If
13325 PSPACE is NULL, all locations of all program spaces are
13326 considered. */
13327
13328 static int
13329 all_locations_are_pending (struct breakpoint *b, struct program_space *pspace)
13330 {
13331 struct bp_location *loc;
13332
13333 for (loc = b->loc; loc != NULL; loc = loc->next)
13334 if ((pspace == NULL
13335 || loc->pspace == pspace)
13336 && !loc->shlib_disabled
13337 && !loc->pspace->executing_startup)
13338 return 0;
13339 return 1;
13340 }
13341
13342 /* Subroutine of update_breakpoint_locations to simplify it.
13343 Return non-zero if multiple fns in list LOC have the same name.
13344 Null names are ignored. */
13345
13346 static int
13347 ambiguous_names_p (struct bp_location *loc)
13348 {
13349 struct bp_location *l;
13350 htab_t htab = htab_create_alloc (13, htab_hash_string, streq_hash, NULL,
13351 xcalloc, xfree);
13352
13353 for (l = loc; l != NULL; l = l->next)
13354 {
13355 const char **slot;
13356 const char *name = l->function_name;
13357
13358 /* Allow for some names to be NULL, ignore them. */
13359 if (name == NULL)
13360 continue;
13361
13362 slot = (const char **) htab_find_slot (htab, (const void *) name,
13363 INSERT);
13364 /* NOTE: We can assume slot != NULL here because xcalloc never
13365 returns NULL. */
13366 if (*slot != NULL)
13367 {
13368 htab_delete (htab);
13369 return 1;
13370 }
13371 *slot = name;
13372 }
13373
13374 htab_delete (htab);
13375 return 0;
13376 }
13377
13378 /* When symbols change, it probably means the sources changed as well,
13379 and it might mean the static tracepoint markers are no longer at
13380 the same address or line numbers they used to be at last we
13381 checked. Losing your static tracepoints whenever you rebuild is
13382 undesirable. This function tries to resync/rematch gdb static
13383 tracepoints with the markers on the target, for static tracepoints
13384 that have not been set by marker id. Static tracepoint that have
13385 been set by marker id are reset by marker id in breakpoint_re_set.
13386 The heuristic is:
13387
13388 1) For a tracepoint set at a specific address, look for a marker at
13389 the old PC. If one is found there, assume to be the same marker.
13390 If the name / string id of the marker found is different from the
13391 previous known name, assume that means the user renamed the marker
13392 in the sources, and output a warning.
13393
13394 2) For a tracepoint set at a given line number, look for a marker
13395 at the new address of the old line number. If one is found there,
13396 assume to be the same marker. If the name / string id of the
13397 marker found is different from the previous known name, assume that
13398 means the user renamed the marker in the sources, and output a
13399 warning.
13400
13401 3) If a marker is no longer found at the same address or line, it
13402 may mean the marker no longer exists. But it may also just mean
13403 the code changed a bit. Maybe the user added a few lines of code
13404 that made the marker move up or down (in line number terms). Ask
13405 the target for info about the marker with the string id as we knew
13406 it. If found, update line number and address in the matching
13407 static tracepoint. This will get confused if there's more than one
13408 marker with the same ID (possible in UST, although unadvised
13409 precisely because it confuses tools). */
13410
13411 static struct symtab_and_line
13412 update_static_tracepoint (struct breakpoint *b, struct symtab_and_line sal)
13413 {
13414 struct tracepoint *tp = (struct tracepoint *) b;
13415 struct static_tracepoint_marker marker;
13416 CORE_ADDR pc;
13417
13418 pc = sal.pc;
13419 if (sal.line)
13420 find_line_pc (sal.symtab, sal.line, &pc);
13421
13422 if (target_static_tracepoint_marker_at (pc, &marker))
13423 {
13424 if (tp->static_trace_marker_id != marker.str_id)
13425 warning (_("static tracepoint %d changed probed marker from %s to %s"),
13426 b->number, tp->static_trace_marker_id.c_str (),
13427 marker.str_id.c_str ());
13428
13429 tp->static_trace_marker_id = std::move (marker.str_id);
13430
13431 return sal;
13432 }
13433
13434 /* Old marker wasn't found on target at lineno. Try looking it up
13435 by string ID. */
13436 if (!sal.explicit_pc
13437 && sal.line != 0
13438 && sal.symtab != NULL
13439 && !tp->static_trace_marker_id.empty ())
13440 {
13441 std::vector<static_tracepoint_marker> markers
13442 = target_static_tracepoint_markers_by_strid
13443 (tp->static_trace_marker_id.c_str ());
13444
13445 if (!markers.empty ())
13446 {
13447 struct symbol *sym;
13448 struct static_tracepoint_marker *tpmarker;
13449 struct ui_out *uiout = current_uiout;
13450 struct explicit_location explicit_loc;
13451
13452 tpmarker = &markers[0];
13453
13454 tp->static_trace_marker_id = std::move (tpmarker->str_id);
13455
13456 warning (_("marker for static tracepoint %d (%s) not "
13457 "found at previous line number"),
13458 b->number, tp->static_trace_marker_id.c_str ());
13459
13460 symtab_and_line sal2 = find_pc_line (tpmarker->address, 0);
13461 sym = find_pc_sect_function (tpmarker->address, NULL);
13462 uiout->text ("Now in ");
13463 if (sym)
13464 {
13465 uiout->field_string ("func", SYMBOL_PRINT_NAME (sym));
13466 uiout->text (" at ");
13467 }
13468 uiout->field_string ("file",
13469 symtab_to_filename_for_display (sal2.symtab));
13470 uiout->text (":");
13471
13472 if (uiout->is_mi_like_p ())
13473 {
13474 const char *fullname = symtab_to_fullname (sal2.symtab);
13475
13476 uiout->field_string ("fullname", fullname);
13477 }
13478
13479 uiout->field_int ("line", sal2.line);
13480 uiout->text ("\n");
13481
13482 b->loc->line_number = sal2.line;
13483 b->loc->symtab = sym != NULL ? sal2.symtab : NULL;
13484
13485 b->location.reset (NULL);
13486 initialize_explicit_location (&explicit_loc);
13487 explicit_loc.source_filename
13488 = ASTRDUP (symtab_to_filename_for_display (sal2.symtab));
13489 explicit_loc.line_offset.offset = b->loc->line_number;
13490 explicit_loc.line_offset.sign = LINE_OFFSET_NONE;
13491 b->location = new_explicit_location (&explicit_loc);
13492
13493 /* Might be nice to check if function changed, and warn if
13494 so. */
13495 }
13496 }
13497 return sal;
13498 }
13499
13500 /* Returns 1 iff locations A and B are sufficiently same that
13501 we don't need to report breakpoint as changed. */
13502
13503 static int
13504 locations_are_equal (struct bp_location *a, struct bp_location *b)
13505 {
13506 while (a && b)
13507 {
13508 if (a->address != b->address)
13509 return 0;
13510
13511 if (a->shlib_disabled != b->shlib_disabled)
13512 return 0;
13513
13514 if (a->enabled != b->enabled)
13515 return 0;
13516
13517 a = a->next;
13518 b = b->next;
13519 }
13520
13521 if ((a == NULL) != (b == NULL))
13522 return 0;
13523
13524 return 1;
13525 }
13526
13527 /* Split all locations of B that are bound to PSPACE out of B's
13528 location list to a separate list and return that list's head. If
13529 PSPACE is NULL, hoist out all locations of B. */
13530
13531 static struct bp_location *
13532 hoist_existing_locations (struct breakpoint *b, struct program_space *pspace)
13533 {
13534 struct bp_location head;
13535 struct bp_location *i = b->loc;
13536 struct bp_location **i_link = &b->loc;
13537 struct bp_location *hoisted = &head;
13538
13539 if (pspace == NULL)
13540 {
13541 i = b->loc;
13542 b->loc = NULL;
13543 return i;
13544 }
13545
13546 head.next = NULL;
13547
13548 while (i != NULL)
13549 {
13550 if (i->pspace == pspace)
13551 {
13552 *i_link = i->next;
13553 i->next = NULL;
13554 hoisted->next = i;
13555 hoisted = i;
13556 }
13557 else
13558 i_link = &i->next;
13559 i = *i_link;
13560 }
13561
13562 return head.next;
13563 }
13564
13565 /* Create new breakpoint locations for B (a hardware or software
13566 breakpoint) based on SALS and SALS_END. If SALS_END.NELTS is not
13567 zero, then B is a ranged breakpoint. Only recreates locations for
13568 FILTER_PSPACE. Locations of other program spaces are left
13569 untouched. */
13570
13571 void
13572 update_breakpoint_locations (struct breakpoint *b,
13573 struct program_space *filter_pspace,
13574 gdb::array_view<const symtab_and_line> sals,
13575 gdb::array_view<const symtab_and_line> sals_end)
13576 {
13577 struct bp_location *existing_locations;
13578
13579 if (!sals_end.empty () && (sals.size () != 1 || sals_end.size () != 1))
13580 {
13581 /* Ranged breakpoints have only one start location and one end
13582 location. */
13583 b->enable_state = bp_disabled;
13584 printf_unfiltered (_("Could not reset ranged breakpoint %d: "
13585 "multiple locations found\n"),
13586 b->number);
13587 return;
13588 }
13589
13590 /* If there's no new locations, and all existing locations are
13591 pending, don't do anything. This optimizes the common case where
13592 all locations are in the same shared library, that was unloaded.
13593 We'd like to retain the location, so that when the library is
13594 loaded again, we don't loose the enabled/disabled status of the
13595 individual locations. */
13596 if (all_locations_are_pending (b, filter_pspace) && sals.empty ())
13597 return;
13598
13599 existing_locations = hoist_existing_locations (b, filter_pspace);
13600
13601 for (const auto &sal : sals)
13602 {
13603 struct bp_location *new_loc;
13604
13605 switch_to_program_space_and_thread (sal.pspace);
13606
13607 new_loc = add_location_to_breakpoint (b, &sal);
13608
13609 /* Reparse conditions, they might contain references to the
13610 old symtab. */
13611 if (b->cond_string != NULL)
13612 {
13613 const char *s;
13614
13615 s = b->cond_string;
13616 TRY
13617 {
13618 new_loc->cond = parse_exp_1 (&s, sal.pc,
13619 block_for_pc (sal.pc),
13620 0);
13621 }
13622 CATCH (e, RETURN_MASK_ERROR)
13623 {
13624 warning (_("failed to reevaluate condition "
13625 "for breakpoint %d: %s"),
13626 b->number, e.message);
13627 new_loc->enabled = 0;
13628 }
13629 END_CATCH
13630 }
13631
13632 if (!sals_end.empty ())
13633 {
13634 CORE_ADDR end = find_breakpoint_range_end (sals_end[0]);
13635
13636 new_loc->length = end - sals[0].pc + 1;
13637 }
13638 }
13639
13640 /* If possible, carry over 'disable' status from existing
13641 breakpoints. */
13642 {
13643 struct bp_location *e = existing_locations;
13644 /* If there are multiple breakpoints with the same function name,
13645 e.g. for inline functions, comparing function names won't work.
13646 Instead compare pc addresses; this is just a heuristic as things
13647 may have moved, but in practice it gives the correct answer
13648 often enough until a better solution is found. */
13649 int have_ambiguous_names = ambiguous_names_p (b->loc);
13650
13651 for (; e; e = e->next)
13652 {
13653 if (!e->enabled && e->function_name)
13654 {
13655 struct bp_location *l = b->loc;
13656 if (have_ambiguous_names)
13657 {
13658 for (; l; l = l->next)
13659 if (breakpoint_locations_match (e, l))
13660 {
13661 l->enabled = 0;
13662 break;
13663 }
13664 }
13665 else
13666 {
13667 for (; l; l = l->next)
13668 if (l->function_name
13669 && strcmp (e->function_name, l->function_name) == 0)
13670 {
13671 l->enabled = 0;
13672 break;
13673 }
13674 }
13675 }
13676 }
13677 }
13678
13679 if (!locations_are_equal (existing_locations, b->loc))
13680 gdb::observers::breakpoint_modified.notify (b);
13681 }
13682
13683 /* Find the SaL locations corresponding to the given LOCATION.
13684 On return, FOUND will be 1 if any SaL was found, zero otherwise. */
13685
13686 static std::vector<symtab_and_line>
13687 location_to_sals (struct breakpoint *b, struct event_location *location,
13688 struct program_space *search_pspace, int *found)
13689 {
13690 struct gdb_exception exception = exception_none;
13691
13692 gdb_assert (b->ops != NULL);
13693
13694 std::vector<symtab_and_line> sals;
13695
13696 TRY
13697 {
13698 sals = b->ops->decode_location (b, location, search_pspace);
13699 }
13700 CATCH (e, RETURN_MASK_ERROR)
13701 {
13702 int not_found_and_ok = 0;
13703
13704 exception = e;
13705
13706 /* For pending breakpoints, it's expected that parsing will
13707 fail until the right shared library is loaded. User has
13708 already told to create pending breakpoints and don't need
13709 extra messages. If breakpoint is in bp_shlib_disabled
13710 state, then user already saw the message about that
13711 breakpoint being disabled, and don't want to see more
13712 errors. */
13713 if (e.error == NOT_FOUND_ERROR
13714 && (b->condition_not_parsed
13715 || (b->loc != NULL
13716 && search_pspace != NULL
13717 && b->loc->pspace != search_pspace)
13718 || (b->loc && b->loc->shlib_disabled)
13719 || (b->loc && b->loc->pspace->executing_startup)
13720 || b->enable_state == bp_disabled))
13721 not_found_and_ok = 1;
13722
13723 if (!not_found_and_ok)
13724 {
13725 /* We surely don't want to warn about the same breakpoint
13726 10 times. One solution, implemented here, is disable
13727 the breakpoint on error. Another solution would be to
13728 have separate 'warning emitted' flag. Since this
13729 happens only when a binary has changed, I don't know
13730 which approach is better. */
13731 b->enable_state = bp_disabled;
13732 throw_exception (e);
13733 }
13734 }
13735 END_CATCH
13736
13737 if (exception.reason == 0 || exception.error != NOT_FOUND_ERROR)
13738 {
13739 for (auto &sal : sals)
13740 resolve_sal_pc (&sal);
13741 if (b->condition_not_parsed && b->extra_string != NULL)
13742 {
13743 char *cond_string, *extra_string;
13744 int thread, task;
13745
13746 find_condition_and_thread (b->extra_string, sals[0].pc,
13747 &cond_string, &thread, &task,
13748 &extra_string);
13749 gdb_assert (b->cond_string == NULL);
13750 if (cond_string)
13751 b->cond_string = cond_string;
13752 b->thread = thread;
13753 b->task = task;
13754 if (extra_string)
13755 {
13756 xfree (b->extra_string);
13757 b->extra_string = extra_string;
13758 }
13759 b->condition_not_parsed = 0;
13760 }
13761
13762 if (b->type == bp_static_tracepoint && !strace_marker_p (b))
13763 sals[0] = update_static_tracepoint (b, sals[0]);
13764
13765 *found = 1;
13766 }
13767 else
13768 *found = 0;
13769
13770 return sals;
13771 }
13772
13773 /* The default re_set method, for typical hardware or software
13774 breakpoints. Reevaluate the breakpoint and recreate its
13775 locations. */
13776
13777 static void
13778 breakpoint_re_set_default (struct breakpoint *b)
13779 {
13780 struct program_space *filter_pspace = current_program_space;
13781 std::vector<symtab_and_line> expanded, expanded_end;
13782
13783 int found;
13784 std::vector<symtab_and_line> sals = location_to_sals (b, b->location.get (),
13785 filter_pspace, &found);
13786 if (found)
13787 expanded = std::move (sals);
13788
13789 if (b->location_range_end != NULL)
13790 {
13791 std::vector<symtab_and_line> sals_end
13792 = location_to_sals (b, b->location_range_end.get (),
13793 filter_pspace, &found);
13794 if (found)
13795 expanded_end = std::move (sals_end);
13796 }
13797
13798 update_breakpoint_locations (b, filter_pspace, expanded, expanded_end);
13799 }
13800
13801 /* Default method for creating SALs from an address string. It basically
13802 calls parse_breakpoint_sals. Return 1 for success, zero for failure. */
13803
13804 static void
13805 create_sals_from_location_default (const struct event_location *location,
13806 struct linespec_result *canonical,
13807 enum bptype type_wanted)
13808 {
13809 parse_breakpoint_sals (location, canonical);
13810 }
13811
13812 /* Call create_breakpoints_sal for the given arguments. This is the default
13813 function for the `create_breakpoints_sal' method of
13814 breakpoint_ops. */
13815
13816 static void
13817 create_breakpoints_sal_default (struct gdbarch *gdbarch,
13818 struct linespec_result *canonical,
13819 gdb::unique_xmalloc_ptr<char> cond_string,
13820 gdb::unique_xmalloc_ptr<char> extra_string,
13821 enum bptype type_wanted,
13822 enum bpdisp disposition,
13823 int thread,
13824 int task, int ignore_count,
13825 const struct breakpoint_ops *ops,
13826 int from_tty, int enabled,
13827 int internal, unsigned flags)
13828 {
13829 create_breakpoints_sal (gdbarch, canonical,
13830 std::move (cond_string),
13831 std::move (extra_string),
13832 type_wanted, disposition,
13833 thread, task, ignore_count, ops, from_tty,
13834 enabled, internal, flags);
13835 }
13836
13837 /* Decode the line represented by S by calling decode_line_full. This is the
13838 default function for the `decode_location' method of breakpoint_ops. */
13839
13840 static std::vector<symtab_and_line>
13841 decode_location_default (struct breakpoint *b,
13842 const struct event_location *location,
13843 struct program_space *search_pspace)
13844 {
13845 struct linespec_result canonical;
13846
13847 decode_line_full (location, DECODE_LINE_FUNFIRSTLINE, search_pspace,
13848 (struct symtab *) NULL, 0,
13849 &canonical, multiple_symbols_all,
13850 b->filter);
13851
13852 /* We should get 0 or 1 resulting SALs. */
13853 gdb_assert (canonical.lsals.size () < 2);
13854
13855 if (!canonical.lsals.empty ())
13856 {
13857 const linespec_sals &lsal = canonical.lsals[0];
13858 return std::move (lsal.sals);
13859 }
13860 return {};
13861 }
13862
13863 /* Reset a breakpoint. */
13864
13865 static void
13866 breakpoint_re_set_one (breakpoint *b)
13867 {
13868 input_radix = b->input_radix;
13869 set_language (b->language);
13870
13871 b->ops->re_set (b);
13872 }
13873
13874 /* Re-set breakpoint locations for the current program space.
13875 Locations bound to other program spaces are left untouched. */
13876
13877 void
13878 breakpoint_re_set (void)
13879 {
13880 struct breakpoint *b, *b_tmp;
13881
13882 {
13883 scoped_restore_current_language save_language;
13884 scoped_restore save_input_radix = make_scoped_restore (&input_radix);
13885 scoped_restore_current_pspace_and_thread restore_pspace_thread;
13886
13887 /* Note: we must not try to insert locations until after all
13888 breakpoints have been re-set. Otherwise, e.g., when re-setting
13889 breakpoint 1, we'd insert the locations of breakpoint 2, which
13890 hadn't been re-set yet, and thus may have stale locations. */
13891
13892 ALL_BREAKPOINTS_SAFE (b, b_tmp)
13893 {
13894 TRY
13895 {
13896 breakpoint_re_set_one (b);
13897 }
13898 CATCH (ex, RETURN_MASK_ALL)
13899 {
13900 exception_fprintf (gdb_stderr, ex,
13901 "Error in re-setting breakpoint %d: ",
13902 b->number);
13903 }
13904 END_CATCH
13905 }
13906
13907 jit_breakpoint_re_set ();
13908 }
13909
13910 create_overlay_event_breakpoint ();
13911 create_longjmp_master_breakpoint ();
13912 create_std_terminate_master_breakpoint ();
13913 create_exception_master_breakpoint ();
13914
13915 /* Now we can insert. */
13916 update_global_location_list (UGLL_MAY_INSERT);
13917 }
13918 \f
13919 /* Reset the thread number of this breakpoint:
13920
13921 - If the breakpoint is for all threads, leave it as-is.
13922 - Else, reset it to the current thread for inferior_ptid. */
13923 void
13924 breakpoint_re_set_thread (struct breakpoint *b)
13925 {
13926 if (b->thread != -1)
13927 {
13928 if (in_thread_list (inferior_ptid))
13929 b->thread = ptid_to_global_thread_id (inferior_ptid);
13930
13931 /* We're being called after following a fork. The new fork is
13932 selected as current, and unless this was a vfork will have a
13933 different program space from the original thread. Reset that
13934 as well. */
13935 b->loc->pspace = current_program_space;
13936 }
13937 }
13938
13939 /* Set ignore-count of breakpoint number BPTNUM to COUNT.
13940 If from_tty is nonzero, it prints a message to that effect,
13941 which ends with a period (no newline). */
13942
13943 void
13944 set_ignore_count (int bptnum, int count, int from_tty)
13945 {
13946 struct breakpoint *b;
13947
13948 if (count < 0)
13949 count = 0;
13950
13951 ALL_BREAKPOINTS (b)
13952 if (b->number == bptnum)
13953 {
13954 if (is_tracepoint (b))
13955 {
13956 if (from_tty && count != 0)
13957 printf_filtered (_("Ignore count ignored for tracepoint %d."),
13958 bptnum);
13959 return;
13960 }
13961
13962 b->ignore_count = count;
13963 if (from_tty)
13964 {
13965 if (count == 0)
13966 printf_filtered (_("Will stop next time "
13967 "breakpoint %d is reached."),
13968 bptnum);
13969 else if (count == 1)
13970 printf_filtered (_("Will ignore next crossing of breakpoint %d."),
13971 bptnum);
13972 else
13973 printf_filtered (_("Will ignore next %d "
13974 "crossings of breakpoint %d."),
13975 count, bptnum);
13976 }
13977 gdb::observers::breakpoint_modified.notify (b);
13978 return;
13979 }
13980
13981 error (_("No breakpoint number %d."), bptnum);
13982 }
13983
13984 /* Command to set ignore-count of breakpoint N to COUNT. */
13985
13986 static void
13987 ignore_command (const char *args, int from_tty)
13988 {
13989 const char *p = args;
13990 int num;
13991
13992 if (p == 0)
13993 error_no_arg (_("a breakpoint number"));
13994
13995 num = get_number (&p);
13996 if (num == 0)
13997 error (_("bad breakpoint number: '%s'"), args);
13998 if (*p == 0)
13999 error (_("Second argument (specified ignore-count) is missing."));
14000
14001 set_ignore_count (num,
14002 longest_to_int (value_as_long (parse_and_eval (p))),
14003 from_tty);
14004 if (from_tty)
14005 printf_filtered ("\n");
14006 }
14007 \f
14008
14009 /* Call FUNCTION on each of the breakpoints with numbers in the range
14010 defined by BP_NUM_RANGE (an inclusive range). */
14011
14012 static void
14013 map_breakpoint_number_range (std::pair<int, int> bp_num_range,
14014 gdb::function_view<void (breakpoint *)> function)
14015 {
14016 if (bp_num_range.first == 0)
14017 {
14018 warning (_("bad breakpoint number at or near '%d'"),
14019 bp_num_range.first);
14020 }
14021 else
14022 {
14023 struct breakpoint *b, *tmp;
14024
14025 for (int i = bp_num_range.first; i <= bp_num_range.second; i++)
14026 {
14027 bool match = false;
14028
14029 ALL_BREAKPOINTS_SAFE (b, tmp)
14030 if (b->number == i)
14031 {
14032 match = true;
14033 function (b);
14034 break;
14035 }
14036 if (!match)
14037 printf_unfiltered (_("No breakpoint number %d.\n"), i);
14038 }
14039 }
14040 }
14041
14042 /* Call FUNCTION on each of the breakpoints whose numbers are given in
14043 ARGS. */
14044
14045 static void
14046 map_breakpoint_numbers (const char *args,
14047 gdb::function_view<void (breakpoint *)> function)
14048 {
14049 if (args == NULL || *args == '\0')
14050 error_no_arg (_("one or more breakpoint numbers"));
14051
14052 number_or_range_parser parser (args);
14053
14054 while (!parser.finished ())
14055 {
14056 int num = parser.get_number ();
14057 map_breakpoint_number_range (std::make_pair (num, num), function);
14058 }
14059 }
14060
14061 /* Return the breakpoint location structure corresponding to the
14062 BP_NUM and LOC_NUM values. */
14063
14064 static struct bp_location *
14065 find_location_by_number (int bp_num, int loc_num)
14066 {
14067 struct breakpoint *b;
14068
14069 ALL_BREAKPOINTS (b)
14070 if (b->number == bp_num)
14071 {
14072 break;
14073 }
14074
14075 if (!b || b->number != bp_num)
14076 error (_("Bad breakpoint number '%d'"), bp_num);
14077
14078 if (loc_num == 0)
14079 error (_("Bad breakpoint location number '%d'"), loc_num);
14080
14081 int n = 0;
14082 for (bp_location *loc = b->loc; loc != NULL; loc = loc->next)
14083 if (++n == loc_num)
14084 return loc;
14085
14086 error (_("Bad breakpoint location number '%d'"), loc_num);
14087 }
14088
14089 /* Modes of operation for extract_bp_num. */
14090 enum class extract_bp_kind
14091 {
14092 /* Extracting a breakpoint number. */
14093 bp,
14094
14095 /* Extracting a location number. */
14096 loc,
14097 };
14098
14099 /* Extract a breakpoint or location number (as determined by KIND)
14100 from the string starting at START. TRAILER is a character which
14101 can be found after the number. If you don't want a trailer, use
14102 '\0'. If END_OUT is not NULL, it is set to point after the parsed
14103 string. This always returns a positive integer. */
14104
14105 static int
14106 extract_bp_num (extract_bp_kind kind, const char *start,
14107 int trailer, const char **end_out = NULL)
14108 {
14109 const char *end = start;
14110 int num = get_number_trailer (&end, trailer);
14111 if (num < 0)
14112 error (kind == extract_bp_kind::bp
14113 ? _("Negative breakpoint number '%.*s'")
14114 : _("Negative breakpoint location number '%.*s'"),
14115 int (end - start), start);
14116 if (num == 0)
14117 error (kind == extract_bp_kind::bp
14118 ? _("Bad breakpoint number '%.*s'")
14119 : _("Bad breakpoint location number '%.*s'"),
14120 int (end - start), start);
14121
14122 if (end_out != NULL)
14123 *end_out = end;
14124 return num;
14125 }
14126
14127 /* Extract a breakpoint or location range (as determined by KIND) in
14128 the form NUM1-NUM2 stored at &ARG[arg_offset]. Returns a std::pair
14129 representing the (inclusive) range. The returned pair's elements
14130 are always positive integers. */
14131
14132 static std::pair<int, int>
14133 extract_bp_or_bp_range (extract_bp_kind kind,
14134 const std::string &arg,
14135 std::string::size_type arg_offset)
14136 {
14137 std::pair<int, int> range;
14138 const char *bp_loc = &arg[arg_offset];
14139 std::string::size_type dash = arg.find ('-', arg_offset);
14140 if (dash != std::string::npos)
14141 {
14142 /* bp_loc is a range (x-z). */
14143 if (arg.length () == dash + 1)
14144 error (kind == extract_bp_kind::bp
14145 ? _("Bad breakpoint number at or near: '%s'")
14146 : _("Bad breakpoint location number at or near: '%s'"),
14147 bp_loc);
14148
14149 const char *end;
14150 const char *start_first = bp_loc;
14151 const char *start_second = &arg[dash + 1];
14152 range.first = extract_bp_num (kind, start_first, '-');
14153 range.second = extract_bp_num (kind, start_second, '\0', &end);
14154
14155 if (range.first > range.second)
14156 error (kind == extract_bp_kind::bp
14157 ? _("Inverted breakpoint range at '%.*s'")
14158 : _("Inverted breakpoint location range at '%.*s'"),
14159 int (end - start_first), start_first);
14160 }
14161 else
14162 {
14163 /* bp_loc is a single value. */
14164 range.first = extract_bp_num (kind, bp_loc, '\0');
14165 range.second = range.first;
14166 }
14167 return range;
14168 }
14169
14170 /* Extract the breakpoint/location range specified by ARG. Returns
14171 the breakpoint range in BP_NUM_RANGE, and the location range in
14172 BP_LOC_RANGE.
14173
14174 ARG may be in any of the following forms:
14175
14176 x where 'x' is a breakpoint number.
14177 x-y where 'x' and 'y' specify a breakpoint numbers range.
14178 x.y where 'x' is a breakpoint number and 'y' a location number.
14179 x.y-z where 'x' is a breakpoint number and 'y' and 'z' specify a
14180 location number range.
14181 */
14182
14183 static void
14184 extract_bp_number_and_location (const std::string &arg,
14185 std::pair<int, int> &bp_num_range,
14186 std::pair<int, int> &bp_loc_range)
14187 {
14188 std::string::size_type dot = arg.find ('.');
14189
14190 if (dot != std::string::npos)
14191 {
14192 /* Handle 'x.y' and 'x.y-z' cases. */
14193
14194 if (arg.length () == dot + 1 || dot == 0)
14195 error (_("Bad breakpoint number at or near: '%s'"), arg.c_str ());
14196
14197 bp_num_range.first
14198 = extract_bp_num (extract_bp_kind::bp, arg.c_str (), '.');
14199 bp_num_range.second = bp_num_range.first;
14200
14201 bp_loc_range = extract_bp_or_bp_range (extract_bp_kind::loc,
14202 arg, dot + 1);
14203 }
14204 else
14205 {
14206 /* Handle x and x-y cases. */
14207
14208 bp_num_range = extract_bp_or_bp_range (extract_bp_kind::bp, arg, 0);
14209 bp_loc_range.first = 0;
14210 bp_loc_range.second = 0;
14211 }
14212 }
14213
14214 /* Enable or disable a breakpoint location BP_NUM.LOC_NUM. ENABLE
14215 specifies whether to enable or disable. */
14216
14217 static void
14218 enable_disable_bp_num_loc (int bp_num, int loc_num, bool enable)
14219 {
14220 struct bp_location *loc = find_location_by_number (bp_num, loc_num);
14221 if (loc != NULL)
14222 {
14223 if (loc->enabled != enable)
14224 {
14225 loc->enabled = enable;
14226 mark_breakpoint_location_modified (loc);
14227 }
14228 if (target_supports_enable_disable_tracepoint ()
14229 && current_trace_status ()->running && loc->owner
14230 && is_tracepoint (loc->owner))
14231 target_disable_tracepoint (loc);
14232 }
14233 update_global_location_list (UGLL_DONT_INSERT);
14234 }
14235
14236 /* Enable or disable a range of breakpoint locations. BP_NUM is the
14237 number of the breakpoint, and BP_LOC_RANGE specifies the
14238 (inclusive) range of location numbers of that breakpoint to
14239 enable/disable. ENABLE specifies whether to enable or disable the
14240 location. */
14241
14242 static void
14243 enable_disable_breakpoint_location_range (int bp_num,
14244 std::pair<int, int> &bp_loc_range,
14245 bool enable)
14246 {
14247 for (int i = bp_loc_range.first; i <= bp_loc_range.second; i++)
14248 enable_disable_bp_num_loc (bp_num, i, enable);
14249 }
14250
14251 /* Set ignore-count of breakpoint number BPTNUM to COUNT.
14252 If from_tty is nonzero, it prints a message to that effect,
14253 which ends with a period (no newline). */
14254
14255 void
14256 disable_breakpoint (struct breakpoint *bpt)
14257 {
14258 /* Never disable a watchpoint scope breakpoint; we want to
14259 hit them when we leave scope so we can delete both the
14260 watchpoint and its scope breakpoint at that time. */
14261 if (bpt->type == bp_watchpoint_scope)
14262 return;
14263
14264 bpt->enable_state = bp_disabled;
14265
14266 /* Mark breakpoint locations modified. */
14267 mark_breakpoint_modified (bpt);
14268
14269 if (target_supports_enable_disable_tracepoint ()
14270 && current_trace_status ()->running && is_tracepoint (bpt))
14271 {
14272 struct bp_location *location;
14273
14274 for (location = bpt->loc; location; location = location->next)
14275 target_disable_tracepoint (location);
14276 }
14277
14278 update_global_location_list (UGLL_DONT_INSERT);
14279
14280 gdb::observers::breakpoint_modified.notify (bpt);
14281 }
14282
14283 /* Enable or disable the breakpoint(s) or breakpoint location(s)
14284 specified in ARGS. ARGS may be in any of the formats handled by
14285 extract_bp_number_and_location. ENABLE specifies whether to enable
14286 or disable the breakpoints/locations. */
14287
14288 static void
14289 enable_disable_command (const char *args, int from_tty, bool enable)
14290 {
14291 if (args == 0)
14292 {
14293 struct breakpoint *bpt;
14294
14295 ALL_BREAKPOINTS (bpt)
14296 if (user_breakpoint_p (bpt))
14297 {
14298 if (enable)
14299 enable_breakpoint (bpt);
14300 else
14301 disable_breakpoint (bpt);
14302 }
14303 }
14304 else
14305 {
14306 std::string num = extract_arg (&args);
14307
14308 while (!num.empty ())
14309 {
14310 std::pair<int, int> bp_num_range, bp_loc_range;
14311
14312 extract_bp_number_and_location (num, bp_num_range, bp_loc_range);
14313
14314 if (bp_loc_range.first == bp_loc_range.second
14315 && bp_loc_range.first == 0)
14316 {
14317 /* Handle breakpoint ids with formats 'x' or 'x-z'. */
14318 map_breakpoint_number_range (bp_num_range,
14319 enable
14320 ? enable_breakpoint
14321 : disable_breakpoint);
14322 }
14323 else
14324 {
14325 /* Handle breakpoint ids with formats 'x.y' or
14326 'x.y-z'. */
14327 enable_disable_breakpoint_location_range
14328 (bp_num_range.first, bp_loc_range, enable);
14329 }
14330 num = extract_arg (&args);
14331 }
14332 }
14333 }
14334
14335 /* The disable command disables the specified breakpoints/locations
14336 (or all defined breakpoints) so they're no longer effective in
14337 stopping the inferior. ARGS may be in any of the forms defined in
14338 extract_bp_number_and_location. */
14339
14340 static void
14341 disable_command (const char *args, int from_tty)
14342 {
14343 enable_disable_command (args, from_tty, false);
14344 }
14345
14346 static void
14347 enable_breakpoint_disp (struct breakpoint *bpt, enum bpdisp disposition,
14348 int count)
14349 {
14350 int target_resources_ok;
14351
14352 if (bpt->type == bp_hardware_breakpoint)
14353 {
14354 int i;
14355 i = hw_breakpoint_used_count ();
14356 target_resources_ok =
14357 target_can_use_hardware_watchpoint (bp_hardware_breakpoint,
14358 i + 1, 0);
14359 if (target_resources_ok == 0)
14360 error (_("No hardware breakpoint support in the target."));
14361 else if (target_resources_ok < 0)
14362 error (_("Hardware breakpoints used exceeds limit."));
14363 }
14364
14365 if (is_watchpoint (bpt))
14366 {
14367 /* Initialize it just to avoid a GCC false warning. */
14368 enum enable_state orig_enable_state = bp_disabled;
14369
14370 TRY
14371 {
14372 struct watchpoint *w = (struct watchpoint *) bpt;
14373
14374 orig_enable_state = bpt->enable_state;
14375 bpt->enable_state = bp_enabled;
14376 update_watchpoint (w, 1 /* reparse */);
14377 }
14378 CATCH (e, RETURN_MASK_ALL)
14379 {
14380 bpt->enable_state = orig_enable_state;
14381 exception_fprintf (gdb_stderr, e, _("Cannot enable watchpoint %d: "),
14382 bpt->number);
14383 return;
14384 }
14385 END_CATCH
14386 }
14387
14388 bpt->enable_state = bp_enabled;
14389
14390 /* Mark breakpoint locations modified. */
14391 mark_breakpoint_modified (bpt);
14392
14393 if (target_supports_enable_disable_tracepoint ()
14394 && current_trace_status ()->running && is_tracepoint (bpt))
14395 {
14396 struct bp_location *location;
14397
14398 for (location = bpt->loc; location; location = location->next)
14399 target_enable_tracepoint (location);
14400 }
14401
14402 bpt->disposition = disposition;
14403 bpt->enable_count = count;
14404 update_global_location_list (UGLL_MAY_INSERT);
14405
14406 gdb::observers::breakpoint_modified.notify (bpt);
14407 }
14408
14409
14410 void
14411 enable_breakpoint (struct breakpoint *bpt)
14412 {
14413 enable_breakpoint_disp (bpt, bpt->disposition, 0);
14414 }
14415
14416 /* The enable command enables the specified breakpoints/locations (or
14417 all defined breakpoints) so they once again become (or continue to
14418 be) effective in stopping the inferior. ARGS may be in any of the
14419 forms defined in extract_bp_number_and_location. */
14420
14421 static void
14422 enable_command (const char *args, int from_tty)
14423 {
14424 enable_disable_command (args, from_tty, true);
14425 }
14426
14427 static void
14428 enable_once_command (const char *args, int from_tty)
14429 {
14430 map_breakpoint_numbers
14431 (args, [&] (breakpoint *b)
14432 {
14433 iterate_over_related_breakpoints
14434 (b, [&] (breakpoint *bpt)
14435 {
14436 enable_breakpoint_disp (bpt, disp_disable, 1);
14437 });
14438 });
14439 }
14440
14441 static void
14442 enable_count_command (const char *args, int from_tty)
14443 {
14444 int count;
14445
14446 if (args == NULL)
14447 error_no_arg (_("hit count"));
14448
14449 count = get_number (&args);
14450
14451 map_breakpoint_numbers
14452 (args, [&] (breakpoint *b)
14453 {
14454 iterate_over_related_breakpoints
14455 (b, [&] (breakpoint *bpt)
14456 {
14457 enable_breakpoint_disp (bpt, disp_disable, count);
14458 });
14459 });
14460 }
14461
14462 static void
14463 enable_delete_command (const char *args, int from_tty)
14464 {
14465 map_breakpoint_numbers
14466 (args, [&] (breakpoint *b)
14467 {
14468 iterate_over_related_breakpoints
14469 (b, [&] (breakpoint *bpt)
14470 {
14471 enable_breakpoint_disp (bpt, disp_del, 1);
14472 });
14473 });
14474 }
14475 \f
14476 static void
14477 set_breakpoint_cmd (const char *args, int from_tty)
14478 {
14479 }
14480
14481 static void
14482 show_breakpoint_cmd (const char *args, int from_tty)
14483 {
14484 }
14485
14486 /* Invalidate last known value of any hardware watchpoint if
14487 the memory which that value represents has been written to by
14488 GDB itself. */
14489
14490 static void
14491 invalidate_bp_value_on_memory_change (struct inferior *inferior,
14492 CORE_ADDR addr, ssize_t len,
14493 const bfd_byte *data)
14494 {
14495 struct breakpoint *bp;
14496
14497 ALL_BREAKPOINTS (bp)
14498 if (bp->enable_state == bp_enabled
14499 && bp->type == bp_hardware_watchpoint)
14500 {
14501 struct watchpoint *wp = (struct watchpoint *) bp;
14502
14503 if (wp->val_valid && wp->val != nullptr)
14504 {
14505 struct bp_location *loc;
14506
14507 for (loc = bp->loc; loc != NULL; loc = loc->next)
14508 if (loc->loc_type == bp_loc_hardware_watchpoint
14509 && loc->address + loc->length > addr
14510 && addr + len > loc->address)
14511 {
14512 wp->val = NULL;
14513 wp->val_valid = 0;
14514 }
14515 }
14516 }
14517 }
14518
14519 /* Create and insert a breakpoint for software single step. */
14520
14521 void
14522 insert_single_step_breakpoint (struct gdbarch *gdbarch,
14523 const address_space *aspace,
14524 CORE_ADDR next_pc)
14525 {
14526 struct thread_info *tp = inferior_thread ();
14527 struct symtab_and_line sal;
14528 CORE_ADDR pc = next_pc;
14529
14530 if (tp->control.single_step_breakpoints == NULL)
14531 {
14532 tp->control.single_step_breakpoints
14533 = new_single_step_breakpoint (tp->global_num, gdbarch);
14534 }
14535
14536 sal = find_pc_line (pc, 0);
14537 sal.pc = pc;
14538 sal.section = find_pc_overlay (pc);
14539 sal.explicit_pc = 1;
14540 add_location_to_breakpoint (tp->control.single_step_breakpoints, &sal);
14541
14542 update_global_location_list (UGLL_INSERT);
14543 }
14544
14545 /* Insert single step breakpoints according to the current state. */
14546
14547 int
14548 insert_single_step_breakpoints (struct gdbarch *gdbarch)
14549 {
14550 struct regcache *regcache = get_current_regcache ();
14551 std::vector<CORE_ADDR> next_pcs;
14552
14553 next_pcs = gdbarch_software_single_step (gdbarch, regcache);
14554
14555 if (!next_pcs.empty ())
14556 {
14557 struct frame_info *frame = get_current_frame ();
14558 const address_space *aspace = get_frame_address_space (frame);
14559
14560 for (CORE_ADDR pc : next_pcs)
14561 insert_single_step_breakpoint (gdbarch, aspace, pc);
14562
14563 return 1;
14564 }
14565 else
14566 return 0;
14567 }
14568
14569 /* See breakpoint.h. */
14570
14571 int
14572 breakpoint_has_location_inserted_here (struct breakpoint *bp,
14573 const address_space *aspace,
14574 CORE_ADDR pc)
14575 {
14576 struct bp_location *loc;
14577
14578 for (loc = bp->loc; loc != NULL; loc = loc->next)
14579 if (loc->inserted
14580 && breakpoint_location_address_match (loc, aspace, pc))
14581 return 1;
14582
14583 return 0;
14584 }
14585
14586 /* Check whether a software single-step breakpoint is inserted at
14587 PC. */
14588
14589 int
14590 single_step_breakpoint_inserted_here_p (const address_space *aspace,
14591 CORE_ADDR pc)
14592 {
14593 struct breakpoint *bpt;
14594
14595 ALL_BREAKPOINTS (bpt)
14596 {
14597 if (bpt->type == bp_single_step
14598 && breakpoint_has_location_inserted_here (bpt, aspace, pc))
14599 return 1;
14600 }
14601 return 0;
14602 }
14603
14604 /* Tracepoint-specific operations. */
14605
14606 /* Set tracepoint count to NUM. */
14607 static void
14608 set_tracepoint_count (int num)
14609 {
14610 tracepoint_count = num;
14611 set_internalvar_integer (lookup_internalvar ("tpnum"), num);
14612 }
14613
14614 static void
14615 trace_command (const char *arg, int from_tty)
14616 {
14617 struct breakpoint_ops *ops;
14618
14619 event_location_up location = string_to_event_location (&arg,
14620 current_language);
14621 if (location != NULL
14622 && event_location_type (location.get ()) == PROBE_LOCATION)
14623 ops = &tracepoint_probe_breakpoint_ops;
14624 else
14625 ops = &tracepoint_breakpoint_ops;
14626
14627 create_breakpoint (get_current_arch (),
14628 location.get (),
14629 NULL, 0, arg, 1 /* parse arg */,
14630 0 /* tempflag */,
14631 bp_tracepoint /* type_wanted */,
14632 0 /* Ignore count */,
14633 pending_break_support,
14634 ops,
14635 from_tty,
14636 1 /* enabled */,
14637 0 /* internal */, 0);
14638 }
14639
14640 static void
14641 ftrace_command (const char *arg, int from_tty)
14642 {
14643 event_location_up location = string_to_event_location (&arg,
14644 current_language);
14645 create_breakpoint (get_current_arch (),
14646 location.get (),
14647 NULL, 0, arg, 1 /* parse arg */,
14648 0 /* tempflag */,
14649 bp_fast_tracepoint /* type_wanted */,
14650 0 /* Ignore count */,
14651 pending_break_support,
14652 &tracepoint_breakpoint_ops,
14653 from_tty,
14654 1 /* enabled */,
14655 0 /* internal */, 0);
14656 }
14657
14658 /* strace command implementation. Creates a static tracepoint. */
14659
14660 static void
14661 strace_command (const char *arg, int from_tty)
14662 {
14663 struct breakpoint_ops *ops;
14664 event_location_up location;
14665
14666 /* Decide if we are dealing with a static tracepoint marker (`-m'),
14667 or with a normal static tracepoint. */
14668 if (arg && startswith (arg, "-m") && isspace (arg[2]))
14669 {
14670 ops = &strace_marker_breakpoint_ops;
14671 location = new_linespec_location (&arg, symbol_name_match_type::FULL);
14672 }
14673 else
14674 {
14675 ops = &tracepoint_breakpoint_ops;
14676 location = string_to_event_location (&arg, current_language);
14677 }
14678
14679 create_breakpoint (get_current_arch (),
14680 location.get (),
14681 NULL, 0, arg, 1 /* parse arg */,
14682 0 /* tempflag */,
14683 bp_static_tracepoint /* type_wanted */,
14684 0 /* Ignore count */,
14685 pending_break_support,
14686 ops,
14687 from_tty,
14688 1 /* enabled */,
14689 0 /* internal */, 0);
14690 }
14691
14692 /* Set up a fake reader function that gets command lines from a linked
14693 list that was acquired during tracepoint uploading. */
14694
14695 static struct uploaded_tp *this_utp;
14696 static int next_cmd;
14697
14698 static char *
14699 read_uploaded_action (void)
14700 {
14701 char *rslt = nullptr;
14702
14703 if (next_cmd < this_utp->cmd_strings.size ())
14704 {
14705 rslt = this_utp->cmd_strings[next_cmd];
14706 next_cmd++;
14707 }
14708
14709 return rslt;
14710 }
14711
14712 /* Given information about a tracepoint as recorded on a target (which
14713 can be either a live system or a trace file), attempt to create an
14714 equivalent GDB tracepoint. This is not a reliable process, since
14715 the target does not necessarily have all the information used when
14716 the tracepoint was originally defined. */
14717
14718 struct tracepoint *
14719 create_tracepoint_from_upload (struct uploaded_tp *utp)
14720 {
14721 const char *addr_str;
14722 char small_buf[100];
14723 struct tracepoint *tp;
14724
14725 if (utp->at_string)
14726 addr_str = utp->at_string;
14727 else
14728 {
14729 /* In the absence of a source location, fall back to raw
14730 address. Since there is no way to confirm that the address
14731 means the same thing as when the trace was started, warn the
14732 user. */
14733 warning (_("Uploaded tracepoint %d has no "
14734 "source location, using raw address"),
14735 utp->number);
14736 xsnprintf (small_buf, sizeof (small_buf), "*%s", hex_string (utp->addr));
14737 addr_str = small_buf;
14738 }
14739
14740 /* There's not much we can do with a sequence of bytecodes. */
14741 if (utp->cond && !utp->cond_string)
14742 warning (_("Uploaded tracepoint %d condition "
14743 "has no source form, ignoring it"),
14744 utp->number);
14745
14746 event_location_up location = string_to_event_location (&addr_str,
14747 current_language);
14748 if (!create_breakpoint (get_current_arch (),
14749 location.get (),
14750 utp->cond_string, -1, addr_str,
14751 0 /* parse cond/thread */,
14752 0 /* tempflag */,
14753 utp->type /* type_wanted */,
14754 0 /* Ignore count */,
14755 pending_break_support,
14756 &tracepoint_breakpoint_ops,
14757 0 /* from_tty */,
14758 utp->enabled /* enabled */,
14759 0 /* internal */,
14760 CREATE_BREAKPOINT_FLAGS_INSERTED))
14761 return NULL;
14762
14763 /* Get the tracepoint we just created. */
14764 tp = get_tracepoint (tracepoint_count);
14765 gdb_assert (tp != NULL);
14766
14767 if (utp->pass > 0)
14768 {
14769 xsnprintf (small_buf, sizeof (small_buf), "%d %d", utp->pass,
14770 tp->number);
14771
14772 trace_pass_command (small_buf, 0);
14773 }
14774
14775 /* If we have uploaded versions of the original commands, set up a
14776 special-purpose "reader" function and call the usual command line
14777 reader, then pass the result to the breakpoint command-setting
14778 function. */
14779 if (!utp->cmd_strings.empty ())
14780 {
14781 counted_command_line cmd_list;
14782
14783 this_utp = utp;
14784 next_cmd = 0;
14785
14786 cmd_list = read_command_lines_1 (read_uploaded_action, 1, NULL, NULL);
14787
14788 breakpoint_set_commands (tp, std::move (cmd_list));
14789 }
14790 else if (!utp->actions.empty ()
14791 || !utp->step_actions.empty ())
14792 warning (_("Uploaded tracepoint %d actions "
14793 "have no source form, ignoring them"),
14794 utp->number);
14795
14796 /* Copy any status information that might be available. */
14797 tp->hit_count = utp->hit_count;
14798 tp->traceframe_usage = utp->traceframe_usage;
14799
14800 return tp;
14801 }
14802
14803 /* Print information on tracepoint number TPNUM_EXP, or all if
14804 omitted. */
14805
14806 static void
14807 info_tracepoints_command (const char *args, int from_tty)
14808 {
14809 struct ui_out *uiout = current_uiout;
14810 int num_printed;
14811
14812 num_printed = breakpoint_1 (args, 0, is_tracepoint);
14813
14814 if (num_printed == 0)
14815 {
14816 if (args == NULL || *args == '\0')
14817 uiout->message ("No tracepoints.\n");
14818 else
14819 uiout->message ("No tracepoint matching '%s'.\n", args);
14820 }
14821
14822 default_collect_info ();
14823 }
14824
14825 /* The 'enable trace' command enables tracepoints.
14826 Not supported by all targets. */
14827 static void
14828 enable_trace_command (const char *args, int from_tty)
14829 {
14830 enable_command (args, from_tty);
14831 }
14832
14833 /* The 'disable trace' command disables tracepoints.
14834 Not supported by all targets. */
14835 static void
14836 disable_trace_command (const char *args, int from_tty)
14837 {
14838 disable_command (args, from_tty);
14839 }
14840
14841 /* Remove a tracepoint (or all if no argument). */
14842 static void
14843 delete_trace_command (const char *arg, int from_tty)
14844 {
14845 struct breakpoint *b, *b_tmp;
14846
14847 dont_repeat ();
14848
14849 if (arg == 0)
14850 {
14851 int breaks_to_delete = 0;
14852
14853 /* Delete all breakpoints if no argument.
14854 Do not delete internal or call-dummy breakpoints, these
14855 have to be deleted with an explicit breakpoint number
14856 argument. */
14857 ALL_TRACEPOINTS (b)
14858 if (is_tracepoint (b) && user_breakpoint_p (b))
14859 {
14860 breaks_to_delete = 1;
14861 break;
14862 }
14863
14864 /* Ask user only if there are some breakpoints to delete. */
14865 if (!from_tty
14866 || (breaks_to_delete && query (_("Delete all tracepoints? "))))
14867 {
14868 ALL_BREAKPOINTS_SAFE (b, b_tmp)
14869 if (is_tracepoint (b) && user_breakpoint_p (b))
14870 delete_breakpoint (b);
14871 }
14872 }
14873 else
14874 map_breakpoint_numbers
14875 (arg, [&] (breakpoint *b)
14876 {
14877 iterate_over_related_breakpoints (b, delete_breakpoint);
14878 });
14879 }
14880
14881 /* Helper function for trace_pass_command. */
14882
14883 static void
14884 trace_pass_set_count (struct tracepoint *tp, int count, int from_tty)
14885 {
14886 tp->pass_count = count;
14887 gdb::observers::breakpoint_modified.notify (tp);
14888 if (from_tty)
14889 printf_filtered (_("Setting tracepoint %d's passcount to %d\n"),
14890 tp->number, count);
14891 }
14892
14893 /* Set passcount for tracepoint.
14894
14895 First command argument is passcount, second is tracepoint number.
14896 If tracepoint number omitted, apply to most recently defined.
14897 Also accepts special argument "all". */
14898
14899 static void
14900 trace_pass_command (const char *args, int from_tty)
14901 {
14902 struct tracepoint *t1;
14903 ULONGEST count;
14904
14905 if (args == 0 || *args == 0)
14906 error (_("passcount command requires an "
14907 "argument (count + optional TP num)"));
14908
14909 count = strtoulst (args, &args, 10); /* Count comes first, then TP num. */
14910
14911 args = skip_spaces (args);
14912 if (*args && strncasecmp (args, "all", 3) == 0)
14913 {
14914 struct breakpoint *b;
14915
14916 args += 3; /* Skip special argument "all". */
14917 if (*args)
14918 error (_("Junk at end of arguments."));
14919
14920 ALL_TRACEPOINTS (b)
14921 {
14922 t1 = (struct tracepoint *) b;
14923 trace_pass_set_count (t1, count, from_tty);
14924 }
14925 }
14926 else if (*args == '\0')
14927 {
14928 t1 = get_tracepoint_by_number (&args, NULL);
14929 if (t1)
14930 trace_pass_set_count (t1, count, from_tty);
14931 }
14932 else
14933 {
14934 number_or_range_parser parser (args);
14935 while (!parser.finished ())
14936 {
14937 t1 = get_tracepoint_by_number (&args, &parser);
14938 if (t1)
14939 trace_pass_set_count (t1, count, from_tty);
14940 }
14941 }
14942 }
14943
14944 struct tracepoint *
14945 get_tracepoint (int num)
14946 {
14947 struct breakpoint *t;
14948
14949 ALL_TRACEPOINTS (t)
14950 if (t->number == num)
14951 return (struct tracepoint *) t;
14952
14953 return NULL;
14954 }
14955
14956 /* Find the tracepoint with the given target-side number (which may be
14957 different from the tracepoint number after disconnecting and
14958 reconnecting). */
14959
14960 struct tracepoint *
14961 get_tracepoint_by_number_on_target (int num)
14962 {
14963 struct breakpoint *b;
14964
14965 ALL_TRACEPOINTS (b)
14966 {
14967 struct tracepoint *t = (struct tracepoint *) b;
14968
14969 if (t->number_on_target == num)
14970 return t;
14971 }
14972
14973 return NULL;
14974 }
14975
14976 /* Utility: parse a tracepoint number and look it up in the list.
14977 If STATE is not NULL, use, get_number_or_range_state and ignore ARG.
14978 If the argument is missing, the most recent tracepoint
14979 (tracepoint_count) is returned. */
14980
14981 struct tracepoint *
14982 get_tracepoint_by_number (const char **arg,
14983 number_or_range_parser *parser)
14984 {
14985 struct breakpoint *t;
14986 int tpnum;
14987 const char *instring = arg == NULL ? NULL : *arg;
14988
14989 if (parser != NULL)
14990 {
14991 gdb_assert (!parser->finished ());
14992 tpnum = parser->get_number ();
14993 }
14994 else if (arg == NULL || *arg == NULL || ! **arg)
14995 tpnum = tracepoint_count;
14996 else
14997 tpnum = get_number (arg);
14998
14999 if (tpnum <= 0)
15000 {
15001 if (instring && *instring)
15002 printf_filtered (_("bad tracepoint number at or near '%s'\n"),
15003 instring);
15004 else
15005 printf_filtered (_("No previous tracepoint\n"));
15006 return NULL;
15007 }
15008
15009 ALL_TRACEPOINTS (t)
15010 if (t->number == tpnum)
15011 {
15012 return (struct tracepoint *) t;
15013 }
15014
15015 printf_unfiltered ("No tracepoint number %d.\n", tpnum);
15016 return NULL;
15017 }
15018
15019 void
15020 print_recreate_thread (struct breakpoint *b, struct ui_file *fp)
15021 {
15022 if (b->thread != -1)
15023 fprintf_unfiltered (fp, " thread %d", b->thread);
15024
15025 if (b->task != 0)
15026 fprintf_unfiltered (fp, " task %d", b->task);
15027
15028 fprintf_unfiltered (fp, "\n");
15029 }
15030
15031 /* Save information on user settable breakpoints (watchpoints, etc) to
15032 a new script file named FILENAME. If FILTER is non-NULL, call it
15033 on each breakpoint and only include the ones for which it returns
15034 non-zero. */
15035
15036 static void
15037 save_breakpoints (const char *filename, int from_tty,
15038 int (*filter) (const struct breakpoint *))
15039 {
15040 struct breakpoint *tp;
15041 int any = 0;
15042 int extra_trace_bits = 0;
15043
15044 if (filename == 0 || *filename == 0)
15045 error (_("Argument required (file name in which to save)"));
15046
15047 /* See if we have anything to save. */
15048 ALL_BREAKPOINTS (tp)
15049 {
15050 /* Skip internal and momentary breakpoints. */
15051 if (!user_breakpoint_p (tp))
15052 continue;
15053
15054 /* If we have a filter, only save the breakpoints it accepts. */
15055 if (filter && !filter (tp))
15056 continue;
15057
15058 any = 1;
15059
15060 if (is_tracepoint (tp))
15061 {
15062 extra_trace_bits = 1;
15063
15064 /* We can stop searching. */
15065 break;
15066 }
15067 }
15068
15069 if (!any)
15070 {
15071 warning (_("Nothing to save."));
15072 return;
15073 }
15074
15075 gdb::unique_xmalloc_ptr<char> expanded_filename (tilde_expand (filename));
15076
15077 stdio_file fp;
15078
15079 if (!fp.open (expanded_filename.get (), "w"))
15080 error (_("Unable to open file '%s' for saving (%s)"),
15081 expanded_filename.get (), safe_strerror (errno));
15082
15083 if (extra_trace_bits)
15084 save_trace_state_variables (&fp);
15085
15086 ALL_BREAKPOINTS (tp)
15087 {
15088 /* Skip internal and momentary breakpoints. */
15089 if (!user_breakpoint_p (tp))
15090 continue;
15091
15092 /* If we have a filter, only save the breakpoints it accepts. */
15093 if (filter && !filter (tp))
15094 continue;
15095
15096 tp->ops->print_recreate (tp, &fp);
15097
15098 /* Note, we can't rely on tp->number for anything, as we can't
15099 assume the recreated breakpoint numbers will match. Use $bpnum
15100 instead. */
15101
15102 if (tp->cond_string)
15103 fp.printf (" condition $bpnum %s\n", tp->cond_string);
15104
15105 if (tp->ignore_count)
15106 fp.printf (" ignore $bpnum %d\n", tp->ignore_count);
15107
15108 if (tp->type != bp_dprintf && tp->commands)
15109 {
15110 fp.puts (" commands\n");
15111
15112 current_uiout->redirect (&fp);
15113 TRY
15114 {
15115 print_command_lines (current_uiout, tp->commands.get (), 2);
15116 }
15117 CATCH (ex, RETURN_MASK_ALL)
15118 {
15119 current_uiout->redirect (NULL);
15120 throw_exception (ex);
15121 }
15122 END_CATCH
15123
15124 current_uiout->redirect (NULL);
15125 fp.puts (" end\n");
15126 }
15127
15128 if (tp->enable_state == bp_disabled)
15129 fp.puts ("disable $bpnum\n");
15130
15131 /* If this is a multi-location breakpoint, check if the locations
15132 should be individually disabled. Watchpoint locations are
15133 special, and not user visible. */
15134 if (!is_watchpoint (tp) && tp->loc && tp->loc->next)
15135 {
15136 struct bp_location *loc;
15137 int n = 1;
15138
15139 for (loc = tp->loc; loc != NULL; loc = loc->next, n++)
15140 if (!loc->enabled)
15141 fp.printf ("disable $bpnum.%d\n", n);
15142 }
15143 }
15144
15145 if (extra_trace_bits && *default_collect)
15146 fp.printf ("set default-collect %s\n", default_collect);
15147
15148 if (from_tty)
15149 printf_filtered (_("Saved to file '%s'.\n"), expanded_filename.get ());
15150 }
15151
15152 /* The `save breakpoints' command. */
15153
15154 static void
15155 save_breakpoints_command (const char *args, int from_tty)
15156 {
15157 save_breakpoints (args, from_tty, NULL);
15158 }
15159
15160 /* The `save tracepoints' command. */
15161
15162 static void
15163 save_tracepoints_command (const char *args, int from_tty)
15164 {
15165 save_breakpoints (args, from_tty, is_tracepoint);
15166 }
15167
15168 /* Create a vector of all tracepoints. */
15169
15170 VEC(breakpoint_p) *
15171 all_tracepoints (void)
15172 {
15173 VEC(breakpoint_p) *tp_vec = 0;
15174 struct breakpoint *tp;
15175
15176 ALL_TRACEPOINTS (tp)
15177 {
15178 VEC_safe_push (breakpoint_p, tp_vec, tp);
15179 }
15180
15181 return tp_vec;
15182 }
15183
15184 \f
15185 /* This help string is used to consolidate all the help string for specifying
15186 locations used by several commands. */
15187
15188 #define LOCATION_HELP_STRING \
15189 "Linespecs are colon-separated lists of location parameters, such as\n\
15190 source filename, function name, label name, and line number.\n\
15191 Example: To specify the start of a label named \"the_top\" in the\n\
15192 function \"fact\" in the file \"factorial.c\", use\n\
15193 \"factorial.c:fact:the_top\".\n\
15194 \n\
15195 Address locations begin with \"*\" and specify an exact address in the\n\
15196 program. Example: To specify the fourth byte past the start function\n\
15197 \"main\", use \"*main + 4\".\n\
15198 \n\
15199 Explicit locations are similar to linespecs but use an option/argument\n\
15200 syntax to specify location parameters.\n\
15201 Example: To specify the start of the label named \"the_top\" in the\n\
15202 function \"fact\" in the file \"factorial.c\", use \"-source factorial.c\n\
15203 -function fact -label the_top\".\n\
15204 \n\
15205 By default, a specified function is matched against the program's\n\
15206 functions in all scopes. For C++, this means in all namespaces and\n\
15207 classes. For Ada, this means in all packages. E.g., in C++,\n\
15208 \"func()\" matches \"A::func()\", \"A::B::func()\", etc. The\n\
15209 \"-qualified\" flag overrides this behavior, making GDB interpret the\n\
15210 specified name as a complete fully-qualified name instead.\n"
15211
15212 /* This help string is used for the break, hbreak, tbreak and thbreak
15213 commands. It is defined as a macro to prevent duplication.
15214 COMMAND should be a string constant containing the name of the
15215 command. */
15216
15217 #define BREAK_ARGS_HELP(command) \
15218 command" [PROBE_MODIFIER] [LOCATION] [thread THREADNUM] [if CONDITION]\n\
15219 PROBE_MODIFIER shall be present if the command is to be placed in a\n\
15220 probe point. Accepted values are `-probe' (for a generic, automatically\n\
15221 guessed probe type), `-probe-stap' (for a SystemTap probe) or \n\
15222 `-probe-dtrace' (for a DTrace probe).\n\
15223 LOCATION may be a linespec, address, or explicit location as described\n\
15224 below.\n\
15225 \n\
15226 With no LOCATION, uses current execution address of the selected\n\
15227 stack frame. This is useful for breaking on return to a stack frame.\n\
15228 \n\
15229 THREADNUM is the number from \"info threads\".\n\
15230 CONDITION is a boolean expression.\n\
15231 \n" LOCATION_HELP_STRING "\n\
15232 Multiple breakpoints at one place are permitted, and useful if their\n\
15233 conditions are different.\n\
15234 \n\
15235 Do \"help breakpoints\" for info on other commands dealing with breakpoints."
15236
15237 /* List of subcommands for "catch". */
15238 static struct cmd_list_element *catch_cmdlist;
15239
15240 /* List of subcommands for "tcatch". */
15241 static struct cmd_list_element *tcatch_cmdlist;
15242
15243 void
15244 add_catch_command (const char *name, const char *docstring,
15245 cmd_const_sfunc_ftype *sfunc,
15246 completer_ftype *completer,
15247 void *user_data_catch,
15248 void *user_data_tcatch)
15249 {
15250 struct cmd_list_element *command;
15251
15252 command = add_cmd (name, class_breakpoint, docstring,
15253 &catch_cmdlist);
15254 set_cmd_sfunc (command, sfunc);
15255 set_cmd_context (command, user_data_catch);
15256 set_cmd_completer (command, completer);
15257
15258 command = add_cmd (name, class_breakpoint, docstring,
15259 &tcatch_cmdlist);
15260 set_cmd_sfunc (command, sfunc);
15261 set_cmd_context (command, user_data_tcatch);
15262 set_cmd_completer (command, completer);
15263 }
15264
15265 static void
15266 save_command (const char *arg, int from_tty)
15267 {
15268 printf_unfiltered (_("\"save\" must be followed by "
15269 "the name of a save subcommand.\n"));
15270 help_list (save_cmdlist, "save ", all_commands, gdb_stdout);
15271 }
15272
15273 struct breakpoint *
15274 iterate_over_breakpoints (int (*callback) (struct breakpoint *, void *),
15275 void *data)
15276 {
15277 struct breakpoint *b, *b_tmp;
15278
15279 ALL_BREAKPOINTS_SAFE (b, b_tmp)
15280 {
15281 if ((*callback) (b, data))
15282 return b;
15283 }
15284
15285 return NULL;
15286 }
15287
15288 /* Zero if any of the breakpoint's locations could be a location where
15289 functions have been inlined, nonzero otherwise. */
15290
15291 static int
15292 is_non_inline_function (struct breakpoint *b)
15293 {
15294 /* The shared library event breakpoint is set on the address of a
15295 non-inline function. */
15296 if (b->type == bp_shlib_event)
15297 return 1;
15298
15299 return 0;
15300 }
15301
15302 /* Nonzero if the specified PC cannot be a location where functions
15303 have been inlined. */
15304
15305 int
15306 pc_at_non_inline_function (const address_space *aspace, CORE_ADDR pc,
15307 const struct target_waitstatus *ws)
15308 {
15309 struct breakpoint *b;
15310 struct bp_location *bl;
15311
15312 ALL_BREAKPOINTS (b)
15313 {
15314 if (!is_non_inline_function (b))
15315 continue;
15316
15317 for (bl = b->loc; bl != NULL; bl = bl->next)
15318 {
15319 if (!bl->shlib_disabled
15320 && bpstat_check_location (bl, aspace, pc, ws))
15321 return 1;
15322 }
15323 }
15324
15325 return 0;
15326 }
15327
15328 /* Remove any references to OBJFILE which is going to be freed. */
15329
15330 void
15331 breakpoint_free_objfile (struct objfile *objfile)
15332 {
15333 struct bp_location **locp, *loc;
15334
15335 ALL_BP_LOCATIONS (loc, locp)
15336 if (loc->symtab != NULL && SYMTAB_OBJFILE (loc->symtab) == objfile)
15337 loc->symtab = NULL;
15338 }
15339
15340 void
15341 initialize_breakpoint_ops (void)
15342 {
15343 static int initialized = 0;
15344
15345 struct breakpoint_ops *ops;
15346
15347 if (initialized)
15348 return;
15349 initialized = 1;
15350
15351 /* The breakpoint_ops structure to be inherit by all kinds of
15352 breakpoints (real breakpoints, i.e., user "break" breakpoints,
15353 internal and momentary breakpoints, etc.). */
15354 ops = &bkpt_base_breakpoint_ops;
15355 *ops = base_breakpoint_ops;
15356 ops->re_set = bkpt_re_set;
15357 ops->insert_location = bkpt_insert_location;
15358 ops->remove_location = bkpt_remove_location;
15359 ops->breakpoint_hit = bkpt_breakpoint_hit;
15360 ops->create_sals_from_location = bkpt_create_sals_from_location;
15361 ops->create_breakpoints_sal = bkpt_create_breakpoints_sal;
15362 ops->decode_location = bkpt_decode_location;
15363
15364 /* The breakpoint_ops structure to be used in regular breakpoints. */
15365 ops = &bkpt_breakpoint_ops;
15366 *ops = bkpt_base_breakpoint_ops;
15367 ops->re_set = bkpt_re_set;
15368 ops->resources_needed = bkpt_resources_needed;
15369 ops->print_it = bkpt_print_it;
15370 ops->print_mention = bkpt_print_mention;
15371 ops->print_recreate = bkpt_print_recreate;
15372
15373 /* Ranged breakpoints. */
15374 ops = &ranged_breakpoint_ops;
15375 *ops = bkpt_breakpoint_ops;
15376 ops->breakpoint_hit = breakpoint_hit_ranged_breakpoint;
15377 ops->resources_needed = resources_needed_ranged_breakpoint;
15378 ops->print_it = print_it_ranged_breakpoint;
15379 ops->print_one = print_one_ranged_breakpoint;
15380 ops->print_one_detail = print_one_detail_ranged_breakpoint;
15381 ops->print_mention = print_mention_ranged_breakpoint;
15382 ops->print_recreate = print_recreate_ranged_breakpoint;
15383
15384 /* Internal breakpoints. */
15385 ops = &internal_breakpoint_ops;
15386 *ops = bkpt_base_breakpoint_ops;
15387 ops->re_set = internal_bkpt_re_set;
15388 ops->check_status = internal_bkpt_check_status;
15389 ops->print_it = internal_bkpt_print_it;
15390 ops->print_mention = internal_bkpt_print_mention;
15391
15392 /* Momentary breakpoints. */
15393 ops = &momentary_breakpoint_ops;
15394 *ops = bkpt_base_breakpoint_ops;
15395 ops->re_set = momentary_bkpt_re_set;
15396 ops->check_status = momentary_bkpt_check_status;
15397 ops->print_it = momentary_bkpt_print_it;
15398 ops->print_mention = momentary_bkpt_print_mention;
15399
15400 /* Probe breakpoints. */
15401 ops = &bkpt_probe_breakpoint_ops;
15402 *ops = bkpt_breakpoint_ops;
15403 ops->insert_location = bkpt_probe_insert_location;
15404 ops->remove_location = bkpt_probe_remove_location;
15405 ops->create_sals_from_location = bkpt_probe_create_sals_from_location;
15406 ops->decode_location = bkpt_probe_decode_location;
15407
15408 /* Watchpoints. */
15409 ops = &watchpoint_breakpoint_ops;
15410 *ops = base_breakpoint_ops;
15411 ops->re_set = re_set_watchpoint;
15412 ops->insert_location = insert_watchpoint;
15413 ops->remove_location = remove_watchpoint;
15414 ops->breakpoint_hit = breakpoint_hit_watchpoint;
15415 ops->check_status = check_status_watchpoint;
15416 ops->resources_needed = resources_needed_watchpoint;
15417 ops->works_in_software_mode = works_in_software_mode_watchpoint;
15418 ops->print_it = print_it_watchpoint;
15419 ops->print_mention = print_mention_watchpoint;
15420 ops->print_recreate = print_recreate_watchpoint;
15421 ops->explains_signal = explains_signal_watchpoint;
15422
15423 /* Masked watchpoints. */
15424 ops = &masked_watchpoint_breakpoint_ops;
15425 *ops = watchpoint_breakpoint_ops;
15426 ops->insert_location = insert_masked_watchpoint;
15427 ops->remove_location = remove_masked_watchpoint;
15428 ops->resources_needed = resources_needed_masked_watchpoint;
15429 ops->works_in_software_mode = works_in_software_mode_masked_watchpoint;
15430 ops->print_it = print_it_masked_watchpoint;
15431 ops->print_one_detail = print_one_detail_masked_watchpoint;
15432 ops->print_mention = print_mention_masked_watchpoint;
15433 ops->print_recreate = print_recreate_masked_watchpoint;
15434
15435 /* Tracepoints. */
15436 ops = &tracepoint_breakpoint_ops;
15437 *ops = base_breakpoint_ops;
15438 ops->re_set = tracepoint_re_set;
15439 ops->breakpoint_hit = tracepoint_breakpoint_hit;
15440 ops->print_one_detail = tracepoint_print_one_detail;
15441 ops->print_mention = tracepoint_print_mention;
15442 ops->print_recreate = tracepoint_print_recreate;
15443 ops->create_sals_from_location = tracepoint_create_sals_from_location;
15444 ops->create_breakpoints_sal = tracepoint_create_breakpoints_sal;
15445 ops->decode_location = tracepoint_decode_location;
15446
15447 /* Probe tracepoints. */
15448 ops = &tracepoint_probe_breakpoint_ops;
15449 *ops = tracepoint_breakpoint_ops;
15450 ops->create_sals_from_location = tracepoint_probe_create_sals_from_location;
15451 ops->decode_location = tracepoint_probe_decode_location;
15452
15453 /* Static tracepoints with marker (`-m'). */
15454 ops = &strace_marker_breakpoint_ops;
15455 *ops = tracepoint_breakpoint_ops;
15456 ops->create_sals_from_location = strace_marker_create_sals_from_location;
15457 ops->create_breakpoints_sal = strace_marker_create_breakpoints_sal;
15458 ops->decode_location = strace_marker_decode_location;
15459
15460 /* Fork catchpoints. */
15461 ops = &catch_fork_breakpoint_ops;
15462 *ops = base_breakpoint_ops;
15463 ops->insert_location = insert_catch_fork;
15464 ops->remove_location = remove_catch_fork;
15465 ops->breakpoint_hit = breakpoint_hit_catch_fork;
15466 ops->print_it = print_it_catch_fork;
15467 ops->print_one = print_one_catch_fork;
15468 ops->print_mention = print_mention_catch_fork;
15469 ops->print_recreate = print_recreate_catch_fork;
15470
15471 /* Vfork catchpoints. */
15472 ops = &catch_vfork_breakpoint_ops;
15473 *ops = base_breakpoint_ops;
15474 ops->insert_location = insert_catch_vfork;
15475 ops->remove_location = remove_catch_vfork;
15476 ops->breakpoint_hit = breakpoint_hit_catch_vfork;
15477 ops->print_it = print_it_catch_vfork;
15478 ops->print_one = print_one_catch_vfork;
15479 ops->print_mention = print_mention_catch_vfork;
15480 ops->print_recreate = print_recreate_catch_vfork;
15481
15482 /* Exec catchpoints. */
15483 ops = &catch_exec_breakpoint_ops;
15484 *ops = base_breakpoint_ops;
15485 ops->insert_location = insert_catch_exec;
15486 ops->remove_location = remove_catch_exec;
15487 ops->breakpoint_hit = breakpoint_hit_catch_exec;
15488 ops->print_it = print_it_catch_exec;
15489 ops->print_one = print_one_catch_exec;
15490 ops->print_mention = print_mention_catch_exec;
15491 ops->print_recreate = print_recreate_catch_exec;
15492
15493 /* Solib-related catchpoints. */
15494 ops = &catch_solib_breakpoint_ops;
15495 *ops = base_breakpoint_ops;
15496 ops->insert_location = insert_catch_solib;
15497 ops->remove_location = remove_catch_solib;
15498 ops->breakpoint_hit = breakpoint_hit_catch_solib;
15499 ops->check_status = check_status_catch_solib;
15500 ops->print_it = print_it_catch_solib;
15501 ops->print_one = print_one_catch_solib;
15502 ops->print_mention = print_mention_catch_solib;
15503 ops->print_recreate = print_recreate_catch_solib;
15504
15505 ops = &dprintf_breakpoint_ops;
15506 *ops = bkpt_base_breakpoint_ops;
15507 ops->re_set = dprintf_re_set;
15508 ops->resources_needed = bkpt_resources_needed;
15509 ops->print_it = bkpt_print_it;
15510 ops->print_mention = bkpt_print_mention;
15511 ops->print_recreate = dprintf_print_recreate;
15512 ops->after_condition_true = dprintf_after_condition_true;
15513 ops->breakpoint_hit = dprintf_breakpoint_hit;
15514 }
15515
15516 /* Chain containing all defined "enable breakpoint" subcommands. */
15517
15518 static struct cmd_list_element *enablebreaklist = NULL;
15519
15520 void
15521 _initialize_breakpoint (void)
15522 {
15523 struct cmd_list_element *c;
15524
15525 initialize_breakpoint_ops ();
15526
15527 gdb::observers::solib_unloaded.attach (disable_breakpoints_in_unloaded_shlib);
15528 gdb::observers::free_objfile.attach (disable_breakpoints_in_freed_objfile);
15529 gdb::observers::memory_changed.attach (invalidate_bp_value_on_memory_change);
15530
15531 breakpoint_objfile_key
15532 = register_objfile_data_with_cleanup (NULL, free_breakpoint_objfile_data);
15533
15534 breakpoint_chain = 0;
15535 /* Don't bother to call set_breakpoint_count. $bpnum isn't useful
15536 before a breakpoint is set. */
15537 breakpoint_count = 0;
15538
15539 tracepoint_count = 0;
15540
15541 add_com ("ignore", class_breakpoint, ignore_command, _("\
15542 Set ignore-count of breakpoint number N to COUNT.\n\
15543 Usage is `ignore N COUNT'."));
15544
15545 add_com ("commands", class_breakpoint, commands_command, _("\
15546 Set commands to be executed when the given breakpoints are hit.\n\
15547 Give a space-separated breakpoint list as argument after \"commands\".\n\
15548 A list element can be a breakpoint number (e.g. `5') or a range of numbers\n\
15549 (e.g. `5-7').\n\
15550 With no argument, the targeted breakpoint is the last one set.\n\
15551 The commands themselves follow starting on the next line.\n\
15552 Type a line containing \"end\" to indicate the end of them.\n\
15553 Give \"silent\" as the first line to make the breakpoint silent;\n\
15554 then no output is printed when it is hit, except what the commands print."));
15555
15556 c = add_com ("condition", class_breakpoint, condition_command, _("\
15557 Specify breakpoint number N to break only if COND is true.\n\
15558 Usage is `condition N COND', where N is an integer and COND is an\n\
15559 expression to be evaluated whenever breakpoint N is reached."));
15560 set_cmd_completer (c, condition_completer);
15561
15562 c = add_com ("tbreak", class_breakpoint, tbreak_command, _("\
15563 Set a temporary breakpoint.\n\
15564 Like \"break\" except the breakpoint is only temporary,\n\
15565 so it will be deleted when hit. Equivalent to \"break\" followed\n\
15566 by using \"enable delete\" on the breakpoint number.\n\
15567 \n"
15568 BREAK_ARGS_HELP ("tbreak")));
15569 set_cmd_completer (c, location_completer);
15570
15571 c = add_com ("hbreak", class_breakpoint, hbreak_command, _("\
15572 Set a hardware assisted breakpoint.\n\
15573 Like \"break\" except the breakpoint requires hardware support,\n\
15574 some target hardware may not have this support.\n\
15575 \n"
15576 BREAK_ARGS_HELP ("hbreak")));
15577 set_cmd_completer (c, location_completer);
15578
15579 c = add_com ("thbreak", class_breakpoint, thbreak_command, _("\
15580 Set a temporary hardware assisted breakpoint.\n\
15581 Like \"hbreak\" except the breakpoint is only temporary,\n\
15582 so it will be deleted when hit.\n\
15583 \n"
15584 BREAK_ARGS_HELP ("thbreak")));
15585 set_cmd_completer (c, location_completer);
15586
15587 add_prefix_cmd ("enable", class_breakpoint, enable_command, _("\
15588 Enable some breakpoints.\n\
15589 Give breakpoint numbers (separated by spaces) as arguments.\n\
15590 With no subcommand, breakpoints are enabled until you command otherwise.\n\
15591 This is used to cancel the effect of the \"disable\" command.\n\
15592 With a subcommand you can enable temporarily."),
15593 &enablelist, "enable ", 1, &cmdlist);
15594
15595 add_com_alias ("en", "enable", class_breakpoint, 1);
15596
15597 add_prefix_cmd ("breakpoints", class_breakpoint, enable_command, _("\
15598 Enable some breakpoints.\n\
15599 Give breakpoint numbers (separated by spaces) as arguments.\n\
15600 This is used to cancel the effect of the \"disable\" command.\n\
15601 May be abbreviated to simply \"enable\".\n"),
15602 &enablebreaklist, "enable breakpoints ", 1, &enablelist);
15603
15604 add_cmd ("once", no_class, enable_once_command, _("\
15605 Enable breakpoints for one hit. Give breakpoint numbers.\n\
15606 If a breakpoint is hit while enabled in this fashion, it becomes disabled."),
15607 &enablebreaklist);
15608
15609 add_cmd ("delete", no_class, enable_delete_command, _("\
15610 Enable breakpoints and delete when hit. Give breakpoint numbers.\n\
15611 If a breakpoint is hit while enabled in this fashion, it is deleted."),
15612 &enablebreaklist);
15613
15614 add_cmd ("count", no_class, enable_count_command, _("\
15615 Enable breakpoints for COUNT hits. Give count and then breakpoint numbers.\n\
15616 If a breakpoint is hit while enabled in this fashion,\n\
15617 the count is decremented; when it reaches zero, the breakpoint is disabled."),
15618 &enablebreaklist);
15619
15620 add_cmd ("delete", no_class, enable_delete_command, _("\
15621 Enable breakpoints and delete when hit. Give breakpoint numbers.\n\
15622 If a breakpoint is hit while enabled in this fashion, it is deleted."),
15623 &enablelist);
15624
15625 add_cmd ("once", no_class, enable_once_command, _("\
15626 Enable breakpoints for one hit. Give breakpoint numbers.\n\
15627 If a breakpoint is hit while enabled in this fashion, it becomes disabled."),
15628 &enablelist);
15629
15630 add_cmd ("count", no_class, enable_count_command, _("\
15631 Enable breakpoints for COUNT hits. Give count and then breakpoint numbers.\n\
15632 If a breakpoint is hit while enabled in this fashion,\n\
15633 the count is decremented; when it reaches zero, the breakpoint is disabled."),
15634 &enablelist);
15635
15636 add_prefix_cmd ("disable", class_breakpoint, disable_command, _("\
15637 Disable some breakpoints.\n\
15638 Arguments are breakpoint numbers with spaces in between.\n\
15639 To disable all breakpoints, give no argument.\n\
15640 A disabled breakpoint is not forgotten, but has no effect until re-enabled."),
15641 &disablelist, "disable ", 1, &cmdlist);
15642 add_com_alias ("dis", "disable", class_breakpoint, 1);
15643 add_com_alias ("disa", "disable", class_breakpoint, 1);
15644
15645 add_cmd ("breakpoints", class_alias, disable_command, _("\
15646 Disable some breakpoints.\n\
15647 Arguments are breakpoint numbers with spaces in between.\n\
15648 To disable all breakpoints, give no argument.\n\
15649 A disabled breakpoint is not forgotten, but has no effect until re-enabled.\n\
15650 This command may be abbreviated \"disable\"."),
15651 &disablelist);
15652
15653 add_prefix_cmd ("delete", class_breakpoint, delete_command, _("\
15654 Delete some breakpoints or auto-display expressions.\n\
15655 Arguments are breakpoint numbers with spaces in between.\n\
15656 To delete all breakpoints, give no argument.\n\
15657 \n\
15658 Also a prefix command for deletion of other GDB objects.\n\
15659 The \"unset\" command is also an alias for \"delete\"."),
15660 &deletelist, "delete ", 1, &cmdlist);
15661 add_com_alias ("d", "delete", class_breakpoint, 1);
15662 add_com_alias ("del", "delete", class_breakpoint, 1);
15663
15664 add_cmd ("breakpoints", class_alias, delete_command, _("\
15665 Delete some breakpoints or auto-display expressions.\n\
15666 Arguments are breakpoint numbers with spaces in between.\n\
15667 To delete all breakpoints, give no argument.\n\
15668 This command may be abbreviated \"delete\"."),
15669 &deletelist);
15670
15671 add_com ("clear", class_breakpoint, clear_command, _("\
15672 Clear breakpoint at specified location.\n\
15673 Argument may be a linespec, explicit, or address location as described below.\n\
15674 \n\
15675 With no argument, clears all breakpoints in the line that the selected frame\n\
15676 is executing in.\n"
15677 "\n" LOCATION_HELP_STRING "\n\
15678 See also the \"delete\" command which clears breakpoints by number."));
15679 add_com_alias ("cl", "clear", class_breakpoint, 1);
15680
15681 c = add_com ("break", class_breakpoint, break_command, _("\
15682 Set breakpoint at specified location.\n"
15683 BREAK_ARGS_HELP ("break")));
15684 set_cmd_completer (c, location_completer);
15685
15686 add_com_alias ("b", "break", class_run, 1);
15687 add_com_alias ("br", "break", class_run, 1);
15688 add_com_alias ("bre", "break", class_run, 1);
15689 add_com_alias ("brea", "break", class_run, 1);
15690
15691 if (dbx_commands)
15692 {
15693 add_abbrev_prefix_cmd ("stop", class_breakpoint, stop_command, _("\
15694 Break in function/address or break at a line in the current file."),
15695 &stoplist, "stop ", 1, &cmdlist);
15696 add_cmd ("in", class_breakpoint, stopin_command,
15697 _("Break in function or address."), &stoplist);
15698 add_cmd ("at", class_breakpoint, stopat_command,
15699 _("Break at a line in the current file."), &stoplist);
15700 add_com ("status", class_info, info_breakpoints_command, _("\
15701 Status of user-settable breakpoints, or breakpoint number NUMBER.\n\
15702 The \"Type\" column indicates one of:\n\
15703 \tbreakpoint - normal breakpoint\n\
15704 \twatchpoint - watchpoint\n\
15705 The \"Disp\" column contains one of \"keep\", \"del\", or \"dis\" to indicate\n\
15706 the disposition of the breakpoint after it gets hit. \"dis\" means that the\n\
15707 breakpoint will be disabled. The \"Address\" and \"What\" columns indicate the\n\
15708 address and file/line number respectively.\n\
15709 \n\
15710 Convenience variable \"$_\" and default examine address for \"x\"\n\
15711 are set to the address of the last breakpoint listed unless the command\n\
15712 is prefixed with \"server \".\n\n\
15713 Convenience variable \"$bpnum\" contains the number of the last\n\
15714 breakpoint set."));
15715 }
15716
15717 add_info ("breakpoints", info_breakpoints_command, _("\
15718 Status of specified breakpoints (all user-settable breakpoints if no argument).\n\
15719 The \"Type\" column indicates one of:\n\
15720 \tbreakpoint - normal breakpoint\n\
15721 \twatchpoint - watchpoint\n\
15722 The \"Disp\" column contains one of \"keep\", \"del\", or \"dis\" to indicate\n\
15723 the disposition of the breakpoint after it gets hit. \"dis\" means that the\n\
15724 breakpoint will be disabled. The \"Address\" and \"What\" columns indicate the\n\
15725 address and file/line number respectively.\n\
15726 \n\
15727 Convenience variable \"$_\" and default examine address for \"x\"\n\
15728 are set to the address of the last breakpoint listed unless the command\n\
15729 is prefixed with \"server \".\n\n\
15730 Convenience variable \"$bpnum\" contains the number of the last\n\
15731 breakpoint set."));
15732
15733 add_info_alias ("b", "breakpoints", 1);
15734
15735 add_cmd ("breakpoints", class_maintenance, maintenance_info_breakpoints, _("\
15736 Status of all breakpoints, or breakpoint number NUMBER.\n\
15737 The \"Type\" column indicates one of:\n\
15738 \tbreakpoint - normal breakpoint\n\
15739 \twatchpoint - watchpoint\n\
15740 \tlongjmp - internal breakpoint used to step through longjmp()\n\
15741 \tlongjmp resume - internal breakpoint at the target of longjmp()\n\
15742 \tuntil - internal breakpoint used by the \"until\" command\n\
15743 \tfinish - internal breakpoint used by the \"finish\" command\n\
15744 The \"Disp\" column contains one of \"keep\", \"del\", or \"dis\" to indicate\n\
15745 the disposition of the breakpoint after it gets hit. \"dis\" means that the\n\
15746 breakpoint will be disabled. The \"Address\" and \"What\" columns indicate the\n\
15747 address and file/line number respectively.\n\
15748 \n\
15749 Convenience variable \"$_\" and default examine address for \"x\"\n\
15750 are set to the address of the last breakpoint listed unless the command\n\
15751 is prefixed with \"server \".\n\n\
15752 Convenience variable \"$bpnum\" contains the number of the last\n\
15753 breakpoint set."),
15754 &maintenanceinfolist);
15755
15756 add_prefix_cmd ("catch", class_breakpoint, catch_command, _("\
15757 Set catchpoints to catch events."),
15758 &catch_cmdlist, "catch ",
15759 0/*allow-unknown*/, &cmdlist);
15760
15761 add_prefix_cmd ("tcatch", class_breakpoint, tcatch_command, _("\
15762 Set temporary catchpoints to catch events."),
15763 &tcatch_cmdlist, "tcatch ",
15764 0/*allow-unknown*/, &cmdlist);
15765
15766 add_catch_command ("fork", _("Catch calls to fork."),
15767 catch_fork_command_1,
15768 NULL,
15769 (void *) (uintptr_t) catch_fork_permanent,
15770 (void *) (uintptr_t) catch_fork_temporary);
15771 add_catch_command ("vfork", _("Catch calls to vfork."),
15772 catch_fork_command_1,
15773 NULL,
15774 (void *) (uintptr_t) catch_vfork_permanent,
15775 (void *) (uintptr_t) catch_vfork_temporary);
15776 add_catch_command ("exec", _("Catch calls to exec."),
15777 catch_exec_command_1,
15778 NULL,
15779 CATCH_PERMANENT,
15780 CATCH_TEMPORARY);
15781 add_catch_command ("load", _("Catch loads of shared libraries.\n\
15782 Usage: catch load [REGEX]\n\
15783 If REGEX is given, only stop for libraries matching the regular expression."),
15784 catch_load_command_1,
15785 NULL,
15786 CATCH_PERMANENT,
15787 CATCH_TEMPORARY);
15788 add_catch_command ("unload", _("Catch unloads of shared libraries.\n\
15789 Usage: catch unload [REGEX]\n\
15790 If REGEX is given, only stop for libraries matching the regular expression."),
15791 catch_unload_command_1,
15792 NULL,
15793 CATCH_PERMANENT,
15794 CATCH_TEMPORARY);
15795
15796 c = add_com ("watch", class_breakpoint, watch_command, _("\
15797 Set a watchpoint for an expression.\n\
15798 Usage: watch [-l|-location] EXPRESSION\n\
15799 A watchpoint stops execution of your program whenever the value of\n\
15800 an expression changes.\n\
15801 If -l or -location is given, this evaluates EXPRESSION and watches\n\
15802 the memory to which it refers."));
15803 set_cmd_completer (c, expression_completer);
15804
15805 c = add_com ("rwatch", class_breakpoint, rwatch_command, _("\
15806 Set a read watchpoint for an expression.\n\
15807 Usage: rwatch [-l|-location] EXPRESSION\n\
15808 A watchpoint stops execution of your program whenever the value of\n\
15809 an expression is read.\n\
15810 If -l or -location is given, this evaluates EXPRESSION and watches\n\
15811 the memory to which it refers."));
15812 set_cmd_completer (c, expression_completer);
15813
15814 c = add_com ("awatch", class_breakpoint, awatch_command, _("\
15815 Set a watchpoint for an expression.\n\
15816 Usage: awatch [-l|-location] EXPRESSION\n\
15817 A watchpoint stops execution of your program whenever the value of\n\
15818 an expression is either read or written.\n\
15819 If -l or -location is given, this evaluates EXPRESSION and watches\n\
15820 the memory to which it refers."));
15821 set_cmd_completer (c, expression_completer);
15822
15823 add_info ("watchpoints", info_watchpoints_command, _("\
15824 Status of specified watchpoints (all watchpoints if no argument)."));
15825
15826 /* XXX: cagney/2005-02-23: This should be a boolean, and should
15827 respond to changes - contrary to the description. */
15828 add_setshow_zinteger_cmd ("can-use-hw-watchpoints", class_support,
15829 &can_use_hw_watchpoints, _("\
15830 Set debugger's willingness to use watchpoint hardware."), _("\
15831 Show debugger's willingness to use watchpoint hardware."), _("\
15832 If zero, gdb will not use hardware for new watchpoints, even if\n\
15833 such is available. (However, any hardware watchpoints that were\n\
15834 created before setting this to nonzero, will continue to use watchpoint\n\
15835 hardware.)"),
15836 NULL,
15837 show_can_use_hw_watchpoints,
15838 &setlist, &showlist);
15839
15840 can_use_hw_watchpoints = 1;
15841
15842 /* Tracepoint manipulation commands. */
15843
15844 c = add_com ("trace", class_breakpoint, trace_command, _("\
15845 Set a tracepoint at specified location.\n\
15846 \n"
15847 BREAK_ARGS_HELP ("trace") "\n\
15848 Do \"help tracepoints\" for info on other tracepoint commands."));
15849 set_cmd_completer (c, location_completer);
15850
15851 add_com_alias ("tp", "trace", class_alias, 0);
15852 add_com_alias ("tr", "trace", class_alias, 1);
15853 add_com_alias ("tra", "trace", class_alias, 1);
15854 add_com_alias ("trac", "trace", class_alias, 1);
15855
15856 c = add_com ("ftrace", class_breakpoint, ftrace_command, _("\
15857 Set a fast tracepoint at specified location.\n\
15858 \n"
15859 BREAK_ARGS_HELP ("ftrace") "\n\
15860 Do \"help tracepoints\" for info on other tracepoint commands."));
15861 set_cmd_completer (c, location_completer);
15862
15863 c = add_com ("strace", class_breakpoint, strace_command, _("\
15864 Set a static tracepoint at location or marker.\n\
15865 \n\
15866 strace [LOCATION] [if CONDITION]\n\
15867 LOCATION may be a linespec, explicit, or address location (described below) \n\
15868 or -m MARKER_ID.\n\n\
15869 If a marker id is specified, probe the marker with that name. With\n\
15870 no LOCATION, uses current execution address of the selected stack frame.\n\
15871 Static tracepoints accept an extra collect action -- ``collect $_sdata''.\n\
15872 This collects arbitrary user data passed in the probe point call to the\n\
15873 tracing library. You can inspect it when analyzing the trace buffer,\n\
15874 by printing the $_sdata variable like any other convenience variable.\n\
15875 \n\
15876 CONDITION is a boolean expression.\n\
15877 \n" LOCATION_HELP_STRING "\n\
15878 Multiple tracepoints at one place are permitted, and useful if their\n\
15879 conditions are different.\n\
15880 \n\
15881 Do \"help breakpoints\" for info on other commands dealing with breakpoints.\n\
15882 Do \"help tracepoints\" for info on other tracepoint commands."));
15883 set_cmd_completer (c, location_completer);
15884
15885 add_info ("tracepoints", info_tracepoints_command, _("\
15886 Status of specified tracepoints (all tracepoints if no argument).\n\
15887 Convenience variable \"$tpnum\" contains the number of the\n\
15888 last tracepoint set."));
15889
15890 add_info_alias ("tp", "tracepoints", 1);
15891
15892 add_cmd ("tracepoints", class_trace, delete_trace_command, _("\
15893 Delete specified tracepoints.\n\
15894 Arguments are tracepoint numbers, separated by spaces.\n\
15895 No argument means delete all tracepoints."),
15896 &deletelist);
15897 add_alias_cmd ("tr", "tracepoints", class_trace, 1, &deletelist);
15898
15899 c = add_cmd ("tracepoints", class_trace, disable_trace_command, _("\
15900 Disable specified tracepoints.\n\
15901 Arguments are tracepoint numbers, separated by spaces.\n\
15902 No argument means disable all tracepoints."),
15903 &disablelist);
15904 deprecate_cmd (c, "disable");
15905
15906 c = add_cmd ("tracepoints", class_trace, enable_trace_command, _("\
15907 Enable specified tracepoints.\n\
15908 Arguments are tracepoint numbers, separated by spaces.\n\
15909 No argument means enable all tracepoints."),
15910 &enablelist);
15911 deprecate_cmd (c, "enable");
15912
15913 add_com ("passcount", class_trace, trace_pass_command, _("\
15914 Set the passcount for a tracepoint.\n\
15915 The trace will end when the tracepoint has been passed 'count' times.\n\
15916 Usage: passcount COUNT TPNUM, where TPNUM may also be \"all\";\n\
15917 if TPNUM is omitted, passcount refers to the last tracepoint defined."));
15918
15919 add_prefix_cmd ("save", class_breakpoint, save_command,
15920 _("Save breakpoint definitions as a script."),
15921 &save_cmdlist, "save ",
15922 0/*allow-unknown*/, &cmdlist);
15923
15924 c = add_cmd ("breakpoints", class_breakpoint, save_breakpoints_command, _("\
15925 Save current breakpoint definitions as a script.\n\
15926 This includes all types of breakpoints (breakpoints, watchpoints,\n\
15927 catchpoints, tracepoints). Use the 'source' command in another debug\n\
15928 session to restore them."),
15929 &save_cmdlist);
15930 set_cmd_completer (c, filename_completer);
15931
15932 c = add_cmd ("tracepoints", class_trace, save_tracepoints_command, _("\
15933 Save current tracepoint definitions as a script.\n\
15934 Use the 'source' command in another debug session to restore them."),
15935 &save_cmdlist);
15936 set_cmd_completer (c, filename_completer);
15937
15938 c = add_com_alias ("save-tracepoints", "save tracepoints", class_trace, 0);
15939 deprecate_cmd (c, "save tracepoints");
15940
15941 add_prefix_cmd ("breakpoint", class_maintenance, set_breakpoint_cmd, _("\
15942 Breakpoint specific settings\n\
15943 Configure various breakpoint-specific variables such as\n\
15944 pending breakpoint behavior"),
15945 &breakpoint_set_cmdlist, "set breakpoint ",
15946 0/*allow-unknown*/, &setlist);
15947 add_prefix_cmd ("breakpoint", class_maintenance, show_breakpoint_cmd, _("\
15948 Breakpoint specific settings\n\
15949 Configure various breakpoint-specific variables such as\n\
15950 pending breakpoint behavior"),
15951 &breakpoint_show_cmdlist, "show breakpoint ",
15952 0/*allow-unknown*/, &showlist);
15953
15954 add_setshow_auto_boolean_cmd ("pending", no_class,
15955 &pending_break_support, _("\
15956 Set debugger's behavior regarding pending breakpoints."), _("\
15957 Show debugger's behavior regarding pending breakpoints."), _("\
15958 If on, an unrecognized breakpoint location will cause gdb to create a\n\
15959 pending breakpoint. If off, an unrecognized breakpoint location results in\n\
15960 an error. If auto, an unrecognized breakpoint location results in a\n\
15961 user-query to see if a pending breakpoint should be created."),
15962 NULL,
15963 show_pending_break_support,
15964 &breakpoint_set_cmdlist,
15965 &breakpoint_show_cmdlist);
15966
15967 pending_break_support = AUTO_BOOLEAN_AUTO;
15968
15969 add_setshow_boolean_cmd ("auto-hw", no_class,
15970 &automatic_hardware_breakpoints, _("\
15971 Set automatic usage of hardware breakpoints."), _("\
15972 Show automatic usage of hardware breakpoints."), _("\
15973 If set, the debugger will automatically use hardware breakpoints for\n\
15974 breakpoints set with \"break\" but falling in read-only memory. If not set,\n\
15975 a warning will be emitted for such breakpoints."),
15976 NULL,
15977 show_automatic_hardware_breakpoints,
15978 &breakpoint_set_cmdlist,
15979 &breakpoint_show_cmdlist);
15980
15981 add_setshow_boolean_cmd ("always-inserted", class_support,
15982 &always_inserted_mode, _("\
15983 Set mode for inserting breakpoints."), _("\
15984 Show mode for inserting breakpoints."), _("\
15985 When this mode is on, breakpoints are inserted immediately as soon as\n\
15986 they're created, kept inserted even when execution stops, and removed\n\
15987 only when the user deletes them. When this mode is off (the default),\n\
15988 breakpoints are inserted only when execution continues, and removed\n\
15989 when execution stops."),
15990 NULL,
15991 &show_always_inserted_mode,
15992 &breakpoint_set_cmdlist,
15993 &breakpoint_show_cmdlist);
15994
15995 add_setshow_enum_cmd ("condition-evaluation", class_breakpoint,
15996 condition_evaluation_enums,
15997 &condition_evaluation_mode_1, _("\
15998 Set mode of breakpoint condition evaluation."), _("\
15999 Show mode of breakpoint condition evaluation."), _("\
16000 When this is set to \"host\", breakpoint conditions will be\n\
16001 evaluated on the host's side by GDB. When it is set to \"target\",\n\
16002 breakpoint conditions will be downloaded to the target (if the target\n\
16003 supports such feature) and conditions will be evaluated on the target's side.\n\
16004 If this is set to \"auto\" (default), this will be automatically set to\n\
16005 \"target\" if it supports condition evaluation, otherwise it will\n\
16006 be set to \"gdb\""),
16007 &set_condition_evaluation_mode,
16008 &show_condition_evaluation_mode,
16009 &breakpoint_set_cmdlist,
16010 &breakpoint_show_cmdlist);
16011
16012 add_com ("break-range", class_breakpoint, break_range_command, _("\
16013 Set a breakpoint for an address range.\n\
16014 break-range START-LOCATION, END-LOCATION\n\
16015 where START-LOCATION and END-LOCATION can be one of the following:\n\
16016 LINENUM, for that line in the current file,\n\
16017 FILE:LINENUM, for that line in that file,\n\
16018 +OFFSET, for that number of lines after the current line\n\
16019 or the start of the range\n\
16020 FUNCTION, for the first line in that function,\n\
16021 FILE:FUNCTION, to distinguish among like-named static functions.\n\
16022 *ADDRESS, for the instruction at that address.\n\
16023 \n\
16024 The breakpoint will stop execution of the inferior whenever it executes\n\
16025 an instruction at any address within the [START-LOCATION, END-LOCATION]\n\
16026 range (including START-LOCATION and END-LOCATION)."));
16027
16028 c = add_com ("dprintf", class_breakpoint, dprintf_command, _("\
16029 Set a dynamic printf at specified location.\n\
16030 dprintf location,format string,arg1,arg2,...\n\
16031 location may be a linespec, explicit, or address location.\n"
16032 "\n" LOCATION_HELP_STRING));
16033 set_cmd_completer (c, location_completer);
16034
16035 add_setshow_enum_cmd ("dprintf-style", class_support,
16036 dprintf_style_enums, &dprintf_style, _("\
16037 Set the style of usage for dynamic printf."), _("\
16038 Show the style of usage for dynamic printf."), _("\
16039 This setting chooses how GDB will do a dynamic printf.\n\
16040 If the value is \"gdb\", then the printing is done by GDB to its own\n\
16041 console, as with the \"printf\" command.\n\
16042 If the value is \"call\", the print is done by calling a function in your\n\
16043 program; by default printf(), but you can choose a different function or\n\
16044 output stream by setting dprintf-function and dprintf-channel."),
16045 update_dprintf_commands, NULL,
16046 &setlist, &showlist);
16047
16048 dprintf_function = xstrdup ("printf");
16049 add_setshow_string_cmd ("dprintf-function", class_support,
16050 &dprintf_function, _("\
16051 Set the function to use for dynamic printf"), _("\
16052 Show the function to use for dynamic printf"), NULL,
16053 update_dprintf_commands, NULL,
16054 &setlist, &showlist);
16055
16056 dprintf_channel = xstrdup ("");
16057 add_setshow_string_cmd ("dprintf-channel", class_support,
16058 &dprintf_channel, _("\
16059 Set the channel to use for dynamic printf"), _("\
16060 Show the channel to use for dynamic printf"), NULL,
16061 update_dprintf_commands, NULL,
16062 &setlist, &showlist);
16063
16064 add_setshow_boolean_cmd ("disconnected-dprintf", no_class,
16065 &disconnected_dprintf, _("\
16066 Set whether dprintf continues after GDB disconnects."), _("\
16067 Show whether dprintf continues after GDB disconnects."), _("\
16068 Use this to let dprintf commands continue to hit and produce output\n\
16069 even if GDB disconnects or detaches from the target."),
16070 NULL,
16071 NULL,
16072 &setlist, &showlist);
16073
16074 add_com ("agent-printf", class_vars, agent_printf_command, _("\
16075 agent-printf \"printf format string\", arg1, arg2, arg3, ..., argn\n\
16076 (target agent only) This is useful for formatted output in user-defined commands."));
16077
16078 automatic_hardware_breakpoints = 1;
16079
16080 gdb::observers::about_to_proceed.attach (breakpoint_about_to_proceed);
16081 gdb::observers::thread_exit.attach (remove_threaded_breakpoints);
16082 }
This page took 0.603839 seconds and 4 git commands to generate.