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.
This commit is contained in:
parent
95ac2dcfbb
commit
cd65c8f61a
@ -1,5 +1,15 @@
|
||||
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.
|
||||
|
||||
* config/mips/tm-mips.h (MIPS16_INSTLEN, MIPS_NUMREGS)
|
||||
(MIPS_INSTLEN): Delete.
|
||||
* mips-tdep.h (enum mips_insn_size): Rename MIPS32_INSN_SIZE and
|
||||
|
@ -1233,30 +1233,6 @@ reinit_frame_cache_sfunc (char *args, int from_tty, struct cmd_list_element *c)
|
||||
}
|
||||
|
||||
|
||||
/* 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
|
||||
|
@ -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 */
|
||||
|
@ -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);
|
||||
|
@ -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
|
||||
|
11
gdb/stack.c
11
gdb/stack.c
@ -828,15 +828,12 @@ parse_frame_specification_1 (const char *frame_exp, const char *message,
|
||||
|
||||
/* 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 *
|
||||
|
Loading…
Reference in New Issue
Block a user