This is the mail archive of the
gdb-patches@sources.redhat.com
mailing list for the GDB project.
[commit] Delete SETUP_ARBITRARY_FRAME
- From: Andrew Cagney <cagney at gnu dot org>
- To: gdb-patches at sources dot redhat dot com
- Date: Sat, 30 Oct 2004 16:24:12 -0400
- Subject: [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);