#include "gdb-events.h"
+struct value;
+
/* 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. */
bp_thread_event,
+ /* On the same principal, an overlay manager can arrange to call a
+ magic location in the inferior whenever there is an interesting
+ change in overlay status. GDB can update its overlay tables
+ and fiddle with breakpoints in overlays when this breakpoint
+ is hit. */
+
+ bp_overlay_event,
+
/* These breakpoints are used to implement the "catch load" command
on platforms whose dynamic linkers support such functionality. */
bp_catch_load,
/* States of enablement of breakpoint. */
-enum enable
+enum enable_state
{
- disabled, /* The eventpoint is inactive, and cannot trigger. */
- enabled, /* The eventpoint is active, and can trigger. */
- shlib_disabled, /* The eventpoint's address is in an unloaded solib.
+ bp_disabled, /* The eventpoint is inactive, and cannot trigger. */
+ bp_enabled, /* The eventpoint is active, and can trigger. */
+ bp_shlib_disabled, /* The eventpoint's address is in an unloaded solib.
The eventpoint will be automatically enabled
and reset when that solib is loaded. */
- call_disabled, /* The eventpoint has been disabled while a call
+ bp_call_disabled, /* The eventpoint has been disabled while a call
into the inferior is "in flight", because some
eventpoints interfere with the implementation of
a call on some targets. The eventpoint will be
automatically enabled and reset when the call
"lands" (either completes, or stops at another
eventpoint). */
- permanent /* There is a breakpoint instruction hard-wired into
+ bp_permanent /* There is a breakpoint instruction hard-wired into
the target's code. Don't try to write another
breakpoint instruction on top of it, or restore
its value. Step over it using the architecture's
enum bpdisp
{
- del, /* Delete it */
- del_at_next_stop, /* Delete at next stop, whether hit or not */
- disable, /* Disable it */
- donttouch /* Leave it alone */
+ disp_del, /* Delete it */
+ disp_del_at_next_stop, /* Delete at next stop, whether hit or not */
+ disp_disable, /* Disable it */
+ disp_donttouch /* Leave it alone */
};
enum target_hw_bp_type
/* Type of breakpoint. */
enum bptype type;
/* Zero means disabled; remember the info but don't break here. */
- enum enable enable;
+ enum enable_state enable_state;
/* What to do with this breakpoint after we hit it. */
enum bpdisp disposition;
/* Number assigned to distinguish breakpoints. */
int number;
- /* Address to break at, or NULL if not a breakpoint. */
+ /* Address to break at.
+ Note that zero is a perfectly valid code address on some
+ platforms (for example, the mn10200 and mn10300 simulators).
+ NULL is not a special value for this field. */
CORE_ADDR address;
- /* Line number of this address. Only matters if address is
- non-NULL. */
+ /* Line number of this address. */
int line_number;
- /* Source file name of this address. Only matters if address is
- non-NULL. */
+ /* Source file name of this address. */
char *source_file;
control of the target insert_breakpoint and remove_breakpoint routines.
No other code should assume anything about the value(s) here. */
char shadow_contents[BREAKPOINT_MAX];
- /* Nonzero if this breakpoint is now inserted. Only matters if address
- is non-NULL. */
+ /* Nonzero if this breakpoint is now inserted. */
char inserted;
/* Nonzero if this is not the first breakpoint in the list
- for the given address. Only matters if address is non-NULL. */
+ for the given address. */
char duplicate;
/* Chain of command lines to execute when this breakpoint is hit. */
struct command_line *commands;
/* Stack depth (address of frame). If nonzero, break only if fp
equals this. */
- CORE_ADDR frame;
+ struct frame_id frame_id;
/* Conditional. Break only if this expression's value is nonzero. */
struct expression *cond;
- /* String we used to set the breakpoint (malloc'd). Only matters if
- address is non-NULL. */
+ /* String we used to set the breakpoint (malloc'd). */
char *addr_string;
/* Language we used to set the breakpoint. */
enum language language;
valid anywhere (e.g. consists just of global symbols). */
struct block *exp_valid_block;
/* Value of the watchpoint the last time we checked it. */
- value_ptr val;
+ struct value *val;
/* Holds the value chain for a hardware watchpoint expression. */
- value_ptr val_chain;
+ struct value *val_chain;
/* Holds the address of the related watchpoint_scope breakpoint
when using watchpoints on local variables (might the concept
it the watchpoint_scope breakpoint or something like that. FIXME). */
struct breakpoint *related_breakpoint;
- /* Holds the frame address which identifies the frame this watchpoint
- should be evaluated in, or NULL if the watchpoint should be evaluated
- on the outermost frame. */
- CORE_ADDR watchpoint_frame;
+ /* Holds the frame address which identifies the frame this
+ watchpoint should be evaluated in, or `null' if the watchpoint
+ should be evaluated on the outermost frame. */
+ struct frame_id watchpoint_frame;
/* Thread number for thread-specific breakpoint, or -1 if don't care */
int thread;
is part of the bpstat is copied as well. */
extern bpstat bpstat_copy (bpstat);
-extern bpstat bpstat_stop_status (CORE_ADDR *, int);
+extern bpstat bpstat_stop_status (CORE_ADDR *pc, int not_a_sw_breakpoint);
\f
/* This bpstat_what stuff tells wait_for_inferior what to do with a
breakpoint (a challenging task). */
/* Commands left to be done. */
struct command_line *commands;
/* Old value associated with a watchpoint. */
- value_ptr old_val;
+ struct value *old_val;
/* Nonzero if this breakpoint tells us to print the frame. */
char print;
/* Prototypes for breakpoint-related functions. */
-/* Forward declarations for prototypes */
-struct frame_info;
-
extern enum breakpoint_here breakpoint_here_p (CORE_ADDR);
extern int breakpoint_inserted_here_p (CORE_ADDR);
-extern int frame_in_dummy (struct frame_info *);
+/* FIXME: cagney/2002-11-10: The current [generic] dummy-frame code
+ implements a functional superset of this function. The only reason
+ it hasn't been removed is because some architectures still don't
+ use the new framework. Once they have been fixed, this can go. */
+struct frame_info;
+extern int deprecated_frame_in_dummy (struct frame_info *);
extern int breakpoint_thread_match (CORE_ADDR, ptid_t);
extern int ep_is_exception_catchpoint (struct breakpoint *);
extern struct breakpoint *set_momentary_breakpoint
- (struct symtab_and_line, struct frame_info *, enum bptype);
+ (struct symtab_and_line, struct frame_id, enum bptype);
extern void set_ignore_count (int, int, int);
extern int detach_breakpoints (int);
extern void enable_longjmp_breakpoint (void);
-
extern void disable_longjmp_breakpoint (void);
+extern void enable_overlay_breakpoints (void);
+extern void disable_overlay_breakpoints (void);
-extern void set_longjmp_resume_breakpoint (CORE_ADDR, struct frame_info *);
+extern void set_longjmp_resume_breakpoint (CORE_ADDR, struct frame_id);
/* These functions respectively disable or reenable all currently
enabled watchpoints. When disabled, the watchpoints are marked
call_disabled. When reenabled, they are marked enabled.