From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: by sourceware.org (Postfix, from userid 2058) id AC4753858429; Mon, 8 Apr 2024 11:46:23 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org AC4753858429 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sourceware.org; s=default; t=1712576783; bh=SdEEA2v3RSjl016C8sxWwP3OsCs9ZjSeeCDlAW+feNM=; h=From:To:Subject:Date:From; b=TgjCc1k2ycxU9E8v0lrQXhikaTRpvSp92WfO+Xwk6HlwX6abVwDOPasmJ//ofKbEs 4k3P6hHqbLWUm4zL6TLr8oNgfl0EiKgrylC97cNqgJ0spqQ9stQIDe+2fyZbZOvFqf WToxn5FTSciK1hxTUslIDG+U5gLqXWYTIi9TGs5o= Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable From: Alexandra Hajkova To: gdb-cvs@sourceware.org Subject: [binutils-gdb] remote.c: Make packet_ok return struct packet_result X-Act-Checkin: binutils-gdb X-Git-Author: =?utf-8?q?Alexandra_H=C3=A1jkov=C3=A1?= X-Git-Refname: refs/heads/master X-Git-Oldrev: 3623271997a5c0d79609aa6a1f35ef61b4469054 X-Git-Newrev: 94a94c904da29bb733c19b5a0a168557c1819720 Message-Id: <20240408114623.AC4753858429@sourceware.org> Date: Mon, 8 Apr 2024 11:46:23 +0000 (GMT) List-Id: https://sourceware.org/git/gitweb.cgi?p=3Dbinutils-gdb.git;h=3D94a94c904da2= 9bb733c19b5a0a168557c1819720 commit 94a94c904da29bb733c19b5a0a168557c1819720 Author: Alexandra H=C3=A1jkov=C3=A1 Date: Thu Feb 8 18:06:16 2024 +0100 remote.c: Make packet_ok return struct packet_result =20 This allows the error message stored in a packet_result to be easily printed in the calling function. =20 Approved-By: Andrew Burgess Diff: --- gdb/remote.c | 199 ++++++++++++++++++++++++++++---------------------------= ---- 1 file changed, 96 insertions(+), 103 deletions(-) diff --git a/gdb/remote.c b/gdb/remote.c index 63f1112095d..a09ba4d715d 100644 --- a/gdb/remote.c +++ b/gdb/remote.c @@ -764,8 +764,8 @@ struct remote_features =20 /* Check result value in BUF for packet WHICH_PACKET and update the packet= 's support configuration accordingly. */ - packet_status packet_ok (const char *buf, const int which_packet); - packet_status packet_ok (const gdb::char_vector &buf, const int which_pa= cket); + packet_result packet_ok (const char *buf, const int which_packet); + packet_result packet_ok (const gdb::char_vector &buf, const int which_pa= cket); =20 /* Configuration of a remote target's memory read packet. */ memory_packet_config m_memory_read_packet_config; @@ -2502,7 +2502,7 @@ packet_check_result (const gdb::char_vector &buf, boo= l accept_msg) return packet_check_result (buf.data (), accept_msg); } =20 -packet_status +packet_result remote_features::packet_ok (const char *buf, const int which_packet) { packet_config *config =3D &m_protocol_packets[which_packet]; @@ -2548,10 +2548,10 @@ remote_features::packet_ok (const char *buf, const = int which_packet) break; } =20 - return result.status (); + return result; } =20 -packet_status +packet_result remote_features::packet_ok (const gdb::char_vector &buf, const int which_p= acket) { return packet_ok (buf.data (), which_packet); @@ -2738,14 +2738,15 @@ remote_target::remote_query_attached (int pid) putpkt (rs->buf); getpkt (&rs->buf); =20 - switch (m_features.packet_ok (rs->buf, PACKET_qAttached)) + packet_result result =3D m_features.packet_ok (rs->buf, PACKET_qAttached= ); + switch (result.status()) { case PACKET_OK: if (strcmp (rs->buf.data (), "1") =3D=3D 0) return 1; break; case PACKET_ERROR: - warning (_("Remote failure reply: %s"), rs->buf.data ()); + warning (_("Remote failure reply: %s"), result.err_msg()); break; case PACKET_UNKNOWN: break; @@ -3050,7 +3051,6 @@ remote_target::set_syscall_catchpoint (int pid, bool = needed, int any_count, gdb::array_view syscall_counts) { const char *catch_packet; - enum packet_status result; int n_sysno =3D 0; =20 if (m_features.packet_support (PACKET_QCatchSyscalls) =3D=3D PACKET_DISA= BLE) @@ -3106,8 +3106,8 @@ remote_target::set_syscall_catchpoint (int pid, bool = needed, int any_count, =20 putpkt (catch_packet); getpkt (&rs->buf); - result =3D m_features.packet_ok (rs->buf, PACKET_QCatchSyscalls); - if (result =3D=3D PACKET_OK) + packet_result result =3D m_features.packet_ok (rs->buf, PACKET_QCatchSys= calls); + if (result.status() =3D=3D PACKET_OK) return 0; else return -1; @@ -5112,7 +5112,8 @@ remote_target::start_remote_1 (int from_tty, int exte= nded_p) { putpkt ("QStartNoAckMode"); getpkt (&rs->buf); - if (m_features.packet_ok (rs->buf, PACKET_QStartNoAckMode) =3D=3D PA= CKET_OK) + if ((m_features.packet_ok (rs->buf, PACKET_QStartNoAckMode)).status = () + =3D=3D PACKET_OK) rs->noack_mode =3D 1; } =20 @@ -5897,9 +5898,10 @@ remote_target::remote_query_supported () =20 /* If an error occurred, warn, but do not return - just reset the buffer to empty and go on to disable features. */ - if (m_features.packet_ok (rs->buf, PACKET_qSupported) =3D=3D PACKET_= ERROR) + packet_result result =3D m_features.packet_ok (rs->buf, PACKET_qSupp= orted); + if (result.status () =3D=3D PACKET_ERROR) { - warning (_("Remote failure reply: %s"), rs->buf.data ()); + warning (_("Remote failure reply: %s"), result.err_msg ()); rs->buf[0] =3D 0; } } @@ -6551,7 +6553,8 @@ extended_remote_target::attach (const char *args, int= from_tty) putpkt (rs->buf); getpkt (&rs->buf); =20 - switch (m_features.packet_ok (rs->buf, PACKET_vAttach)) + packet_result result =3D m_features.packet_ok (rs->buf, PACKET_vAttach); + switch (result.status ()) { case PACKET_OK: if (!target_is_non_stop_p ()) @@ -6567,9 +6570,9 @@ extended_remote_target::attach (const char *args, int= from_tty) break; case PACKET_UNKNOWN: error (_("This target does not support attaching to a process")); - default: - error (_("Attaching to %s failed"), - target_pid_to_str (ptid_t (pid)).c_str ()); + case PACKET_ERROR: + error (_("Attaching to %s failed: %s"), + target_pid_to_str (ptid_t (pid)).c_str (), result.err_msg ()); } =20 switch_to_inferior_no_thread (remote_add_inferior (false, pid, 1, 0)); @@ -7492,14 +7495,15 @@ remote_target::remote_interrupt_ns () putpkt (rs->buf); getpkt (&rs->buf); =20 - switch (m_features.packet_ok (rs->buf, PACKET_vCtrlC)) + packet_result result =3D m_features.packet_ok (rs->buf, PACKET_vCtrlC); + switch (result.status ()) { case PACKET_OK: break; case PACKET_UNKNOWN: error (_("No support for interrupting the remote target.")); case PACKET_ERROR: - error (_("Interrupting target failed: %s"), rs->buf.data ()); + error (_("Interrupting target failed: %s"), result.err_msg ()); } } =20 @@ -8795,7 +8799,8 @@ remote_target::fetch_register_using_p (struct regcach= e *regcache, =20 buf =3D rs->buf.data (); =20 - switch (m_features.packet_ok (rs->buf, PACKET_p)) + packet_result result =3D m_features.packet_ok (rs->buf, PACKET_p); + switch (result.status ()) { case PACKET_OK: break; @@ -8804,7 +8809,7 @@ remote_target::fetch_register_using_p (struct regcach= e *regcache, case PACKET_ERROR: error (_("Could not fetch register \"%s\"; remote failure reply '%s'= "), gdbarch_register_name (regcache->arch (), reg->regnum), - buf); + result.err_msg ()); } =20 /* If this register is unfetchable, tell the regcache. */ @@ -9101,13 +9106,14 @@ remote_target::store_register_using_P (const struct= regcache *regcache, putpkt (rs->buf); getpkt (&rs->buf); =20 - switch (m_features.packet_ok (rs->buf, PACKET_P)) + packet_result result =3D m_features.packet_ok (rs->buf, PACKET_P); + switch (result.status ()) { case PACKET_OK: return 1; case PACKET_ERROR: error (_("Could not write register \"%s\"; remote failure reply '%s'= "), - gdbarch_register_name (gdbarch, reg->regnum), rs->buf.data ()); + gdbarch_register_name (gdbarch, reg->regnum), result.err_msg ()); case PACKET_UNKNOWN: return 0; default: @@ -10537,7 +10543,7 @@ remote_target::remote_vkill (int pid) putpkt (rs->buf); getpkt (&rs->buf); =20 - switch (m_features.packet_ok (rs->buf, PACKET_vKill)) + switch ((m_features.packet_ok (rs->buf, PACKET_vKill)).status ()) { case PACKET_OK: return 0; @@ -10693,7 +10699,7 @@ remote_target::extended_remote_run (const std::stri= ng &args) putpkt (rs->buf); getpkt (&rs->buf); =20 - switch (m_features.packet_ok (rs->buf, PACKET_vRun)) + switch ((m_features.packet_ok (rs->buf, PACKET_vRun)).status ()) { case PACKET_OK: /* We have a wait response. All is well. */ @@ -10800,11 +10806,14 @@ remote_target::extended_remote_set_inferior_cwd () =20 putpkt (rs->buf); getpkt (&rs->buf); - if (m_features.packet_ok (rs->buf, PACKET_QSetWorkingDir) !=3D PACKE= T_OK) + packet_result result =3D m_features.packet_ok (rs->buf, PACKET_QSetW= orkingDir); + if (result.status () =3D=3D PACKET_ERROR) error (_("\ Remote replied unexpectedly while setting the inferior's working\n\ directory: %s"), - rs->buf.data ()); + result.err_msg ()); + if (result.status () =3D=3D PACKET_UNKNOWN) + error (_("Remote target failed to process setting the inferior's working = directory")); =20 } } @@ -10973,7 +10982,7 @@ remote_target::insert_breakpoint (struct gdbarch *g= dbarch, putpkt (rs->buf); getpkt (&rs->buf); =20 - switch (m_features.packet_ok (rs->buf, PACKET_Z0)) + switch ((m_features.packet_ok (rs->buf, PACKET_Z0)).status ()) { case PACKET_ERROR: return -1; @@ -11074,8 +11083,8 @@ remote_target::insert_watchpoint (CORE_ADDR addr, i= nt len, putpkt (rs->buf); getpkt (&rs->buf); =20 - switch (m_features.packet_ok (rs->buf, (to_underlying (PACKET_Z0) - + to_underlying (packet)))) + switch ((m_features.packet_ok (rs->buf, (to_underlying (PACKET_Z0) + + to_underlying (packet)))).status ()) { case PACKET_ERROR: return -1; @@ -11123,8 +11132,8 @@ remote_target::remove_watchpoint (CORE_ADDR addr, i= nt len, putpkt (rs->buf); getpkt (&rs->buf); =20 - switch (m_features.packet_ok (rs->buf, (to_underlying (PACKET_Z0) - + to_underlying (packet)))) + switch ((m_features.packet_ok (rs->buf, (to_underlying (PACKET_Z0) + + to_underlying (packet)))).status ()) { case PACKET_ERROR: case PACKET_UNKNOWN: @@ -11255,7 +11264,6 @@ remote_target::insert_hw_breakpoint (struct gdbarch= *gdbarch, CORE_ADDR addr =3D bp_tgt->reqstd_address; struct remote_state *rs; char *p, *endbuf; - char *message; =20 if (m_features.packet_support (PACKET_Z1) =3D=3D PACKET_DISABLE) return -1; @@ -11286,16 +11294,11 @@ remote_target::insert_hw_breakpoint (struct gdbar= ch *gdbarch, putpkt (rs->buf); getpkt (&rs->buf); =20 - switch (m_features.packet_ok (rs->buf, PACKET_Z1)) + packet_result result =3D m_features.packet_ok (rs->buf, PACKET_Z1); + switch (result.status ()) { case PACKET_ERROR: - if (rs->buf[1] =3D=3D '.') - { - message =3D strchr (&rs->buf[2], '.'); - if (message) - error (_("Remote failure reply: %s"), message + 1); - } - return -1; + error (_("Remote failure reply: %s"), result.err_msg ()); case PACKET_UNKNOWN: return -1; case PACKET_OK: @@ -11333,7 +11336,7 @@ remote_target::remove_hw_breakpoint (struct gdbarch= *gdbarch, putpkt (rs->buf); getpkt (&rs->buf); =20 - switch (m_features.packet_ok (rs->buf, PACKET_Z1)) + switch ((m_features.packet_ok (rs->buf, PACKET_Z1)).status ()) { case PACKET_ERROR: case PACKET_UNKNOWN: @@ -11374,7 +11377,7 @@ remote_target::verify_memory (const gdb_byte *data,= CORE_ADDR lma, ULONGEST size =20 getpkt (&rs->buf); =20 - status =3D m_features.packet_ok (rs->buf, PACKET_qCRC); + status =3D (m_features.packet_ok (rs->buf, PACKET_qCRC)).status (); if (status =3D=3D PACKET_ERROR) return -1; else if (status =3D=3D PACKET_OK) @@ -11496,7 +11499,7 @@ remote_target::remote_write_qxfer (const char *obje= ct_name, =20 if (putpkt_binary (rs->buf.data (), i + buf_len) < 0 || getpkt (&rs->buf) < 0 - || m_features.packet_ok (rs->buf, which_packet) !=3D PACKET_OK) + || (m_features.packet_ok (rs->buf, which_packet)).status () !=3D PAC= KET_OK) return TARGET_XFER_E_IO; =20 unpack_varlen_hex (rs->buf.data (), &n); @@ -11561,7 +11564,7 @@ remote_target::remote_read_qxfer (const char *objec= t_name, rs->buf[0] =3D '\0'; packet_len =3D getpkt (&rs->buf); if (packet_len < 0 - || m_features.packet_ok (rs->buf, which_packet) !=3D PACKET_OK) + || m_features.packet_ok (rs->buf, which_packet).status () !=3D PACKE= T_OK) return TARGET_XFER_E_IO; =20 if (rs->buf[0] !=3D 'l' && rs->buf[0] !=3D 'm') @@ -11866,7 +11869,8 @@ remote_target::search_memory (CORE_ADDR start_addr,= ULONGEST search_space_len, =20 if (putpkt_binary (rs->buf.data (), i + escaped_pattern_len) < 0 || getpkt (&rs->buf) < 0 - || m_features.packet_ok (rs->buf, PACKET_qSearch_memory) !=3D PACKET= _OK) + || m_features.packet_ok (rs->buf, PACKET_qSearch_memory).status () + !=3D PACKET_OK) { /* The request may not have worked because the command is not supported. If so, fall back to the simple way. */ @@ -12259,7 +12263,6 @@ remote_target::get_thread_local_address (ptid_t pti= d, CORE_ADDR lm, struct remote_state *rs =3D get_remote_state (); char *p =3D rs->buf.data (); char *endp =3D p + get_remote_packet_size (); - enum packet_status result; =20 strcpy (p, "qGetTLSAddr:"); p +=3D strlen (p); @@ -12272,15 +12275,15 @@ remote_target::get_thread_local_address (ptid_t p= tid, CORE_ADDR lm, =20 putpkt (rs->buf); getpkt (&rs->buf); - result =3D m_features.packet_ok (rs->buf, PACKET_qGetTLSAddr); - if (result =3D=3D PACKET_OK) + packet_result result =3D m_features.packet_ok (rs->buf, PACKET_qGetT= LSAddr); + if (result.status () =3D=3D PACKET_OK) { ULONGEST addr; =20 unpack_varlen_hex (rs->buf.data (), &addr); return addr; } - else if (result =3D=3D PACKET_UNKNOWN) + else if (result.status () =3D=3D PACKET_UNKNOWN) throw_error (TLS_GENERIC_ERROR, _("Remote target doesn't support qGetTLSAddr packet")); else @@ -12305,7 +12308,6 @@ remote_target::get_tib_address (ptid_t ptid, CORE_A= DDR *addr) struct remote_state *rs =3D get_remote_state (); char *p =3D rs->buf.data (); char *endp =3D p + get_remote_packet_size (); - enum packet_status result; =20 strcpy (p, "qGetTIBAddr:"); p +=3D strlen (p); @@ -12314,8 +12316,8 @@ remote_target::get_tib_address (ptid_t ptid, CORE_A= DDR *addr) =20 putpkt (rs->buf); getpkt (&rs->buf); - result =3D m_features.packet_ok (rs->buf, PACKET_qGetTIBAddr); - if (result =3D=3D PACKET_OK) + packet_result result =3D m_features.packet_ok (rs->buf, PACKET_qGetT= IBAddr); + if (result.status () =3D=3D PACKET_OK) { ULONGEST val; unpack_varlen_hex (rs->buf.data (), &val); @@ -12323,10 +12325,11 @@ remote_target::get_tib_address (ptid_t ptid, CORE= _ADDR *addr) *addr =3D (CORE_ADDR) val; return true; } - else if (result =3D=3D PACKET_UNKNOWN) + else if (result.status () =3D=3D PACKET_UNKNOWN) error (_("Remote target doesn't support qGetTIBAddr packet")); else - error (_("Remote target failed to process qGetTIBAddr request")); + error (_("Remote target failed to process qGetTIBAddr request, %s"), + result.err_msg ()); } else error (_("qGetTIBAddr not supported or disabled on this target")); @@ -12582,7 +12585,7 @@ remote_target::remote_hostio_send_command (int comm= and_bytes, int which_packet, return -1; } =20 - switch (m_features.packet_ok (rs->buf, which_packet)) + switch (m_features.packet_ok (rs->buf, which_packet).status ()) { case PACKET_ERROR: *remote_errno =3D FILEIO_EINVAL; @@ -13870,7 +13873,6 @@ remote_target::get_trace_status (struct trace_statu= s *ts) { /* Initialize it just to avoid a GCC false warning. */ char *p =3D NULL; - enum packet_status result; struct remote_state *rs =3D get_remote_state (); =20 if (m_features.packet_support (PACKET_qTStatus) =3D=3D PACKET_DISABLE) @@ -13896,11 +13898,16 @@ remote_target::get_trace_status (struct trace_sta= tus *ts) throw; } =20 - result =3D m_features.packet_ok (p, PACKET_qTStatus); + packet_result result =3D m_features.packet_ok (p, PACKET_qTStatus); =20 - /* If the remote target doesn't do tracing, flag it. */ - if (result =3D=3D PACKET_UNKNOWN) - return -1; + switch (result.status ()) + { + case PACKET_ERROR: + error (_("Remote failure reply: %s"), result.err_msg ()); + /* If the remote target doesn't do tracing, flag it. */ + case PACKET_UNKNOWN: + return -1; + } =20 /* We're working with a live target. */ ts->filename =3D NULL; @@ -14250,7 +14257,6 @@ remote_target::set_trace_buffer_size (LONGEST val) struct remote_state *rs =3D get_remote_state (); char *buf =3D rs->buf.data (); char *endbuf =3D buf + get_remote_packet_size (); - enum packet_status result; =20 gdb_assert (val >=3D 0 || val =3D=3D -1); buf +=3D xsnprintf (buf, endbuf - buf, "QTBuffer:size:"); @@ -14265,10 +14271,15 @@ remote_target::set_trace_buffer_size (LONGEST val) =20 putpkt (rs->buf); remote_get_noisy_reply (); - result =3D m_features.packet_ok (rs->buf, PACKET_QTBuffer_size); - - if (result !=3D PACKET_OK) - warning (_("Bogus reply from target: %s"), rs->buf.data ()); + packet_result result =3D m_features.packet_ok (rs->buf, PACKET_QTBuf= fer_size); + switch (result.status ()) + { + case PACKET_ERROR: + warning (_("Error reply from target: %s"), result.err_msg ()); + break; + case PACKET_UNKNOWN: + warning (_("Remote target failed to process the request ")); + } } } =20 @@ -14694,14 +14705,9 @@ remote_target::btrace_sync_conf (const btrace_conf= ig *conf) putpkt (buf); getpkt (&rs->buf); =20 - if (m_features.packet_ok (buf, PACKET_Qbtrace_conf_bts_size) - =3D=3D PACKET_ERROR) - { - if (buf[0] =3D=3D 'E' && buf[1] =3D=3D '.') - error (_("Failed to configure the BTS buffer size: %s"), buf + 2); - else - error (_("Failed to configure the BTS buffer size.")); - } + packet_result result =3D m_features.packet_ok (buf, PACKET_Qbtrace_c= onf_bts_size); + if (result.status () =3D=3D PACKET_ERROR) + error (_("Failed to configure the BTS buffer size: %s"), result.err_msg (= )); =20 rs->btrace_config.bts.size =3D conf->bts.size; } @@ -14717,14 +14723,9 @@ remote_target::btrace_sync_conf (const btrace_conf= ig *conf) putpkt (buf); getpkt (&rs->buf); =20 - if (m_features.packet_ok (buf, PACKET_Qbtrace_conf_pt_size) - =3D=3D PACKET_ERROR) - { - if (buf[0] =3D=3D 'E' && buf[1] =3D=3D '.') - error (_("Failed to configure the trace buffer size: %s"), buf + 2); - else - error (_("Failed to configure the trace buffer size.")); - } + packet_result result =3D m_features.packet_ok (buf, PACKET_Qbtrace_c= onf_pt_size); + if (result.status () =3D=3D PACKET_ERROR) + error (_("Failed to configure the trace buffer size: %s"), result.err_msg= ()); =20 rs->btrace_config.pt.size =3D conf->pt.size; } @@ -14839,15 +14840,10 @@ remote_target::enable_btrace (thread_info *tp, putpkt (rs->buf); getpkt (&rs->buf); =20 - if (m_features.packet_ok (rs->buf, which_packet) =3D=3D PACKET_ERROR) - { - if (rs->buf[0] =3D=3D 'E' && rs->buf[1] =3D=3D '.') - error (_("Could not enable branch tracing for %s: %s"), - target_pid_to_str (ptid).c_str (), &rs->buf[2]); - else - error (_("Could not enable branch tracing for %s."), - target_pid_to_str (ptid).c_str ()); - } + packet_result result =3D m_features.packet_ok (rs->buf, which_packet); + if (result.status () =3D=3D PACKET_ERROR) + error (_("Could not enable branch tracing for %s: %s"), + target_pid_to_str (ptid).c_str (), result.err_msg ()); =20 btrace_target_info *tinfo =3D new btrace_target_info { ptid }; =20 @@ -14885,15 +14881,10 @@ remote_target::disable_btrace (struct btrace_targ= et_info *tinfo) putpkt (rs->buf); getpkt (&rs->buf); =20 - if (m_features.packet_ok (rs->buf, PACKET_Qbtrace_off) =3D=3D PACKET_ERR= OR) - { - if (rs->buf[0] =3D=3D 'E' && rs->buf[1] =3D=3D '.') + packet_result result =3D m_features.packet_ok (rs->buf, PACKET_Qbtrace_o= ff); + if (result.status () =3D=3D PACKET_ERROR) error (_("Could not disable branch tracing for %s: %s"), - target_pid_to_str (tinfo->ptid).c_str (), &rs->buf[2]); - else - error (_("Could not disable branch tracing for %s."), - target_pid_to_str (tinfo->ptid).c_str ()); - } + target_pid_to_str (tinfo->ptid).c_str (), result.err_msg ()); =20 delete tinfo; } @@ -15158,7 +15149,8 @@ remote_target::thread_events (int enable) putpkt (rs->buf); getpkt (&rs->buf); =20 - switch (m_features.packet_ok (rs->buf, PACKET_QThreadEvents)) + packet_result result =3D m_features.packet_ok (rs->buf, PACKET_QThreadEv= ents); + switch (result.status ()) { case PACKET_OK: if (strcmp (rs->buf.data (), "OK") !=3D 0) @@ -15166,7 +15158,7 @@ remote_target::thread_events (int enable) rs->last_thread_events =3D enable; break; case PACKET_ERROR: - warning (_("Remote failure reply: %s"), rs->buf.data ()); + warning (_("Remote failure reply: %s"), result.err_msg ()); break; case PACKET_UNKNOWN: break; @@ -15213,14 +15205,15 @@ remote_target::commit_requested_thread_options () putpkt (rs->buf); getpkt (&rs->buf, 0); =20 - switch (m_features.packet_ok (rs->buf, PACKET_QThreadOptions)) + packet_result result =3D m_features.packet_ok (rs->buf, PACKET_QThre= adOptions); + switch (result.status ()) { case PACKET_OK: if (strcmp (rs->buf.data (), "OK") !=3D 0) error (_("Remote refused setting thread options: %s"), rs->buf.data (= )); break; case PACKET_ERROR: - error (_("Remote failure reply: %s"), rs->buf.data ()); + error (_("Remote failure reply: %s"), result.err_msg ()); case PACKET_UNKNOWN: gdb_assert_not_reached ("PACKET_UNKNOWN"); break;