This is the mail archive of the
gdb-patches@sources.redhat.com
mailing list for the GDB project.
Re: [patch/rfc] default REGISTER_VIRTUAL_SIZE and REGISTER_RAW_SIZEto register_size
- From: Andrew Cagney <ac131313 at cygnus dot com>
- To: Richard dot Earnshaw at arm dot com
- Cc: gdb-patches at sources dot redhat dot com
- Date: Tue, 07 May 2002 11:51:01 -0400
- Subject: Re: [patch/rfc] default REGISTER_VIRTUAL_SIZE and REGISTER_RAW_SIZEto register_size
- References: <200205071020.LAA02712@cam-mail2.cambridge.arm.com>
> Hello,
>>
>> For most architectures. The relationship:
>>
>> REGISTER_VIRTUAL_SIZE(N)
>> == REGISTER_RAW_SIZE(N)
>> == TYPE_LENGTH(REGISTER_VIRTUAL_TYPE(N)
>>
>> (the exception is the @$(*&@(^$*&^!@ MIPS ...). Given this, the
>> attached patch changes the architecture vector so that it defaults both
>> to the register's type size.
>
>
> The ARM has REGISTER_VIRTUAL_SIZE(FPA-reg) == 8, but
> REGISTER_RAW_SIZE(FPA-reg) == 12.
>
> But that doesn't necessarily make the change wrong, provided we can
> override the default.
Hmm, remember that think-o bug I posted? ARM's register virtual type is:
if (regnum >= ARM_F0_REGNUM && regnum < ARM_F0_REGNUM + NUM_FREGS)
{
if (TARGET_BYTE_ORDER == BFD_ENDIAN_BIG)
return builtin_type_arm_ext_big;
else
return builtin_type_arm_ext_littlebyte_bigword;
}
(i.e. 12 bytes) yet virtual size for those registers returns:
#define FP_REGISTER_VIRTUAL_SIZE 8
Outch!
Having different raw and virtual sizes only does something(1) when
register_convertible() is defined - the Arm doesn't define this.
enjoy,
Andrew
(1) I'm not saying that what it does is useful though :-)