internal error reading f0-f7 registers in arm-elf targets.

Andrew Cagney ac131313@redhat.com
Sun Jul 27 19:25:00 GMT 2003


> Secondly, just changing the number is hardly correct.  Patches have to
> fix the problem, not just hide around it by making an incorrect change;
> and the comment is still accurate.

Well arm_register_virtual_size() and arm_register_virtual_type() 
disagree, outch!

BTW, see also:
http://sources.redhat.com/cgi-bin/gnatsweb.pl?cmd=view%20audit-trail&database=gdb&pr=1276

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.

Andrew




More information about the Gdb-patches mailing list