X-Git-Url: http://git.efficios.com/?a=blobdiff_plain;f=gdb%2Fbreakpoint.h;h=226703b59380c4b613b550366278328f26b124ec;hb=95f6f3835ae95aa9bb84eef99c1a07e22b78391b;hp=cd9d1b7a2423c42b1085162a31419da119140b6a;hpb=39f770628a4eaf018fec8d55684bf2ec16ada9cc;p=deliverable%2Fbinutils-gdb.git diff --git a/gdb/breakpoint.h b/gdb/breakpoint.h index cd9d1b7a24..226703b593 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,22 +197,23 @@ 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. */ 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; @@ -217,11 +228,10 @@ struct breakpoint 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; @@ -231,8 +241,7 @@ struct breakpoint /* 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; @@ -250,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 @@ -261,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; @@ -313,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). */ @@ -480,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; @@ -602,8 +611,9 @@ 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 *); /* These functions respectively disable or reenable all currently