[Lldb-commits] PATCH for REVIEW: Extended Register Set Support

Thirumurthi, Ashok ashok.thirumurthi at intel.com
Wed Mar 13 13:26:25 PDT 2013


The attached patch is inspired by PTRACE_GETREGSET, which queries for a register set (i.e. XSAVE) by ID.  The new API IsRegisterSetAvailable determines if an extended register set is supported on the target's processor, and the implication is that the dump of "read register -a" includes a category for each extended register set when available.

Note that the current debug server implementation uses a different struct including ymm registers in the fpr register set when available.  However, this approach won't scale as nicely as more extended register sets become available.  In addition, users will have to learn how "read register -a" varies with the target processor.

A benefit of IsRegisterSetAvailable is that end-users can use lldb to determine if the register sets are both available and supported.  A separate benefit is that plug-ins can have one entry in one struct for each register as illustrated by the ymm registers in the attached patch.  Finally, calling code doesn't have to query on a register-by-register basis (as illustrated when dumping the register file).  

On a separate note, we've been thinking that it would be useful for users to be able to specify the register set by short name (i.e. gpr, fpr, avx and possibly sse).  In addition, it would be helpful if users could ask for the list of short names that lldb will accept.  This helps to define what lldb means by the term "register sets" on each target processor.

Thanks,

- Ashok
-------------- next part --------------
A non-text attachment was scrubbed...
Name: extended-regset.diff
Type: application/octet-stream
Size: 10340 bytes
Desc: extended-regset.diff
URL: <http://lists.llvm.org/pipermail/lldb-commits/attachments/20130313/f2a09d04/attachment.obj>


More information about the lldb-commits mailing list