================
@@ -97,6 +97,8 @@ ThreadElfCore::CreateRegisterContextForFrame(StackFrame 
*frame) {
       case llvm::Triple::ppc64le:
         reg_interface = new RegisterContextFreeBSD_powerpc64(arch);
         break;
+      case llvm::Triple::riscv64:
+        break;
----------------
DavidSpickett wrote:

Yes.

As far as I can tell, the conversion functions exist only for 
ReadAllRegisterValues and WriteAllRegisterValues.

NativeRegisterContextFreeBSD_riscv64::ReadAllRegisterValues calls 
FreeBSDToPOSIXGPR and FreeBSDToPOSIXFPR. 
NativeRegisterContextFreeBSD_riscv64::WriteAllRegisterValues calls 
POSIXToFreeBSDGPR and POSIXToFreeBSDFPR.

These return, and use, a DataBufferSP. ReadAllRegisterValues is called by 
GDBRemoteCommunicationServerLLGS::Handle_QSaveRegisterState which inserts the 
SP into a map m_saved_registers_map. All it does with this is pull the SP back 
out when asked to write all register values.

So I think that you could use the FreeBSD format here because no one tries to 
look inside the saved data. The FreeBSD plugin can return its own format, and 
will get back data in its own format.

If I'm correct, it's still worth adding a note in the header next to these two 
functions that the data is in a format you wouldn't expect. Just in case we 
later try to start poking into these saved register sets (which sounds like a 
bad idea anyway).

https://github.com/llvm/llvm-project/pull/180549
_______________________________________________
lldb-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits

Reply via email to