This is the mail archive of the gdb-patches@sources.redhat.com mailing list for the GDB project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[commit] Delete SETUP_ARBITRARY_FRAME


The Alpha and MIPS were defining this to force the user to supply a second PC parameter to "frame sp pc". That in itself is pretty arbitrary - if the user wants to try and create an arbitrary frame without specifying the PC, let them. This patch removes that restriction, which in turn lets us eliminate SETUP_ARBITRARY_FRAME (I've also strong doubts that this feature works but that's another story :-).

committed,
Andrew
2004-10-30  Andrew Cagney  <cagney@gnu.org>

	* alpha-tdep.c (alpha_setup_arbitrary_frame): Delete.
	* config/alpha/tm-alpha.h (SETUP_ARBITRARY_FRAME): Delete.
	(alpha_setup_arbitrary_frame): Delete.
	* mips-tdep.c (setup_arbitrary_frame): Delete.
	* config/mips/tm-mips.h (SETUP_ARBITRARY_FRAME): Delete.
	(setup_arbitrary_frame): Delete.
	* stack.c (parse_frame_specification_1): When specified, call
	create_new_frame with two parameters.  Delete #ifdef
	SETUP_ARBITRARY_FRAME.

Index: alpha-tdep.c
===================================================================
RCS file: /cvs/src/src/gdb/alpha-tdep.c,v
retrieving revision 1.138
diff -p -u -r1.138 alpha-tdep.c
--- alpha-tdep.c	3 Aug 2004 03:09:32 -0000	1.138
+++ alpha-tdep.c	30 Oct 2004 21:09:12 -0000
@@ -1233,30 +1233,6 @@ reinit_frame_cache_sfunc (char *args, in
 }
 
 
-/* ALPHA stack frames are almost impenetrable.  When execution stops,
-   we basically have to look at symbol information for the function
-   that we stopped in, which tells us *which* register (if any) is
-   the base of the frame pointer, and what offset from that register
-   the frame itself is at.  
-
-   This presents a problem when trying to examine a stack in memory
-   (that isn't executing at the moment), using the "frame" command.  We
-   don't have a PC, nor do we have any registers except SP.
-
-   This routine takes two arguments, SP and PC, and tries to make the
-   cached frames look as if these two arguments defined a frame on the
-   cache.  This allows the rest of info frame to extract the important
-   arguments without difficulty.  */
-
-struct frame_info *
-alpha_setup_arbitrary_frame (int argc, CORE_ADDR *argv)
-{
-  if (argc != 2)
-    error ("ALPHA frame specifications require two arguments: sp and pc");
-
-  return create_new_frame (argv[0], argv[1]);
-}
-
 /* Assuming NEXT_FRAME->prev is a dummy, return the frame ID of that
    dummy frame.  The frame ID's base needs to match the TOS value
    saved by save_dummy_frame_tos(), and the PC match the dummy frame's
Index: mips-tdep.c
===================================================================
RCS file: /cvs/src/src/gdb/mips-tdep.c,v
retrieving revision 1.349
diff -p -u -r1.349 mips-tdep.c
--- mips-tdep.c	30 Oct 2004 20:54:53 -0000	1.349
+++ mips-tdep.c	30 Oct 2004 21:09:14 -0000
@@ -2326,30 +2326,6 @@ struct mips_objfile_private
   char *contents;
 };
 
-/* MIPS stack frames are almost impenetrable.  When execution stops,
-   we basically have to look at symbol information for the function
-   that we stopped in, which tells us *which* register (if any) is
-   the base of the frame pointer, and what offset from that register
-   the frame itself is at.
-
-   This presents a problem when trying to examine a stack in memory
-   (that isn't executing at the moment), using the "frame" command.  We
-   don't have a PC, nor do we have any registers except SP.
-
-   This routine takes two arguments, SP and PC, and tries to make the
-   cached frames look as if these two arguments defined a frame on the
-   cache.  This allows the rest of info frame to extract the important
-   arguments without difficulty.  */
-
-struct frame_info *
-setup_arbitrary_frame (int argc, CORE_ADDR *argv)
-{
-  if (argc != 2)
-    error ("MIPS frame specifications require two arguments: sp and pc");
-
-  return create_new_frame (argv[0], argv[1]);
-}
-
 /* According to the current ABI, should the type be passed in a
    floating-point register (assuming that there is space)?  When there
    is no FPU, FP are not even considered as possibile candidates for
Index: stack.c
===================================================================
RCS file: /cvs/src/src/gdb/stack.c,v
retrieving revision 1.114
diff -p -u -r1.114 stack.c
--- stack.c	30 Oct 2004 00:10:05 -0000	1.114
+++ stack.c	30 Oct 2004 21:09:14 -0000
@@ -828,15 +828,12 @@ parse_frame_specification_1 (const char 
 
   /* We couldn't identify the frame as an existing frame, but
      perhaps we can create one with a single argument.  */
