X-Git-Url: http://drtracing.org/?a=blobdiff_plain;f=gdb%2Fbreakpoint.h;h=7b359cb22060bafb0ba1054438d58bd7282e128b;hb=818dd999829879775f22b319e1fe2c8c3a7f77b9;hp=1ef4a799e582ff0e03c9a16abaaf284da471268e;hpb=644a1fe1ca256e8fa6a23276c25b0c7d3a687a0f;p=deliverable%2Fbinutils-gdb.git diff --git a/gdb/breakpoint.h b/gdb/breakpoint.h index 1ef4a799e5..7b359cb220 100644 --- a/gdb/breakpoint.h +++ b/gdb/breakpoint.h @@ -27,6 +27,8 @@ #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. */ @@ -105,6 +107,14 @@ enum bptype 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, @@ -133,21 +143,21 @@ enum bptype /* 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 @@ -159,10 +169,10 @@ enum enable 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 @@ -187,7 +197,7 @@ struct breakpoint /* 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. */ @@ -227,7 +237,7 @@ struct breakpoint 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; @@ -249,10 +259,10 @@ struct breakpoint 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 @@ -260,10 +270,10 @@ struct breakpoint 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; @@ -312,7 +322,7 @@ extern void bpstat_clear (bpstat *); 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); /* This bpstat_what stuff tells wait_for_inferior what to do with a breakpoint (a challenging task). */ @@ -479,7 +489,7 @@ struct bpstats /* 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; @@ -511,14 +521,16 @@ enum breakpoint_here /* 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); @@ -531,7 +543,7 @@ extern void breakpoint_re_set_thread (struct breakpoint *); 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); @@ -601,10 +613,11 @@ extern void update_breakpoints_after_exec (void); 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.