mirror of
git://gcc.gnu.org/git/gcc.git
synced 2025-03-09 23:57:13 +08:00
Fix mips16 debug info problems with frame address.
* config/mips/mips.c (mips_debugger_offset): When TARGET_MIPS16 && frame_pointer_needed adjust frame size. (function_prologue): Don't MIPS16 .mask GPOFFSET. Already adjusted in .frame pseudo-op. Frm Jim Wilson <wilson@cygnus.com>: * mips.c (function_prologue): Adjust frame size in .frame pseudo-op when TARGET_MIPS16 && frame_pointer_needed. From-SVN: r25382
This commit is contained in:
parent
3b7265ff89
commit
a50f2a09ba
@ -1,3 +1,13 @@
|
||||
Mon Feb 22 19:36:33 1999 Andrew Cagney <cagney@b1.cygnus.com>
|
||||
|
||||
* config/mips/mips.c (mips_debugger_offset): When TARGET_MIPS16 &&
|
||||
frame_pointer_needed adjust frame size.
|
||||
(function_prologue): Don't MIPS16 .mask GPOFFSET. Already adjusted
|
||||
in .frame pseudo-op.
|
||||
Frm Jim Wilson <wilson@cygnus.com>:
|
||||
* mips.c (function_prologue): Adjust frame size in .frame pseudo-op
|
||||
when TARGET_MIPS16 && frame_pointer_needed.
|
||||
|
||||
1999-02-22 Nick Clifton <nickc@cygnus.com>
|
||||
|
||||
* config/arm/arm.h: Add TARGET_CPU_strongarm1100.
|
||||
|
@ -4545,6 +4545,10 @@ mips_debugger_offset (addr, offset)
|
||||
? compute_frame_size (get_frame_size ())
|
||||
: current_frame_info.total_size;
|
||||
|
||||
/* MIPS16 frame is smaller */
|
||||
if (frame_pointer_needed && TARGET_MIPS16)
|
||||
frame_size -= current_function_outgoing_args_size;
|
||||
|
||||
offset = offset - frame_size;
|
||||
}
|
||||
|
||||
@ -6115,25 +6119,31 @@ function_prologue (file, size)
|
||||
|
||||
if (!flag_inhibit_size_directive)
|
||||
{
|
||||
/* .frame FRAMEREG, FRAMESIZE, RETREG */
|
||||
fprintf (file,
|
||||
"\t.frame\t%s,%ld,%s\t\t# vars= %ld, regs= %d/%d, args= %d, extra= %ld\n",
|
||||
(reg_names[(frame_pointer_needed)
|
||||
? HARD_FRAME_POINTER_REGNUM : STACK_POINTER_REGNUM]),
|
||||
tsize, reg_names[31 + GP_REG_FIRST],
|
||||
((frame_pointer_needed && TARGET_MIPS16)
|
||||
? (tsize - current_function_outgoing_args_size)
|
||||
: tsize),
|
||||
reg_names[31 + GP_REG_FIRST],
|
||||
current_frame_info.var_size,
|
||||
current_frame_info.num_gp,
|
||||
current_frame_info.num_fp,
|
||||
current_function_outgoing_args_size,
|
||||
current_frame_info.extra_size);
|
||||
|
||||
/* .mask MASK, GPOFFSET; .fmask FPOFFSET */
|
||||
fprintf (file, "\t.mask\t0x%08lx,%ld\n\t.fmask\t0x%08lx,%ld\n",
|
||||
current_frame_info.mask,
|
||||
((frame_pointer_needed && TARGET_MIPS16)
|
||||
? (current_frame_info.gp_save_offset
|
||||
- current_function_outgoing_args_size)
|
||||
: current_frame_info.gp_save_offset),
|
||||
current_frame_info.gp_save_offset,
|
||||
current_frame_info.fmask,
|
||||
current_frame_info.fp_save_offset);
|
||||
|
||||
/* Require:
|
||||
OLD_SP == *FRAMEREG + FRAMESIZE => can find old_sp from nominated FP reg.
|
||||
HIGHEST_GP_SAVED == *FRAMEREG + FRAMESIZE + GPOFFSET => can find saved regs. */
|
||||
}
|
||||
|
||||
if (mips_entry && ! mips_can_use_return_insn ())
|
||||
|
Loading…
Reference in New Issue
Block a user