This is the mail archive of the
gdb-prs@sources.redhat.com
mailing list for the GDB project.
Re: tdep/1276: Accessing ARM FP registers cause gdb-internal-error
- From: Andrew Cagney <ac131313 at redhat dot com>
- To: nobody at sources dot redhat dot com
- Cc: gdb-prs at sources dot redhat dot com,
- Date: 27 Jul 2003 19:28:00 -0000
- Subject: Re: tdep/1276: Accessing ARM FP registers cause gdb-internal-error
- Reply-to: Andrew Cagney <ac131313 at redhat dot com>
The following reply was made to PR tdep/1276; it has been noted by GNATS.
From: Andrew Cagney <ac131313@redhat.com>
To: gdb-gnats@sources.redhat.com
Cc:
Subject: Re: tdep/1276: Accessing ARM FP registers cause gdb-internal-error
Date: Sun, 27 Jul 2003 15:25:14 -0400
[from e-mail to gdb-patches@]
I get the feeling that FP_REGISTER_VIRTUAL_SIZE has nothing to do with
FP_REGISTER_RAW_SIZE and arm_register_virtual_size should return the raw
value. Well ok, technically, arm_register_virtual_size,
arm_register_raw_size and arm_register_virtual_type should all be folded
into arm_register_type.
Looking at FP_REGISTER_VIRTUAL_SIZE that really only comes into play
when the Arm doesn't even have H/W floating point registers. See
arm-linux-tdep.c where it pushes on a double fp value on the stack.
On the other hand, the Arm prologue analysis code, appears to assume
that those registers are always 12 bytes. Look for:
/* stfe f?, [sp, -#c]! */
store floating point extended (i.e. 12 bytes)
/* sfmfd f0, 4, [sp!] */
store 12 byte floating point registers
so it things 12 byte floats are stored.