[Lldb-commits] [PATCH] lldb more on register context arm64
jason at molenda.com
Fri Aug 29 00:49:21 PDT 2014
In RegisterContextPOSIXProcessMonitor_arm64::ReadRegister this code seems to be copied from an x86 version of this impl:
// If our read was not aligned (for ah,bh,ch,dh), shift our returned value one byte to the right.
if (is_subreg && (reg_info->byte_offset & 0x1))
value.SetUInt64(value.GetAsUInt64() >> 8);
// If our return byte size was greater than the return value reg size, then
// use the type specified by reg_info rather than the uint64_t default
if (value.GetByteSize() > reg_info->byte_size)
arm64 does have invalidate_registers like x86 -- w0 is the lower 32 bits of x0; and s0, d0, and q0 aka v0 also are all from the same part of the register file. But I think this is doing something very x86 specific for supporting the 8-bit variants of eax etc registers and I don't think it is applicable..
RegisterContextPOSIXProcessMonitor_arm64::ReadRegister also only handles 2/4/8 byte registers - but the v0-31 registers are 16-bytes wide each. Maybe the vector regs don't go through this code path. The same problem would arise for x86 with the xmm/ymm type registers.
On Aug 27, 2014, at 2:08 PM, Paul Osmialowski <pawelo at king.net.pl> wrote:
> More on registering context on arm64. Depends on D4580 which although accepted, does not seem to be commited yet (I guess due to Host vs HostInfo problem).
> lldb-commits mailing list
> lldb-commits at cs.uiuc.edu
More information about the lldb-commits