I was able to make the LLDB work with gdbserver. Running, stopping, source 
stepping were working ok. I needed to patch 2 areas to make it work. I would 
like comments on those changes before I can get them ready for submission.

If dynamic register info is not available then GDBRemoteRegisterContext is 
relying on hardcoded registers for ARM. I have to added similar hard-coded 
registers for x86_64. Would it make any sense if we keep 
GDBRemoteRegisterContext for reading/writing the register packets only. The 
task of translating those packets should be left to some higher level classes. 
Perhaps something like GDBRemoteRegisterContext_arm, 
GDBRemoteRegisterContext_x86_64 etc. Or for the time being, hardcoding is 
considered ok.

It seems that debugserver decrements the pc after stopping on breakpoint. To 
find the stop reason, code in ProcessGDBRemote::SetThreadStopInfo() checks for 
breakpoint on pc. But gdbserver does not decrement the pc in this case. I had 
to duplicate the above check for (pc - 1) and then decrement the pc 
accordingly. I was wondering if there is some good way to distinguish if I am 
connected to debugserver or gdbserver. Can I make use of some of the new 
packets added by LLDB or perhaps add some option in the gdb-remote command?

Regards,
Abid

_______________________________________________
lldb-dev mailing list
[email protected]
http://lists.cs.uiuc.edu/mailman/listinfo/lldb-dev

Reply via email to