diff options
Diffstat (limited to 'gdb/breakpoint.h')
-rw-r--r-- | gdb/breakpoint.h | 129 |
1 files changed, 129 insertions, 0 deletions
diff --git a/gdb/breakpoint.h b/gdb/breakpoint.h new file mode 100644 index 0000000..00ee8c5 --- /dev/null +++ b/gdb/breakpoint.h @@ -0,0 +1,129 @@ +/* Copyright (C) 1990 Free Software Foundation, Inc. + +This file is part of GDB. + +GDB is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation; either version 1, or (at your option) +any later version. + +GDB is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with GDB; see the file COPYING. If not, write to +the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */ + +#if !defined (BREAKPOINT_H) +#define BREAKPOINT_H 1 + +/* This is the maximum number of bytes a breakpoint instruction can take. + Feel free to increase it. It's just used in a few places to size + arrays that should be independent of the target architecture. */ + +#define BREAKPOINT_MAX 10 + +extern void breakpoint_re_set (); +extern void clear_momentary_breakpoints (); +extern void set_momentary_breakpoint (); +extern void set_ignore_count (); +extern void set_default_breakpoint (); + +extern void mark_breakpoints_out (); +extern void breakpoint_auto_delete (); +extern void breakpoint_clear_ignore_counts (); + +/* The following are for displays, which aren't really breakpoints, but + here is as good a place as any for them. */ + +extern void disable_current_display (); +extern void do_displays (); +extern void disable_display (); +extern void clear_displays (); + + +/* The follow stuff is an abstract data type "bpstat" ("breakpoint status"). + This provides the ability to determine whether we have stopped at a + breakpoint, and what we should do about it. */ + +typedef struct bpstat__struct *bpstat; + +/* Interface: */ + +/* Clear a bpstat so that it says we are not at any breakpoint. + Also free any storage that is part of a bpstat. */ +void bpstat_clear(); + +/* Return a copy of a bpstat. Like "bs1 = bs2" but all storage that + is part of the bpstat is copied as well. */ +bpstat bpstat_copy(); + +/* Get a bpstat associated with having just stopped at address *PC + and frame address FRAME_ADDRESS. Update *PC to point at the + breakpoint (if we hit a breakpoint). */ +bpstat bpstat_stop_status (/* CORE_ADDR *pc; FRAME_ADDR frame_address */); + +/* Nonzero if we should print the frame. */ +#define bpstat_should_print(bs) ((bs) != NULL && (bs)->print) + +/* Nonzero if we should stop. */ +#define bpstat_stop(bs) ((bs) != NULL && (bs)->stop) + +/* Nonzero if we hit a momentary breakpoint. */ +#define bpstat_momentary_breakpoint(bs) ((bs) != NULL && (bs)->momentary) + +/* Nonzero if a signal that we got in wait() was due to circumstances + explained by the BS. */ +/* Currently that is true iff we have hit a breakpoint. */ +#define bpstat_explains_signal(bs) ((bs) != NULL) + +/* Nonzero if we should step constantly (e.g. watchpoints on machines + without hardware support). This isn't related to a specific bpstat, + just to things like whether watchpoints are set. */ +int bpstat_should_step (/* void */); + +/* Print a message indicating what happened. Returns nonzero to + say that only the source line should be printed after this (zero + return means print the frame as well as the source line). */ +int bpstat_print (/* bpstat bs */); + +/* Return the breakpoint number of the first breakpoint we are stopped + at. *BSP upon return is a bpstat which points to the remaining + breakpoints stopped at (but which is not guaranteed to be good for + anything but further calls to bpstat_num). + Return 0 if passed a bpstat which does not indicate any breakpoints. */ +int bpstat_num (/* bpstat *bsp; */); + +/* Perform actions associated with having stopped at *BSP. */ +void bpstat_do_actions (/* bpstat bs; */); + +/* Modify BS so that the actions will not be performed. */ +void bpstat_clear_actions (/* bpstat bs; */); + + +/* Implementation: */ +#include "value.h" +struct bpstat__struct +{ + /* Linked list because there can be two breakpoints at the + same place, and a bpstat reflects the fact that both have been hit. */ + bpstat next; + /* Breakpoint that we are at. */ + struct breakpoint *breakpoint_at; + /* Commands left to be done. */ + struct command_line *commands; + /* Old value associated with a watchpoint. */ + value old_val; + /* Nonzero if we should print the frame. Only significant for the first + bpstat in the chain. */ + char print; + /* Nonzero if we should stop. Only significant for the first bpstat in + the chain. */ + char stop; + /* Nonzero if we hit a momentary breakpoint. Only significant for the + first bpstat in the chain. */ + char momentary; +}; +#endif /* breakpoint.h not already included. */ |