GDB (API)
/home/stan/gdb/src/gdb/breakpoint.h
Go to the documentation of this file.
00001 /* Data structures associated with breakpoints in GDB.
00002    Copyright (C) 1992-2013 Free Software Foundation, Inc.
00003 
00004    This file is part of GDB.
00005 
00006    This program is free software; you can redistribute it and/or modify
00007    it under the terms of the GNU General Public License as published by
00008    the Free Software Foundation; either version 3 of the License, or
00009    (at your option) any later version.
00010 
00011    This program is distributed in the hope that it will be useful,
00012    but WITHOUT ANY WARRANTY; without even the implied warranty of
00013    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
00014    GNU General Public License for more details.
00015 
00016    You should have received a copy of the GNU General Public License
00017    along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
00018 
00019 #if !defined (BREAKPOINT_H)
00020 #define BREAKPOINT_H 1
00021 
00022 #include "frame.h"
00023 #include "value.h"
00024 #include "vec.h"
00025 #include "ax.h"
00026 #include "command.h"
00027 #include "break-common.h"
00028 
00029 struct value;
00030 struct block;
00031 struct breakpoint_object;
00032 struct get_number_or_range_state;
00033 struct thread_info;
00034 struct bpstats;
00035 struct bp_location;
00036 struct linespec_result;
00037 struct linespec_sals;
00038 
00039 /* This is the maximum number of bytes a breakpoint instruction can
00040    take.  Feel free to increase it.  It's just used in a few places to
00041    size arrays that should be independent of the target
00042    architecture.  */
00043 
00044 #define BREAKPOINT_MAX  16
00045 
00046 
00047 /* Type of breakpoint.  */
00048 /* FIXME In the future, we should fold all other breakpoint-like
00049    things into here.  This includes:
00050 
00051    * single-step (for machines where we have to simulate single
00052    stepping) (probably, though perhaps it is better for it to look as
00053    much as possible like a single-step to wait_for_inferior).  */
00054 
00055 enum bptype
00056   {
00057     bp_none = 0,                /* Eventpoint has been deleted */
00058     bp_breakpoint,              /* Normal breakpoint */
00059     bp_hardware_breakpoint,     /* Hardware assisted breakpoint */
00060     bp_until,                   /* used by until command */
00061     bp_finish,                  /* used by finish command */
00062     bp_watchpoint,              /* Watchpoint */
00063     bp_hardware_watchpoint,     /* Hardware assisted watchpoint */
00064     bp_read_watchpoint,         /* read watchpoint, (hardware assisted) */
00065     bp_access_watchpoint,       /* access watchpoint, (hardware assisted) */
00066     bp_longjmp,                 /* secret breakpoint to find longjmp() */
00067     bp_longjmp_resume,          /* secret breakpoint to escape longjmp() */
00068 
00069     /* Breakpoint placed to the same location(s) like bp_longjmp but used to
00070        protect against stale DUMMY_FRAME.  Multiple bp_longjmp_call_dummy and
00071        one bp_call_dummy are chained together by related_breakpoint for each
00072        DUMMY_FRAME.  */
00073     bp_longjmp_call_dummy,
00074 
00075     /* An internal breakpoint that is installed on the unwinder's
00076        debug hook.  */
00077     bp_exception,
00078     /* An internal breakpoint that is set at the point where an
00079        exception will land.  */
00080     bp_exception_resume,
00081 
00082     /* Used by wait_for_inferior for stepping over subroutine calls,
00083        and for skipping prologues.  */
00084     bp_step_resume,
00085 
00086     /* Used by wait_for_inferior for stepping over signal
00087        handlers.  */
00088     bp_hp_step_resume,
00089 
00090     /* Used to detect when a watchpoint expression has gone out of
00091        scope.  These breakpoints are usually not visible to the user.
00092 
00093        This breakpoint has some interesting properties:
00094 
00095        1) There's always a 1:1 mapping between watchpoints
00096        on local variables and watchpoint_scope breakpoints.
00097 
00098        2) It automatically deletes itself and the watchpoint it's
00099        associated with when hit.
00100 
00101        3) It can never be disabled.  */
00102     bp_watchpoint_scope,
00103 
00104     /* The breakpoint at the end of a call dummy.  See bp_longjmp_call_dummy it
00105        is chained with by related_breakpoint.  */
00106     bp_call_dummy,
00107 
00108     /* A breakpoint set on std::terminate, that is used to catch
00109        otherwise uncaught exceptions thrown during an inferior call.  */
00110     bp_std_terminate,
00111 
00112     /* Some dynamic linkers (HP, maybe Solaris) can arrange for special
00113        code in the inferior to run when significant events occur in the
00114        dynamic linker (for example a library is loaded or unloaded).
00115 
00116        By placing a breakpoint in this magic code GDB will get control
00117        when these significant events occur.  GDB can then re-examine
00118        the dynamic linker's data structures to discover any newly loaded
00119        dynamic libraries.  */
00120     bp_shlib_event,
00121 
00122     /* Some multi-threaded systems can arrange for a location in the 
00123        inferior to be executed when certain thread-related events occur
00124        (such as thread creation or thread death).
00125 
00126        By placing a breakpoint at one of these locations, GDB will get
00127        control when these events occur.  GDB can then update its thread
00128        lists etc.  */
00129 
00130     bp_thread_event,
00131 
00132     /* On the same principal, an overlay manager can arrange to call a
00133        magic location in the inferior whenever there is an interesting
00134        change in overlay status.  GDB can update its overlay tables
00135        and fiddle with breakpoints in overlays when this breakpoint 
00136        is hit.  */
00137 
00138     bp_overlay_event, 
00139 
00140     /* Master copies of longjmp breakpoints.  These are always installed
00141        as soon as an objfile containing longjmp is loaded, but they are
00142        always disabled.  While necessary, temporary clones of bp_longjmp
00143        type will be created and enabled.  */
00144 
00145     bp_longjmp_master,
00146 
00147     /* Master copies of std::terminate breakpoints.  */
00148     bp_std_terminate_master,
00149 
00150     /* Like bp_longjmp_master, but for exceptions.  */
00151     bp_exception_master,
00152 
00153     bp_catchpoint,
00154 
00155     bp_tracepoint,
00156     bp_fast_tracepoint,
00157     bp_static_tracepoint,
00158 
00159     /* A dynamic printf stops at the given location, does a formatted
00160        print, then automatically continues.  (Although this is sort of
00161        like a macro packaging up standard breakpoint functionality,
00162        GDB doesn't have a way to construct types of breakpoint from
00163        elements of behavior.)  */
00164     bp_dprintf,
00165 
00166     /* Event for JIT compiled code generation or deletion.  */
00167     bp_jit_event,
00168 
00169     /* Breakpoint is placed at the STT_GNU_IFUNC resolver.  When hit GDB
00170        inserts new bp_gnu_ifunc_resolver_return at the caller.
00171        bp_gnu_ifunc_resolver is still being kept here as a different thread
00172        may still hit it before bp_gnu_ifunc_resolver_return is hit by the
00173        original thread.  */
00174     bp_gnu_ifunc_resolver,
00175 
00176     /* On its hit GDB now know the resolved address of the target
00177        STT_GNU_IFUNC function.  Associated bp_gnu_ifunc_resolver can be
00178        deleted now and the breakpoint moved to the target function entry
00179        point.  */
00180     bp_gnu_ifunc_resolver_return,
00181   };
00182 
00183 /* States of enablement of breakpoint.  */
00184 
00185 enum enable_state
00186   {
00187     bp_disabled,         /* The eventpoint is inactive, and cannot
00188                             trigger.  */
00189     bp_enabled,          /* The eventpoint is active, and can
00190                             trigger.  */
00191     bp_call_disabled,    /* The eventpoint has been disabled while a
00192                             call into the inferior is "in flight",
00193                             because some eventpoints interfere with
00194                             the implementation of a call on some
00195                             targets.  The eventpoint will be
00196                             automatically enabled and reset when the
00197                             call "lands" (either completes, or stops
00198                             at another eventpoint).  */
00199     bp_permanent         /* There is a breakpoint instruction
00200                             hard-wired into the target's code.  Don't
00201                             try to write another breakpoint
00202                             instruction on top of it, or restore its
00203                             value.  Step over it using the
00204                             architecture's SKIP_INSN macro.  */
00205   };
00206 
00207 
00208 /* Disposition of breakpoint.  Ie: what to do after hitting it.  */
00209 
00210 enum bpdisp
00211   {
00212     disp_del,                   /* Delete it */
00213     disp_del_at_next_stop,      /* Delete at next stop, 
00214                                    whether hit or not */
00215     disp_disable,               /* Disable it */
00216     disp_donttouch              /* Leave it alone */
00217   };
00218 
00219 /* Status of breakpoint conditions used when synchronizing
00220    conditions with the target.  */
00221 
00222 enum condition_status
00223   {
00224     condition_unchanged = 0,
00225     condition_modified,
00226     condition_updated
00227   };
00228 
00229 /* Information used by targets to insert and remove breakpoints.  */
00230 
00231 struct bp_target_info
00232 {
00233   /* Address space at which the breakpoint was placed.  */
00234   struct address_space *placed_address_space;
00235 
00236   /* Address at which the breakpoint was placed.  This is normally the
00237      same as ADDRESS from the bp_location, except when adjustment
00238      happens in gdbarch_breakpoint_from_pc.  The most common form of
00239      adjustment is stripping an alternate ISA marker from the PC which
00240      is used to determine the type of breakpoint to insert.  */
00241   CORE_ADDR placed_address;
00242 
00243   /* If this is a ranged breakpoint, then this field contains the
00244      length of the range that will be watched for execution.  */
00245   int length;
00246 
00247   /* If the breakpoint lives in memory and reading that memory would
00248      give back the breakpoint, instead of the original contents, then
00249      the original contents are cached here.  Only SHADOW_LEN bytes of
00250      this buffer are valid, and only when the breakpoint is inserted.  */
00251   gdb_byte shadow_contents[BREAKPOINT_MAX];
00252 
00253   /* The length of the data cached in SHADOW_CONTENTS.  */
00254   int shadow_len;
00255 
00256   /* The size of the placed breakpoint, according to
00257      gdbarch_breakpoint_from_pc, when the breakpoint was inserted.
00258      This is generally the same as SHADOW_LEN, unless we did not need
00259      to read from the target to implement the memory breakpoint
00260      (e.g. if a remote stub handled the details).  We may still need
00261      the size to remove the breakpoint safely.  */
00262   int placed_size;
00263 
00264   /* Vector of conditions the target should evaluate if it supports target-side
00265      breakpoint conditions.  */
00266   VEC(agent_expr_p) *conditions;
00267 
00268   /* Vector of commands the target should evaluate if it supports
00269      target-side breakpoint commands.  */
00270   VEC(agent_expr_p) *tcommands;
00271 
00272   /* Flag that is true if the breakpoint should be left in place even
00273      when GDB is not connected.  */
00274   int persist;
00275 };
00276 
00277 /* GDB maintains two types of information about each breakpoint (or
00278    watchpoint, or other related event).  The first type corresponds
00279    to struct breakpoint; this is a relatively high-level structure
00280    which contains the source location(s), stopping conditions, user
00281    commands to execute when the breakpoint is hit, and so forth.
00282 
00283    The second type of information corresponds to struct bp_location.
00284    Each breakpoint has one or (eventually) more locations associated
00285    with it, which represent target-specific and machine-specific
00286    mechanisms for stopping the program.  For instance, a watchpoint
00287    expression may require multiple hardware watchpoints in order to
00288    catch all changes in the value of the expression being watched.  */
00289 
00290 enum bp_loc_type
00291 {
00292   bp_loc_software_breakpoint,
00293   bp_loc_hardware_breakpoint,
00294   bp_loc_hardware_watchpoint,
00295   bp_loc_other                  /* Miscellaneous...  */
00296 };
00297 
00298 /* This structure is a collection of function pointers that, if
00299    available, will be called instead of performing the default action
00300    for this bp_loc_type.  */
00301 
00302 struct bp_location_ops
00303 {
00304   /* Destructor.  Releases everything from SELF (but not SELF
00305      itself).  */
00306   void (*dtor) (struct bp_location *self);
00307 };
00308 
00309 struct bp_location
00310 {
00311   /* Chain pointer to the next breakpoint location for
00312      the same parent breakpoint.  */
00313   struct bp_location *next;
00314 
00315   /* Methods associated with this location.  */
00316   const struct bp_location_ops *ops;
00317 
00318   /* The reference count.  */
00319   int refc;
00320 
00321   /* Type of this breakpoint location.  */
00322   enum bp_loc_type loc_type;
00323 
00324   /* Each breakpoint location must belong to exactly one higher-level
00325      breakpoint.  This pointer is NULL iff this bp_location is no
00326      longer attached to a breakpoint.  For example, when a breakpoint
00327      is deleted, its locations may still be found in the
00328      moribund_locations list, or if we had stopped for it, in
00329      bpstats.  */
00330   struct breakpoint *owner;
00331 
00332   /* Conditional.  Break only if this expression's value is nonzero.
00333      Unlike string form of condition, which is associated with
00334      breakpoint, this is associated with location, since if breakpoint
00335      has several locations, the evaluation of expression can be
00336      different for different locations.  Only valid for real
00337      breakpoints; a watchpoint's conditional expression is stored in
00338      the owner breakpoint object.  */
00339   struct expression *cond;
00340 
00341   /* Conditional expression in agent expression
00342      bytecode form.  This is used for stub-side breakpoint
00343      condition evaluation.  */
00344   struct agent_expr *cond_bytecode;
00345 
00346   /* Signals that the condition has changed since the last time
00347      we updated the global location list.  This means the condition
00348      needs to be sent to the target again.  This is used together
00349      with target-side breakpoint conditions.
00350 
00351      condition_unchanged: It means there has been no condition changes.
00352 
00353      condition_modified: It means this location had its condition modified.
00354 
00355      condition_updated: It means we already marked all the locations that are
00356      duplicates of this location and thus we don't need to call
00357      force_breakpoint_reinsertion (...) for this location.  */
00358 
00359   enum condition_status condition_changed;
00360 
00361   struct agent_expr *cmd_bytecode;
00362 
00363   /* Signals that breakpoint conditions and/or commands need to be
00364      re-synched with the target.  This has no use other than
00365      target-side breakpoints.  */
00366   char needs_update;
00367 
00368   /* This location's address is in an unloaded solib, and so this
00369      location should not be inserted.  It will be automatically
00370      enabled when that solib is loaded.  */
00371   char shlib_disabled; 
00372 
00373   /* Is this particular location enabled.  */
00374   char enabled;
00375   
00376   /* Nonzero if this breakpoint is now inserted.  */
00377   char inserted;
00378 
00379   /* Nonzero if this is not the first breakpoint in the list
00380      for the given address.  location of tracepoint can _never_
00381      be duplicated with other locations of tracepoints and other
00382      kinds of breakpoints, because two locations at the same
00383      address may have different actions, so both of these locations
00384      should be downloaded and so that `tfind N' always works.  */
00385   char duplicate;
00386 
00387   /* If we someday support real thread-specific breakpoints, then
00388      the breakpoint location will need a thread identifier.  */
00389 
00390   /* Data for specific breakpoint types.  These could be a union, but
00391      simplicity is more important than memory usage for breakpoints.  */
00392 
00393   /* Architecture associated with this location's address.  May be
00394      different from the breakpoint architecture.  */
00395   struct gdbarch *gdbarch;
00396 
00397   /* The program space associated with this breakpoint location
00398      address.  Note that an address space may be represented in more
00399      than one program space (e.g. each uClinux program will be given
00400      its own program space, but there will only be one address space
00401      for all of them), but we must not insert more than one location
00402      at the same address in the same address space.  */
00403   struct program_space *pspace;
00404 
00405   /* Note that zero is a perfectly valid code address on some platforms
00406      (for example, the mn10200 (OBSOLETE) and mn10300 simulators).  NULL
00407      is not a special value for this field.  Valid for all types except
00408      bp_loc_other.  */
00409   CORE_ADDR address;
00410 
00411   /* For hardware watchpoints, the size of the memory region being
00412      watched.  For hardware ranged breakpoints, the size of the
00413      breakpoint range.  */
00414   int length;
00415 
00416   /* Type of hardware watchpoint.  */
00417   enum target_hw_bp_type watchpoint_type;
00418 
00419   /* For any breakpoint type with an address, this is the section
00420      associated with the address.  Used primarily for overlay
00421      debugging.  */
00422   struct obj_section *section;
00423 
00424   /* Address at which breakpoint was requested, either by the user or
00425      by GDB for internal breakpoints.  This will usually be the same
00426      as ``address'' (above) except for cases in which
00427      ADJUST_BREAKPOINT_ADDRESS has computed a different address at
00428      which to place the breakpoint in order to comply with a
00429      processor's architectual constraints.  */
00430   CORE_ADDR requested_address;
00431 
00432   /* An additional address assigned with this location.  This is currently
00433      only used by STT_GNU_IFUNC resolver breakpoints to hold the address
00434      of the resolver function.  */
00435   CORE_ADDR related_address;
00436 
00437   /* If the location comes from a probe point, this is the probe associated
00438      with it.  */
00439   struct probe *probe;
00440 
00441   char *function_name;
00442 
00443   /* Details of the placed breakpoint, when inserted.  */
00444   struct bp_target_info target_info;
00445 
00446   /* Similarly, for the breakpoint at an overlay's LMA, if necessary.  */
00447   struct bp_target_info overlay_target_info;
00448 
00449   /* In a non-stop mode, it's possible that we delete a breakpoint,
00450      but as we do that, some still running thread hits that breakpoint.
00451      For that reason, we need to keep locations belonging to deleted
00452      breakpoints for a bit, so that don't report unexpected SIGTRAP.
00453      We can't keep such locations forever, so we use a heuristic --
00454      after we process certain number of inferior events since
00455      breakpoint was deleted, we retire all locations of that breakpoint.
00456      This variable keeps a number of events still to go, when
00457      it becomes 0 this location is retired.  */
00458   int events_till_retirement;
00459 
00460   /* Line number which was used to place this location.
00461 
00462      Breakpoint placed into a comment keeps it's user specified line number
00463      despite ADDRESS resolves into a different line number.  */
00464 
00465   int line_number;
00466 
00467   /* Symtab which was used to place this location.  This is used
00468      to find the corresponding source file name.  */
00469 
00470   struct symtab *symtab;
00471 };
00472 
00473 /* Return values for bpstat_explains_signal.  Note that the order of
00474    the constants is important here; they are compared directly in
00475    bpstat_explains_signal.  */
00476 
00477 enum bpstat_signal_value
00478   {
00479     /* bpstat does not explain this signal.  */
00480     BPSTAT_SIGNAL_NO = 0,
00481 
00482     /* bpstat explains this signal; signal should not be delivered.  */
00483     BPSTAT_SIGNAL_HIDE,
00484 
00485     /* bpstat explains this signal; signal should be delivered.  */
00486     BPSTAT_SIGNAL_PASS
00487   };
00488 
00489 /* This structure is a collection of function pointers that, if available,
00490    will be called instead of the performing the default action for this
00491    bptype.  */
00492 
00493 struct breakpoint_ops
00494 {
00495   /* Destructor.  Releases everything from SELF (but not SELF
00496      itself).  */
00497   void (*dtor) (struct breakpoint *self);
00498 
00499   /* Allocate a location for this breakpoint.  */
00500   struct bp_location * (*allocate_location) (struct breakpoint *);
00501 
00502   /* Reevaluate a breakpoint.  This is necessary after symbols change
00503      (e.g., an executable or DSO was loaded, or the inferior just
00504      started).  */
00505   void (*re_set) (struct breakpoint *self);
00506 
00507   /* Insert the breakpoint or watchpoint or activate the catchpoint.
00508      Return 0 for success, 1 if the breakpoint, watchpoint or
00509      catchpoint type is not supported, -1 for failure.  */
00510   int (*insert_location) (struct bp_location *);
00511 
00512   /* Remove the breakpoint/catchpoint that was previously inserted
00513      with the "insert" method above.  Return 0 for success, 1 if the
00514      breakpoint, watchpoint or catchpoint type is not supported,
00515      -1 for failure.  */
00516   int (*remove_location) (struct bp_location *);
00517 
00518   /* Return true if it the target has stopped due to hitting
00519      breakpoint location BL.  This function does not check if we
00520      should stop, only if BL explains the stop.  ASPACE is the address
00521      space in which the event occurred, BP_ADDR is the address at
00522      which the inferior stopped, and WS is the target_waitstatus
00523      describing the event.  */
00524   int (*breakpoint_hit) (const struct bp_location *bl,
00525                          struct address_space *aspace,
00526                          CORE_ADDR bp_addr,
00527                          const struct target_waitstatus *ws);
00528 
00529   /* Check internal conditions of the breakpoint referred to by BS.
00530      If we should not stop for this breakpoint, set BS->stop to 0.  */
00531   void (*check_status) (struct bpstats *bs);
00532 
00533   /* Tell how many hardware resources (debug registers) are needed
00534      for this breakpoint.  If this function is not provided, then
00535      the breakpoint or watchpoint needs one debug register.  */
00536   int (*resources_needed) (const struct bp_location *);
00537 
00538   /* Tell whether we can downgrade from a hardware watchpoint to a software
00539      one.  If not, the user will not be able to enable the watchpoint when
00540      there are not enough hardware resources available.  */
00541   int (*works_in_software_mode) (const struct breakpoint *);
00542 
00543   /* The normal print routine for this breakpoint, called when we
00544      hit it.  */
00545   enum print_stop_action (*print_it) (struct bpstats *bs);
00546 
00547   /* Display information about this breakpoint, for "info
00548      breakpoints".  */
00549   void (*print_one) (struct breakpoint *, struct bp_location **);
00550 
00551   /* Display extra information about this breakpoint, below the normal
00552      breakpoint description in "info breakpoints".
00553 
00554      In the example below, the "address range" line was printed
00555      by print_one_detail_ranged_breakpoint.
00556 
00557      (gdb) info breakpoints
00558      Num     Type           Disp Enb Address    What
00559      2       hw breakpoint  keep y              in main at test-watch.c:70
00560              address range: [0x10000458, 0x100004c7]
00561 
00562    */
00563   void (*print_one_detail) (const struct breakpoint *, struct ui_out *);
00564 
00565   /* Display information about this breakpoint after setting it
00566      (roughly speaking; this is called from "mention").  */
00567   void (*print_mention) (struct breakpoint *);
00568 
00569   /* Print to FP the CLI command that recreates this breakpoint.  */
00570   void (*print_recreate) (struct breakpoint *, struct ui_file *fp);
00571 
00572   /* Create SALs from address string, storing the result in linespec_result.
00573 
00574      For an explanation about the arguments, see the function
00575      `create_sals_from_address_default'.
00576 
00577      This function is called inside `create_breakpoint'.  */
00578   void (*create_sals_from_address) (char **, struct linespec_result *,
00579                                     enum bptype, char *, char **);
00580 
00581   /* This method will be responsible for creating a breakpoint given its SALs.
00582      Usually, it just calls `create_breakpoints_sal' (for ordinary
00583      breakpoints).  However, there may be some special cases where we might
00584      need to do some tweaks, e.g., see
00585      `strace_marker_create_breakpoints_sal'.
00586 
00587      This function is called inside `create_breakpoint'.  */
00588   void (*create_breakpoints_sal) (struct gdbarch *,
00589                                   struct linespec_result *,
00590                                   char *, char *,
00591                                   enum bptype, enum bpdisp, int, int,
00592                                   int, const struct breakpoint_ops *,
00593                                   int, int, int, unsigned);
00594 
00595   /* Given the address string (second parameter), this method decodes it
00596      and provides the SAL locations related to it.  For ordinary breakpoints,
00597      it calls `decode_line_full'.
00598 
00599      This function is called inside `addr_string_to_sals'.  */
00600   void (*decode_linespec) (struct breakpoint *, char **,
00601                            struct symtabs_and_lines *);
00602 
00603   /* Return true if this breakpoint explains a signal, but the signal
00604      should still be delivered to the inferior.  This is used to make
00605      'catch signal' interact properly with 'handle'; see
00606      bpstat_explains_signal.  */
00607   enum bpstat_signal_value (*explains_signal) (struct breakpoint *,
00608                                                enum gdb_signal);
00609 
00610   /* Called after evaluating the breakpoint's condition,
00611      and only if it evaluated true.  */
00612   void (*after_condition_true) (struct bpstats *bs);
00613 };
00614 
00615 /* Helper for breakpoint_ops->print_recreate implementations.  Prints
00616    the "thread" or "task" condition of B, and then a newline.
00617 
00618    Necessary because most breakpoint implementations accept
00619    thread/task conditions at the end of the spec line, like "break foo
00620    thread 1", which needs outputting before any breakpoint-type
00621    specific extra command necessary for B's recreation.  */
00622 extern void print_recreate_thread (struct breakpoint *b, struct ui_file *fp);
00623 
00624 enum watchpoint_triggered
00625 {
00626   /* This watchpoint definitely did not trigger.  */
00627   watch_triggered_no = 0,
00628 
00629   /* Some hardware watchpoint triggered, and it might have been this
00630      one, but we do not know which it was.  */
00631   watch_triggered_unknown,
00632 
00633   /* This hardware watchpoint definitely did trigger.  */
00634   watch_triggered_yes  
00635 };
00636 
00637 typedef struct bp_location *bp_location_p;
00638 DEF_VEC_P(bp_location_p);
00639 
00640 /* A reference-counted struct command_line.  This lets multiple
00641    breakpoints share a single command list.  This is an implementation
00642    detail to the breakpoints module.  */
00643 struct counted_command_line;
00644 
00645 /* Some targets (e.g., embedded PowerPC) need two debug registers to set
00646    a watchpoint over a memory region.  If this flag is true, GDB will use
00647    only one register per watchpoint, thus assuming that all acesses that
00648    modify a memory location happen at its starting address. */
00649 
00650 extern int target_exact_watchpoints;
00651 
00652 /* Note that the ->silent field is not currently used by any commands
00653    (though the code is in there if it was to be, and set_raw_breakpoint
00654    does set it to 0).  I implemented it because I thought it would be
00655    useful for a hack I had to put in; I'm going to leave it in because
00656    I can see how there might be times when it would indeed be useful */
00657 
00658 /* This is for all kinds of breakpoints.  */
00659 
00660 struct breakpoint
00661   {
00662     /* Methods associated with this breakpoint.  */
00663     const struct breakpoint_ops *ops;
00664 
00665     struct breakpoint *next;
00666     /* Type of breakpoint.  */
00667     enum bptype type;
00668     /* Zero means disabled; remember the info but don't break here.  */
00669     enum enable_state enable_state;
00670     /* What to do with this breakpoint after we hit it.  */
00671     enum bpdisp disposition;
00672     /* Number assigned to distinguish breakpoints.  */
00673     int number;
00674 
00675     /* Location(s) associated with this high-level breakpoint.  */
00676     struct bp_location *loc;
00677 
00678     /* Non-zero means a silent breakpoint (don't print frame info
00679        if we stop here).  */
00680     unsigned char silent;
00681     /* Non-zero means display ADDR_STRING to the user verbatim.  */
00682     unsigned char display_canonical;
00683     /* Number of stops at this breakpoint that should
00684        be continued automatically before really stopping.  */
00685     int ignore_count;
00686 
00687     /* Number of stops at this breakpoint before it will be
00688        disabled.  */
00689     int enable_count;
00690 
00691     /* Chain of command lines to execute when this breakpoint is
00692        hit.  */
00693     struct counted_command_line *commands;
00694     /* Stack depth (address of frame).  If nonzero, break only if fp
00695        equals this.  */
00696     struct frame_id frame_id;
00697 
00698     /* The program space used to set the breakpoint.  This is only set
00699        for breakpoints which are specific to a program space; for
00700        non-thread-specific ordinary breakpoints this is NULL.  */
00701     struct program_space *pspace;
00702 
00703     /* String we used to set the breakpoint (malloc'd).  */
00704     char *addr_string;
00705 
00706     /* The filter that should be passed to decode_line_full when
00707        re-setting this breakpoint.  This may be NULL, but otherwise is
00708        allocated with xmalloc.  */
00709     char *filter;
00710 
00711     /* For a ranged breakpoint, the string we used to find
00712        the end of the range (malloc'd).  */
00713     char *addr_string_range_end;
00714 
00715     /* Architecture we used to set the breakpoint.  */
00716     struct gdbarch *gdbarch;
00717     /* Language we used to set the breakpoint.  */
00718     enum language language;
00719     /* Input radix we used to set the breakpoint.  */
00720     int input_radix;
00721     /* String form of the breakpoint condition (malloc'd), or NULL if
00722        there is no condition.  */
00723     char *cond_string;
00724 
00725     /* String form of extra parameters, or NULL if there are none.
00726      Malloc'd.  */
00727     char *extra_string;
00728 
00729     /* Holds the address of the related watchpoint_scope breakpoint
00730        when using watchpoints on local variables (might the concept of
00731        a related breakpoint be useful elsewhere, if not just call it
00732        the watchpoint_scope breakpoint or something like that.
00733        FIXME).  */
00734     struct breakpoint *related_breakpoint;
00735 
00736     /* Thread number for thread-specific breakpoint, 
00737        or -1 if don't care.  */
00738     int thread;
00739 
00740     /* Ada task number for task-specific breakpoint, 
00741        or 0 if don't care.  */
00742     int task;
00743 
00744     /* Count of the number of times this breakpoint was taken, dumped
00745        with the info, but not used for anything else.  Useful for
00746        seeing how many times you hit a break prior to the program
00747        aborting, so you can back up to just before the abort.  */
00748     int hit_count;
00749 
00750     /* Is breakpoint's condition not yet parsed because we found
00751        no location initially so had no context to parse
00752        the condition in.  */
00753     int condition_not_parsed;
00754 
00755     /* With a Python scripting enabled GDB, store a reference to the
00756        Python object that has been associated with this breakpoint.
00757        This is always NULL for a GDB that is not script enabled.  It
00758        can sometimes be NULL for enabled GDBs as not all breakpoint
00759        types are tracked by the Python scripting API.  */
00760     struct breakpoint_object *py_bp_object;
00761   };
00762 
00763 /* An instance of this type is used to represent a watchpoint.  It
00764    includes a "struct breakpoint" as a kind of base class; users
00765    downcast to "struct breakpoint *" when needed.  */
00766 
00767 struct watchpoint
00768 {
00769   /* The base class.  */
00770   struct breakpoint base;
00771 
00772   /* String form of exp to use for displaying to the user (malloc'd),
00773      or NULL if none.  */
00774   char *exp_string;
00775   /* String form to use for reparsing of EXP (malloc'd) or NULL.  */
00776   char *exp_string_reparse;
00777 
00778   /* The expression we are watching, or NULL if not a watchpoint.  */
00779   struct expression *exp;
00780   /* The largest block within which it is valid, or NULL if it is
00781      valid anywhere (e.g. consists just of global symbols).  */
00782   const struct block *exp_valid_block;
00783   /* The conditional expression if any.  */
00784   struct expression *cond_exp;
00785   /* The largest block within which it is valid, or NULL if it is
00786      valid anywhere (e.g. consists just of global symbols).  */
00787   const struct block *cond_exp_valid_block;
00788   /* Value of the watchpoint the last time we checked it, or NULL when
00789      we do not know the value yet or the value was not readable.  VAL
00790      is never lazy.  */
00791   struct value *val;
00792   /* Nonzero if VAL is valid.  If VAL_VALID is set but VAL is NULL,
00793      then an error occurred reading the value.  */
00794   int val_valid;
00795 
00796   /* Holds the frame address which identifies the frame this
00797      watchpoint should be evaluated in, or `null' if the watchpoint
00798      should be evaluated on the outermost frame.  */
00799   struct frame_id watchpoint_frame;
00800 
00801   /* Holds the thread which identifies the frame this watchpoint
00802      should be considered in scope for, or `null_ptid' if the
00803      watchpoint should be evaluated in all threads.  */
00804   ptid_t watchpoint_thread;
00805 
00806   /* For hardware watchpoints, the triggered status according to the
00807      hardware.  */
00808   enum watchpoint_triggered watchpoint_triggered;
00809 
00810   /* Whether this watchpoint is exact (see
00811      target_exact_watchpoints).  */
00812   int exact;
00813 
00814   /* The mask address for a masked hardware watchpoint.  */
00815   CORE_ADDR hw_wp_mask;
00816 };
00817 
00818 /* Return true if BPT is either a software breakpoint or a hardware
00819    breakpoint.  */
00820 
00821 extern int is_breakpoint (const struct breakpoint *bpt);
00822 
00823 /* Returns true if BPT is really a watchpoint.  */
00824 
00825 extern int is_watchpoint (const struct breakpoint *bpt);
00826 
00827 /* An instance of this type is used to represent all kinds of
00828    tracepoints.  It includes a "struct breakpoint" as a kind of base
00829    class; users downcast to "struct breakpoint *" when needed.  */
00830 
00831 struct tracepoint
00832 {
00833   /* The base class.  */
00834   struct breakpoint base;
00835 
00836   /* Number of times this tracepoint should single-step and collect
00837      additional data.  */
00838   long step_count;
00839 
00840   /* Number of times this tracepoint should be hit before
00841      disabling/ending.  */
00842   int pass_count;
00843 
00844   /* The number of the tracepoint on the target.  */
00845   int number_on_target;
00846 
00847   /* The total space taken by all the trace frames for this
00848      tracepoint.  */
00849   ULONGEST traceframe_usage;
00850 
00851   /* The static tracepoint marker id, if known.  */
00852   char *static_trace_marker_id;
00853 
00854   /* LTTng/UST allow more than one marker with the same ID string,
00855      although it unadvised because it confuses tools.  When setting
00856      static tracepoints by marker ID, this will record the index in
00857      the array of markers we found for the given marker ID for which
00858      this static tracepoint corresponds.  When resetting breakpoints,
00859      we will use this index to try to find the same marker again.  */
00860   int static_trace_marker_id_idx;
00861 };
00862 
00863 typedef struct breakpoint *breakpoint_p;
00864 DEF_VEC_P(breakpoint_p);
00865 
00866 /* The following stuff is an abstract data type "bpstat" ("breakpoint
00867    status").  This provides the ability to determine whether we have
00868    stopped at a breakpoint, and what we should do about it.  */
00869 
00870 typedef struct bpstats *bpstat;
00871 
00872 /* Clears a chain of bpstat, freeing storage
00873    of each.  */
00874 extern void bpstat_clear (bpstat *);
00875 
00876 /* Return a copy of a bpstat.  Like "bs1 = bs2" but all storage that
00877    is part of the bpstat is copied as well.  */
00878 extern bpstat bpstat_copy (bpstat);
00879 
00880 extern bpstat bpstat_stop_status (struct address_space *aspace,
00881                                   CORE_ADDR pc, ptid_t ptid,
00882                                   const struct target_waitstatus *ws);
00883 
00884 /* This bpstat_what stuff tells wait_for_inferior what to do with a
00885    breakpoint (a challenging task).
00886 
00887    The enum values order defines priority-like order of the actions.
00888    Once you've decided that some action is appropriate, you'll never
00889    go back and decide something of a lower priority is better.  Each
00890    of these actions is mutually exclusive with the others.  That
00891    means, that if you find yourself adding a new action class here and
00892    wanting to tell GDB that you have two simultaneous actions to
00893    handle, something is wrong, and you probably don't actually need a
00894    new action type.
00895 
00896    Note that a step resume breakpoint overrides another breakpoint of
00897    signal handling (see comment in wait_for_inferior at where we set
00898    the step_resume breakpoint).  */
00899 
00900 enum bpstat_what_main_action
00901   {
00902     /* Perform various other tests; that is, this bpstat does not
00903        say to perform any action (e.g. failed watchpoint and nothing
00904        else).  */
00905     BPSTAT_WHAT_KEEP_CHECKING,
00906 
00907     /* Remove breakpoints, single step once, then put them back in and
00908        go back to what we were doing.  It's possible that this should
00909        be removed from the main_action and put into a separate field,
00910        to more cleanly handle
00911        BPSTAT_WHAT_CLEAR_LONGJMP_RESUME_SINGLE.  */
00912     BPSTAT_WHAT_SINGLE,
00913 
00914     /* Set longjmp_resume breakpoint, remove all other breakpoints,
00915        and continue.  The "remove all other breakpoints" part is
00916        required if we are also stepping over another breakpoint as
00917        well as doing the longjmp handling.  */
00918     BPSTAT_WHAT_SET_LONGJMP_RESUME,
00919 
00920     /* Clear longjmp_resume breakpoint, then handle as
00921        BPSTAT_WHAT_KEEP_CHECKING.  */
00922     BPSTAT_WHAT_CLEAR_LONGJMP_RESUME,
00923 
00924     /* Clear step resume breakpoint, and keep checking.  */
00925     BPSTAT_WHAT_STEP_RESUME,
00926 
00927     /* Rather than distinguish between noisy and silent stops here, it
00928        might be cleaner to have bpstat_print make that decision (also
00929        taking into account stop_print_frame and source_only).  But the
00930        implications are a bit scary (interaction with auto-displays,
00931        etc.), so I won't try it.  */
00932 
00933     /* Stop silently.  */
00934     BPSTAT_WHAT_STOP_SILENT,
00935 
00936     /* Stop and print.  */
00937     BPSTAT_WHAT_STOP_NOISY,
00938 
00939     /* Clear step resume breakpoint, and keep checking.  High-priority
00940        step-resume breakpoints are used when even if there's a user
00941        breakpoint at the current PC when we set the step-resume
00942        breakpoint, we don't want to re-handle any breakpoint other
00943        than the step-resume when it's hit; instead we want to move
00944        past the breakpoint.  This is used in the case of skipping
00945        signal handlers.  */
00946     BPSTAT_WHAT_HP_STEP_RESUME,
00947   };
00948 
00949 /* An enum indicating the kind of "stack dummy" stop.  This is a bit
00950    of a misnomer because only one kind of truly a stack dummy.  */
00951 enum stop_stack_kind
00952   {
00953     /* We didn't stop at a stack dummy breakpoint.  */
00954     STOP_NONE = 0,
00955 
00956     /* Stopped at a stack dummy.  */
00957     STOP_STACK_DUMMY,
00958 
00959     /* Stopped at std::terminate.  */
00960     STOP_STD_TERMINATE
00961   };
00962 
00963 struct bpstat_what
00964   {
00965     enum bpstat_what_main_action main_action;
00966 
00967     /* Did we hit a call dummy breakpoint?  This only goes with a
00968        main_action of BPSTAT_WHAT_STOP_SILENT or
00969        BPSTAT_WHAT_STOP_NOISY (the concept of continuing from a call
00970        dummy without popping the frame is not a useful one).  */
00971     enum stop_stack_kind call_dummy;
00972 
00973     /* Used for BPSTAT_WHAT_SET_LONGJMP_RESUME and
00974        BPSTAT_WHAT_CLEAR_LONGJMP_RESUME.  True if we are handling a
00975        longjmp, false if we are handling an exception.  */
00976     int is_longjmp;
00977   };
00978 
00979 /* The possible return values for print_bpstat, print_it_normal,
00980    print_it_done, print_it_noop.  */
00981 enum print_stop_action
00982   {
00983     /* We printed nothing or we need to do some more analysis.  */
00984     PRINT_UNKNOWN = -1,
00985 
00986     /* We printed something, and we *do* desire that something to be
00987        followed by a location.  */
00988     PRINT_SRC_AND_LOC,
00989 
00990     /* We printed something, and we do *not* desire that something to
00991        be followed by a location.  */
00992     PRINT_SRC_ONLY,
00993 
00994     /* We already printed all we needed to print, don't print anything
00995        else.  */
00996     PRINT_NOTHING
00997   };
00998 
00999 /* Tell what to do about this bpstat.  */
01000 struct bpstat_what bpstat_what (bpstat);
01001 
01002 /* Find the bpstat associated with a breakpoint.  NULL otherwise.  */
01003 bpstat bpstat_find_breakpoint (bpstat, struct breakpoint *);
01004 
01005 /* Nonzero if a signal that we got in wait() was due to circumstances
01006    explained by the bpstat; and the signal should therefore not be
01007    delivered.  */
01008 extern enum bpstat_signal_value bpstat_explains_signal (bpstat,
01009                                                         enum gdb_signal);
01010 
01011 /* Nonzero is this bpstat causes a stop.  */
01012 extern int bpstat_causes_stop (bpstat);
01013 
01014 /* Nonzero if we should step constantly (e.g. watchpoints on machines
01015    without hardware support).  This isn't related to a specific bpstat,
01016    just to things like whether watchpoints are set.  */
01017 extern int bpstat_should_step (void);
01018 
01019 /* Print a message indicating what happened.  Returns nonzero to
01020    say that only the source line should be printed after this (zero
01021    return means print the frame as well as the source line).  */
01022 extern enum print_stop_action bpstat_print (bpstat, int);
01023 
01024 /* Put in *NUM the breakpoint number of the first breakpoint we are
01025    stopped at.  *BSP upon return is a bpstat which points to the
01026    remaining breakpoints stopped at (but which is not guaranteed to be
01027    good for anything but further calls to bpstat_num).
01028 
01029    Return 0 if passed a bpstat which does not indicate any breakpoints.
01030    Return -1 if stopped at a breakpoint that has been deleted since
01031    we set it.
01032    Return 1 otherwise.  */
01033 extern int bpstat_num (bpstat *, int *);
01034 
01035 /* Perform actions associated with the stopped inferior.  Actually, we
01036    just use this for breakpoint commands.  Perhaps other actions will
01037    go here later, but this is executed at a late time (from the
01038    command loop).  */
01039 extern void bpstat_do_actions (void);
01040 
01041 /* Modify all entries of STOP_BPSTAT of INFERIOR_PTID so that the actions will
01042    not be performed.  */
01043 extern void bpstat_clear_actions (void);
01044 
01045 /* Implementation:  */
01046 
01047 /* Values used to tell the printing routine how to behave for this
01048    bpstat.  */
01049 enum bp_print_how
01050   {
01051     /* This is used when we want to do a normal printing of the reason
01052        for stopping.  The output will depend on the type of eventpoint
01053        we are dealing with.  This is the default value, most commonly
01054        used.  */
01055     print_it_normal,
01056     /* This is used when nothing should be printed for this bpstat
01057        entry.  */
01058     print_it_noop,
01059     /* This is used when everything which needs to be printed has
01060        already been printed.  But we still want to print the frame.  */
01061     print_it_done
01062   };
01063 
01064 struct bpstats
01065   {
01066     /* Linked list because there can be more than one breakpoint at
01067        the same place, and a bpstat reflects the fact that all have
01068        been hit.  */
01069     bpstat next;
01070 
01071     /* Location that caused the stop.  Locations are refcounted, so
01072        this will never be NULL.  Note that this location may end up
01073        detached from a breakpoint, but that does not necessary mean
01074        that the struct breakpoint is gone.  E.g., consider a
01075        watchpoint with a condition that involves an inferior function
01076        call.  Watchpoint locations are recreated often (on resumes,
01077        hence on infcalls too).  Between creating the bpstat and after
01078        evaluating the watchpoint condition, this location may hence
01079        end up detached from its original owner watchpoint, even though
01080        the watchpoint is still listed.  If it's condition evaluates as
01081        true, we still want this location to cause a stop, and we will
01082        still need to know which watchpoint it was originally attached.
01083        What this means is that we should not (in most cases) follow
01084        the `bpstat->bp_location->owner' link, but instead use the
01085        `breakpoint_at' field below.  */
01086     struct bp_location *bp_location_at;
01087 
01088     /* Breakpoint that caused the stop.  This is nullified if the
01089        breakpoint ends up being deleted.  See comments on
01090        `bp_location_at' above for why do we need this field instead of
01091        following the location's owner.  */
01092     struct breakpoint *breakpoint_at;
01093 
01094     /* The associated command list.  */
01095     struct counted_command_line *commands;
01096 
01097     /* Old value associated with a watchpoint.  */
01098     struct value *old_val;
01099 
01100     /* Nonzero if this breakpoint tells us to print the frame.  */
01101     char print;
01102 
01103     /* Nonzero if this breakpoint tells us to stop.  */
01104     char stop;
01105 
01106     /* Tell bpstat_print and print_bp_stop_message how to print stuff
01107        associated with this element of the bpstat chain.  */
01108     enum bp_print_how print_it;
01109   };
01110 
01111 enum inf_context
01112   {
01113     inf_starting,
01114     inf_running,
01115     inf_exited,
01116     inf_execd
01117   };
01118 
01119 /* The possible return values for breakpoint_here_p.
01120    We guarantee that zero always means "no breakpoint here".  */
01121 enum breakpoint_here
01122   {
01123     no_breakpoint_here = 0,
01124     ordinary_breakpoint_here,
01125     permanent_breakpoint_here
01126   };
01127 
01128 
01129 /* Prototypes for breakpoint-related functions.  */
01130 
01131 extern enum breakpoint_here breakpoint_here_p (struct address_space *, 
01132                                                CORE_ADDR);
01133 
01134 extern int moribund_breakpoint_here_p (struct address_space *, CORE_ADDR);
01135 
01136 extern int breakpoint_inserted_here_p (struct address_space *, CORE_ADDR);
01137 
01138 extern int regular_breakpoint_inserted_here_p (struct address_space *, 
01139                                                CORE_ADDR);
01140 
01141 extern int software_breakpoint_inserted_here_p (struct address_space *, 
01142                                                 CORE_ADDR);
01143 
01144 /* Returns true if there's a hardware watchpoint or access watchpoint
01145    inserted in the range defined by ADDR and LEN.  */
01146 extern int hardware_watchpoint_inserted_in_range (struct address_space *,
01147                                                   CORE_ADDR addr,
01148                                                   ULONGEST len);
01149 
01150 extern int breakpoint_thread_match (struct address_space *, 
01151                                     CORE_ADDR, ptid_t);
01152 
01153 extern void until_break_command (char *, int, int);
01154 
01155 /* Initialize a struct bp_location.  */
01156 
01157 extern void init_bp_location (struct bp_location *loc,
01158                               const struct bp_location_ops *ops,
01159                               struct breakpoint *owner);
01160 
01161 extern void update_breakpoint_locations (struct breakpoint *b,
01162                                          struct symtabs_and_lines sals,
01163                                          struct symtabs_and_lines sals_end);
01164 
01165 extern void breakpoint_re_set (void);
01166 
01167 extern void breakpoint_re_set_thread (struct breakpoint *);
01168 
01169 extern struct breakpoint *set_momentary_breakpoint
01170   (struct gdbarch *, struct symtab_and_line, struct frame_id, enum bptype);
01171 
01172 extern struct breakpoint *set_momentary_breakpoint_at_pc
01173   (struct gdbarch *, CORE_ADDR pc, enum bptype type);
01174 
01175 extern struct breakpoint *clone_momentary_breakpoint (struct breakpoint *bpkt);
01176 
01177 extern void set_ignore_count (int, int, int);
01178 
01179 extern void breakpoint_init_inferior (enum inf_context);
01180 
01181 extern struct cleanup *make_cleanup_delete_breakpoint (struct breakpoint *);
01182 
01183 extern void delete_breakpoint (struct breakpoint *);
01184 
01185 extern void breakpoint_auto_delete (bpstat);
01186 
01187 typedef void (*walk_bp_location_callback) (struct bp_location *, void *);
01188 
01189 extern void iterate_over_bp_locations (walk_bp_location_callback);
01190 
01191 /* Return the chain of command lines to execute when this breakpoint
01192    is hit.  */
01193 extern struct command_line *breakpoint_commands (struct breakpoint *b);
01194 
01195 /* Return a string image of DISP.  The string is static, and thus should
01196    NOT be deallocated after use.  */
01197 const char *bpdisp_text (enum bpdisp disp);
01198 
01199 extern void break_command (char *, int);
01200 
01201 extern void hbreak_command_wrapper (char *, int);
01202 extern void thbreak_command_wrapper (char *, int);
01203 extern void rbreak_command_wrapper (char *, int);
01204 extern void watch_command_wrapper (char *, int, int);
01205 extern void awatch_command_wrapper (char *, int, int);
01206 extern void rwatch_command_wrapper (char *, int, int);
01207 extern void tbreak_command (char *, int);
01208 
01209 extern struct breakpoint_ops base_breakpoint_ops;
01210 extern struct breakpoint_ops bkpt_breakpoint_ops;
01211 extern struct breakpoint_ops tracepoint_breakpoint_ops;
01212 extern struct breakpoint_ops dprintf_breakpoint_ops;
01213 
01214 extern void initialize_breakpoint_ops (void);
01215 
01216 /* Arguments to pass as context to some catch command handlers.  */
01217 #define CATCH_PERMANENT ((void *) (uintptr_t) 0)
01218 #define CATCH_TEMPORARY ((void *) (uintptr_t) 1)
01219 
01220 /* Like add_cmd, but add the command to both the "catch" and "tcatch"
01221    lists, and pass some additional user data to the command
01222    function.  */
01223 
01224 extern void
01225   add_catch_command (char *name, char *docstring,
01226                      void (*sfunc) (char *args, int from_tty,
01227                                     struct cmd_list_element *command),
01228                      completer_ftype *completer,
01229                      void *user_data_catch,
01230                      void *user_data_tcatch);
01231 
01232 /* Initialize a breakpoint struct for Ada exception catchpoints.  */
01233 
01234 extern void
01235   init_ada_exception_breakpoint (struct breakpoint *b,
01236                                  struct gdbarch *gdbarch,
01237                                  struct symtab_and_line sal,
01238                                  char *addr_string,
01239                                  const struct breakpoint_ops *ops,
01240                                  int tempflag,
01241                                  int enabled,
01242                                  int from_tty);
01243 
01244 extern void init_catchpoint (struct breakpoint *b,
01245                              struct gdbarch *gdbarch, int tempflag,
01246                              char *cond_string,
01247                              const struct breakpoint_ops *ops);
01248 
01249 /* Add breakpoint B on the breakpoint list, and notify the user, the
01250    target and breakpoint_created observers of its existence.  If
01251    INTERNAL is non-zero, the breakpoint number will be allocated from
01252    the internal breakpoint count.  If UPDATE_GLL is non-zero,
01253    update_global_location_list will be called.  */
01254 
01255 extern void install_breakpoint (int internal, struct breakpoint *b,
01256                                 int update_gll);
01257 
01258 /* Flags that can be passed down to create_breakpoint, etc., to affect
01259    breakpoint creation in several ways.  */
01260 
01261 enum breakpoint_create_flags
01262   {
01263     /* We're adding a breakpoint to our tables that is already
01264        inserted in the target.  */
01265     CREATE_BREAKPOINT_FLAGS_INSERTED = 1 << 0
01266   };
01267 
01268 extern int create_breakpoint (struct gdbarch *gdbarch, char *arg,
01269                               char *cond_string, int thread,
01270                               char *extra_string,
01271                               int parse_arg,
01272                               int tempflag, enum bptype wanted_type,
01273                               int ignore_count,
01274                               enum auto_boolean pending_break_support,
01275                               const struct breakpoint_ops *ops,
01276                               int from_tty,
01277                               int enabled,
01278                               int internal, unsigned flags);
01279 
01280 extern void insert_breakpoints (void);
01281 
01282 extern int remove_breakpoints (void);
01283 
01284 extern int remove_breakpoints_pid (int pid);
01285 
01286 /* This function can be used to physically insert eventpoints from the
01287    specified traced inferior process, without modifying the breakpoint
01288    package's state.  This can be useful for those targets which
01289    support following the processes of a fork() or vfork() system call,
01290    when both of the resulting two processes are to be followed.  */
01291 extern int reattach_breakpoints (int);
01292 
01293 /* This function can be used to update the breakpoint package's state
01294    after an exec() system call has been executed.
01295 
01296    This function causes the following:
01297 
01298    - All eventpoints are marked "not inserted".
01299    - All eventpoints with a symbolic address are reset such that
01300    the symbolic address must be reevaluated before the eventpoints
01301    can be reinserted.
01302    - The solib breakpoints are explicitly removed from the breakpoint
01303    list.
01304    - A step-resume breakpoint, if any, is explicitly removed from the
01305    breakpoint list.
01306    - All eventpoints without a symbolic address are removed from the
01307    breakpoint list.  */
01308 extern void update_breakpoints_after_exec (void);
01309 
01310 /* This function can be used to physically remove hardware breakpoints
01311    and watchpoints from the specified traced inferior process, without
01312    modifying the breakpoint package's state.  This can be useful for
01313    those targets which support following the processes of a fork() or
01314    vfork() system call, when one of the resulting two processes is to
01315    be detached and allowed to run free.
01316 
01317    It is an error to use this function on the process whose id is
01318    inferior_ptid.  */
01319 extern int detach_breakpoints (ptid_t ptid);
01320 
01321 /* This function is called when program space PSPACE is about to be
01322    deleted.  It takes care of updating breakpoints to not reference
01323    this PSPACE anymore.  */
01324 extern void breakpoint_program_space_exit (struct program_space *pspace);
01325 
01326 extern void set_longjmp_breakpoint (struct thread_info *tp,
01327                                     struct frame_id frame);
01328 extern void delete_longjmp_breakpoint (int thread);
01329 
01330 /* Mark all longjmp breakpoints from THREAD for later deletion.  */
01331 extern void delete_longjmp_breakpoint_at_next_stop (int thread);
01332 
01333 extern struct breakpoint *set_longjmp_breakpoint_for_call_dummy (void);
01334 extern void check_longjmp_breakpoint_for_call_dummy (int thread);
01335 
01336 extern void enable_overlay_breakpoints (void);
01337 extern void disable_overlay_breakpoints (void);
01338 
01339 extern void set_std_terminate_breakpoint (void);
01340 extern void delete_std_terminate_breakpoint (void);
01341 
01342 /* These functions respectively disable or reenable all currently
01343    enabled watchpoints.  When disabled, the watchpoints are marked
01344    call_disabled.  When re-enabled, they are marked enabled.
01345 
01346    The intended client of these functions is call_function_by_hand.
01347 
01348    The inferior must be stopped, and all breakpoints removed, when
01349    these functions are used.
01350 
01351    The need for these functions is that on some targets (e.g., HP-UX),
01352    gdb is unable to unwind through the dummy frame that is pushed as
01353    part of the implementation of a call command.  Watchpoints can
01354    cause the inferior to stop in places where this frame is visible,
01355    and that can cause execution control to become very confused.
01356 
01357    Note that if a user sets breakpoints in an interactively called
01358    function, the call_disabled watchpoints will have been re-enabled
01359    when the first such breakpoint is reached.  However, on targets
01360    that are unable to unwind through the call dummy frame, watches
01361    of stack-based storage may then be deleted, because gdb will
01362    believe that their watched storage is out of scope.  (Sigh.) */
01363 extern void disable_watchpoints_before_interactive_call_start (void);
01364 
01365 extern void enable_watchpoints_after_interactive_call_stop (void);
01366 
01367 /* These functions disable and re-enable all breakpoints during
01368    inferior startup.  They are intended to be called from solib
01369    code where necessary.  This is needed on platforms where the
01370    main executable is relocated at some point during startup
01371    processing, making breakpoint addresses invalid.
01372 
01373    If additional breakpoints are created after the routine
01374    disable_breakpoints_before_startup but before the routine
01375    enable_breakpoints_after_startup was called, they will also
01376    be marked as disabled.  */
01377 extern void disable_breakpoints_before_startup (void);
01378 extern void enable_breakpoints_after_startup (void);
01379 
01380 /* For script interpreters that need to define breakpoint commands
01381    after they've already read the commands into a struct
01382    command_line.  */
01383 extern enum command_control_type commands_from_control_command
01384   (char *arg, struct command_line *cmd);
01385 
01386 extern void clear_breakpoint_hit_counts (void);
01387 
01388 extern struct breakpoint *get_breakpoint (int num);
01389 
01390 /* The following are for displays, which aren't really breakpoints,
01391    but here is as good a place as any for them.  */
01392 
01393 extern void disable_current_display (void);
01394 
01395 extern void do_displays (void);
01396 
01397 extern void disable_display (int);
01398 
01399 extern void clear_displays (void);
01400 
01401 extern void disable_breakpoint (struct breakpoint *);
01402 
01403 extern void enable_breakpoint (struct breakpoint *);
01404 
01405 extern void breakpoint_set_commands (struct breakpoint *b, 
01406                                      struct command_line *commands);
01407 
01408 extern void breakpoint_set_silent (struct breakpoint *b, int silent);
01409 
01410 extern void breakpoint_set_thread (struct breakpoint *b, int thread);
01411 
01412 extern void breakpoint_set_task (struct breakpoint *b, int task);
01413 
01414 /* Clear the "inserted" flag in all breakpoints.  */
01415 extern void mark_breakpoints_out (void);
01416 
01417 extern void make_breakpoint_permanent (struct breakpoint *);
01418 
01419 extern struct breakpoint *create_jit_event_breakpoint (struct gdbarch *,
01420                                                        CORE_ADDR);
01421 
01422 extern struct breakpoint *create_solib_event_breakpoint (struct gdbarch *,
01423                                                          CORE_ADDR);
01424 
01425 extern struct breakpoint *create_thread_event_breakpoint (struct gdbarch *,
01426                                                           CORE_ADDR);
01427 
01428 extern void remove_jit_event_breakpoints (void);
01429 
01430 extern void remove_solib_event_breakpoints (void);
01431 
01432 extern void remove_thread_event_breakpoints (void);
01433 
01434 extern void disable_breakpoints_in_shlibs (void);
01435 
01436 /* This function returns TRUE if ep is a catchpoint.  */
01437 extern int is_catchpoint (struct breakpoint *);
01438 
01439 /* Shared helper function (MI and CLI) for creating and installing
01440    a shared object event catchpoint.  */
01441 extern void add_solib_catchpoint (char *arg, int is_load, int is_temp,
01442                                   int enabled);
01443 
01444 /* Enable breakpoints and delete when hit.  Called with ARG == NULL
01445    deletes all breakpoints.  */
01446 extern void delete_command (char *arg, int from_tty);
01447 
01448 /* Manage a software single step breakpoint (or two).  Insert may be
01449    called twice before remove is called.  */
01450 extern void insert_single_step_breakpoint (struct gdbarch *,
01451                                            struct address_space *, 
01452                                            CORE_ADDR);
01453 extern int single_step_breakpoints_inserted (void);
01454 extern void remove_single_step_breakpoints (void);
01455 extern void cancel_single_step_breakpoints (void);
01456 
01457 /* Manage manual breakpoints, separate from the normal chain of
01458    breakpoints.  These functions are used in murky target-specific
01459    ways.  Please do not add more uses!  */
01460 extern void *deprecated_insert_raw_breakpoint (struct gdbarch *,
01461                                                struct address_space *, 
01462                                                CORE_ADDR);
01463 extern int deprecated_remove_raw_breakpoint (struct gdbarch *, void *);
01464 
01465 /* Check if any hardware watchpoints have triggered, according to the
01466    target.  */
01467 int watchpoints_triggered (struct target_waitstatus *);
01468 
01469 /* Helper for transparent breakpoint hiding for memory read and write
01470    routines.
01471 
01472    Update one of READBUF or WRITEBUF with either the shadows
01473    (READBUF), or the breakpoint instructions (WRITEBUF) of inserted
01474    breakpoints at the memory range defined by MEMADDR and extending
01475    for LEN bytes.  If writing, then WRITEBUF is a copy of WRITEBUF_ORG
01476    on entry.*/
01477 extern void breakpoint_xfer_memory (gdb_byte *readbuf, gdb_byte *writebuf,
01478                                     const gdb_byte *writebuf_org,
01479                                     ULONGEST memaddr, LONGEST len);
01480 
01481 extern int breakpoints_always_inserted_mode (void);
01482 
01483 /* Called each time new event from target is processed.
01484    Retires previously deleted breakpoint locations that
01485    in our opinion won't ever trigger.  */
01486 extern void breakpoint_retire_moribund (void);
01487 
01488 /* Set break condition of breakpoint B to EXP.  */
01489 extern void set_breakpoint_condition (struct breakpoint *b, char *exp,
01490                                       int from_tty);
01491 
01492 /* Checks if we are catching syscalls or not.
01493    Returns 0 if not, greater than 0 if we are.  */
01494 extern int catch_syscall_enabled (void);
01495 
01496 /* Checks if we are catching syscalls with the specific
01497    syscall_number.  Used for "filtering" the catchpoints.
01498    Returns 0 if not, greater than 0 if we are.  */
01499 extern int catching_syscall_number (int syscall_number);
01500 
01501 /* Return a tracepoint with the given number if found.  */
01502 extern struct tracepoint *get_tracepoint (int num);
01503 
01504 extern struct tracepoint *get_tracepoint_by_number_on_target (int num);
01505 
01506 /* Find a tracepoint by parsing a number in the supplied string.  */
01507 extern struct tracepoint *
01508      get_tracepoint_by_number (char **arg, 
01509                                struct get_number_or_range_state *state,
01510                                int optional_p);
01511 
01512 /* Return a vector of all tracepoints currently defined.  The vector
01513    is newly allocated; the caller should free when done with it.  */
01514 extern VEC(breakpoint_p) *all_tracepoints (void);
01515 
01516 extern int is_tracepoint (const struct breakpoint *b);
01517 
01518 /* Return a vector of all static tracepoints defined at ADDR.  The
01519    vector is newly allocated; the caller should free when done with
01520    it.  */
01521 extern VEC(breakpoint_p) *static_tracepoints_here (CORE_ADDR addr);
01522 
01523 /* Function that can be passed to read_command_line to validate
01524    that each command is suitable for tracepoint command list.  */
01525 extern void check_tracepoint_command (char *line, void *closure);
01526 
01527 /* Call at the start and end of an "rbreak" command to register
01528    breakpoint numbers for a later "commands" command.  */
01529 extern void start_rbreak_breakpoints (void);
01530 extern void end_rbreak_breakpoints (void);
01531 
01532 /* Breakpoint iterator function.
01533 
01534    Calls a callback function once for each breakpoint, so long as the
01535    callback function returns false.  If the callback function returns
01536    true, the iteration will end and the current breakpoint will be
01537    returned.  This can be useful for implementing a search for a
01538    breakpoint with arbitrary attributes, or for applying an operation
01539    to every breakpoint.  */
01540 extern struct breakpoint *iterate_over_breakpoints (int (*) (struct breakpoint *,
01541                                                              void *), void *);
01542 
01543 /* Nonzero if the specified PC cannot be a location where functions
01544    have been inlined.  */
01545 
01546 extern int pc_at_non_inline_function (struct address_space *aspace,
01547                                       CORE_ADDR pc,
01548                                       const struct target_waitstatus *ws);
01549 
01550 extern int user_breakpoint_p (struct breakpoint *);
01551 
01552 /* Attempt to determine architecture of location identified by SAL.  */
01553 extern struct gdbarch *get_sal_arch (struct symtab_and_line sal);
01554 
01555 extern void breakpoint_free_objfile (struct objfile *objfile);
01556 
01557 extern char *ep_parse_optional_if_clause (char **arg);
01558 
01559 #endif /* !defined (BREAKPOINT_H) */
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Defines