From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from simark.ca by simark.ca with LMTP id GT+VMzh2f2pkbCYAWB0awg (envelope-from ) for ; Fri, 14 Aug 2026 16:10:32 -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=X7mKfja1; dkim-atps=neutral Received: by simark.ca (Postfix, from userid 112) id C20BF1E09B; Fri, 14 Aug 2026 16:10:32 -0400 (EDT) X-Spam-Checker-Version: SpamAssassin 4.0.1 (2024-03-25) on simark.ca X-Spam-Level: X-Spam-Status: No, score=-5.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 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 DA8C31E09B for ; Fri, 14 Aug 2026 16:10:31 -0400 (EDT) Received: from vm01.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id 0BF684BA2E3E for ; Fri, 14 Aug 2026 20:10:31 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 0BF684BA2E3E 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=X7mKfja1 Received: from mail-oo1-xc35.google.com (mail-oo1-xc35.google.com [IPv6:2607:f8b0:4864:20::c35]) by sourceware.org (Postfix) with ESMTPS id 454924BA2E36 for ; Fri, 14 Aug 2026 20:10:07 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 454924BA2E36 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 454924BA2E36 Authentication-Results: sourceware.org; arc=none smtp.remote-ip=2607:f8b0:4864:20::c35 ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1786738207; cv=none; b=q1GpvqhzCvpnoLGrrghKZX6LAPPduVAJMaUR67TIhrJRQNtrCWNp0r3iwUcYe3vyDjAY0HKKesTQo5zJzCKaRFEHzb7Wh5+LtIsA+u2fPnAyVWI8d3Zcpmtwb+2RSOhqHJD1lkgatjkaS4mVFJb6B/pD7W/P5vfufgvm46FNJNI= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1786738207; c=relaxed/simple; bh=sDAeprQbbjCY2P00xl5w+tQl7zEr02psubItpF/0FVo=; h=DKIM-Signature:From:To:Subject:Date:Message-ID:MIME-Version; b=cNvdCcuaSF9CfhRXFEafdQp+8Frm507swgInep8H+XkbtbEg80GB4bfSTM5OtWXlR93vQ3wjH5Of3tq4E5C7rJTwsNYsurPqSlMNusphUmxBdHPKlJyHb436M8GELCK0z5ouJVUojcXAoIlc2d76euSrc9vD2Ef8SnHwCa6ymfw= ARC-Authentication-Results: i=1; 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=X7mKfja1 DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 454924BA2E36 Received: by mail-oo1-xc35.google.com with SMTP id 006d021491bc7-6ae4475c68aso475853eaf.2 for ; Fri, 14 Aug 2026 13:10:07 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=adacore.com; s=google; t=1786738206; x=1787343006; 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:content-type; bh=DndYLDT+0S7hTH+TAE75qbiU4mBbqd+AOjL4VTfL23M=; b=X7mKfja1UVE847Z82NH8bcdz//ZQvy70uW8J0ihikGzUVeEcz90cqRiDKDkC3i+YHU wUAY2l21Hf+vWceHhV7AIVI3B9TO3lnOFIvUio9wUzSOWUOB1QzE1xg1ORoPzTwsmU9m GruYye7YOc+ldQ4yL2azMlREy9mcgJB5ig0ufa4vznSbaJi/8VBTNjy2MOKgDTslsHET NJoM8yqjUUregzWyPiRKnu13tp4joBw+KZb5nqZERUMcsiLSFb6VzZ51ifmjspjEVO1I qgLFisjSViL9J7LAy5U/QTI8o0f6WHsVkujVTnL7cyqcetfo117PpY2iXNTEdHFMO4i4 LoGw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1786738206; x=1787343006; 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:content-type; bh=DndYLDT+0S7hTH+TAE75qbiU4mBbqd+AOjL4VTfL23M=; b=YLJTw424miOnUvwxT+eFswGA22dgv82N4kYQiS4/WVOKCmVhcJ9aXUL5s1n1l7p51K xH9z3zvSVnxPCKrT4vRGuNDBYuBF8MVawNlc8k5YfZEGPEdghenpi4CHPA62GTyAiApw cKUitINDdQwB3wMZi4qu6bu8q3CV2/WUXIA4vp/pSL5/bYBLFZ4CY/f8Op2h0e/nWNmH ywoWLk+zNE6z9cHEMLur9g+3qP8//b+0NRU4cKtoITsieME+0t5y3RSdye2EcsmIHG3o Cphywf2LUdu5Zo0hmV9rBxY3uAz1MI1IljgEs/MdUqXVRBNFujCpZ1+p0WY7AO39R28X TTww== X-Gm-Message-State: AOJu0Yz0d+sh5HJVjEW3bjuO9Lmc0bVJBBMmjI2qW49qaRkHTJTfHiGm 2qsDvFwID6f9RvbvHvTxj4prkrv7bBNaFvw0MnLFVl0ZdrrppdHwIDwpHsbrL1RPoL86Oz6kCuw ugqM= X-Gm-Gg: AR+sD1391BZjO5pH8fxEl/tyGX+O9KcmNZDx1YhF/6buip3PViUDKt8YLMph+wHiEQl M6QOhOc/sgLm6m8KWRBfgBojShNLYxMrifeH6n4JSbveK4aB1RPvz6IvC01i8BSVPvzfMifIylV o68EqwhsxA0u7Gj6sR6sF35FHekhDaQX/zB3b6LRywSxIVc3+OpPY8/SuWi1Nm/BvNyFstru+j+ OEoUbQUYYw0k4IpXqeYvSvZr26XbXCoq8+B/af1DmezhD5nnfUQLz6R4K9w/nHaIS4WvBUoSAvE Vtsk0z9qf/UnIKp7FTI3bErezdAt9VMp2uhwT58hvoSKbJQhqqAF0lNBC2HXRj7EWLR4+xT0Qva Kofv+f+2oDI0ftEDlDX+Pq1NRD0zWOjc4kexMgOr/alTjHGWcOnT+ktm5ZfN4jprbbNY02PdvIQ xrf07McueRQBOohbamyyZlHMWChP24uXTkL4gSUgM4R7BWJDEKfeQllKBMCL8MufKU777Wc7vbh N04dKA2 X-Received: by 2002:a05:6820:1c82:b0:6a3:74fd:a859 with SMTP id 006d021491bc7-6b0d69163f6mr6045699eaf.32.1786738206529; Fri, 14 Aug 2026 13:10:06 -0700 (PDT) Received: from bapiya (75-166-225-82.hlrn.qwest.net. [75.166.225.82]) by smtp.gmail.com with ESMTPSA id 586e51a60fabf-45e8f8ed97esm3191350fac.3.2026.08.14.13.10.05 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 14 Aug 2026 13:10:05 -0700 (PDT) From: Tom Tromey To: gdb-patches@sourceware.org Cc: Tom Tromey Subject: [PATCH] Rewrite default_get_ada_task_ptid Date: Fri, 14 Aug 2026 14:10:03 -0600 Message-ID: <20260814201003.3972985-1-tromey@adacore.com> X-Mailer: git-send-email 2.55.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 Internal testing on a somewhat unusual configuration lead me to examine default_get_ada_task_ptid. This function computes a ptid in a way that, I think, maybe nothing else in gdb uses, specifying both the LWP and the thread. This in turns means that Ada functionality like "info tasks" will never find the thread corresponding to an Ada task. This patch rewrites default_get_ada_task_ptid to use the most normal form of ptid_t. Redundant target-specific implementations are removed. Some "weird" implementations remain, with darwin-nat.c being a disturbing amount of code, sol-thread.c being somewhat unusual, and aix-thread.c pointing out that it might be nice if the AIX support were normalized here (meaning that I think it would be good if all targets standardized on a single ptid_t format). I couldn't figure out how to write a test case for this. I had believed that the problem arose from statically linking glibc, and when the linux-thread-db was not pushed on the target stack; but more testing shows that this is not in fact the problem, as statically-linked executables work fine for me on my development machine. (If you're interested, you can try gdb.ada/tasks.exp with static linking.) --- gdb/linux-thread-db.c | 10 ---------- gdb/remote.c | 11 ----------- gdb/target.c | 10 ++++------ gdb/windows-nat.c | 6 ------ gdb/windows-nat.h | 2 -- 5 files changed, 4 insertions(+), 35 deletions(-) diff --git a/gdb/linux-thread-db.c b/gdb/linux-thread-db.c index dd67950f619..a2a7c8da5da 100644 --- a/gdb/linux-thread-db.c +++ b/gdb/linux-thread-db.c @@ -101,7 +101,6 @@ class thread_db_target final : public target_ops CORE_ADDR load_module_addr, CORE_ADDR offset) override; const char *extra_thread_info (struct thread_info *) override; - ptid_t get_ada_task_ptid (long lwp, ULONGEST thread) override; thread_info *thread_handle_to_thread_info (const gdb_byte *thread_handle, int handle_len, @@ -1820,15 +1819,6 @@ thread_db_target::get_thread_local_address (ptid_t ptid, return beneath->get_thread_local_address (ptid, lm, offset); } -/* Implement the to_get_ada_task_ptid target method for this target. */ - -ptid_t -thread_db_target::get_ada_task_ptid (long lwp, ULONGEST thread) -{ - /* NPTL uses a 1:1 model, so the LWP id suffices. */ - return ptid_t (inferior_ptid.pid (), lwp); -} - void thread_db_target::resume (ptid_t ptid, int step, enum gdb_signal signo) { diff --git a/gdb/remote.c b/gdb/remote.c index 194c4cbd9bb..cf6d88ba394 100644 --- a/gdb/remote.c +++ b/gdb/remote.c @@ -1035,8 +1035,6 @@ class remote_target : public process_stratum_target const char *extra_thread_info (struct thread_info *) override; - ptid_t get_ada_task_ptid (long lwp, ULONGEST thread) override; - thread_info *thread_handle_to_thread_info (const gdb_byte *thread_handle, int handle_len, inferior *inf) override; @@ -4737,15 +4735,6 @@ remote_target::static_tracepoint_markers_by_strid (const char *strid) } -/* Implement the to_get_ada_task_ptid function for the remote targets. */ - -ptid_t -remote_target::get_ada_task_ptid (long lwp, ULONGEST thread) -{ - return ptid_t (inferior_ptid.pid (), lwp); -} - - /* Restart the remote side; this is an extended protocol operation. */ void diff --git a/gdb/target.c b/gdb/target.c index 5d937f3ae85..91a8d411843 100644 --- a/gdb/target.c +++ b/gdb/target.c @@ -1121,16 +1121,14 @@ default_terminal_info (struct target_ops *self, const char *args, int from_tty) gdb_printf (_("No saved terminal information.\n")); } -/* A default implementation for the to_get_ada_task_ptid target method. - - This function builds the PTID by using both LWP and TID as part of - the PTID lwp and tid elements. The pid used is the pid of the - inferior_ptid. */ +/* A default implementation for the to_get_ada_task_ptid target + method. This function builds the PTID using just the LWP parameter + and the current inferior, as this is what most targets need. */ static ptid_t default_get_ada_task_ptid (struct target_ops *self, long lwp, ULONGEST tid) { - return ptid_t (inferior_ptid.pid (), lwp, tid); + return ptid_t (inferior_ptid.pid (), lwp); } static enum exec_direction_kind diff --git a/gdb/windows-nat.c b/gdb/windows-nat.c index def8fa606f4..73db714d399 100644 --- a/gdb/windows-nat.c +++ b/gdb/windows-nat.c @@ -3392,12 +3392,6 @@ windows_nat_target::get_tib_address (ptid_t ptid, CORE_ADDR *addr) return true; } -ptid_t -windows_nat_target::get_ada_task_ptid (long lwp, ULONGEST thread) -{ - return ptid_t (inferior_ptid.pid (), lwp, 0); -} - /* Implementation of the to_thread_name method. */ const char * diff --git a/gdb/windows-nat.h b/gdb/windows-nat.h index 3349755022b..74d8e7e6503 100644 --- a/gdb/windows-nat.h +++ b/gdb/windows-nat.h @@ -228,8 +228,6 @@ struct windows_nat_target : public inf_child_target const char *pid_to_exec_file (int pid) override; - ptid_t get_ada_task_ptid (long lwp, ULONGEST thread) override; - bool get_tib_address (ptid_t ptid, CORE_ADDR *addr) override; const char *thread_name (struct thread_info *) override; base-commit: 7e7dd6cfcf60cda2506d19d88ff98622bf670dbd -- 2.55.0