From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from simark.ca by simark.ca with LMTP id iEbHMfeZAmYNqxYAWB0awg (envelope-from ) for ; Tue, 26 Mar 2024 05:48:39 -0400 Authentication-Results: simark.ca; dkim=pass (1024-bit key; unprotected) header.d=redhat.com header.i=@redhat.com header.a=rsa-sha256 header.s=mimecast20190719 header.b=a4yuyB8Y; dkim-atps=neutral Received: by simark.ca (Postfix, from userid 112) id B00151E0C0; Tue, 26 Mar 2024 05:48:39 -0400 (EDT) Received: from server2.sourceware.org (server2.sourceware.org [8.43.85.97]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (prime256v1) server-digest SHA256) (No client certificate requested) by simark.ca (Postfix) with ESMTPS id 8E8361E030 for ; Tue, 26 Mar 2024 05:48:37 -0400 (EDT) Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id CF8373858413 for ; Tue, 26 Mar 2024 09:48:36 +0000 (GMT) Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.129.124]) by sourceware.org (Postfix) with ESMTPS id E48CB3858C56 for ; Tue, 26 Mar 2024 09:48:11 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org E48CB3858C56 Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=redhat.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=redhat.com ARC-Filter: OpenARC Filter v1.0.0 sourceware.org E48CB3858C56 Authentication-Results: server2.sourceware.org; arc=none smtp.remote-ip=170.10.129.124 ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1711446495; cv=none; b=m993E/3mDdz4j23m9qutqhjO6+LdFc6pmUzyCdaqeV/X/z4efCzqFt3FWlNgxAEWXsn7vjWGFVMSGhdWv5l1ZvnlV1kDymk78izMskKzXAUdbB1wCJ1X7GQ+PvkYvvXzXo2XKvWdvxfPQhEaM4FdzuGnfxPdpBWhKCZZuCwQbBk= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1711446495; c=relaxed/simple; bh=Vyts8oFhvx5P7OQ+PK0QVTBtFTHRoWLO2/VmoKRLdPE=; h=DKIM-Signature:From:To:Subject:Date:Message-ID:MIME-Version; b=LbXIPGKF0hU7xD5Xujq8HtxOTrF2UjEpSBO0AFw7lO6aHRy75wpyPfyzcQpx5mifTZD2/fAftbsNib98BsmSiMSaktkZSdlkhGUGKijcqz2z/9tJoeR9HKad9GW6ZwhZNrQ/HAtnENngqvHRpX0J5gaYzbm+wRmBq00D4PVd5Lg= ARC-Authentication-Results: i=1; server2.sourceware.org DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1711446491; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=YEvdRUwAVV9GOquS3Bsg3kys6ZaqRoxtqktyxhBTJDU=; b=a4yuyB8YSrvVfqhrRNFQkszNZwxz2TEUqEiam4pFQUiS4N+DZrZS4TdrIe9mu3D0rV/kLk C2Gsed+yrEUEGE001vXVFLTbjShVv8wy3WTLrZaTyoantmUvtdcZifhT4AF+mBFMHByr/t d2enfA1lEpYG7EfZiObrwpT8FA82taU= Received: from mail-ej1-f70.google.com (mail-ej1-f70.google.com [209.85.218.70]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-567-Hh5LVAnhOjmdt_nNE1RBEg-1; Tue, 26 Mar 2024 05:48:10 -0400 X-MC-Unique: Hh5LVAnhOjmdt_nNE1RBEg-1 Received: by mail-ej1-f70.google.com with SMTP id a640c23a62f3a-a462e4d8c44so243937566b.1 for ; Tue, 26 Mar 2024 02:48:09 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1711446489; x=1712051289; h=content-transfer-encoding:mime-version:message-id:date:references :in-reply-to:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=A06NwZUsjHrlN3aX8qYrZNc887rnhW1QoyF3OLJ0b7I=; b=dpWH3L0fCGq7/QYPmrhdS+UR/vJquJQX8Ch3B8wK08Zp7n48+nUGQBOfLAKwoVi9W/ 8DlnYNphEpoJNuqrBU/kha4xLwUXUES65r6HJZgDeAkFAEliaoZzPFDMbd6asgYMzM6a slwttduDKBPbBx8aR4jJH8Rmj+W3Ei8AttVNjMJJh2gYL3d9AIVKRENuIU4IDg7W7Geq 1/E7u+pfFxQGrA2gJNEty06AwO/yJUfCFVM4UtH7qU9l9U8P97S664T5jnpffwpE850t pvaNGG7zLQOn7WIlAtsGDLDWmX9G0LRFspG19wG+ZDlL/c9eumeEK366xKSJpx6Ah5L3 1hcQ== X-Forwarded-Encrypted: i=1; AJvYcCV2QUEXQQX5JRrgVfxncnwiCpStvdL5cTyotbOC0YVCsEAlYQle5ypuJ4NU3FLLoGotDtAkGK+OAgwaKWEDkB8PO8tIGGp/MfeMWg== X-Gm-Message-State: AOJu0Yw2q8S1poB4SGkNnpcPJLcJho4fMfWC/CD2oazC/HmwdRUIpzsh AvFPki12KL2zZ+70GpW+4PIzL/YRkKEHEy8yyNdGYLjrjxwBa9rl3T6O+F3548eN1nGYyHbSNFW rANce5DE/hLwiUfAV5vmGa5UFj2QPf5g/7rDL+Z9LmcEL8oBO3ZLU+a0cmMk= X-Received: by 2002:a17:906:4a56:b0:a46:9b7c:c962 with SMTP id a22-20020a1709064a5600b00a469b7cc962mr6911808ejv.47.1711446488501; Tue, 26 Mar 2024 02:48:08 -0700 (PDT) X-Google-Smtp-Source: AGHT+IGV87ij10NTU9Y736Pj+V1g6DL1o+/gHpFHbj+2D77vA4I+3ui6DsgCEzQlBYDhgG7JN+3Iyw== X-Received: by 2002:a17:906:4a56:b0:a46:9b7c:c962 with SMTP id a22-20020a1709064a5600b00a469b7cc962mr6911782ejv.47.1711446487945; Tue, 26 Mar 2024 02:48:07 -0700 (PDT) Received: from localhost (185.223.159.143.dyn.plus.net. [143.159.223.185]) by smtp.gmail.com with ESMTPSA id la5-20020a170907780500b00a45621ded4bsm4084745ejc.146.2024.03.26.02.48.07 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 26 Mar 2024 02:48:07 -0700 (PDT) From: Andrew Burgess To: Alexandra =?utf-8?B?SMOhamtvdsOh?= , gdb-patches@sourceware.org Cc: ahajkova@redhat.com Subject: Re: [PATCH v2 2/2] remote.c: Make packet_ok return struct packet_result In-Reply-To: <20240319135829.662941-2-ahajkova@khirnov.net> References: <20240319135829.662941-1-ahajkova@khirnov.net> <20240319135829.662941-2-ahajkova@khirnov.net> Date: Tue, 26 Mar 2024 09:48:06 +0000 Message-ID: <87frwd5nop.fsf@redhat.com> MIME-Version: 1.0 X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable X-Spam-Status: No, score=-12.0 required=5.0 tests=BAYES_00, DKIMWL_WL_HIGH, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, GIT_PATCH_0, RCVD_IN_DNSWL_NONE, RCVD_IN_MSPIKE_H4, RCVD_IN_MSPIKE_WL, SPF_HELO_NONE, SPF_NONE, TXREP autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org X-BeenThere: gdb-patches@sourceware.org X-Mailman-Version: 2.1.30 Precedence: list List-Id: Gdb-patches mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: gdb-patches-bounces+public-inbox=simark.ca@sourceware.org Alexandra H=C3=A1jkov=C3=A1 writes: > From: Alexandra H=C3=A1jkov=C3=A1 > > This allows to print the error message stored in a packet_result > to be easily used in the calling function. This looks good. Approved-By: Andrew Burgess Thanks, Andrew > --- > gdb/remote.c | 199 +++++++++++++++++++++++++-------------------------- > 1 file changed, 96 insertions(+), 103 deletions(-) > > diff --git a/gdb/remote.c b/gdb/remote.c > index 8462b7e4e60..95e193ba543 100644 > --- a/gdb/remote.c > +++ b/gdb/remote.c > @@ -765,8 +765,8 @@ struct remote_features > =20 > /* Check result value in BUF for packet WHICH_PACKET and update the pack= et'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_= packet); > + packet_result packet_ok (const char *buf, const int which_packet); > + packet_result packet_ok (const gdb::char_vector &buf, const int which_= packet); > =20 > /* Configuration of a remote target's memory read packet. */ > memory_packet_config m_memory_read_packet_config; > @@ -2503,7 +2503,7 @@ packet_check_result (const gdb::char_vector &buf, b= ool 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]; > @@ -2549,10 +2549,10 @@ remote_features::packet_ok (const char *buf, cons= t 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= _packet) > { > return packet_ok (buf.data (), which_packet); > @@ -2739,14 +2739,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_qAttach= ed); > + switch (result.status()) > { > case PACKET_OK: > if (strcmp (rs->buf.data (), "1") =3D=3D 0) > =09return 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; > @@ -3051,7 +3052,6 @@ remote_target::set_syscall_catchpoint (int pid, boo= l needed, int any_count, > =09=09=09=09 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_DI= SABLE) > @@ -3107,8 +3107,8 @@ remote_target::set_syscall_catchpoint (int pid, boo= l 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_QCatchS= yscalls); > + if (result.status() =3D=3D PACKET_OK) > return 0; > else > return -1; > @@ -5113,7 +5113,8 @@ remote_target::start_remote_1 (int from_tty, int ex= tended_p) > { > putpkt ("QStartNoAckMode"); > getpkt (&rs->buf); > - if (m_features.packet_ok (rs->buf, PACKET_QStartNoAckMode) =3D=3D = PACKET_OK) > + if ((m_features.packet_ok (rs->buf, PACKET_QStartNoAckMode)).statu= s () > +=09 =3D=3D PACKET_OK) > =09rs->noack_mode =3D 1; > } > =20 > @@ -5898,9 +5899,10 @@ remote_target::remote_query_supported () > =20 > /* If an error occurred, warn, but do not return - just reset the > =09 buffer to empty and go on to disable features. */ > - if (m_features.packet_ok (rs->buf, PACKET_qSupported) =3D=3D PACKE= T_ERROR) > + packet_result result =3D m_features.packet_ok (rs->buf, PACKET_qSu= pported); > + if (result.status () =3D=3D PACKET_ERROR) > =09{ > -=09 warning (_("Remote failure reply: %s"), rs->buf.data ()); > +=09 warning (_("Remote failure reply: %s"), result.err_msg ()); > =09 rs->buf[0] =3D 0; > =09} > } > @@ -6552,7 +6554,8 @@ extended_remote_target::attach (const char *args, i= nt 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 ()) > @@ -6568,9 +6571,9 @@ extended_remote_target::attach (const char *args, i= nt from_tty) > break; > case PACKET_UNKNOWN: > error (_("This target does not support attaching to a process")); > - default: > - error (_("Attaching to %s failed"), > -=09 target_pid_to_str (ptid_t (pid)).c_str ()); > + case PACKET_ERROR: > + error (_("Attaching to %s failed: %s"), > +=09 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)); > @@ -7493,14 +7496,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 > @@ -8796,7 +8800,8 @@ remote_target::fetch_register_using_p (struct regca= che *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; > @@ -8805,7 +8810,7 @@ remote_target::fetch_register_using_p (struct regca= che *regcache, > case PACKET_ERROR: > error (_("Could not fetch register \"%s\"; remote failure reply '%= s'"), > =09 gdbarch_register_name (regcache->arch (), reg->regnum), > -=09 buf); > +=09 result.err_msg ()); > } > =20 > /* If this register is unfetchable, tell the regcache. */ > @@ -9102,13 +9107,14 @@ remote_target::store_register_using_P (const stru= ct 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'"), > -=09 gdbarch_register_name (gdbarch, reg->regnum), rs->buf.data ()); > +=09 gdbarch_register_name (gdbarch, reg->regnum), result.err_msg ())= ; > case PACKET_UNKNOWN: > return 0; > default: > @@ -10539,7 +10545,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; > @@ -10695,7 +10701,7 @@ remote_target::extended_remote_run (const std::st= ring &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. */ > @@ -10802,11 +10808,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 PAC= KET_OK) > + packet_result result =3D m_features.packet_ok (rs->buf, PACKET_QSe= tWorkingDir); > + if (result.status () =3D=3D PACKET_ERROR) > =09error (_("\ > Remote replied unexpectedly while setting the inferior's working\n\ > directory: %s"), > -=09 rs->buf.data ()); > +=09 result.err_msg ()); > + if (result.status () =3D=3D PACKET_UNKNOWN) > +=09error (_("Remote target failed to process setting the inferior's work= ing directory")); > =20 > } > } > @@ -10975,7 +10984,7 @@ remote_target::insert_breakpoint (struct gdbarch = *gdbarch, > 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 ()) > =09{ > =09case PACKET_ERROR: > =09 return -1; > @@ -11076,8 +11085,8 @@ remote_target::insert_watchpoint (CORE_ADDR addr,= int len, > putpkt (rs->buf); > getpkt (&rs->buf); > =20 > - switch (m_features.packet_ok (rs->buf, (to_underlying (PACKET_Z0) > -=09=09=09=09=09 + to_underlying (packet)))) > + switch ((m_features.packet_ok (rs->buf, (to_underlying (PACKET_Z0) > +=09=09=09=09=09 + to_underlying (packet)))).status ()) > { > case PACKET_ERROR: > return -1; > @@ -11125,8 +11134,8 @@ remote_target::remove_watchpoint (CORE_ADDR addr,= int len, > putpkt (rs->buf); > getpkt (&rs->buf); > =20 > - switch (m_features.packet_ok (rs->buf, (to_underlying (PACKET_Z0) > -=09=09=09=09=09 + to_underlying (packet)))) > + switch ((m_features.packet_ok (rs->buf, (to_underlying (PACKET_Z0) > +=09=09=09=09=09 + to_underlying (packet)))).status ()) > { > case PACKET_ERROR: > case PACKET_UNKNOWN: > @@ -11257,7 +11266,6 @@ remote_target::insert_hw_breakpoint (struct gdbar= ch *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; > @@ -11288,16 +11296,11 @@ remote_target::insert_hw_breakpoint (struct gdb= arch *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 '.') > -=09{ > -=09 message =3D strchr (&rs->buf[2], '.'); > -=09 if (message) > -=09 error (_("Remote failure reply: %s"), message + 1); > -=09} > - return -1; > + error (_("Remote failure reply: %s"), result.err_msg ()); > case PACKET_UNKNOWN: > return -1; > case PACKET_OK: > @@ -11335,7 +11338,7 @@ remote_target::remove_hw_breakpoint (struct gdbar= ch *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: > @@ -11376,7 +11379,7 @@ remote_target::verify_memory (const gdb_byte *dat= a, 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) > =09return -1; > else if (status =3D=3D PACKET_OK) > @@ -11498,7 +11501,7 @@ remote_target::remote_write_qxfer (const char *ob= ject_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 P= ACKET_OK) > return TARGET_XFER_E_IO; > =20 > unpack_varlen_hex (rs->buf.data (), &n); > @@ -11563,7 +11566,7 @@ remote_target::remote_read_qxfer (const char *obj= ect_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 P= ACKET_OK) > return TARGET_XFER_E_IO; > =20 > if (rs->buf[0] !=3D 'l' && rs->buf[0] !=3D 'm') > @@ -11868,7 +11871,8 @@ remote_target::search_memory (CORE_ADDR start_add= r, 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 PACK= ET_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 > =09 supported. If so, fall back to the simple way. */ > @@ -12261,7 +12265,6 @@ remote_target::get_thread_local_address (ptid_t p= tid, 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); > @@ -12274,15 +12277,15 @@ remote_target::get_thread_local_address (ptid_t= ptid, 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_qGe= tTLSAddr); > + if (result.status () =3D=3D PACKET_OK) > =09{ > =09 ULONGEST addr; > =20 > =09 unpack_varlen_hex (rs->buf.data (), &addr); > =09 return addr; > =09} > - else if (result =3D=3D PACKET_UNKNOWN) > + else if (result.status () =3D=3D PACKET_UNKNOWN) > =09throw_error (TLS_GENERIC_ERROR, > =09=09 _("Remote target doesn't support qGetTLSAddr packet")); > else > @@ -12307,7 +12310,6 @@ remote_target::get_tib_address (ptid_t ptid, CORE= _ADDR *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); > @@ -12316,8 +12318,8 @@ remote_target::get_tib_address (ptid_t ptid, CORE= _ADDR *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_qGe= tTIBAddr); > + if (result.status () =3D=3D PACKET_OK) > =09{ > =09 ULONGEST val; > =09 unpack_varlen_hex (rs->buf.data (), &val); > @@ -12325,10 +12327,11 @@ remote_target::get_tib_address (ptid_t ptid, CO= RE_ADDR *addr) > =09 *addr =3D (CORE_ADDR) val; > =09 return true; > =09} > - else if (result =3D=3D PACKET_UNKNOWN) > + else if (result.status () =3D=3D PACKET_UNKNOWN) > =09error (_("Remote target doesn't support qGetTIBAddr packet")); > else > -=09error (_("Remote target failed to process qGetTIBAddr request")); > +=09error (_("Remote target failed to process qGetTIBAddr request, %s"), > +=09=09 result.err_msg ()); > } > else > error (_("qGetTIBAddr not supported or disabled on this target")); > @@ -12584,7 +12587,7 @@ remote_target::remote_hostio_send_command (int co= mmand_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; > @@ -13872,7 +13875,6 @@ remote_target::get_trace_status (struct trace_sta= tus *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) > @@ -13898,11 +13900,16 @@ remote_target::get_trace_status (struct trace_s= tatus *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; > @@ -14252,7 +14259,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:"); > @@ -14267,10 +14273,15 @@ remote_target::set_trace_buffer_size (LONGEST v= al) > =20 > putpkt (rs->buf); > remote_get_noisy_reply (); > - result =3D m_features.packet_ok (rs->buf, PACKET_QTBuffer_size); > - > - if (result !=3D PACKET_OK) > -=09warning (_("Bogus reply from target: %s"), rs->buf.data ()); > + packet_result result =3D m_features.packet_ok (rs->buf, PACKET_QTB= uffer_size); > + switch (result.status ()) > +=09{ > +=09case PACKET_ERROR: > +=09 warning (_("Bogus reply from target: %s"), result.err_msg ()); > +=09 break; > +=09case PACKET_UNKNOWN: > +=09 warning (_("Remote target failed to process the request ")); > +=09} > } > } > =20 > @@ -14696,14 +14707,9 @@ remote_target::btrace_sync_conf (const btrace_co= nfig *conf) > putpkt (buf); > getpkt (&rs->buf); > =20 > - if (m_features.packet_ok (buf, PACKET_Qbtrace_conf_bts_size) > -=09 =3D=3D PACKET_ERROR) > -=09{ > -=09 if (buf[0] =3D=3D 'E' && buf[1] =3D=3D '.') > -=09 error (_("Failed to configure the BTS buffer size: %s"), buf + 2)= ; > -=09 else > -=09 error (_("Failed to configure the BTS buffer size.")); > -=09} > + packet_result result =3D m_features.packet_ok (buf, PACKET_Qbtrace= _conf_bts_size); > + if (result.status () =3D=3D PACKET_ERROR) > +=09error (_("Failed to configure the BTS buffer size: %s"), result.err_m= sg ()); > =20 > rs->btrace_config.bts.size =3D conf->bts.size; > } > @@ -14719,14 +14725,9 @@ remote_target::btrace_sync_conf (const btrace_co= nfig *conf) > putpkt (buf); > getpkt (&rs->buf); > =20 > - if (m_features.packet_ok (buf, PACKET_Qbtrace_conf_pt_size) > -=09 =3D=3D PACKET_ERROR) > -=09{ > -=09 if (buf[0] =3D=3D 'E' && buf[1] =3D=3D '.') > -=09 error (_("Failed to configure the trace buffer size: %s"), buf + = 2); > -=09 else > -=09 error (_("Failed to configure the trace buffer size.")); > -=09} > + packet_result result =3D m_features.packet_ok (buf, PACKET_Qbtrace= _conf_pt_size); > + if (result.status () =3D=3D PACKET_ERROR) > +=09error (_("Failed to configure the trace buffer size: %s"), result.err= _msg ()); > =20 > rs->btrace_config.pt.size =3D conf->pt.size; > } > @@ -14841,15 +14842,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 '.') > -=09error (_("Could not enable branch tracing for %s: %s"), > -=09 target_pid_to_str (ptid).c_str (), &rs->buf[2]); > - else > -=09error (_("Could not enable branch tracing for %s."), > -=09 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"), > +=09 target_pid_to_str (ptid).c_str (), result.err_msg ()); > =20 > btrace_target_info *tinfo =3D new btrace_target_info { ptid }; > =20 > @@ -14887,15 +14883,10 @@ remote_target::disable_btrace (struct btrace_ta= rget_info *tinfo) > putpkt (rs->buf); > getpkt (&rs->buf); > =20 > - if (m_features.packet_ok (rs->buf, PACKET_Qbtrace_off) =3D=3D PACKET_E= RROR) > - { > - if (rs->buf[0] =3D=3D 'E' && rs->buf[1] =3D=3D '.') > + packet_result result =3D m_features.packet_ok (rs->buf, PACKET_Qbtrace= _off); > + if (result.status () =3D=3D PACKET_ERROR) > =09error (_("Could not disable branch tracing for %s: %s"), > -=09 target_pid_to_str (tinfo->ptid).c_str (), &rs->buf[2]); > - else > -=09error (_("Could not disable branch tracing for %s."), > -=09 target_pid_to_str (tinfo->ptid).c_str ()); > - } > +=09 target_pid_to_str (tinfo->ptid).c_str (), result.err_msg ()); > =20 > delete tinfo; > } > @@ -15160,7 +15151,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_QThread= Events); > + switch (result.status ()) > { > case PACKET_OK: > if (strcmp (rs->buf.data (), "OK") !=3D 0) > @@ -15168,7 +15160,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; > @@ -15215,14 +15207,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_QTh= readOptions); > + switch (result.status ()) > =09{ > =09case PACKET_OK: > =09 if (strcmp (rs->buf.data (), "OK") !=3D 0) > =09 error (_("Remote refused setting thread options: %s"), rs->buf.da= ta ()); > =09 break; > =09case PACKET_ERROR: > -=09 error (_("Remote failure reply: %s"), rs->buf.data ()); > +=09 error (_("Remote failure reply: %s"), result.err_msg ()); > =09case PACKET_UNKNOWN: > =09 gdb_assert_not_reached ("PACKET_UNKNOWN"); > =09 break; > --=20 > 2.44.0