gdb: add all_tracepoints function
[deliverable/binutils-gdb.git] / gdb / breakpoint.h
1 /* Data structures associated with breakpoints in GDB.
2 Copyright (C) 1992-2021 Free Software Foundation, Inc.
3
4 This file is part of GDB.
5
6 This program is free software; you can redistribute it and/or modify
7 it under the terms of the GNU General Public License as published by
8 the Free Software Foundation; either version 3 of the License, or
9 (at your option) any later version.
10
11 This program is distributed in the hope that it will be useful,
12 but WITHOUT ANY WARRANTY; without even the implied warranty of
13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 GNU General Public License for more details.
15
16 You should have received a copy of the GNU General Public License
17 along with this program. If not, see <http://www.gnu.org/licenses/>. */
18
19 #if !defined (BREAKPOINT_H)
20 #define BREAKPOINT_H 1
21
22 #include "frame.h"
23 #include "value.h"
24 #include "ax.h"
25 #include "command.h"
26 #include "gdbsupport/break-common.h"
27 #include "probe.h"
28 #include "location.h"
29 #include <vector>
30 #include "gdbsupport/array-view.h"
31 #include "gdbsupport/filtered-iterator.h"
32 #include "gdbsupport/function-view.h"
33 #include "gdbsupport/refcounted-object.h"
34 #include "cli/cli-script.h"
35
36 struct block;
37 struct gdbpy_breakpoint_object;
38 struct gdbscm_breakpoint_object;
39 struct number_or_range_parser;
40 struct thread_info;
41 struct bpstats;
42 struct bp_location;
43 struct linespec_result;
44 struct linespec_sals;
45 struct inferior;
46
47 /* Enum for exception-handling support in 'catch throw', 'catch rethrow',
48 'catch catch' and the MI equivalent. */
49
50 enum exception_event_kind
51 {
52 EX_EVENT_THROW,
53 EX_EVENT_RETHROW,
54 EX_EVENT_CATCH
55 };
56
57 /* Why are we removing the breakpoint from the target? */
58
59 enum remove_bp_reason
60 {
61 /* A regular remove. Remove the breakpoint and forget everything
62 about it. */
63 REMOVE_BREAKPOINT,
64
65 /* Detach the breakpoints from a fork child. */
66 DETACH_BREAKPOINT,
67 };
68
69 /* This is the maximum number of bytes a breakpoint instruction can
70 take. Feel free to increase it. It's just used in a few places to
71 size arrays that should be independent of the target
72 architecture. */
73
74 #define BREAKPOINT_MAX 16
75 \f
76
77 /* Type of breakpoint. */
78
79 enum bptype
80 {
81 bp_none = 0, /* Eventpoint has been deleted */
82 bp_breakpoint, /* Normal breakpoint */
83 bp_hardware_breakpoint, /* Hardware assisted breakpoint */
84 bp_single_step, /* Software single-step */
85 bp_until, /* used by until command */
86 bp_finish, /* used by finish command */
87 bp_watchpoint, /* Watchpoint */
88 bp_hardware_watchpoint, /* Hardware assisted watchpoint */
89 bp_read_watchpoint, /* read watchpoint, (hardware assisted) */
90 bp_access_watchpoint, /* access watchpoint, (hardware assisted) */
91 bp_longjmp, /* secret breakpoint to find longjmp() */
92 bp_longjmp_resume, /* secret breakpoint to escape longjmp() */
93
94 /* Breakpoint placed to the same location(s) like bp_longjmp but used to
95 protect against stale DUMMY_FRAME. Multiple bp_longjmp_call_dummy and
96 one bp_call_dummy are chained together by related_breakpoint for each
97 DUMMY_FRAME. */
98 bp_longjmp_call_dummy,
99
100 /* An internal breakpoint that is installed on the unwinder's
101 debug hook. */
102 bp_exception,
103 /* An internal breakpoint that is set at the point where an
104 exception will land. */
105 bp_exception_resume,
106
107 /* Used by wait_for_inferior for stepping over subroutine calls,
108 and for skipping prologues. */
109 bp_step_resume,
110
111 /* Used by wait_for_inferior for stepping over signal
112 handlers. */
113 bp_hp_step_resume,
114
115 /* Used to detect when a watchpoint expression has gone out of
116 scope. These breakpoints are usually not visible to the user.
117
118 This breakpoint has some interesting properties:
119
120 1) There's always a 1:1 mapping between watchpoints
121 on local variables and watchpoint_scope breakpoints.
122
123 2) It automatically deletes itself and the watchpoint it's
124 associated with when hit.
125
126 3) It can never be disabled. */
127 bp_watchpoint_scope,
128
129 /* The breakpoint at the end of a call dummy. See bp_longjmp_call_dummy it
130 is chained with by related_breakpoint. */
131 bp_call_dummy,
132
133 /* A breakpoint set on std::terminate, that is used to catch
134 otherwise uncaught exceptions thrown during an inferior call. */
135 bp_std_terminate,
136
137 /* Some dynamic linkers (HP, maybe Solaris) can arrange for special
138 code in the inferior to run when significant events occur in the
139 dynamic linker (for example a library is loaded or unloaded).
140
141 By placing a breakpoint in this magic code GDB will get control
142 when these significant events occur. GDB can then re-examine
143 the dynamic linker's data structures to discover any newly loaded
144 dynamic libraries. */
145 bp_shlib_event,
146
147 /* Some multi-threaded systems can arrange for a location in the
148 inferior to be executed when certain thread-related events occur
149 (such as thread creation or thread death).
150
151 By placing a breakpoint at one of these locations, GDB will get
152 control when these events occur. GDB can then update its thread
153 lists etc. */
154
155 bp_thread_event,
156
157 /* On the same principal, an overlay manager can arrange to call a
158 magic location in the inferior whenever there is an interesting
159 change in overlay status. GDB can update its overlay tables
160 and fiddle with breakpoints in overlays when this breakpoint
161 is hit. */
162
163 bp_overlay_event,
164
165 /* Master copies of longjmp breakpoints. These are always installed
166 as soon as an objfile containing longjmp is loaded, but they are
167 always disabled. While necessary, temporary clones of bp_longjmp
168 type will be created and enabled. */
169
170 bp_longjmp_master,
171
172 /* Master copies of std::terminate breakpoints. */
173 bp_std_terminate_master,
174
175 /* Like bp_longjmp_master, but for exceptions. */
176 bp_exception_master,
177
178 bp_catchpoint,
179
180 bp_tracepoint,
181 bp_fast_tracepoint,
182 bp_static_tracepoint,
183
184 /* A dynamic printf stops at the given location, does a formatted
185 print, then automatically continues. (Although this is sort of
186 like a macro packaging up standard breakpoint functionality,
187 GDB doesn't have a way to construct types of breakpoint from
188 elements of behavior.) */
189 bp_dprintf,
190
191 /* Event for JIT compiled code generation or deletion. */
192 bp_jit_event,
193
194 /* Breakpoint is placed at the STT_GNU_IFUNC resolver. When hit GDB
195 inserts new bp_gnu_ifunc_resolver_return at the caller.
196 bp_gnu_ifunc_resolver is still being kept here as a different thread
197 may still hit it before bp_gnu_ifunc_resolver_return is hit by the
198 original thread. */
199 bp_gnu_ifunc_resolver,
200
201 /* On its hit GDB now know the resolved address of the target
202 STT_GNU_IFUNC function. Associated bp_gnu_ifunc_resolver can be
203 deleted now and the breakpoint moved to the target function entry
204 point. */
205 bp_gnu_ifunc_resolver_return,
206 };
207
208 /* States of enablement of breakpoint. */
209
210 enum enable_state
211 {
212 bp_disabled, /* The eventpoint is inactive, and cannot
213 trigger. */
214 bp_enabled, /* The eventpoint is active, and can
215 trigger. */
216 bp_call_disabled, /* The eventpoint has been disabled while a
217 call into the inferior is "in flight",
218 because some eventpoints interfere with
219 the implementation of a call on some
220 targets. The eventpoint will be
221 automatically enabled and reset when the
222 call "lands" (either completes, or stops
223 at another eventpoint). */
224 };
225
226
227 /* Disposition of breakpoint. Ie: what to do after hitting it. */
228
229 enum bpdisp
230 {
231 disp_del, /* Delete it */
232 disp_del_at_next_stop, /* Delete at next stop,
233 whether hit or not */
234 disp_disable, /* Disable it */
235 disp_donttouch /* Leave it alone */
236 };
237
238 /* Status of breakpoint conditions used when synchronizing
239 conditions with the target. */
240
241 enum condition_status
242 {
243 condition_unchanged = 0,
244 condition_modified,
245 condition_updated
246 };
247
248 /* Information used by targets to insert and remove breakpoints. */
249
250 struct bp_target_info
251 {
252 /* Address space at which the breakpoint was placed. */
253 struct address_space *placed_address_space;
254
255 /* Address at which the breakpoint was placed. This is normally
256 the same as REQUESTED_ADDRESS, except when adjustment happens in
257 gdbarch_breakpoint_from_pc. The most common form of adjustment
258 is stripping an alternate ISA marker from the PC which is used
259 to determine the type of breakpoint to insert. */
260 CORE_ADDR placed_address;
261
262 /* Address at which the breakpoint was requested. */
263 CORE_ADDR reqstd_address;
264
265 /* If this is a ranged breakpoint, then this field contains the
266 length of the range that will be watched for execution. */
267 int length;
268
269 /* If the breakpoint lives in memory and reading that memory would
270 give back the breakpoint, instead of the original contents, then
271 the original contents are cached here. Only SHADOW_LEN bytes of
272 this buffer are valid, and only when the breakpoint is inserted. */
273 gdb_byte shadow_contents[BREAKPOINT_MAX];
274
275 /* The length of the data cached in SHADOW_CONTENTS. */
276 int shadow_len;
277
278 /* The breakpoint's kind. It is used in 'kind' parameter in Z
279 packets. */
280 int kind;
281
282 /* Conditions the target should evaluate if it supports target-side
283 breakpoint conditions. These are non-owning pointers. */
284 std::vector<agent_expr *> conditions;
285
286 /* Commands the target should evaluate if it supports target-side
287 breakpoint commands. These are non-owning pointers. */
288 std::vector<agent_expr *> tcommands;
289
290 /* Flag that is true if the breakpoint should be left in place even
291 when GDB is not connected. */
292 int persist;
293 };
294
295 /* GDB maintains two types of information about each breakpoint (or
296 watchpoint, or other related event). The first type corresponds
297 to struct breakpoint; this is a relatively high-level structure
298 which contains the source location(s), stopping conditions, user
299 commands to execute when the breakpoint is hit, and so forth.
300
301 The second type of information corresponds to struct bp_location.
302 Each breakpoint has one or (eventually) more locations associated
303 with it, which represent target-specific and machine-specific
304 mechanisms for stopping the program. For instance, a watchpoint
305 expression may require multiple hardware watchpoints in order to
306 catch all changes in the value of the expression being watched. */
307
308 enum bp_loc_type
309 {
310 bp_loc_software_breakpoint,
311 bp_loc_hardware_breakpoint,
312 bp_loc_hardware_watchpoint,
313 bp_loc_other /* Miscellaneous... */
314 };
315
316 class bp_location : public refcounted_object
317 {
318 public:
319 bp_location () = default;
320
321 /* Construct a bp_location with the type inferred from OWNER's
322 type. */
323 explicit bp_location (breakpoint *owner);
324
325 /* Construct a bp_location with type TYPE. */
326 bp_location (breakpoint *owner, bp_loc_type type);
327
328 virtual ~bp_location ();
329
330 /* Chain pointer to the next breakpoint location for
331 the same parent breakpoint. */
332 bp_location *next = NULL;
333
334 /* Type of this breakpoint location. */
335 bp_loc_type loc_type {};
336
337 /* Each breakpoint location must belong to exactly one higher-level
338 breakpoint. This pointer is NULL iff this bp_location is no
339 longer attached to a breakpoint. For example, when a breakpoint
340 is deleted, its locations may still be found in the
341 moribund_locations list, or if we had stopped for it, in
342 bpstats. */
343 breakpoint *owner = NULL;
344
345 /* Conditional. Break only if this expression's value is nonzero.
346 Unlike string form of condition, which is associated with
347 breakpoint, this is associated with location, since if breakpoint
348 has several locations, the evaluation of expression can be
349 different for different locations. Only valid for real
350 breakpoints; a watchpoint's conditional expression is stored in
351 the owner breakpoint object. */
352 expression_up cond;
353
354 /* Conditional expression in agent expression
355 bytecode form. This is used for stub-side breakpoint
356 condition evaluation. */
357 agent_expr_up cond_bytecode;
358
359 /* Signals that the condition has changed since the last time
360 we updated the global location list. This means the condition
361 needs to be sent to the target again. This is used together
362 with target-side breakpoint conditions.
363
364 condition_unchanged: It means there has been no condition changes.
365
366 condition_modified: It means this location had its condition modified.
367
368 condition_updated: It means we already marked all the locations that are
369 duplicates of this location and thus we don't need to call
370 force_breakpoint_reinsertion (...) for this location. */
371
372 condition_status condition_changed {};
373
374 agent_expr_up cmd_bytecode;
375
376 /* Signals that breakpoint conditions and/or commands need to be
377 re-synced with the target. This has no use other than
378 target-side breakpoints. */
379 bool needs_update = false;
380
381 /* This location's address is in an unloaded solib, and so this
382 location should not be inserted. It will be automatically
383 enabled when that solib is loaded. */
384 bool shlib_disabled = false;
385
386 /* Is this particular location enabled. */
387 bool enabled = false;
388
389 /* Is this particular location disabled because the condition
390 expression is invalid at this location. For a location to be
391 reported as enabled, the ENABLED field above has to be true *and*
392 the DISABLED_BY_COND field has to be false. */
393 bool disabled_by_cond = false;
394
395 /* True if this breakpoint is now inserted. */
396 bool inserted = false;
397
398 /* True if this is a permanent breakpoint. There is a breakpoint
399 instruction hard-wired into the target's code. Don't try to
400 write another breakpoint instruction on top of it, or restore its
401 value. Step over it using the architecture's
402 gdbarch_skip_permanent_breakpoint method. */
403 bool permanent = false;
404
405 /* True if this is not the first breakpoint in the list
406 for the given address. location of tracepoint can _never_
407 be duplicated with other locations of tracepoints and other
408 kinds of breakpoints, because two locations at the same
409 address may have different actions, so both of these locations
410 should be downloaded and so that `tfind N' always works. */
411 bool duplicate = false;
412
413 /* If we someday support real thread-specific breakpoints, then
414 the breakpoint location will need a thread identifier. */
415
416 /* Data for specific breakpoint types. These could be a union, but
417 simplicity is more important than memory usage for breakpoints. */
418
419 /* Architecture associated with this location's address. May be
420 different from the breakpoint architecture. */
421 struct gdbarch *gdbarch = NULL;
422
423 /* The program space associated with this breakpoint location
424 address. Note that an address space may be represented in more
425 than one program space (e.g. each uClinux program will be given
426 its own program space, but there will only be one address space
427 for all of them), but we must not insert more than one location
428 at the same address in the same address space. */
429 program_space *pspace = NULL;
430
431 /* Note that zero is a perfectly valid code address on some platforms
432 (for example, the mn10200 (OBSOLETE) and mn10300 simulators). NULL
433 is not a special value for this field. Valid for all types except
434 bp_loc_other. */
435 CORE_ADDR address = 0;
436
437 /* For hardware watchpoints, the size of the memory region being
438 watched. For hardware ranged breakpoints, the size of the
439 breakpoint range. */
440 int length = 0;
441
442 /* Type of hardware watchpoint. */
443 target_hw_bp_type watchpoint_type {};
444
445 /* For any breakpoint type with an address, this is the section
446 associated with the address. Used primarily for overlay
447 debugging. */
448 obj_section *section = NULL;
449
450 /* Address at which breakpoint was requested, either by the user or
451 by GDB for internal breakpoints. This will usually be the same
452 as ``address'' (above) except for cases in which
453 ADJUST_BREAKPOINT_ADDRESS has computed a different address at
454 which to place the breakpoint in order to comply with a
455 processor's architectual constraints. */
456 CORE_ADDR requested_address = 0;
457
458 /* An additional address assigned with this location. This is currently
459 only used by STT_GNU_IFUNC resolver breakpoints to hold the address
460 of the resolver function. */
461 CORE_ADDR related_address = 0;
462
463 /* If the location comes from a probe point, this is the probe associated
464 with it. */
465 bound_probe probe {};
466
467 char *function_name = NULL;
468
469 /* Details of the placed breakpoint, when inserted. */
470 bp_target_info target_info {};
471
472 /* Similarly, for the breakpoint at an overlay's LMA, if necessary. */
473 bp_target_info overlay_target_info {};
474
475 /* In a non-stop mode, it's possible that we delete a breakpoint,
476 but as we do that, some still running thread hits that breakpoint.
477 For that reason, we need to keep locations belonging to deleted
478 breakpoints for a bit, so that don't report unexpected SIGTRAP.
479 We can't keep such locations forever, so we use a heuristic --
480 after we process certain number of inferior events since
481 breakpoint was deleted, we retire all locations of that breakpoint.
482 This variable keeps a number of events still to go, when
483 it becomes 0 this location is retired. */
484 int events_till_retirement = 0;
485
486 /* Line number which was used to place this location.
487
488 Breakpoint placed into a comment keeps it's user specified line number
489 despite ADDRESS resolves into a different line number. */
490
491 int line_number = 0;
492
493 /* Symtab which was used to place this location. This is used
494 to find the corresponding source file name. */
495
496 struct symtab *symtab = NULL;
497
498 /* The symbol found by the location parser, if any. This may be used to
499 ascertain when an event location was set at a different location than
500 the one originally selected by parsing, e.g., inlined symbols. */
501 const struct symbol *symbol = NULL;
502
503 /* Similarly, the minimal symbol found by the location parser, if
504 any. This may be used to ascertain if the location was
505 originally set on a GNU ifunc symbol. */
506 const minimal_symbol *msymbol = NULL;
507
508 /* The objfile the symbol or minimal symbol were found in. */
509 const struct objfile *objfile = NULL;
510 };
511
512 /* A policy class for bp_location reference counting. */
513 struct bp_location_ref_policy
514 {
515 static void incref (bp_location *loc)
516 {
517 loc->incref ();
518 }
519
520 static void decref (bp_location *loc)
521 {
522 gdb_assert (loc->refcount () > 0);
523 loc->decref ();
524 if (loc->refcount () == 0)
525 delete loc;
526 }
527 };
528
529 /* A gdb::ref_ptr that has been specialized for bp_location. */
530 typedef gdb::ref_ptr<bp_location, bp_location_ref_policy>
531 bp_location_ref_ptr;
532
533 /* The possible return values for print_bpstat, print_it_normal,
534 print_it_done, print_it_noop. */
535 enum print_stop_action
536 {
537 /* We printed nothing or we need to do some more analysis. */
538 PRINT_UNKNOWN = -1,
539
540 /* We printed something, and we *do* desire that something to be
541 followed by a location. */
542 PRINT_SRC_AND_LOC,
543
544 /* We printed something, and we do *not* desire that something to be
545 followed by a location. */
546 PRINT_SRC_ONLY,
547
548 /* We already printed all we needed to print, don't print anything
549 else. */
550 PRINT_NOTHING
551 };
552
553 /* This structure is a collection of function pointers that, if available,
554 will be called instead of the performing the default action for this
555 bptype. */
556
557 struct breakpoint_ops
558 {
559 /* Allocate a location for this breakpoint. */
560 struct bp_location * (*allocate_location) (struct breakpoint *);
561
562 /* Reevaluate a breakpoint. This is necessary after symbols change
563 (e.g., an executable or DSO was loaded, or the inferior just
564 started). */
565 void (*re_set) (struct breakpoint *self);
566
567 /* Insert the breakpoint or watchpoint or activate the catchpoint.
568 Return 0 for success, 1 if the breakpoint, watchpoint or
569 catchpoint type is not supported, -1 for failure. */
570 int (*insert_location) (struct bp_location *);
571
572 /* Remove the breakpoint/catchpoint that was previously inserted
573 with the "insert" method above. Return 0 for success, 1 if the
574 breakpoint, watchpoint or catchpoint type is not supported,
575 -1 for failure. */
576 int (*remove_location) (struct bp_location *, enum remove_bp_reason reason);
577
578 /* Return true if it the target has stopped due to hitting
579 breakpoint location BL. This function does not check if we
580 should stop, only if BL explains the stop. ASPACE is the address
581 space in which the event occurred, BP_ADDR is the address at
582 which the inferior stopped, and WS is the target_waitstatus
583 describing the event. */
584 int (*breakpoint_hit) (const struct bp_location *bl,
585 const address_space *aspace,
586 CORE_ADDR bp_addr,
587 const struct target_waitstatus *ws);
588
589 /* Check internal conditions of the breakpoint referred to by BS.
590 If we should not stop for this breakpoint, set BS->stop to 0. */
591 void (*check_status) (struct bpstats *bs);
592
593 /* Tell how many hardware resources (debug registers) are needed
594 for this breakpoint. If this function is not provided, then
595 the breakpoint or watchpoint needs one debug register. */
596 int (*resources_needed) (const struct bp_location *);
597
598 /* Tell whether we can downgrade from a hardware watchpoint to a software
599 one. If not, the user will not be able to enable the watchpoint when
600 there are not enough hardware resources available. */
601 int (*works_in_software_mode) (const struct breakpoint *);
602
603 /* The normal print routine for this breakpoint, called when we
604 hit it. */
605 enum print_stop_action (*print_it) (struct bpstats *bs);
606
607 /* Display information about this breakpoint, for "info
608 breakpoints". */
609 void (*print_one) (struct breakpoint *, struct bp_location **);
610
611 /* Display extra information about this breakpoint, below the normal
612 breakpoint description in "info breakpoints".
613
614 In the example below, the "address range" line was printed
615 by print_one_detail_ranged_breakpoint.
616
617 (gdb) info breakpoints
618 Num Type Disp Enb Address What
619 2 hw breakpoint keep y in main at test-watch.c:70
620 address range: [0x10000458, 0x100004c7]
621
622 */
623 void (*print_one_detail) (const struct breakpoint *, struct ui_out *);
624
625 /* Display information about this breakpoint after setting it
626 (roughly speaking; this is called from "mention"). */
627 void (*print_mention) (struct breakpoint *);
628
629 /* Print to FP the CLI command that recreates this breakpoint. */
630 void (*print_recreate) (struct breakpoint *, struct ui_file *fp);
631
632 /* Create SALs from location, storing the result in linespec_result.
633
634 For an explanation about the arguments, see the function
635 `create_sals_from_location_default'.
636
637 This function is called inside `create_breakpoint'. */
638 void (*create_sals_from_location) (struct event_location *location,
639 struct linespec_result *canonical,
640 enum bptype type_wanted);
641
642 /* This method will be responsible for creating a breakpoint given its SALs.
643 Usually, it just calls `create_breakpoints_sal' (for ordinary
644 breakpoints). However, there may be some special cases where we might
645 need to do some tweaks, e.g., see
646 `strace_marker_create_breakpoints_sal'.
647
648 This function is called inside `create_breakpoint'. */
649 void (*create_breakpoints_sal) (struct gdbarch *,
650 struct linespec_result *,
651 gdb::unique_xmalloc_ptr<char>,
652 gdb::unique_xmalloc_ptr<char>,
653 enum bptype, enum bpdisp, int, int,
654 int, const struct breakpoint_ops *,
655 int, int, int, unsigned);
656
657 /* Given the location (second parameter), this method decodes it and
658 returns the SAL locations related to it. For ordinary
659 breakpoints, it calls `decode_line_full'. If SEARCH_PSPACE is
660 not NULL, symbol search is restricted to just that program space.
661
662 This function is called inside `location_to_sals'. */
663 std::vector<symtab_and_line> (*decode_location)
664 (struct breakpoint *b,
665 struct event_location *location,
666 struct program_space *search_pspace);
667
668 /* Return true if this breakpoint explains a signal. See
669 bpstat_explains_signal. */
670 int (*explains_signal) (struct breakpoint *, enum gdb_signal);
671
672 /* Called after evaluating the breakpoint's condition,
673 and only if it evaluated true. */
674 void (*after_condition_true) (struct bpstats *bs);
675 };
676
677 /* Helper for breakpoint_ops->print_recreate implementations. Prints
678 the "thread" or "task" condition of B, and then a newline.
679
680 Necessary because most breakpoint implementations accept
681 thread/task conditions at the end of the spec line, like "break foo
682 thread 1", which needs outputting before any breakpoint-type
683 specific extra command necessary for B's recreation. */
684 extern void print_recreate_thread (struct breakpoint *b, struct ui_file *fp);
685
686 enum watchpoint_triggered
687 {
688 /* This watchpoint definitely did not trigger. */
689 watch_triggered_no = 0,
690
691 /* Some hardware watchpoint triggered, and it might have been this
692 one, but we do not know which it was. */
693 watch_triggered_unknown,
694
695 /* This hardware watchpoint definitely did trigger. */
696 watch_triggered_yes
697 };
698
699 /* Some targets (e.g., embedded PowerPC) need two debug registers to set
700 a watchpoint over a memory region. If this flag is true, GDB will use
701 only one register per watchpoint, thus assuming that all accesses that
702 modify a memory location happen at its starting address. */
703
704 extern bool target_exact_watchpoints;
705
706 /* Note that the ->silent field is not currently used by any commands
707 (though the code is in there if it was to be, and set_raw_breakpoint
708 does set it to 0). I implemented it because I thought it would be
709 useful for a hack I had to put in; I'm going to leave it in because
710 I can see how there might be times when it would indeed be useful */
711
712 /* This is for all kinds of breakpoints. */
713
714 struct breakpoint
715 {
716 virtual ~breakpoint ();
717
718 /* Methods associated with this breakpoint. */
719 const breakpoint_ops *ops = NULL;
720
721 breakpoint *next = NULL;
722 /* Type of breakpoint. */
723 bptype type = bp_none;
724 /* Zero means disabled; remember the info but don't break here. */
725 enum enable_state enable_state = bp_enabled;
726 /* What to do with this breakpoint after we hit it. */
727 bpdisp disposition = disp_del;
728 /* Number assigned to distinguish breakpoints. */
729 int number = 0;
730
731 /* Location(s) associated with this high-level breakpoint. */
732 bp_location *loc = NULL;
733
734 /* True means a silent breakpoint (don't print frame info if we stop
735 here). */
736 bool silent = false;
737 /* True means display ADDR_STRING to the user verbatim. */
738 bool display_canonical = false;
739 /* Number of stops at this breakpoint that should be continued
740 automatically before really stopping. */
741 int ignore_count = 0;
742
743 /* Number of stops at this breakpoint before it will be
744 disabled. */
745 int enable_count = 0;
746
747 /* Chain of command lines to execute when this breakpoint is
748 hit. */
749 counted_command_line commands;
750 /* Stack depth (address of frame). If nonzero, break only if fp
751 equals this. */
752 struct frame_id frame_id = null_frame_id;
753
754 /* The program space used to set the breakpoint. This is only set
755 for breakpoints which are specific to a program space; for
756 non-thread-specific ordinary breakpoints this is NULL. */
757 program_space *pspace = NULL;
758
759 /* Location we used to set the breakpoint. */
760 event_location_up location;
761
762 /* The filter that should be passed to decode_line_full when
763 re-setting this breakpoint. This may be NULL. */
764 gdb::unique_xmalloc_ptr<char> filter;
765
766 /* For a ranged breakpoint, the location we used to find the end of
767 the range. */
768 event_location_up location_range_end;
769
770 /* Architecture we used to set the breakpoint. */
771 struct gdbarch *gdbarch = NULL;
772 /* Language we used to set the breakpoint. */
773 enum language language = language_unknown;
774 /* Input radix we used to set the breakpoint. */
775 int input_radix = 0;
776 /* String form of the breakpoint condition (malloc'd), or NULL if
777 there is no condition. */
778 char *cond_string = NULL;
779
780 /* String form of extra parameters, or NULL if there are none.
781 Malloc'd. */
782 char *extra_string = NULL;
783
784 /* Holds the address of the related watchpoint_scope breakpoint when
785 using watchpoints on local variables (might the concept of a
786 related breakpoint be useful elsewhere, if not just call it the
787 watchpoint_scope breakpoint or something like that. FIXME). */
788 breakpoint *related_breakpoint = NULL;
789
790 /* Thread number for thread-specific breakpoint, or -1 if don't
791 care. */
792 int thread = -1;
793
794 /* Ada task number for task-specific breakpoint, or 0 if don't
795 care. */
796 int task = 0;
797
798 /* Count of the number of times this breakpoint was taken, dumped
799 with the info, but not used for anything else. Useful for seeing
800 how many times you hit a break prior to the program aborting, so
801 you can back up to just before the abort. */
802 int hit_count = 0;
803
804 /* Is breakpoint's condition not yet parsed because we found no
805 location initially so had no context to parse the condition
806 in. */
807 int condition_not_parsed = 0;
808
809 /* With a Python scripting enabled GDB, store a reference to the
810 Python object that has been associated with this breakpoint.
811 This is always NULL for a GDB that is not script enabled. It can
812 sometimes be NULL for enabled GDBs as not all breakpoint types
813 are tracked by the scripting language API. */
814 gdbpy_breakpoint_object *py_bp_object = NULL;
815
816 /* Same as py_bp_object, but for Scheme. */
817 gdbscm_breakpoint_object *scm_bp_object = NULL;
818 };
819
820 /* An instance of this type is used to represent a watchpoint. */
821
822 struct watchpoint : public breakpoint
823 {
824 ~watchpoint () override;
825
826 /* String form of exp to use for displaying to the user (malloc'd),
827 or NULL if none. */
828 char *exp_string;
829 /* String form to use for reparsing of EXP (malloc'd) or NULL. */
830 char *exp_string_reparse;
831
832 /* The expression we are watching, or NULL if not a watchpoint. */
833 expression_up exp;
834 /* The largest block within which it is valid, or NULL if it is
835 valid anywhere (e.g. consists just of global symbols). */
836 const struct block *exp_valid_block;
837 /* The conditional expression if any. */
838 expression_up cond_exp;
839 /* The largest block within which it is valid, or NULL if it is
840 valid anywhere (e.g. consists just of global symbols). */
841 const struct block *cond_exp_valid_block;
842 /* Value of the watchpoint the last time we checked it, or NULL when
843 we do not know the value yet or the value was not readable. VAL
844 is never lazy. */
845 value_ref_ptr val;
846
847 /* True if VAL is valid. If VAL_VALID is set but VAL is NULL,
848 then an error occurred reading the value. */
849 bool val_valid;
850
851 /* When watching the location of a bitfield, contains the offset and size of
852 the bitfield. Otherwise contains 0. */
853 int val_bitpos;
854 int val_bitsize;
855
856 /* Holds the frame address which identifies the frame this
857 watchpoint should be evaluated in, or `null' if the watchpoint
858 should be evaluated on the outermost frame. */
859 struct frame_id watchpoint_frame;
860
861 /* Holds the thread which identifies the frame this watchpoint
862 should be considered in scope for, or `null_ptid' if the
863 watchpoint should be evaluated in all threads. */
864 ptid_t watchpoint_thread;
865
866 /* For hardware watchpoints, the triggered status according to the
867 hardware. */
868 enum watchpoint_triggered watchpoint_triggered;
869
870 /* Whether this watchpoint is exact (see
871 target_exact_watchpoints). */
872 int exact;
873
874 /* The mask address for a masked hardware watchpoint. */
875 CORE_ADDR hw_wp_mask;
876 };
877
878 /* Given a function FUNC (struct breakpoint *B, void *DATA) and
879 USER_DATA, call FUNC for every known breakpoint passing USER_DATA
880 as argument.
881
882 If FUNC returns 1, the loop stops and the current
883 'struct breakpoint' being processed is returned. If FUNC returns
884 zero, the loop continues.
885
886 This function returns either a 'struct breakpoint' pointer or NULL.
887 It was based on BFD's bfd_sections_find_if function. */
888
889 extern struct breakpoint *breakpoint_find_if
890 (int (*func) (struct breakpoint *b, void *d), void *user_data);
891
892 /* Return true if BPT is either a software breakpoint or a hardware
893 breakpoint. */
894
895 extern bool is_breakpoint (const struct breakpoint *bpt);
896
897 /* Return true if BPT is of any watchpoint kind, hardware or
898 software. */
899
900 extern bool is_watchpoint (const struct breakpoint *bpt);
901
902 /* Return true if BPT is a C++ exception catchpoint (catch
903 catch/throw/rethrow). */
904
905 extern bool is_exception_catchpoint (breakpoint *bp);
906
907 /* An instance of this type is used to represent all kinds of
908 tracepoints. */
909
910 struct tracepoint : public breakpoint
911 {
912 /* Number of times this tracepoint should single-step and collect
913 additional data. */
914 long step_count;
915
916 /* Number of times this tracepoint should be hit before
917 disabling/ending. */
918 int pass_count;
919
920 /* The number of the tracepoint on the target. */
921 int number_on_target;
922
923 /* The total space taken by all the trace frames for this
924 tracepoint. */
925 ULONGEST traceframe_usage;
926
927 /* The static tracepoint marker id, if known. */
928 std::string static_trace_marker_id;
929
930 /* LTTng/UST allow more than one marker with the same ID string,
931 although it unadvised because it confuses tools. When setting
932 static tracepoints by marker ID, this will record the index in
933 the array of markers we found for the given marker ID for which
934 this static tracepoint corresponds. When resetting breakpoints,
935 we will use this index to try to find the same marker again. */
936 int static_trace_marker_id_idx;
937 };
938
939 \f
940 /* The following stuff is an abstract data type "bpstat" ("breakpoint
941 status"). This provides the ability to determine whether we have
942 stopped at a breakpoint, and what we should do about it. */
943
944 typedef struct bpstats *bpstat;
945
946 /* Clears a chain of bpstat, freeing storage
947 of each. */
948 extern void bpstat_clear (bpstat *);
949
950 /* Return a copy of a bpstat. Like "bs1 = bs2" but all storage that
951 is part of the bpstat is copied as well. */
952 extern bpstat bpstat_copy (bpstat);
953
954 /* Build the (raw) bpstat chain for the stop information given by ASPACE,
955 BP_ADDR, and WS. Returns the head of the bpstat chain. */
956
957 extern bpstat build_bpstat_chain (const address_space *aspace,
958 CORE_ADDR bp_addr,
959 const struct target_waitstatus *ws);
960
961 /* Get a bpstat associated with having just stopped at address
962 BP_ADDR in thread PTID. STOP_CHAIN may be supplied as a previously
963 computed stop chain or NULL, in which case the stop chain will be
964 computed using build_bpstat_chain.
965
966 Determine whether we stopped at a breakpoint, etc, or whether we
967 don't understand this stop. Result is a chain of bpstat's such
968 that:
969
970 if we don't understand the stop, the result is a null pointer.
971
972 if we understand why we stopped, the result is not null.
973
974 Each element of the chain refers to a particular breakpoint or
975 watchpoint at which we have stopped. (We may have stopped for
976 several reasons concurrently.)
977
978 Each element of the chain has valid next, breakpoint_at,
979 commands, FIXME??? fields. */
980
981 extern bpstat bpstat_stop_status (const address_space *aspace,
982 CORE_ADDR pc, thread_info *thread,
983 const struct target_waitstatus *ws,
984 bpstat stop_chain = NULL);
985 \f
986 /* This bpstat_what stuff tells wait_for_inferior what to do with a
987 breakpoint (a challenging task).
988
989 The enum values order defines priority-like order of the actions.
990 Once you've decided that some action is appropriate, you'll never
991 go back and decide something of a lower priority is better. Each
992 of these actions is mutually exclusive with the others. That
993 means, that if you find yourself adding a new action class here and
994 wanting to tell GDB that you have two simultaneous actions to
995 handle, something is wrong, and you probably don't actually need a
996 new action type.
997
998 Note that a step resume breakpoint overrides another breakpoint of
999 signal handling (see comment in wait_for_inferior at where we set
1000 the step_resume breakpoint). */
1001
1002 enum bpstat_what_main_action
1003 {
1004 /* Perform various other tests; that is, this bpstat does not
1005 say to perform any action (e.g. failed watchpoint and nothing
1006 else). */
1007 BPSTAT_WHAT_KEEP_CHECKING,
1008
1009 /* Remove breakpoints, single step once, then put them back in and
1010 go back to what we were doing. It's possible that this should
1011 be removed from the main_action and put into a separate field,
1012 to more cleanly handle
1013 BPSTAT_WHAT_CLEAR_LONGJMP_RESUME_SINGLE. */
1014 BPSTAT_WHAT_SINGLE,
1015
1016 /* Set longjmp_resume breakpoint, remove all other breakpoints,
1017 and continue. The "remove all other breakpoints" part is
1018 required if we are also stepping over another breakpoint as
1019 well as doing the longjmp handling. */
1020 BPSTAT_WHAT_SET_LONGJMP_RESUME,
1021
1022 /* Clear longjmp_resume breakpoint, then handle as
1023 BPSTAT_WHAT_KEEP_CHECKING. */
1024 BPSTAT_WHAT_CLEAR_LONGJMP_RESUME,
1025
1026 /* Clear step resume breakpoint, and keep checking. */
1027 BPSTAT_WHAT_STEP_RESUME,
1028
1029 /* Rather than distinguish between noisy and silent stops here, it
1030 might be cleaner to have bpstat_print make that decision (also
1031 taking into account stop_print_frame and source_only). But the
1032 implications are a bit scary (interaction with auto-displays,
1033 etc.), so I won't try it. */
1034
1035 /* Stop silently. */
1036 BPSTAT_WHAT_STOP_SILENT,
1037
1038 /* Stop and print. */
1039 BPSTAT_WHAT_STOP_NOISY,
1040
1041 /* Clear step resume breakpoint, and keep checking. High-priority
1042 step-resume breakpoints are used when even if there's a user
1043 breakpoint at the current PC when we set the step-resume
1044 breakpoint, we don't want to re-handle any breakpoint other
1045 than the step-resume when it's hit; instead we want to move
1046 past the breakpoint. This is used in the case of skipping
1047 signal handlers. */
1048 BPSTAT_WHAT_HP_STEP_RESUME,
1049 };
1050
1051 /* An enum indicating the kind of "stack dummy" stop. This is a bit
1052 of a misnomer because only one kind of truly a stack dummy. */
1053 enum stop_stack_kind
1054 {
1055 /* We didn't stop at a stack dummy breakpoint. */
1056 STOP_NONE = 0,
1057
1058 /* Stopped at a stack dummy. */
1059 STOP_STACK_DUMMY,
1060
1061 /* Stopped at std::terminate. */
1062 STOP_STD_TERMINATE
1063 };
1064
1065 struct bpstat_what
1066 {
1067 enum bpstat_what_main_action main_action;
1068
1069 /* Did we hit a call dummy breakpoint? This only goes with a
1070 main_action of BPSTAT_WHAT_STOP_SILENT or
1071 BPSTAT_WHAT_STOP_NOISY (the concept of continuing from a call
1072 dummy without popping the frame is not a useful one). */
1073 enum stop_stack_kind call_dummy;
1074
1075 /* Used for BPSTAT_WHAT_SET_LONGJMP_RESUME and
1076 BPSTAT_WHAT_CLEAR_LONGJMP_RESUME. True if we are handling a
1077 longjmp, false if we are handling an exception. */
1078 bool is_longjmp;
1079 };
1080
1081 /* Tell what to do about this bpstat. */
1082 struct bpstat_what bpstat_what (bpstat);
1083
1084 /* Run breakpoint event callbacks associated with the breakpoints that
1085 triggered. */
1086 extern void bpstat_run_callbacks (bpstat bs_head);
1087
1088 /* Find the bpstat associated with a breakpoint. NULL otherwise. */
1089 bpstat bpstat_find_breakpoint (bpstat, struct breakpoint *);
1090
1091 /* True if a signal that we got in target_wait() was due to
1092 circumstances explained by the bpstat; the signal is therefore not
1093 random. */
1094 extern bool bpstat_explains_signal (bpstat, enum gdb_signal);
1095
1096 /* True if this bpstat causes a stop. */
1097 extern bool bpstat_causes_stop (bpstat);
1098
1099 /* True if we should step constantly (e.g. watchpoints on machines
1100 without hardware support). This isn't related to a specific bpstat,
1101 just to things like whether watchpoints are set. */
1102 extern bool bpstat_should_step ();
1103
1104 /* Print a message indicating what happened. Returns nonzero to
1105 say that only the source line should be printed after this (zero
1106 return means print the frame as well as the source line). */
1107 extern enum print_stop_action bpstat_print (bpstat, int);
1108
1109 /* Put in *NUM the breakpoint number of the first breakpoint we are
1110 stopped at. *BSP upon return is a bpstat which points to the
1111 remaining breakpoints stopped at (but which is not guaranteed to be
1112 good for anything but further calls to bpstat_num).
1113
1114 Return 0 if passed a bpstat which does not indicate any breakpoints.
1115 Return -1 if stopped at a breakpoint that has been deleted since
1116 we set it.
1117 Return 1 otherwise. */
1118 extern int bpstat_num (bpstat *, int *);
1119
1120 /* Perform actions associated with the stopped inferior. Actually, we
1121 just use this for breakpoint commands. Perhaps other actions will
1122 go here later, but this is executed at a late time (from the
1123 command loop). */
1124 extern void bpstat_do_actions (void);
1125
1126 /* Modify all entries of STOP_BPSTAT of INFERIOR_PTID so that the actions will
1127 not be performed. */
1128 extern void bpstat_clear_actions (void);
1129
1130 /* Implementation: */
1131
1132 /* Values used to tell the printing routine how to behave for this
1133 bpstat. */
1134 enum bp_print_how
1135 {
1136 /* This is used when we want to do a normal printing of the reason
1137 for stopping. The output will depend on the type of eventpoint
1138 we are dealing with. This is the default value, most commonly
1139 used. */
1140 print_it_normal,
1141 /* This is used when nothing should be printed for this bpstat
1142 entry. */
1143 print_it_noop,
1144 /* This is used when everything which needs to be printed has
1145 already been printed. But we still want to print the frame. */
1146 print_it_done
1147 };
1148
1149 struct bpstats
1150 {
1151 bpstats ();
1152 bpstats (struct bp_location *bl, bpstat **bs_link_pointer);
1153
1154 bpstats (const bpstats &);
1155 bpstats &operator= (const bpstats &) = delete;
1156
1157 /* Linked list because there can be more than one breakpoint at
1158 the same place, and a bpstat reflects the fact that all have
1159 been hit. */
1160 bpstat next;
1161
1162 /* Location that caused the stop. Locations are refcounted, so
1163 this will never be NULL. Note that this location may end up
1164 detached from a breakpoint, but that does not necessary mean
1165 that the struct breakpoint is gone. E.g., consider a
1166 watchpoint with a condition that involves an inferior function
1167 call. Watchpoint locations are recreated often (on resumes,
1168 hence on infcalls too). Between creating the bpstat and after
1169 evaluating the watchpoint condition, this location may hence
1170 end up detached from its original owner watchpoint, even though
1171 the watchpoint is still listed. If it's condition evaluates as
1172 true, we still want this location to cause a stop, and we will
1173 still need to know which watchpoint it was originally attached.
1174 What this means is that we should not (in most cases) follow
1175 the `bpstat->bp_location->owner' link, but instead use the
1176 `breakpoint_at' field below. */
1177 bp_location_ref_ptr bp_location_at;
1178
1179 /* Breakpoint that caused the stop. This is nullified if the
1180 breakpoint ends up being deleted. See comments on
1181 `bp_location_at' above for why do we need this field instead of
1182 following the location's owner. */
1183 struct breakpoint *breakpoint_at;
1184
1185 /* The associated command list. */
1186 counted_command_line commands;
1187
1188 /* Old value associated with a watchpoint. */
1189 value_ref_ptr old_val;
1190
1191 /* Nonzero if this breakpoint tells us to print the frame. */
1192 char print;
1193
1194 /* Nonzero if this breakpoint tells us to stop. */
1195 char stop;
1196
1197 /* Tell bpstat_print and print_bp_stop_message how to print stuff
1198 associated with this element of the bpstat chain. */
1199 enum bp_print_how print_it;
1200 };
1201
1202 enum inf_context
1203 {
1204 inf_starting,
1205 inf_running,
1206 inf_exited,
1207 inf_execd
1208 };
1209
1210 /* The possible return values for breakpoint_here_p.
1211 We guarantee that zero always means "no breakpoint here". */
1212 enum breakpoint_here
1213 {
1214 no_breakpoint_here = 0,
1215 ordinary_breakpoint_here,
1216 permanent_breakpoint_here
1217 };
1218 \f
1219
1220 /* Prototypes for breakpoint-related functions. */
1221
1222 extern enum breakpoint_here breakpoint_here_p (const address_space *,
1223 CORE_ADDR);
1224
1225 /* Return true if an enabled breakpoint exists in the range defined by
1226 ADDR and LEN, in ASPACE. */
1227 extern int breakpoint_in_range_p (const address_space *aspace,
1228 CORE_ADDR addr, ULONGEST len);
1229
1230 extern int moribund_breakpoint_here_p (const address_space *, CORE_ADDR);
1231
1232 extern int breakpoint_inserted_here_p (const address_space *,
1233 CORE_ADDR);
1234
1235 extern int software_breakpoint_inserted_here_p (const address_space *,
1236 CORE_ADDR);
1237
1238 /* Return non-zero iff there is a hardware breakpoint inserted at
1239 PC. */
1240 extern int hardware_breakpoint_inserted_here_p (const address_space *,
1241 CORE_ADDR);
1242
1243 /* Check whether any location of BP is inserted at PC. */
1244
1245 extern int breakpoint_has_location_inserted_here (struct breakpoint *bp,
1246 const address_space *aspace,
1247 CORE_ADDR pc);
1248
1249 extern int single_step_breakpoint_inserted_here_p (const address_space *,
1250 CORE_ADDR);
1251
1252 /* Returns true if there's a hardware watchpoint or access watchpoint
1253 inserted in the range defined by ADDR and LEN. */
1254 extern int hardware_watchpoint_inserted_in_range (const address_space *,
1255 CORE_ADDR addr,
1256 ULONGEST len);
1257
1258 /* Returns true if {ASPACE1,ADDR1} and {ASPACE2,ADDR2} represent the
1259 same breakpoint location. In most targets, this can only be true
1260 if ASPACE1 matches ASPACE2. On targets that have global
1261 breakpoints, the address space doesn't really matter. */
1262
1263 extern int breakpoint_address_match (const address_space *aspace1,
1264 CORE_ADDR addr1,
1265 const address_space *aspace2,
1266 CORE_ADDR addr2);
1267
1268 extern void until_break_command (const char *, int, int);
1269
1270 /* Initialize a struct bp_location. */
1271
1272 extern void update_breakpoint_locations
1273 (struct breakpoint *b,
1274 struct program_space *filter_pspace,
1275 gdb::array_view<const symtab_and_line> sals,
1276 gdb::array_view<const symtab_and_line> sals_end);
1277
1278 extern void breakpoint_re_set (void);
1279
1280 extern void breakpoint_re_set_thread (struct breakpoint *);
1281
1282 extern void delete_breakpoint (struct breakpoint *);
1283
1284 struct breakpoint_deleter
1285 {
1286 void operator() (struct breakpoint *b) const
1287 {
1288 delete_breakpoint (b);
1289 }
1290 };
1291
1292 typedef std::unique_ptr<struct breakpoint, breakpoint_deleter> breakpoint_up;
1293
1294 extern breakpoint_up set_momentary_breakpoint
1295 (struct gdbarch *, struct symtab_and_line, struct frame_id, enum bptype);
1296
1297 extern breakpoint_up set_momentary_breakpoint_at_pc
1298 (struct gdbarch *, CORE_ADDR pc, enum bptype type);
1299
1300 extern struct breakpoint *clone_momentary_breakpoint (struct breakpoint *bpkt);
1301
1302 extern void set_ignore_count (int, int, int);
1303
1304 extern void breakpoint_init_inferior (enum inf_context);
1305
1306 extern void breakpoint_auto_delete (bpstat);
1307
1308 extern void iterate_over_bp_locations
1309 (gdb::function_view<void (bp_location *)> callback);
1310
1311 /* Return the chain of command lines to execute when this breakpoint
1312 is hit. */
1313 extern struct command_line *breakpoint_commands (struct breakpoint *b);
1314
1315 /* Return a string image of DISP. The string is static, and thus should
1316 NOT be deallocated after use. */
1317 const char *bpdisp_text (enum bpdisp disp);
1318
1319 extern void break_command (const char *, int);
1320
1321 extern void watch_command_wrapper (const char *, int, bool);
1322 extern void awatch_command_wrapper (const char *, int, bool);
1323 extern void rwatch_command_wrapper (const char *, int, bool);
1324 extern void tbreak_command (const char *, int);
1325
1326 extern struct breakpoint_ops base_breakpoint_ops;
1327 extern struct breakpoint_ops bkpt_breakpoint_ops;
1328 extern struct breakpoint_ops tracepoint_breakpoint_ops;
1329 extern struct breakpoint_ops dprintf_breakpoint_ops;
1330
1331 extern void initialize_breakpoint_ops (void);
1332
1333 /* Arguments to pass as context to some catch command handlers. */
1334 #define CATCH_PERMANENT ((void *) (uintptr_t) 0)
1335 #define CATCH_TEMPORARY ((void *) (uintptr_t) 1)
1336
1337 /* Like add_cmd, but add the command to both the "catch" and "tcatch"
1338 lists, and pass some additional user data to the command
1339 function. */
1340
1341 extern void
1342 add_catch_command (const char *name, const char *docstring,
1343 cmd_const_sfunc_ftype *sfunc,
1344 completer_ftype *completer,
1345 void *user_data_catch,
1346 void *user_data_tcatch);
1347
1348 /* Initialize a breakpoint struct for Ada exception catchpoints. */
1349
1350 extern void
1351 init_ada_exception_breakpoint (struct breakpoint *b,
1352 struct gdbarch *gdbarch,
1353 struct symtab_and_line sal,
1354 const char *addr_string,
1355 const struct breakpoint_ops *ops,
1356 int tempflag,
1357 int enabled,
1358 int from_tty);
1359
1360 /* Initialize a new breakpoint of the bp_catchpoint kind. If TEMP
1361 is true, then make the breakpoint temporary. If COND_STRING is
1362 not NULL, then store it in the breakpoint. OPS, if not NULL, is
1363 the breakpoint_ops structure associated to the catchpoint. */
1364
1365 extern void init_catchpoint (struct breakpoint *b,
1366 struct gdbarch *gdbarch, bool temp,
1367 const char *cond_string,
1368 const struct breakpoint_ops *ops);
1369
1370 /* Add breakpoint B on the breakpoint list, and notify the user, the
1371 target and breakpoint_created observers of its existence. If
1372 INTERNAL is non-zero, the breakpoint number will be allocated from
1373 the internal breakpoint count. If UPDATE_GLL is non-zero,
1374 update_global_location_list will be called. */
1375
1376 extern void install_breakpoint (int internal, std::unique_ptr<breakpoint> &&b,
1377 int update_gll);
1378
1379 /* Returns the breakpoint ops appropriate for use with with LOCATION and
1380 according to IS_TRACEPOINT. Use this to ensure, for example, that you pass
1381 the correct ops to create_breakpoint for probe locations. If LOCATION is
1382 NULL, returns bkpt_breakpoint_ops (or tracepoint_breakpoint_ops, if
1383 IS_TRACEPOINT is true). */
1384
1385 extern const struct breakpoint_ops *breakpoint_ops_for_event_location
1386 (const struct event_location *location, bool is_tracepoint);
1387
1388 /* Flags that can be passed down to create_breakpoint, etc., to affect
1389 breakpoint creation in several ways. */
1390
1391 enum breakpoint_create_flags
1392 {
1393 /* We're adding a breakpoint to our tables that is already
1394 inserted in the target. */
1395 CREATE_BREAKPOINT_FLAGS_INSERTED = 1 << 0
1396 };
1397
1398 /* Set a breakpoint. This function is shared between CLI and MI functions
1399 for setting a breakpoint at LOCATION.
1400
1401 This function has two major modes of operations, selected by the
1402 PARSE_EXTRA parameter.
1403
1404 If PARSE_EXTRA is zero, LOCATION is just the breakpoint's location,
1405 with condition, thread, and extra string specified by the COND_STRING,
1406 THREAD, and EXTRA_STRING parameters.
1407
1408 If PARSE_EXTRA is non-zero, this function will attempt to extract
1409 the condition, thread, and extra string from EXTRA_STRING, ignoring
1410 the similarly named parameters.
1411
1412 If FORCE_CONDITION is true, the condition is accepted even when it is
1413 invalid at all of the locations. However, if PARSE_EXTRA is non-zero,
1414 the FORCE_CONDITION parameter is ignored and the corresponding argument
1415 is parsed from EXTRA_STRING.
1416
1417 If INTERNAL is non-zero, the breakpoint number will be allocated
1418 from the internal breakpoint count.
1419
1420 Returns true if any breakpoint was created; false otherwise. */
1421
1422 extern int create_breakpoint (struct gdbarch *gdbarch,
1423 struct event_location *location,
1424 const char *cond_string, int thread,
1425 const char *extra_string,
1426 bool force_condition,
1427 int parse_extra,
1428 int tempflag, enum bptype wanted_type,
1429 int ignore_count,
1430 enum auto_boolean pending_break_support,
1431 const struct breakpoint_ops *ops,
1432 int from_tty,
1433 int enabled,
1434 int internal, unsigned flags);
1435
1436 extern void insert_breakpoints (void);
1437
1438 extern int remove_breakpoints (void);
1439
1440 /* Remove breakpoints of inferior INF. */
1441
1442 extern void remove_breakpoints_inf (inferior *inf);
1443
1444 /* This function can be used to update the breakpoint package's state
1445 after an exec() system call has been executed.
1446
1447 This function causes the following:
1448
1449 - All eventpoints are marked "not inserted".
1450 - All eventpoints with a symbolic address are reset such that
1451 the symbolic address must be reevaluated before the eventpoints
1452 can be reinserted.
1453 - The solib breakpoints are explicitly removed from the breakpoint
1454 list.
1455 - A step-resume breakpoint, if any, is explicitly removed from the
1456 breakpoint list.
1457 - All eventpoints without a symbolic address are removed from the
1458 breakpoint list. */
1459 extern void update_breakpoints_after_exec (void);
1460
1461 /* This function can be used to physically remove hardware breakpoints
1462 and watchpoints from the specified traced inferior process, without
1463 modifying the breakpoint package's state. This can be useful for
1464 those targets which support following the processes of a fork() or
1465 vfork() system call, when one of the resulting two processes is to
1466 be detached and allowed to run free.
1467
1468 It is an error to use this function on the process whose id is
1469 inferior_ptid. */
1470 extern int detach_breakpoints (ptid_t ptid);
1471
1472 /* This function is called when program space PSPACE is about to be
1473 deleted. It takes care of updating breakpoints to not reference
1474 this PSPACE anymore. */
1475 extern void breakpoint_program_space_exit (struct program_space *pspace);
1476
1477 extern void set_longjmp_breakpoint (struct thread_info *tp,
1478 struct frame_id frame);
1479 extern void delete_longjmp_breakpoint (int thread);
1480
1481 /* Mark all longjmp breakpoints from THREAD for later deletion. */
1482 extern void delete_longjmp_breakpoint_at_next_stop (int thread);
1483
1484 extern struct breakpoint *set_longjmp_breakpoint_for_call_dummy (void);
1485 extern void check_longjmp_breakpoint_for_call_dummy (struct thread_info *tp);
1486
1487 extern void enable_overlay_breakpoints (void);
1488 extern void disable_overlay_breakpoints (void);
1489
1490 extern void set_std_terminate_breakpoint (void);
1491 extern void delete_std_terminate_breakpoint (void);
1492
1493 /* These functions respectively disable or reenable all currently
1494 enabled watchpoints. When disabled, the watchpoints are marked
1495 call_disabled. When re-enabled, they are marked enabled.
1496
1497 The intended client of these functions is call_function_by_hand.
1498
1499 The inferior must be stopped, and all breakpoints removed, when
1500 these functions are used.
1501
1502 The need for these functions is that on some targets (e.g., HP-UX),
1503 gdb is unable to unwind through the dummy frame that is pushed as
1504 part of the implementation of a call command. Watchpoints can
1505 cause the inferior to stop in places where this frame is visible,
1506 and that can cause execution control to become very confused.
1507
1508 Note that if a user sets breakpoints in an interactively called
1509 function, the call_disabled watchpoints will have been re-enabled
1510 when the first such breakpoint is reached. However, on targets
1511 that are unable to unwind through the call dummy frame, watches
1512 of stack-based storage may then be deleted, because gdb will
1513 believe that their watched storage is out of scope. (Sigh.) */
1514 extern void disable_watchpoints_before_interactive_call_start (void);
1515
1516 extern void enable_watchpoints_after_interactive_call_stop (void);
1517
1518 /* These functions disable and re-enable all breakpoints during
1519 inferior startup. They are intended to be called from solib
1520 code where necessary. This is needed on platforms where the
1521 main executable is relocated at some point during startup
1522 processing, making breakpoint addresses invalid.
1523
1524 If additional breakpoints are created after the routine
1525 disable_breakpoints_before_startup but before the routine
1526 enable_breakpoints_after_startup was called, they will also
1527 be marked as disabled. */
1528 extern void disable_breakpoints_before_startup (void);
1529 extern void enable_breakpoints_after_startup (void);
1530
1531 /* For script interpreters that need to define breakpoint commands
1532 after they've already read the commands into a struct
1533 command_line. */
1534 extern enum command_control_type commands_from_control_command
1535 (const char *arg, struct command_line *cmd);
1536
1537 extern void clear_breakpoint_hit_counts (void);
1538
1539 extern struct breakpoint *get_breakpoint (int num);
1540
1541 /* The following are for displays, which aren't really breakpoints,
1542 but here is as good a place as any for them. */
1543
1544 extern void disable_current_display (void);
1545
1546 extern void do_displays (void);
1547
1548 extern void disable_display (int);
1549
1550 extern void clear_displays (void);
1551
1552 extern void disable_breakpoint (struct breakpoint *);
1553
1554 extern void enable_breakpoint (struct breakpoint *);
1555
1556 extern void breakpoint_set_commands (struct breakpoint *b,
1557 counted_command_line &&commands);
1558
1559 extern void breakpoint_set_silent (struct breakpoint *b, int silent);
1560
1561 extern void breakpoint_set_thread (struct breakpoint *b, int thread);
1562
1563 extern void breakpoint_set_task (struct breakpoint *b, int task);
1564
1565 /* Clear the "inserted" flag in all breakpoints. */
1566 extern void mark_breakpoints_out (void);
1567
1568 extern struct breakpoint *create_jit_event_breakpoint (struct gdbarch *,
1569 CORE_ADDR);
1570
1571 extern struct breakpoint *create_solib_event_breakpoint (struct gdbarch *,
1572 CORE_ADDR);
1573
1574 /* Create an solib event breakpoint at ADDRESS in the current program
1575 space, and immediately try to insert it. Returns a pointer to the
1576 breakpoint on success. Deletes the new breakpoint and returns NULL
1577 if inserting the breakpoint fails. */
1578 extern struct breakpoint *create_and_insert_solib_event_breakpoint
1579 (struct gdbarch *gdbarch, CORE_ADDR address);
1580
1581 extern struct breakpoint *create_thread_event_breakpoint (struct gdbarch *,
1582 CORE_ADDR);
1583
1584 extern void remove_jit_event_breakpoints (void);
1585
1586 extern void remove_solib_event_breakpoints (void);
1587
1588 /* Mark solib event breakpoints of the current program space with
1589 delete at next stop disposition. */
1590 extern void remove_solib_event_breakpoints_at_next_stop (void);
1591
1592 extern void disable_breakpoints_in_shlibs (void);
1593
1594 /* This function returns true if B is a catchpoint. */
1595
1596 extern bool is_catchpoint (struct breakpoint *b);
1597
1598 /* Shared helper function (MI and CLI) for creating and installing
1599 a shared object event catchpoint. If IS_LOAD is true then
1600 the events to be caught are load events, otherwise they are
1601 unload events. If IS_TEMP is true the catchpoint is a
1602 temporary one. If ENABLED is true the catchpoint is
1603 created in an enabled state. */
1604
1605 extern void add_solib_catchpoint (const char *arg, bool is_load, bool is_temp,
1606 bool enabled);
1607
1608 /* Create and insert a new software single step breakpoint for the
1609 current thread. May be called multiple times; each time will add a
1610 new location to the set of potential addresses the next instruction
1611 is at. */
1612 extern void insert_single_step_breakpoint (struct gdbarch *,
1613 const address_space *,
1614 CORE_ADDR);
1615
1616 /* Insert all software single step breakpoints for the current frame.
1617 Return true if any software single step breakpoints are inserted,
1618 otherwise, return false. */
1619 extern int insert_single_step_breakpoints (struct gdbarch *);
1620
1621 /* Check if any hardware watchpoints have triggered, according to the
1622 target. */
1623 int watchpoints_triggered (struct target_waitstatus *);
1624
1625 /* Helper for transparent breakpoint hiding for memory read and write
1626 routines.
1627
1628 Update one of READBUF or WRITEBUF with either the shadows
1629 (READBUF), or the breakpoint instructions (WRITEBUF) of inserted
1630 breakpoints at the memory range defined by MEMADDR and extending
1631 for LEN bytes. If writing, then WRITEBUF is a copy of WRITEBUF_ORG
1632 on entry.*/
1633 extern void breakpoint_xfer_memory (gdb_byte *readbuf, gdb_byte *writebuf,
1634 const gdb_byte *writebuf_org,
1635 ULONGEST memaddr, LONGEST len);
1636
1637 /* Return true if breakpoints should be inserted now. That'll be the
1638 case if either:
1639
1640 - the target has global breakpoints.
1641
1642 - "breakpoint always-inserted" is on, and the target has
1643 execution.
1644
1645 - threads are executing.
1646 */
1647 extern int breakpoints_should_be_inserted_now (void);
1648
1649 /* Called each time new event from target is processed.
1650 Retires previously deleted breakpoint locations that
1651 in our opinion won't ever trigger. */
1652 extern void breakpoint_retire_moribund (void);
1653
1654 /* Set break condition of breakpoint B to EXP.
1655 If FORCE, define the condition even if it is invalid in
1656 all of the breakpoint locations. */
1657 extern void set_breakpoint_condition (struct breakpoint *b, const char *exp,
1658 int from_tty, bool force);
1659
1660 /* Set break condition for the breakpoint with number BPNUM to EXP.
1661 Raise an error if no breakpoint with the given number is found.
1662 Also raise an error if the breakpoint already has stop conditions.
1663 If FORCE, define the condition even if it is invalid in
1664 all of the breakpoint locations. */
1665 extern void set_breakpoint_condition (int bpnum, const char *exp,
1666 int from_tty, bool force);
1667
1668 /* Checks if we are catching syscalls or not.
1669 Returns 0 if not, greater than 0 if we are. */
1670 extern int catch_syscall_enabled (void);
1671
1672 /* Checks if we are catching syscalls with the specific
1673 syscall_number. Used for "filtering" the catchpoints.
1674 Returns 0 if not, greater than 0 if we are. */
1675 extern int catching_syscall_number (int syscall_number);
1676
1677 /* Return a tracepoint with the given number if found. */
1678 extern struct tracepoint *get_tracepoint (int num);
1679
1680 extern struct tracepoint *get_tracepoint_by_number_on_target (int num);
1681
1682 /* Find a tracepoint by parsing a number in the supplied string. */
1683 extern struct tracepoint *
1684 get_tracepoint_by_number (const char **arg,
1685 number_or_range_parser *parser);
1686
1687 /* Return true if B is of tracepoint kind. */
1688
1689 extern bool is_tracepoint (const struct breakpoint *b);
1690
1691 /* Return a vector of all static tracepoints defined at ADDR. */
1692 extern std::vector<breakpoint *> static_tracepoints_here (CORE_ADDR addr);
1693
1694 /* Create an instance of this to start registering breakpoint numbers
1695 for a later "commands" command. */
1696
1697 class scoped_rbreak_breakpoints
1698 {
1699 public:
1700
1701 scoped_rbreak_breakpoints ();
1702 ~scoped_rbreak_breakpoints ();
1703
1704 DISABLE_COPY_AND_ASSIGN (scoped_rbreak_breakpoints);
1705 };
1706
1707 /* Breakpoint iterator function.
1708
1709 Calls a callback function once for each breakpoint, so long as the
1710 callback function returns false. If the callback function returns
1711 true, the iteration will end and the current breakpoint will be
1712 returned. This can be useful for implementing a search for a
1713 breakpoint with arbitrary attributes, or for applying an operation
1714 to every breakpoint. */
1715 extern struct breakpoint *iterate_over_breakpoints
1716 (gdb::function_view<bool (breakpoint *)>);
1717
1718 /* Breakpoint linked list iterator. */
1719
1720 using breakpoint_iterator = next_iterator<breakpoint>;
1721
1722 /* Breakpoint filter to only keep tracepoints. */
1723
1724 struct tracepoint_filter
1725 {
1726 bool operator() (breakpoint *b)
1727 { return is_tracepoint (b); }
1728 };
1729
1730 /* Breakpoint linked list iterator, filtering to only keep tracepoints. */
1731
1732 using tracepoint_iterator
1733 = filtered_iterator<breakpoint_iterator, tracepoint_filter>;
1734
1735 /* Breakpoint linked list range, filtering to only keep tracepoints. */
1736
1737 using tracepoint_range = next_adapter<breakpoint, tracepoint_iterator>;
1738
1739 /* Return a range to iterate over all tracepoints. */
1740
1741 tracepoint_range all_tracepoints ();
1742
1743 /* Nonzero if the specified PC cannot be a location where functions
1744 have been inlined. */
1745
1746 extern int pc_at_non_inline_function (const address_space *aspace,
1747 CORE_ADDR pc,
1748 const struct target_waitstatus *ws);
1749
1750 extern int user_breakpoint_p (struct breakpoint *);
1751
1752 /* Return true if this breakpoint is pending, false if not. */
1753 extern int pending_breakpoint_p (struct breakpoint *);
1754
1755 /* Attempt to determine architecture of location identified by SAL. */
1756 extern struct gdbarch *get_sal_arch (struct symtab_and_line sal);
1757
1758 extern void breakpoint_free_objfile (struct objfile *objfile);
1759
1760 extern const char *ep_parse_optional_if_clause (const char **arg);
1761
1762 /* Print the "Thread ID hit" part of "Thread ID hit Breakpoint N" to
1763 UIOUT iff debugging multiple threads. */
1764 extern void maybe_print_thread_hit_breakpoint (struct ui_out *uiout);
1765
1766 /* Print the specified breakpoint. */
1767 extern void print_breakpoint (breakpoint *bp);
1768
1769 /* Command element for the 'commands' command. */
1770 extern cmd_list_element *commands_cmd_element;
1771
1772 /* Whether to use the fixed output when printing information about a
1773 multi-location breakpoint (see PR 9659). */
1774
1775 extern bool fix_multi_location_breakpoint_output_globally;
1776
1777 /* Deal with "catch catch", "catch throw", and "catch rethrow" commands and
1778 the MI equivalents. Sets up to catch events of type EX_EVENT. When
1779 TEMPFLAG is true only the next matching event is caught after which the
1780 catch-point is deleted. If REGEX is not NULL then only exceptions whose
1781 type name matches REGEX will trigger the event. */
1782
1783 extern void catch_exception_event (enum exception_event_kind ex_event,
1784 const char *regex, bool tempflag,
1785 int from_tty);
1786
1787 #endif /* !defined (BREAKPOINT_H) */
This page took 0.076237 seconds and 4 git commands to generate.