This is the mail archive of the gdb-patches@sources.redhat.com mailing list for the GDB project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

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



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



Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]