import gdb-1999-05-25 snapshot

This commit is contained in:
Jason Molenda
1999-05-25 18:09:09 +00:00
parent 751d21b5b9
commit 392a587b05
121 changed files with 1297 additions and 523 deletions

View File

@@ -64,6 +64,80 @@ umax_skip_prologue (pc)
return pc;
}
/* Return number of args passed to a frame.
Can return -1, meaning no way to tell. */
int
merlin_frame_num_args (fi)
struct frame_info *fi;
{
int numargs;
CORE_ADDR pc;
int insn;
int addr_mode;
int width;
pc = FRAME_SAVED_PC (fi);
insn = read_memory_integer (pc,2);
addr_mode = (insn >> 11) & 0x1f;
insn = insn & 0x7ff;
if ((insn & 0x7fc) == 0x57c
&& addr_mode == 0x14) /* immediate */
{
if (insn == 0x57c) /* adjspb */
width = 1;
else if (insn == 0x57d) /* adjspw */
width = 2;
else if (insn == 0x57f) /* adjspd */
width = 4;
numargs = read_memory_integer (pc+2,width);
if (width > 1)
flip_bytes (&numargs, width);
numargs = - sign_extend (numargs, width*8) / 4;
}
else
numargs = -1;
return numargs;
}
int
umax_frame_num_args (fi)
struct frame_info *fi;
{
int numargs;
CORE_ADDR pc;
CORE_ADDR enter_addr;
unsigned int insn;
unsigned int addr_mode;
int width;
numargs = -1;
enter_addr = ns32k_get_enter_addr ((fi)->pc);
if (enter_addr > 0)
{
pc = ((enter_addr == 1)
? SAVED_PC_AFTER_CALL (fi)
: FRAME_SAVED_PC (fi));
insn = read_memory_integer (pc,2);
addr_mode = (insn >> 11) & 0x1f;
insn = insn & 0x7ff;
if ((insn & 0x7fc) == 0x57c
&& addr_mode == 0x14) /* immediate */
{
if (insn == 0x57c) /* adjspb */
width = 1;
else if (insn == 0x57d) /* adjspw */
width = 2;
else if (insn == 0x57f) /* adjspd */
width = 4;
numargs = read_memory_integer (pc+2,width);
if (width > 1)
flip_bytes (&numargs, width);
numargs = - sign_extend (numargs, width*8) / 4;
}
}
return numargs;
}
sign_extend (value, bits)