-#ifdef SETUP_ARBITRARY_FRAME
-  return SETUP_ARBITRARY_FRAME (numargs, addrs);
-#else
-  /* Usual case.  Do it here rather than have everyone supply a
-     SETUP_ARBITRARY_FRAME that does this.  */
   if (numargs == 1)
     return create_new_frame (addrs[0], 0);
-  error ("Too many args in frame specification");
-#endif
+  else if (numargs == 2)
+    return create_new_frame (addrs[0], addrs[1]);
+  else
+    error ("Too many args in frame specification");
 }
 
 struct frame_info *
Index: config/alpha/tm-alpha.h
===================================================================
RCS file: /cvs/src/src/gdb/config/alpha/tm-alpha.h,v
retrieving revision 1.29
diff -p -u -r1.29 tm-alpha.h
--- config/alpha/tm-alpha.h	16 Feb 2004 23:59:43 -0000	1.29
+++ config/alpha/tm-alpha.h	30 Oct 2004 21:09:14 -0000
@@ -57,18 +57,4 @@ typedef struct alpha_extra_func_info
 #define mips_extra_func_info alpha_extra_func_info
 #define mips_extra_func_info_t alpha_extra_func_info_t
 
-/* It takes two values to specify a frame on the ALPHA.  Sigh.
-
-   In fact, at the moment, the *PC* is the primary value that sets up
-   a frame.  The PC is looked up to see what function it's in; symbol
-   information from that function tells us which register is the frame
-   pointer base, and what offset from there is the "virtual frame pointer".
-   (This is usually an offset from SP.)  FIXME -- this should be cleaned
-   up so that the primary value is the SP, and the PC is used to disambiguate
-   multiple functions with the same SP that are at different stack levels. */
-
-#define SETUP_ARBITRARY_FRAME(argc, argv) \
-  alpha_setup_arbitrary_frame (argc, argv)
-extern struct frame_info *alpha_setup_arbitrary_frame (int, CORE_ADDR *);
-
 #endif /* TM_ALPHA_H */
Index: config/mips/tm-mips.h
===================================================================
RCS file: /cvs/src/src/gdb/config/mips/tm-mips.h,v
retrieving revision 1.64
diff -p -u -r1.64 tm-mips.h
--- config/mips/tm-mips.h	30 Oct 2004 20:54:54 -0000	1.64
+++ config/mips/tm-mips.h	30 Oct 2004 21:09:14 -0000
@@ -80,22 +80,6 @@ typedef struct mips_extra_func_info
   }
  *mips_extra_func_info_t;
 
-/* It takes two values to specify a frame on the MIPS.
-
-   In fact, the *PC* is the primary value that sets up a frame.  The
-   PC is looked up to see what function it's in; symbol information
-   from that function tells us which register is the frame pointer
-   base, and what offset from there is the "virtual frame pointer".
-   (This is usually an offset from SP.)  On most non-MIPS machines,
-   the primary value is the SP, and the PC, if needed, disambiguates
-   multiple functions with the same SP.  But on the MIPS we can't do
-   that since the PC is not stored in the same part of the frame every
-   time.  This does not seem to be a very clever way to set up frames,
-   but there is nothing we can do about that.  */
-
-#define SETUP_ARBITRARY_FRAME(argc, argv) setup_arbitrary_frame (argc, argv)
-extern struct frame_info *setup_arbitrary_frame (int, CORE_ADDR *);
-
 /* Functions for dealing with MIPS16 call and return stubs.  */
 #define DEPRECATED_IGNORE_HELPER_CALL(pc)			mips_ignore_helper (pc)
 extern int mips_ignore_helper (CORE_ADDR pc);

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]