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