This is the mail archive of the gdb-patches@sourceware.org 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: [RFC PATCH] Read pseudo registers from frame instead of regcache


On 2018-05-28 15:13, Simon Marchi wrote:
Ok, I was assuming that it was never possible for the debug info to
describe how pseudo registers are saved, only raw registers.  Do you
have an architecture in mind where it's possible to have a pseudo
register mentioned in the unwind information?  GNU as doesn't accept
at all "ymm0" or "ymm0h" as an argument to .cfi_offset, so I don't
know how ymm0 would be represented if we wanted to save it (despite it
not being callee saved according to the ABI).

I looked at ARMv7, and one case where this might happen is the VFP registers. The dX registers (64-bits) are the raw ones and the sX (32-bits) are the pseudo ones (where two sX registers make up one dX register). The GNU assembler accepts using s0 with .cfi_offset (for backwards compatibility, I guess?), so we end up with it in the unwind info. However, this is an obsolete way of doing it according to the "DWARF for the ARM Architecture" document [1]. They recommend to describe the sX registers as bit pieces of the dX registers. That recommendation would be in line with the "only raw registers in unwind info" assumption. But it means that we can encounter this in the wild.

Simon

[1] http://infocenter.arm.com/help/topic/com.arm.doc.ihi0040b/IHI0040B_aadwarf.pdf


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