* gdb.base/attach.exp (do_attach_tests): Don't forget to kill second
[deliverable/binutils-gdb.git] / gdb / dummy-frame.c
index 9870433c3e153b18909dbf231082fac7db6a5ac3..706307149143d179690917e882ae6a1b879f05dc 100644 (file)
@@ -1,8 +1,8 @@
 /* Code dealing with dummy stack frames, for GDB, the GNU debugger.
 
    Copyright 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994,
-   1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002 Free Software
-   Foundation, Inc.
+   1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004 Free
+   Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -36,6 +36,8 @@ static void dummy_frame_this_id (struct frame_info *next_frame,
                                 void **this_prologue_cache,
                                 struct frame_id *this_id);
 
+static int pc_in_dummy_frame (CORE_ADDR pc);
+
 /* Dummy frame.  This saves the processor state just prior to setting
    up the inferior function call.  Older targets save the registers
    on the target stack (but that really slows down function calls).  */
@@ -110,7 +112,7 @@ find_dummy_frame (CORE_ADDR pc, CORE_ADDR fp)
   return NULL;
 }
 
-struct regcache *
+static struct regcache *
 deprecated_find_dummy_frame_regcache (CORE_ADDR pc, CORE_ADDR fp)
 {
   struct dummy_frame *dummy = find_dummy_frame (pc, fp);
@@ -129,7 +131,7 @@ deprecated_generic_find_dummy_frame (CORE_ADDR pc, CORE_ADDR fp)
   return deprecated_grub_regcache_for_registers (regcache);
 }
 
-/* Function: pc_in_call_dummy (pc, sp, fp)
+/* Function: pc_in_call_dummy (pc)
 
    Return true if the PC falls in a dummy frame created by gdb for an
    inferior call.  The code below which allows DECR_PC_AFTER_BREAK is
@@ -137,7 +139,7 @@ deprecated_generic_find_dummy_frame (CORE_ADDR pc, CORE_ADDR fp)
    subtracted out.  */
 
 int
-generic_pc_in_call_dummy (CORE_ADDR pc, CORE_ADDR sp, CORE_ADDR fp)
+deprecated_pc_in_call_dummy (CORE_ADDR pc)
 {
   return pc_in_dummy_frame (pc);
 }
@@ -149,13 +151,9 @@ generic_pc_in_call_dummy (CORE_ADDR pc, CORE_ADDR sp, CORE_ADDR fp)
 
    FIXME: cagney/2002-11-23: This is silly.  Surely "infrun.c" can
    figure out what the real PC (as in the resume address) is BEFORE
-   calling this function (Oh, and I'm not even sure that this function
-   is called with an decremented PC, the call to pc_in_call_dummy() in
-   that file is conditional on
-   !DEPRECATED_CALL_DUMMY_BREAKPOINT_OFFSET_P yet generic dummy
-   targets set DEPRECATED_CALL_DUMMY_BREAKPOINT_OFFSET. True?).  */
+   calling this function.  */
 
-int
+static int
 pc_in_dummy_frame (CORE_ADDR pc)
 {
   struct dummy_frame *dummyframe;
@@ -254,21 +252,6 @@ generic_save_call_dummy_addr (CORE_ADDR lo, CORE_ADDR hi)
   dummy_frame_stack->call_hi = hi;
 }
 
-/* Restore the machine state from either the saved dummy stack or a
-   real stack frame. */
-
-void
-generic_pop_current_frame (void (*popper) (struct frame_info * frame))
-{
-  struct frame_info *frame = get_current_frame ();
-  if (get_frame_type (frame) == DUMMY_FRAME)
-    /* NOTE: cagney/2002-22-23: Does this ever occure?  Surely a dummy
-       frame will have already been poped by the "infrun.c" code.  */
-    generic_pop_dummy_frame ();
-  else
-    (*popper) (frame);
-}
-
 /* Discard the innermost dummy frame from the dummy frame stack
    (passed in as a parameter).  */
 
@@ -282,7 +265,7 @@ discard_innermost_dummy (struct dummy_frame **stack)
 }
 
 void
-generic_pop_dummy_frame (void)
+deprecated_pop_dummy_frame (void)
 {
   struct dummy_frame *dummy_frame = dummy_frame_stack;
 
@@ -366,7 +349,7 @@ dummy_frame_this_id (struct frame_info *next_frame,
         determine the dummy frame's ID.  */
       (*this_id) = gdbarch_unwind_dummy_id (current_gdbarch, next_frame);
     }
-  else if (frame_relative_level (next_frame) < 0)
+  else if (get_frame_type (next_frame) == SENTINEL_FRAME)
     {
       /* We're unwinding a sentinel frame, the PC of which is pointing
         at a stack dummy.  Fake up the dummy frame's ID using the
@@ -387,7 +370,7 @@ dummy_frame_this_id (struct frame_info *next_frame,
     }
   else
     {
-      /* Outch!  We're not trying to find the innermost frame's ID yet
+      /* Ouch!  We're not trying to find the innermost frame's ID yet
         we're trying to unwind to a dummy.  The architecture must
         provide the unwind_dummy_id() method.  Abandon the unwind
         process but only after first warning the user.  */
@@ -408,11 +391,10 @@ static struct frame_unwind dummy_frame_unwind =
 };
 
 const struct frame_unwind *
-dummy_frame_p (CORE_ADDR pc)
+dummy_frame_sniffer (struct frame_info *next_frame)
 {
-  if (DEPRECATED_PC_IN_CALL_DUMMY_P ()
-      ? DEPRECATED_PC_IN_CALL_DUMMY (pc, 0, 0)
-      : pc_in_dummy_frame (pc))
+  CORE_ADDR pc = frame_pc_unwind (next_frame);
+  if (pc_in_dummy_frame (pc))
     return &dummy_frame_unwind;
   else
     return NULL;
This page took 0.027299 seconds and 4 git commands to generate.