Sounds like each register can very in size each time you stop if I read the 
docs correctly. As Pavel said "dynamic_size_dwarf_expr" might work for you 
here. Registers in a lldb_private::RegisterContext can have their sizes using:

  uint32_t RegisterContext::UpdateDynamicRegisterSize(const 
lldb_private::ArchSpec &arch, RegisterInfo *reg_info);

Now this function isn't currently virtual, so it currently has one way to 
update the register size that must use the 
RegisterInfo::dynamic_size_dwarf_expr_bytes and 
RegisterInfo::dynamic_size_dwarf_len members. But it could be made virtual if 
your the register size couldn't be determined a DWARF expression and then your 
register context would need to figure things out on the fly.

lldb_private::RegisterContext has ReadAllRegisterValues and 
WriteAllRegisterValues that is used to save/restore register state before we 
modify registers values for an expression that gets run in a thread. This might 
be tricky for this case if the expression you run modifies the SVE register 
state and prior to running the expression you have a few registers that are a 
certain number of bytes in size, but after the expression, they have changed. 
In that case, can you modify the kernels notion of this so that saving and 
restoring registers works correctly?

> On Apr 24, 2019, at 3:07 PM, Omair Javaid via lldb-dev 
> <lldb-dev@lists.llvm.org> wrote:
> 
> Hi,
> 
> I am going to be starting work on implementing LLDB support for AArch64/Arm64 
> scalable vector extension (SVE) in coming weeks. For a quick walk through of 
> SVE please read through this doc here: 
> https://www.kernel.org/doc/Documentation/arm64/sve.txt 
> <https://www.kernel.org/doc/Documentation/arm64/sve.txt>
> 
> In summary it allows hardware + kernel which support SVE to have variable 
> vector register lengths which can be configured as per system requirements on 
> per process or thread basis. 
> 
> I have been informed that there might be some downstream patches and I would 
> like to collaborate with anyone who is willing to contribute their completed 
> or in-progress work.
> 
> I would also like to open a discussion on how we can implement variable 
> length registers in LLDB and what could be the consequences of those changes.
> 
> Looking forward to hearing from the community.
> 
> Thanks!
> 
> --
> Omair Javaid
> www.linaro.org <http://www.linaro.org/>
> 
> _______________________________________________
> lldb-dev mailing list
> lldb-dev@lists.llvm.org
> https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-dev

_______________________________________________
lldb-dev mailing list
lldb-dev@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-dev

Reply via email to