From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from simark.ca by simark.ca with LMTP id SYEUGOX3smkDPCYAWB0awg (envelope-from ) for ; Thu, 12 Mar 2026 13:29:09 -0400 Authentication-Results: simark.ca; dkim=pass (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.a=rsa-sha256 header.s=20230601 header.b=cjnQdSZy; dkim-atps=neutral Received: by simark.ca (Postfix, from userid 112) id 5D9FA1E089; Thu, 12 Mar 2026 13:29:09 -0400 (EDT) X-Spam-Checker-Version: SpamAssassin 4.0.1 (2024-03-25) on simark.ca X-Spam-Level: X-Spam-Status: No, score=-1.4 required=5.0 tests=ARC_SIGNED,ARC_VALID,BAYES_00, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,FORGED_GMAIL_RCVD,FREEMAIL_FROM, 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=no 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 771E71E089 for ; Thu, 12 Mar 2026 13:29:08 -0400 (EDT) Received: from vm01.sourceware.org (localhost [127.0.0.1]) by sourceware.org (Postfix) with ESMTP id 01F9B4BBCDA8 for ; Thu, 12 Mar 2026 17:29:02 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 01F9B4BBCDA8 Authentication-Results: sourceware.org; dkim=pass (2048-bit key, unprotected) header.d=gmail.com header.i=@gmail.com header.a=rsa-sha256 header.s=20230601 header.b=cjnQdSZy Received: from mail-wr1-x432.google.com (mail-wr1-x432.google.com [IPv6:2a00:1450:4864:20::432]) by sourceware.org (Postfix) with ESMTPS id E9E894BB58D4 for ; Thu, 12 Mar 2026 17:26:15 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org E9E894BB58D4 Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=gmail.com ARC-Filter: OpenARC Filter v1.0.0 sourceware.org E9E894BB58D4 Authentication-Results: server2.sourceware.org; arc=none smtp.remote-ip=2a00:1450:4864:20::432 ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1773336376; cv=none; b=QKqFWIBMyYf7bv8BlRAOJzVYmrSK0cIW30vmtgDeY/oAdWM9xjQT2WyHugQVSB0LEU5mGjAnjw5DD3SAQvPbk02gKrSfu5sVGe0qg5k0rUOC7rpq4bIoH1MdMcf6Wybe/YP6eLC9EKYECDC7PPHkCYPT65e0S6WHfSE0IYWSjlU= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1773336376; c=relaxed/simple; bh=nd1QdC/S+8HQlSNYJP4mDNIsuPXEemAw33CD0xrBWgc=; h=DKIM-Signature:From:To:Subject:Date:Message-ID:MIME-Version; b=emSpL2fafo8HKVhsdSKi6JcpeY5Y1yakU6LD0TF4YNdsRQ+yS9oRXhEPVrBjE/XDDFBt9kyt/hqtzHyqnCGp+/3ri103pTEOHuKjeSSjdz/Di8lUHvuORvuOMR8avSIzLh9XJut/MJ5d7exQv5MMtQa0kJYw9TXT1IxYzUV/lr0= ARC-Authentication-Results: i=1; server2.sourceware.org DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org E9E894BB58D4 Received: by mail-wr1-x432.google.com with SMTP id ffacd0b85a97d-439c56e822eso1310926f8f.2 for ; Thu, 12 Mar 2026 10:26:15 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1773336375; x=1773941175; darn=sourceware.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=GpYoAV/g2Ly2m9gDbM7hH0JYzI81zI/k9/WNk2brwds=; b=cjnQdSZyROa8LltrPMhEDUjR8lALtAFak5K0yjYxehdYqI+JTaB3zAod47IyeZDED2 ytP7fP4VPt6Xrd8h0jHd4gm1zBHgTvb69xz1dJmmMIyy5Il6d9I6XWJ3m8FPJn/Czg8e nKi8h2+kw8lBnzv0bFzMQLuCoG84ceRy0nyejGVNxwkJ1FgCPMi1is1uTaXVewJAi8HT cwI3m593Ohj1Vpxs3LK2C3ix4vUtSJx7vjMmReWXq59DCmRkd2XNLQUeWV5UO+trbWGH TwtuATCFKs8jHsbDlYxCBHzHMLMx8O+fwYmZJu31S0Csy+GKKwZELN918rrHCkLPLhiC 5ptg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1773336375; x=1773941175; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=GpYoAV/g2Ly2m9gDbM7hH0JYzI81zI/k9/WNk2brwds=; b=XBPcjReJor424K861Hbd7cOVTw+fPY1eqw6HxiAHOMjjvkMi9lONjCD31amzTWrGY7 T8muuYXkyd9uEwwykC7iPQCNhDH/ggEudvNBJTTWoAgCoNutoKndnRnaqpYacZPxiIey Bauq0m6BjszDtCZP9NuFNral8FVc+75H2dvzCaG4E+EgMzvzxJBPIPf1Sk0mK6L3SUfp YmG6MxmJ114/Bn18Ora5vhiyavNVpswGORvAWROICcw0kNzeSut+99hfJPjOJt8CyOU9 oDzTPm5jWaRxpclLchRljGno/44oQdrxFp18ABhE3X63ElxIfdVrrxkpe45DYgcNm3qr Ucdg== X-Gm-Message-State: AOJu0Yziex1VK9RTjrLeXMWtufYw993lJS+GHLbJ4l6/JINnij5srPEM sFp03bUFtW1qtlkIpvdgivkSPBoZA912ptegf+l07OIefVZ6TAmb/syUkkfFaw== X-Gm-Gg: ATEYQzxBnyvhmTWh5YXvPiBoPrWvpe1aRuHbJfDT6Cwq2e9yw8J7MWH/c4X5KPP83mU v3D2gut0yvwWz7JP4TscTUWlbwgHEuJSsUBQaXIXexA0DL7AVqyOZ5Rkqul8byYVCIi3T0l2fFA fDYwMkxzPSRUKFX/5xXwue1YQ3SZNnX9TuI8ZpKgufqOc5zIjcjwav/TT0SerubSIcxjp1HXiA1 FsGRHre9sFNtF5pn0efJ30ihD6NVMz69dJmkPe6euy6JI1Xsav8SfA8Xf8v8rsgeHii8qykSn9Q Yd+PI9o3AAD87V2QfgFSxB6RtQdPmbncDkoUKIs0mjppt2fKmwpS+LT2Z8vxBM615f+mG9ssici zFvy4tFqOlTbjuHDAcA+wHbCYzLgNf86+jCPLiQ67Hx0xGu630Fx7mkU8U58K18QUWMPmAORw/Z O8qIOCjl29BCYop3Lny9fuOCqsXQEtBjBpbMm+inCU6e3tww== X-Received: by 2002:a5d:5e01:0:b0:439:be67:a034 with SMTP id ffacd0b85a97d-43a04dc0c3fmr896269f8f.47.1773336374356; Thu, 12 Mar 2026 10:26:14 -0700 (PDT) Received: from korli-neo50s.fritz.box ([2a02:1748:dd5c:c9e0:d9f5:e2d7:f7e3:a577]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-439fe20b544sm10357893f8f.20.2026.03.12.10.26.14 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 12 Mar 2026 10:26:14 -0700 (PDT) From: =?UTF-8?q?J=C3=A9r=C3=B4me=20Duval?= To: gdb-patches@sourceware.org Cc: =?UTF-8?q?J=C3=A9r=C3=B4me=20Duval?= Subject: [PATCH 4/8] gdbserver: Update Haiku support for 16.x Date: Thu, 12 Mar 2026 18:23:32 +0100 Message-ID: <20260312172336.15450-5-jerome.duval@gmail.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260312172336.15450-1-jerome.duval@gmail.com> References: <20260312172336.15450-1-jerome.duval@gmail.com> 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 --- gdbserver/haiku-amd64-low.cc | 8 ++++---- gdbserver/haiku-low.cc | 30 ++++++++++++++++++------------ 2 files changed, 22 insertions(+), 16 deletions(-) diff --git a/gdbserver/haiku-amd64-low.cc b/gdbserver/haiku-amd64-low.cc index 0e6e0ade..3503d5ce 100644 --- a/gdbserver/haiku-amd64-low.cc +++ b/gdbserver/haiku-amd64-low.cc @@ -155,7 +155,7 @@ haiku_amd64_target::fetch_registers (struct regcache *regcache, int regno) { char regs[sizeof (x86_64_debug_cpu_state)]; - if (haiku_nat::get_cpu_state (ptid_of (current_thread), ®s) < 0) + if (haiku_nat::get_cpu_state (current_thread->id, ®s) < 0) { /* This happens when the inferior is killed by another process while being stopped. The nub port has been deleted, so we cannot @@ -196,7 +196,7 @@ haiku_amd64_target::store_registers (struct regcache *regcache, int regno) { char regs[sizeof (x86_64_debug_cpu_state)]; - if (haiku_nat::get_cpu_state (ptid_of (current_thread), ®s) < 0) + if (haiku_nat::get_cpu_state (current_thread->id, ®s) < 0) { haiku_nat_debug_printf ("Failed to get actual CPU state: %s", strerror (errno)); @@ -220,7 +220,7 @@ haiku_amd64_target::store_registers (struct regcache *regcache, int regno) } } - if (haiku_nat::set_cpu_state (ptid_of (current_thread), ®s) < 0) + if (haiku_nat::set_cpu_state (current_thread->id, ®s) < 0) perror_with_name (("haiku_nat::set_cpu_state")); } @@ -248,7 +248,7 @@ haiku_amd64_target::low_arch_setup (process_info *process) target_desc *tdesc = amd64_create_target_description (X86_XSTATE_AVX_MASK, false, false, false); - init_target_desc (tdesc, amd64_expedite_regs); + init_target_desc (tdesc, amd64_expedite_regs, GDB_OSABI_HAIKU); process->tdesc = tdesc; } diff --git a/gdbserver/haiku-low.cc b/gdbserver/haiku-low.cc index 41295d58..b0551b8f 100644 --- a/gdbserver/haiku-low.cc +++ b/gdbserver/haiku-low.cc @@ -168,7 +168,7 @@ haiku_process_target::wait (ptid_t ptid, struct target_waitstatus *ourstatus, /* Add at least the child's main thread. Otherwise, gdbserver would think we have no more inferiors attached and quit. */ - add_thread (ptid_t (pid, 0, pid), nullptr); + find_process_pid (pid)->add_thread (ptid_t (pid, 0, pid), nullptr); }; client_state &cs = get_client_state (); @@ -193,7 +193,7 @@ haiku_process_target::wait (ptid_t ptid, struct target_waitstatus *ourstatus, thread that was not fully initialized during the attach stage. */ if (wptid.tid () != 0 && !find_thread_ptid (wptid) && ourstatus->kind () != TARGET_WAITKIND_THREAD_EXITED) - add_thread (wptid, nullptr); + find_process_pid (wptid.pid())->add_thread (wptid, nullptr); switch (ourstatus->kind ()) { @@ -247,7 +247,9 @@ haiku_process_target::wait (ptid_t ptid, struct target_waitstatus *ourstatus, return wptid; break; case TARGET_WAITKIND_THREAD_EXITED: - remove_thread (find_thread_ptid (wptid)); + { + thread_info *info = find_thread_ptid (wptid); + info->process ()->remove_thread (info); if (cs.report_thread_events) return wptid; @@ -255,6 +257,7 @@ haiku_process_target::wait (ptid_t ptid, struct target_waitstatus *ourstatus, /* The thread is dead so we cannot resume the the same wptid. */ wptid = ptid; break; + } default: gdb_assert_not_reached ("Unknown stopped status"); } @@ -272,7 +275,7 @@ haiku_process_target::wait (ptid_t ptid, struct target_waitstatus *ourstatus, int haiku_process_target::kill (process_info *process) { - if (haiku_nat::kill (pid_of (process)) < 0) + if (haiku_nat::kill (process->pid) < 0) return -1; mourn (process); @@ -284,7 +287,7 @@ haiku_process_target::kill (process_info *process) int haiku_process_target::detach (process_info *process) { - if (haiku_nat::detach (pid_of (process)) < 0) + if (haiku_nat::detach (process->pid) < 0) return -1; mourn (process); @@ -296,7 +299,10 @@ haiku_process_target::detach (process_info *process) void haiku_process_target::mourn (struct process_info *proc) { - for_each_thread (pid_of (proc), remove_thread); + proc->for_each_thread ([proc] (thread_info *thread) + { + proc->remove_thread (thread); + }); remove_process (proc); } @@ -306,7 +312,7 @@ haiku_process_target::mourn (struct process_info *proc) void haiku_process_target::join (int pid) { - gdb::handle_eintr (-1, ::waitpid, pid, nullptr, 0); + gdb::waitpid (pid, nullptr, 0); } /* Implement the thread_alive target_ops method. */ @@ -323,7 +329,7 @@ int haiku_process_target::read_memory (CORE_ADDR memaddr, unsigned char *myaddr, int size) { - if (haiku_nat::read_memory (pid_of (current_process ()), memaddr, myaddr, + if (haiku_nat::read_memory (current_process ()->pid, memaddr, myaddr, &size) < 0) { @@ -340,7 +346,7 @@ int haiku_process_target::write_memory (CORE_ADDR memaddr, const unsigned char *myaddr, int size) { - if (haiku_nat::write_memory (pid_of (current_process ()), memaddr, myaddr, + if (haiku_nat::write_memory (current_process ()->pid, memaddr, myaddr, &size) < 0) { @@ -361,7 +367,7 @@ haiku_process_target::request_interrupt () if (thread == nullptr) return; - ::kill (pid_of (thread), SIGINT); + ::kill (thread->id.pid(), SIGINT); } /* Implement the read_offsets target_ops method. */ @@ -369,7 +375,7 @@ haiku_process_target::request_interrupt () int haiku_process_target::read_offsets (CORE_ADDR *text, CORE_ADDR *data) { - if (haiku_nat::read_offsets (pid_of (current_process ()), text, data) < 0) + if (haiku_nat::read_offsets (current_process ()->pid, text, data) < 0) return 0; return 1; } @@ -438,7 +444,7 @@ haiku_process_target::start_non_stop (bool enable) bool haiku_process_target::thread_stopped (thread_info *thread) { - return haiku_nat::thread_stopped (ptid_of (thread)); + return haiku_nat::thread_stopped (thread->id); } /* Implement the pid_to_exec_file target_ops method. */ -- 2.43.0