* configure: Regenerate with proper autoconf 2.13.
[deliverable/binutils-gdb.git] / gdb / breakpoint.h
index cd9d1b7a2423c42b1085162a31419da119140b6a..7b359cb22060bafb0ba1054438d58bd7282e128b 100644 (file)
@@ -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,22 +228,20 @@ 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;
     /* 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;
@@ -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);
 \f
 /* 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;
@@ -512,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);
 
@@ -532,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);
 
@@ -602,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.
This page took 0.027389 seconds and 4 git commands to generate.