* config/mips/tm-mips.h (SETUP_ARBITRARY_FRAME): Revise comment

regarding using the PC--using the PC is necessary and all the
	FIXME comments in the world won't make it go away.
This commit is contained in:
Jim Kingdon 1994-03-25 01:38:24 +00:00
parent 27847c6f99
commit 4df6dcd10d
2 changed files with 15 additions and 8 deletions

View File

@ -1,5 +1,9 @@
Thu Mar 24 07:12:09 1994 Jim Kingdon (kingdon@lioth.cygnus.com)
* config/mips/tm-mips.h (SETUP_ARBITRARY_FRAME): Revise comment
regarding using the PC--using the PC is necessary and all the
FIXME comments in the world won't make it go away.
* valops.c (value_at, value_at_lazy): Give error if we dereference
a pointer to void.
* gdbtypes.h: Fix comments regarding TYPE_CODE_VOID.

View File

@ -431,15 +431,18 @@ typedef struct mips_extra_func_info {
fi->proc_desc->pdr.frameoffset); \
}
/* It takes two values to specify a frame on the MIPS. Sigh.
/* It takes two values to specify a frame on the MIPS.
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. */
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)
/* FIXME: Depends on equivalence between FRAME and "struct frame_info *",