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
6 changed files with 14 additions and 85 deletions
|
@ -1,5 +1,15 @@
|
||||||
2004-10-30 Andrew Cagney <cagney@gnu.org>
|
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)
|
* config/mips/tm-mips.h (MIPS16_INSTLEN, MIPS_NUMREGS)
|
||||||
(MIPS_INSTLEN): Delete.
|
(MIPS_INSTLEN): Delete.
|
||||||
* mips-tdep.h (enum mips_insn_size): Rename MIPS32_INSN_SIZE and
|
* 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
|
/* 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
|
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
|
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 alpha_extra_func_info
|
||||||
#define mips_extra_func_info_t alpha_extra_func_info_t
|
#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 */
|
#endif /* TM_ALPHA_H */
|
||||||
|
|
|
@ -80,22 +80,6 @@ typedef struct mips_extra_func_info
|
||||||
}
|
}
|
||||||
*mips_extra_func_info_t;
|
*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. */
|
/* Functions for dealing with MIPS16 call and return stubs. */
|
||||||
#define DEPRECATED_IGNORE_HELPER_CALL(pc) mips_ignore_helper (pc)
|
#define DEPRECATED_IGNORE_HELPER_CALL(pc) mips_ignore_helper (pc)
|
||||||
extern int mips_ignore_helper (CORE_ADDR pc);
|
extern int mips_ignore_helper (CORE_ADDR pc);
|
||||||
|
|
|
@ -2326,30 +2326,6 @@ struct mips_objfile_private
|
||||||
char *contents;
|
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
|
/* According to the current ABI, should the type be passed in a
|
||||||
floating-point register (assuming that there is space)? When there
|
floating-point register (assuming that there is space)? When there
|
||||||
is no FPU, FP are not even considered as possibile candidates for
|
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
|
/* We couldn't identify the frame as an existing frame, but
|
||||||
perhaps we can create one with a single argument. */
|
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)
|
if (numargs == 1)
|
||||||
return create_new_frame (addrs[0], 0);
|
return create_new_frame (addrs[0], 0);
|
||||||
error ("Too many args in frame specification");
|
else if (numargs == 2)
|
||||||
#endif
|
return create_new_frame (addrs[0], addrs[1]);
|
||||||
|
else
|
||||||
|
error ("Too many args in frame specification");
|
||||||
}
|
}
|
||||||
|
|
||||||
struct frame_info *
|
struct frame_info *
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue