DavidSpickett added inline comments.

================
Comment at: 
lldb/source/Plugins/Process/Linux/NativeRegisterContextLinux_arm64.cpp:342
+      // header itself.
+      m_za_ptrace_payload.resize(((m_za_header.vl) * (m_za_header.vl)) +
+                                 GetZAHeaderSize());
----------------
omjavaid wrote:
> In case of ZA inactive can we avoid having to transfer these zeros over gdb 
> protocol and construct this register on the user side without even doing the 
> transfer?
You could but you'd still need a way to signal to the user side that ZA is in 
fact inactive. Most obvious way is to send a single 0 and know that if you get 
that but the streaming vector length is provided too, we must extend the value.

However, that bumps up against a lot of checks in lldb's client side. I know 
there's at least one that fails if the data received is < the assumed size of 
the register (for more we just truncate it seems). Bypassing these for 1 target 
specific register is effort and more importantly, potentially hiding issues. 
The register size check was actually very useful developing ZA support, so I 
wouldn't like to subvert it.

GDB also doesn't do anything like this, so we would be compatible with a 
gdbserver that sent us all the data but an lldb-server wouldn't be compatible 
with a gdb because it only sends a bit of the data.

You're right that there's scope to compress the data here but it seems better 
done at a protocol level or by adding some kind of new way to describe 
registers overall.


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D159502/new/

https://reviews.llvm.org/D159502

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

Reply via email to