[Lldb-commits] [PATCH] lldb more on register context arm64

Jason Molenda 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 (success)
        {
            // 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)
                value.SetType(reg_info);
        }

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).
> 
> http://reviews.llvm.org/D5089
> 
> Files:
>  source/Plugins/Process/POSIX/CMakeLists.txt
>  source/Plugins/Process/POSIX/POSIXThread.cpp
>  source/Plugins/Process/POSIX/RegisterContextPOSIXProcessMonitor_arm64.cpp
>  source/Plugins/Process/POSIX/RegisterContextPOSIXProcessMonitor_arm64.h
>  source/Plugins/Process/Utility/CMakeLists.txt
>  source/Plugins/Process/Utility/RegisterContextPOSIX_arm64.cpp
>  source/Plugins/Process/Utility/RegisterContextPOSIX_arm64.h
> <D5089.13001.patch>_______________________________________________
> lldb-commits mailing list
> lldb-commits at cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/lldb-commits





More information about the lldb-commits mailing list