From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from simark.ca by simark.ca with LMTP id qWPjFwPPsWm6KyQAWB0awg (envelope-from ) for ; Wed, 11 Mar 2026 16:22:27 -0400 Authentication-Results: simark.ca; dkim=pass (2048-bit key; secure) header.d=adacore.com header.i=@adacore.com header.a=rsa-sha256 header.s=google header.b=eNfEF1A1; dkim-atps=neutral Received: by simark.ca (Postfix, from userid 112) id 49B461E089; Wed, 11 Mar 2026 16:22:27 -0400 (EDT) X-Spam-Checker-Version: SpamAssassin 4.0.1 (2024-03-25) on simark.ca X-Spam-Level: X-Spam-Status: No, score=-2.4 required=5.0 tests=ARC_SIGNED,ARC_VALID,BAYES_00, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,MAILING_LIST_MULTI, RCVD_IN_DNSWL_MED,RCVD_IN_MSPIKE_H2,RCVD_IN_VALIDITY_CERTIFIED_BLOCKED, RCVD_IN_VALIDITY_RPBL_BLOCKED,RCVD_IN_VALIDITY_SAFE_BLOCKED autolearn=ham autolearn_force=no version=4.0.1 Received: from vm01.sourceware.org (vm01.sourceware.org [38.145.34.32]) (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 2AC751E089 for ; Wed, 11 Mar 2026 16:22:26 -0400 (EDT) Received: from vm01.sourceware.org (localhost [127.0.0.1]) by sourceware.org (Postfix) with ESMTP id 16CC84BB5883 for ; Wed, 11 Mar 2026 20:22:25 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 16CC84BB5883 Authentication-Results: sourceware.org; dkim=pass (2048-bit key, secure) header.d=adacore.com header.i=@adacore.com header.a=rsa-sha256 header.s=google header.b=eNfEF1A1 Received: from mail-qt1-x830.google.com (mail-qt1-x830.google.com [IPv6:2607:f8b0:4864:20::830]) by sourceware.org (Postfix) with ESMTPS id CD6BA4BB5895 for ; Wed, 11 Mar 2026 20:21:55 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org CD6BA4BB5895 Authentication-Results: sourceware.org; dmarc=pass (p=quarantine dis=none) header.from=adacore.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=adacore.com ARC-Filter: OpenARC Filter v1.0.0 sourceware.org CD6BA4BB5895 Authentication-Results: server2.sourceware.org; arc=none smtp.remote-ip=2607:f8b0:4864:20::830 ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1773260516; cv=none; b=WtvVHOMGhmTh51UUnL1/ZxWBhGYTN6GlvSoSxzb3LkmutedJnFvQJQo06bQqa870rGzHuOM785V4iZLdCabaoY9By6pfohnptCB44JO0WnpdGRe5vQIHG70djP6wZy7OUWwZ3bjubKWbx1SAbJv5zv64YB4VU+L+ESXoWWKvPoI= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1773260516; c=relaxed/simple; bh=w2p/u+TCIkQd4iXnCR+RXbxfSw0iI6O0yjpcjmLMAvg=; h=DKIM-Signature:From:To:Subject:Date:Message-ID:MIME-Version; b=G6afwp1dyZZSd63UwVM6cmpq6pOG+vnlOr2IjH+8yjBO4j5X5JRTFLeQgnBfnvipWsk8SelcdxkjCPH2Sw82p9qR7Tji7VYe06I/1Nq2rc/MFbTZKDJnOBim1JXY/yq9GfrQnxSydyk9/7A+WAEmvftriSyQFsqJoF1j5CYPsOw= ARC-Authentication-Results: i=1; server2.sourceware.org DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org CD6BA4BB5895 Received: by mail-qt1-x830.google.com with SMTP id d75a77b69052e-509164dce91so2386441cf.1 for ; Wed, 11 Mar 2026 13:21:55 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=adacore.com; s=google; t=1773260515; x=1773865315; darn=sourceware.org; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:from:to:cc:subject:date:message-id:reply-to; bh=lh0yo5SLH/RsHimBuPlBAHg0tHFjk2lbD6Va4/2Z2XA=; b=eNfEF1A1DePcK237toqFKynRI3KqHF2IHIpXmCy448p+/YFK9R7qaFDDXn8X3tveew T+N5+i45lXYdM+Zle7yTjFHDk2SxYJ+6FhXEE4ETnIfp5u74ClFYSJYaEJCAJJiJgryN YBi4nTTxSbsDR89PtdvpX+HOiru90utnDtUsrb39B0ceZGxXeny8mbXmtc723ahnpfX8 sps/7c2CTjjVv7sntiprieNXbqgamoY7vJpMyVV6MINsoWzyu85tKmXU67GhhTR1YWa0 LGbdOYBe0HdCe+IZyvq0jdMoOctDIdkzEH/5geukiKkGqc5PCM8MwEZZrVSdOQk+yisC 8CJA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1773260515; x=1773865315; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=lh0yo5SLH/RsHimBuPlBAHg0tHFjk2lbD6Va4/2Z2XA=; b=cnpoPfkj2A0+1QdkI7zPFVaLxg+MpgSpNUbuwKlAt+mVzIVkWrMRV8DbjQ9n/ZD83W O2fcVCE1DwxO8ICe7J2wjWL827x3+lgpolx9Gzm5ANZCx/VcbEKK9+F5U3FewthEr8/w TPIlooJn+UJTtAt+iMqgevlJBApPkDPoPc9Z0LoHJn5+IzggQ0QD7L2QF8OLOtLg1e6/ CNaYWgpDhkKNXAZg/TcmyfA0M6sDroyo+ZNILawymrUQB7j7AiKVTwm5b7j+6KwgV4xv nShEXsUltAmiXa80zi2yR5Kpe4NAAAp+kiz9W1IClnv8lt8llbhAiCDnkRSvoYnAUBD6 xfIA== X-Gm-Message-State: AOJu0YzFdzzf8Quw9NRPHC2wAInriHwAa4TBDhc/tt/2IYCv6BJDvbo8 7WuHWpw7qM22QF4i7kYQzD/4ttJ1TinWOVAK+29aqc8a54HBmVkudOvq623c7i7K7ymdyS+W2C+ Tyz4= X-Gm-Gg: ATEYQzyYKG+5/81b6YBU9huZVBSfXh3ZlwawAg+FZKnEP/hK45wjS67lJ62/6+QjfKK yCwJ6+77rljSSrXkyHoENL1TokWesm0hukZod2GHZg2M3Rf3UslDziqgfi/M7mujGsPRISmGbDD ChXXvBLHTfHZMGip4gXQEqw4vSG8WM+d7JtsbmEv1/VLoVOzkA9ajeDYKqPn0cPxTaR6nnZ4BaT K0bArM5lix2Yi6OGkVy9qwQrc6zRmOphmR32ZNxDCvY2xMX/wetaBdRSFZHDaot31UGDTfsrdN+ 5O7BYQYF1OgBpkQX5HZhYDDsi2xbLarLukXjSNUzkXBw91aKrL0yVq0BdPlctFj1X9UMXlEkEOJ D9wQfIPxj9e3oFrD+i4itWNWxw6MvSCOWlgOrVYmcFza4G8RCBDsxAEx141EXJBLo1cu2BMDtHG 12WW9+xNUUc+uq0iaxy/QZRmDKOZPvzlDzIl0SO8jkh8p98++bDVfBhw== X-Received: by 2002:ac8:5d4c:0:b0:509:382c:1c63 with SMTP id d75a77b69052e-50939f8c09bmr49531431cf.17.1773260515026; Wed, 11 Mar 2026 13:21:55 -0700 (PDT) Received: from bapiya (75-166-225-82.hlrn.qwest.net. [75.166.225.82]) by smtp.gmail.com with ESMTPSA id 6a1803df08f44-89a65bd2eb4sm20377746d6.1.2026.03.11.13.21.54 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 11 Mar 2026 13:21:54 -0700 (PDT) From: Tom Tromey To: gdb-patches@sourceware.org Cc: Tom Tromey Subject: [PATCH] Do not write negative PID or TID in remote protocol Date: Wed, 11 Mar 2026 14:21:52 -0600 Message-ID: <20260311202152.2704410-1-tromey@adacore.com> X-Mailer: git-send-email 2.53.0 MIME-Version: 1.0 Content-Transfer-Encoding: 8bit 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 Currently both gdb and gdbserver can write a negative number for the PID or TID. However, the only negative value that really makes sense is the special case of "-1" -- in other cases if the PID or TID has the high bit set, it should still be written as a positive number. This patch attempts to fix the bug. I am not really sure how to test it. As an aside there seems to be more low-level RSP code that could be shared here. Bug: https://sourceware.org/bugzilla/show_bug.cgi?id=25111 Bug: https://sourceware.org/bugzilla/show_bug.cgi?id=33979 --- gdb/remote.c | 19 ++++++++----------- gdbserver/remote-utils.cc | 12 ++++++------ 2 files changed, 14 insertions(+), 17 deletions(-) diff --git a/gdb/remote.c b/gdb/remote.c index 88b06e688bc..54aeaba0ce5 100644 --- a/gdb/remote.c +++ b/gdb/remote.c @@ -3684,22 +3684,19 @@ static int remote_newthread_step (threadref *ref, void *context); char * remote_target::write_ptid (char *buf, const char *endbuf, ptid_t ptid) { - ptid_t::pid_type pid; - ptid_t::lwp_type lwp; - if (m_features.remote_multi_process_p ()) { - pid = ptid.pid (); - if (pid < 0) - buf += xsnprintf (buf, endbuf - buf, "p-%x.", -pid); + ptid_t::pid_type pid = ptid.pid (); + if (pid == -1) + buf += xsnprintf (buf, endbuf - buf, "p-1."); else - buf += xsnprintf (buf, endbuf - buf, "p%x.", pid); + buf += xsnprintf (buf, endbuf - buf, "p%x.", (unsigned) pid); } - lwp = ptid.lwp (); - if (lwp < 0) - buf += xsnprintf (buf, endbuf - buf, "-%lx", -lwp); + ptid_t::lwp_type lwp = ptid.lwp (); + if (lwp == -1) + buf += xsnprintf (buf, endbuf - buf, "-1"); else - buf += xsnprintf (buf, endbuf - buf, "%lx", lwp); + buf += xsnprintf (buf, endbuf - buf, "%lx", (unsigned long) lwp); return buf; } diff --git a/gdbserver/remote-utils.cc b/gdbserver/remote-utils.cc index 7671206ebc1..a0ae04bd632 100644 --- a/gdbserver/remote-utils.cc +++ b/gdbserver/remote-utils.cc @@ -525,16 +525,16 @@ write_ptid (char *buf, ptid_t ptid) if (cs.multi_process) { pid = ptid.pid (); - if (pid < 0) - buf += sprintf (buf, "p-%x.", -pid); + if (pid == -1) + buf += sprintf (buf, "p-1."); else - buf += sprintf (buf, "p%x.", pid); + buf += sprintf (buf, "p%x.", (unsigned) pid); } lwp = ptid.lwp (); - if (lwp < 0) - buf += sprintf (buf, "-%lx", -lwp); + if (lwp == -1) + buf += sprintf (buf, "-1"); else - buf += sprintf (buf, "%lx", lwp); + buf += sprintf (buf, "%lx", (unsigned long) lwp); return buf; } base-commit: b18149c8e933d8539b8a49c5d200b1ace513e339 -- 2.53.0