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