================ @@ -3064,22 +3064,41 @@ static int gdb_errno_to_system(int err) { static uint64_t ParseHostIOPacketResponse(StringExtractorGDBRemote &response, uint64_t fail_result, Status &error) { + // The packet is expected to have the following format: + // 'F<retcode>,<errno>' + response.SetFilePos(0); if (response.GetChar() != 'F') return fail_result; + int32_t result = response.GetS32(-2, 16); if (result == -2) return fail_result; - if (response.GetChar() == ',') { - int result_errno = gdb_errno_to_system(response.GetS32(-1, 16)); - if (result_errno != -1) - error = Status(result_errno, eErrorTypePOSIX); - else - error = Status(-1, eErrorTypeGeneric); - } else + + if (response.GetChar() != ',') { error.Clear(); + return result; + } + + // Response packet should contain a error code at the end. This code + // corresponds either to the gdb IOFile error code, or to the posix errno. ---------------- dlav-sc wrote:
GDB RSP supports 2 types of error response packets: `E xx` and `E.errtext` (https://sourceware.org/gdb/current/onlinedocs/gdb.html/Standard-Replies.html#Standard-Replies), so it looks like the ability to send error strings should be available for all targets by default. Could you consider a couple of my questions about the matter, please? 1. Taking into account what I've said above, why do we need `QEnableErrorStrings`? 2. Is there any function like `SendErrorRespond`, which takes a error string and forms `E.errtext` packet? To be honest, I couldn't find something like this. https://github.com/llvm/llvm-project/pull/106950 _______________________________________________ lldb-commits mailing list lldb-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits