Note the DWARF abi extension for ARM says that "registers
intentionally
unused" should also be initialized as if by DW_CFA_same_value. The
example given is "an integer-only function might be included in one
executable file for targets with VFP and another for targets without".
We don't currently do this yet.
Seems worthwhile to include the URL to the ABI spec that talks about
DWARF and/or the function call ABI (we never did for the others, but
I'm not sure there are canonical URLs for most of them).
We have the DW_CFA_restore hack (which I could have sworn was used
somewhere--I thought we had abi_cfi for ppc long ago). So perhaps the
right thing is to use that plus explicit DW_CFA_undefined for the
call-clobbered registers.
Either way, this needs to cover the VFP/NEON registers (which are half
call-clobbered and half call-saved).
+ /* The link register contains the return address setup by
caller. */
+ SV (14),
Should also have:
DW_CFA_register, ULEB128_7 (15), ULEB128_7 (14), /* pc = lr */
+ abi_info->return_address_register = 14; /* Link Register. */
I think that's wrong. 14 is LR, which is just a general register that
happens to be where the ABI says the return address is on entry. The
"return_address_register" is for the "caller's PC" (a
"virtual
register" on machines where the PC is not directly addressable), so it
should use 15 (PC).
Thanks,
Roland