* sunos.c (sunos_add_one_symbol): Treat a common symbol from a
[deliverable/binutils-gdb.git] / gdb / breakpoint.h
index 8317dd3886b2a9b42c7895667b713337275700c1..5f45ccd983b074130e259844570cc7c82a6fe9c1 100644 (file)
@@ -49,7 +49,16 @@ enum bptype {
      stepping over signal handlers, and for skipping prologues.  */
   bp_step_resume,
 
+  /* Used by wait_for_inferior for stepping over signal handlers.  */
+  bp_through_sigtramp,
+
   /* The breakpoint at the end of a call dummy.  */
+  /* FIXME: What if the function we are calling longjmp()s out of the
+     call, or the user gets out with the "return" command?  We currently
+     have no way of cleaning up the breakpoint in these (obscure) situations.
+     (Probably can solve this by noticing longjmp, "return", etc., it's
+     similar to noticing when a watchpoint on a local variable goes out
+     of scope (with hardware support for watchpoints)).  */
   bp_call_dummy
 };
 
@@ -139,6 +148,8 @@ struct breakpoint
   struct block *exp_valid_block;
   /* Value of the watchpoint the last time we checked it.  */
   value val;
+  /* Thread number for thread-specific breakpoint, or -1 if don't care */
+  int thread;
 };
 \f
 /* The following stuff is an abstract data type "bpstat" ("breakpoint status").
@@ -156,11 +167,8 @@ extern void bpstat_clear PARAMS ((bpstat *));
    is part of the bpstat is copied as well.  */
 extern bpstat bpstat_copy PARAMS ((bpstat));
 
-/* Get a bpstat associated with having just stopped at address *PC
-   and frame address FRAME_ADDRESS.  Update *PC to point at the
-   breakpoint (if we hit a breakpoint).  */
 /* FIXME:  prototypes uses equivalence between FRAME_ADDR and CORE_ADDR */
-extern bpstat bpstat_stop_status PARAMS ((CORE_ADDR *, CORE_ADDR));
+extern bpstat bpstat_stop_status PARAMS ((CORE_ADDR *, CORE_ADDR, int));
 \f
 /* This bpstat_what stuff tells wait_for_inferior what to do with a
    breakpoint (a challenging task).  */
@@ -202,23 +210,25 @@ enum bpstat_what_main_action {
   /* Clear longjmp_resume breakpoint, then handle as BPSTAT_WHAT_SINGLE.  */
   BPSTAT_WHAT_CLEAR_LONGJMP_RESUME_SINGLE,
 
+  /* Clear step resume breakpoint, and keep checking.  */
+  BPSTAT_WHAT_STEP_RESUME,
+
+  /* Clear through_sigtramp breakpoint, muck with trap_expected, and keep
+     checking.  */
+  BPSTAT_WHAT_THROUGH_SIGTRAMP,
+
   /* This is just used to keep track of how many enums there are.  */
   BPSTAT_WHAT_LAST
 };
 
 struct bpstat_what {
-  enum bpstat_what_main_action main_action : 4;
-
-  /* Did we hit the step resume breakpoint?  This is separate from the
-     main_action to allow for it to be combined with any of the main
-     actions.  */
-  unsigned int step_resume : 1;
+  enum bpstat_what_main_action main_action;
 
   /* Did we hit a call dummy breakpoint?  This only goes with a main_action
      of BPSTAT_WHAT_STOP_SILENT or BPSTAT_WHAT_STOP_NOISY (the concept of
      continuing from a call dummy without popping the frame is not a
      useful one).  */
-  unsigned int call_dummy : 1;
+  int call_dummy;
 };
 
 /* Tell what to do about this bpstat.  */
@@ -289,8 +299,11 @@ struct bpstat
 struct frame_info;
 #endif
 
-extern int
-breakpoint_here_p PARAMS ((CORE_ADDR));
+extern int breakpoint_here_p PARAMS ((CORE_ADDR));
+
+extern int frame_in_dummy PARAMS ((struct frame_info *));
+
+extern int breakpoint_thread_match PARAMS ((CORE_ADDR, int));
 
 extern void
 until_break_command PARAMS ((char *, int));
@@ -316,6 +329,9 @@ set_default_breakpoint PARAMS ((int, CORE_ADDR, struct symtab *, int));
 extern void
 mark_breakpoints_out PARAMS ((void));
 
+extern void
+breakpoint_init_inferior PARAMS ((void));
+
 extern void
 delete_breakpoint PARAMS ((struct breakpoint *));
 
This page took 0.025039 seconds and 4 git commands to generate.