2008-03-04 Paul Brook <paul@codesourcery.com>
[deliverable/binutils-gdb.git] / gdb / breakpoint.h
index c6e08f599194055313eb4e2f3b1ab060265d87e4..16bb927c6fbd65e53b65e3818ad66bc8d8e8cd53 100644 (file)
@@ -1,6 +1,6 @@
 /* Data structures associated with breakpoints in GDB.
    Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001,
-   2002, 2003, 2004, 2007 Free Software Foundation, Inc.
+   2002, 2003, 2004, 2007, 2008 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -22,6 +22,7 @@
 
 #include "frame.h"
 #include "value.h"
+#include "vec.h"
 
 #include "gdb-events.h"
 
@@ -128,13 +129,6 @@ enum bptype
     bp_catch_fork,
     bp_catch_vfork,
     bp_catch_exec,
-
-    /* These are catchpoints to implement "catch catch" and "catch throw"
-       commands for C++ exception handling. */
-    bp_catch_catch,
-    bp_catch_throw
-
-
   };
 
 /* States of enablement of breakpoint. */
@@ -279,6 +273,12 @@ struct bp_location
      bp_loc_other.  */
   CORE_ADDR address;
 
+  /* For hardware watchpoints, the size of data ad ADDRESS being watches.  */
+  int length;
+
+  /* Type of hardware watchpoint. */
+  enum target_hw_bp_type watchpoint_type;
+
   /* For any breakpoint type with an address, this is the BFD section
      associated with the address.  Used primarily for overlay debugging.  */
   asection *section;
@@ -391,11 +391,13 @@ struct breakpoint
     /* The largest block within which it is valid, or NULL if it is
        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 of the watchpoint the last time we checked it, or NULL
+       when we do not know the value yet or the value was not
+       readable.  VAL is never lazy.  */
     struct value *val;
-
-    /* Holds the value chain for a hardware watchpoint expression.  */
-    struct value *val_chain;
+    /* Nonzero if VAL is valid.  If VAL_VALID is set but VAL is NULL,
+       then an error occurred reading the value.  */
+    int val_valid;
 
     /* Holds the address of the related watchpoint_scope breakpoint
        when using watchpoints on local variables (might the concept
@@ -444,19 +446,14 @@ struct breakpoint
     /* Methods associated with this breakpoint.  */
     struct breakpoint_ops *ops;
 
-    /* Was breakpoint issued from a tty?  Saved for the use of pending breakpoints.  */
-    int from_tty;
-
-    /* Flag value for pending breakpoint.
-       first bit  : 0 non-temporary, 1 temporary.
-       second bit : 0 normal breakpoint, 1 hardware breakpoint. */
-    int flag;
-
     /* Is breakpoint's condition not yet parsed because we found
        no location initially so had no context to parse
        the condition in.  */
     int condition_not_parsed;
   };
+
+typedef struct breakpoint *breakpoint_p;
+DEF_VEC_P(breakpoint_p);
 \f
 /* The following stuff is an abstract data type "bpstat" ("breakpoint
    status").  This provides the ability to determine whether we have
@@ -583,9 +580,6 @@ extern struct breakpoint *bpstat_find_step_resume_breakpoint (bpstat);
    just to things like whether watchpoints are set.  */
 extern int bpstat_should_step (void);
 
-/* Nonzero if there are enabled hardware watchpoints. */
-extern int bpstat_have_active_hw_watchpoints (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).  */
@@ -638,7 +632,7 @@ struct bpstats
        place, and a bpstat reflects the fact that both have been hit.  */
     bpstat next;
     /* Breakpoint that we are at.  */
-    struct bp_location *breakpoint_at;
+    const struct bp_location *breakpoint_at;
     /* Commands left to be done.  */
     struct command_line *commands;
     /* Old value associated with a watchpoint.  */
@@ -678,6 +672,8 @@ extern enum breakpoint_here breakpoint_here_p (CORE_ADDR);
 
 extern int breakpoint_inserted_here_p (CORE_ADDR);
 
+extern int regular_breakpoint_inserted_here_p (CORE_ADDR);
+
 extern int software_breakpoint_inserted_here_p (CORE_ADDR);
 
 extern int breakpoint_thread_match (CORE_ADDR, ptid_t);
@@ -697,8 +693,6 @@ extern void set_ignore_count (int, int, int);
 
 extern void set_default_breakpoint (int, CORE_ADDR, struct symtab *, int);
 
-extern void mark_breakpoints_out (void);
-
 extern void breakpoint_init_inferior (enum inf_context);
 
 extern struct cleanup *make_cleanup_delete_breakpoint (struct breakpoint *);
@@ -721,7 +715,12 @@ extern void awatch_command_wrapper (char *, int);
 extern void rwatch_command_wrapper (char *, int);
 extern void tbreak_command (char *, int);
 
-extern int insert_breakpoints (void);
+extern void set_breakpoint (char *address, char *condition,
+                           int hardwareflag, int tempflag,
+                           int thread, int ignore_count,
+                           int pending);
+
+extern void insert_breakpoints (void);
 
 extern int remove_breakpoints (void);
 
@@ -829,17 +828,6 @@ extern void remove_thread_event_breakpoints (void);
 
 extern void disable_breakpoints_in_shlibs (void);
 
-extern void create_solib_load_event_breakpoint (char *, int, char *, char *);
-
-extern void create_solib_unload_event_breakpoint (char *, int,
-                                                 char *, char *);
-
-extern void create_fork_event_catchpoint (int, char *);
-
-extern void create_vfork_event_catchpoint (int, char *);
-
-extern void create_exec_event_catchpoint (int, char *);
-
 /* This function returns TRUE if ep is a catchpoint. */
 extern int ep_is_catchpoint (struct breakpoint *);
 
This page took 0.045241 seconds and 4 git commands to generate.