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
