From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from simark.ca by simark.ca with LMTP id KS/sAm/3smkDPCYAWB0awg (envelope-from ) for ; Thu, 12 Mar 2026 13:27:11 -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=ALGzaGck; dkim-atps=neutral Received: by simark.ca (Postfix, from userid 112) id 07D5A1E0DD; Thu, 12 Mar 2026 13:27:11 -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,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=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 A69141E09A for ; Thu, 12 Mar 2026 13:27:09 -0400 (EDT) Received: from vm01.sourceware.org (localhost [127.0.0.1]) by sourceware.org (Postfix) with ESMTP id 319DE4BB58D4 for ; Thu, 12 Mar 2026 17:27:09 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 319DE4BB58D4 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=ALGzaGck Received: from mail-wr1-x42e.google.com (mail-wr1-x42e.google.com [IPv6:2a00:1450:4864:20::42e]) by sourceware.org (Postfix) with ESMTPS id 83DCB4BB5901 for ; Thu, 12 Mar 2026 17:26:16 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 83DCB4BB5901 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 83DCB4BB5901 Authentication-Results: server2.sourceware.org; arc=none smtp.remote-ip=2a00:1450:4864:20::42e ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1773336376; cv=none; b=VLF49pl5EmKhyWefUvsleTsgIW1ynjTgFYPqxZ3zJWy+OWx2GxjtQ/PqyxVON12ZPaPhefWfgd3Mue+hbq1pQgQNWGNkt8j5E26L/ZRai8VC2u/zA5brqWLAOTvH7qXmkZ7iCN1hGjK+lYMoxcNdgRP7y0FQmIeht0IDlJRWCZc= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1773336376; c=relaxed/simple; bh=HLjCtq6KQmPavfRptsh3JdZuUv0ONccKGXDFH578qrI=; h=DKIM-Signature:From:To:Subject:Date:Message-ID:MIME-Version; b=rBpTaCo/fVrDGRfg+SvgNGJliyAMGedsm7ppWL66h8XdZ5L9wDm1OTsysQFPfFpH818K7vEqqj9JLEfxu43qpo0M4+0yhaB/tKnCAUuqqIZNwlrvqfQH4qv4LtKPUaHy2SaS7jZKST4LiNYJR0hU0ZSJ7L8py8vHLcDoNj1yBMc= ARC-Authentication-Results: i=1; server2.sourceware.org DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 83DCB4BB5901 Received: by mail-wr1-x42e.google.com with SMTP id ffacd0b85a97d-439cd6b09f8so1113076f8f.3 for ; Thu, 12 Mar 2026 10:26:16 -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=z/9sGZY5YdeJ7FjACvlhLKmEiRPPZpn802dJ/8+0iL4=; b=ALGzaGckg/nBGsrOL1q2XINpgB0bkjIeh+XjVwuiqGi7RZPJHFJrn3ge15QFUwni+p PubmCR9lnKDYqdp5ppKjt0uoMnozlBFe3EE2ho6hVqzZDWwRyHorx+lPzc2sfuLSOTuo Rn/0cN8drdk1qD+Wlx7qpXIq4Uf2mepp/tTH3E5UFYbJk5arDhR90MB/SKz2ummwTFZy 5STmzpnveUkhuqnMPt26ngoWI9Z24iaX9aOU0bvqCAYsnHS2tm9rUeUM9swRyWk3C5k3 4RUXTU1fLg1Ozj+2wgfzsuIGPO+x5b3ojZjy/E1zRSTD5NH6p9fHeWn6U9/55U0YNqm/ 7YJA== 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=z/9sGZY5YdeJ7FjACvlhLKmEiRPPZpn802dJ/8+0iL4=; b=eegxqjA5L5I3z/lPxURIqO2boBNmjSoGmYV8uQsgVBqH7G6CkN/jRinACpRtdO2hK2 xGbrd51zjVWimXl1/WRRZTFtQsO4N+m1K8HLou/dnoFkA0JhwEFeHOSUTw6wlDB2DVTN nbzJLyFW3ZTRsHyYdXJUwMZ5JZxAu7wIhpjlbB6MNZP2KlQezUYpPXVIBWQAh/kJ7vS5 OpuKuMGIline7cHh2YqRITFmhK8jkfltp/k8EeV/l8SZHpawfT4u9bjZbDfKFKsJoy9n gyOogK3Eh+n1MmwwViJYQSWrHMM7HSNQnDt2O2svzd1eUaafm2rmezVxjnAtMSNNq2x0 xXfw== X-Gm-Message-State: AOJu0YzWyx4ng+2m5oCzuH3UPi1C2QniyUuIzDqnxHWOHXYZUOK5EmCs VuAceMDDbejto2ZnMBs9orgTctOS54hE2D4vNkdiG7zG+Kopajj80W+IPMzL0Q== X-Gm-Gg: ATEYQzylynJ32/06sclj/3s866EJTiI7tbZ26p4M4zD5PLYckGGBZSMUvhPmDSfOHrN Pyj08Azs9NdqYRVoCUCKknj3TrmfBhz7d0CsjO5FRGb7sk6xmZUi3Pj3ijM5ZAUIn5P2qLrm5cQ Cp5FzI/L4aDTF2AEC/ZDdO/pGqCnxE4tXOpQldA19JuVHOzAL9Cbw446+KH7Sc4FBBipY3guI0X lsVdPK5PhF8RSkgibxvVxTbTqoNRcJ/yplm56I6s/2/z9wcVLvjpyMiSaLj+tAmbobU/pYHz0ek 1ntTdNUphaJx8zRddzGuaa//XVRgk3440PYvOsJOfQydXAWoPvH7OrM62G2u4fBNw1aPLwS/XwZ y9wPhp95CKgVAd/L8wF/HqXQWA3U2chVW02RDx8mmvCCiOGCHRZBZIapKnCJj7B5SIJ0FRjKYml P5Sh2yLGymQ921++u3ivVGaA1ZCE6lyHOSXiX7OBUpuoSkzh4/c5Mvl+aF X-Received: by 2002:a05:6000:402c:b0:439:c1f9:f633 with SMTP id ffacd0b85a97d-43a04db9edamr819464f8f.45.1773336374900; 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 5/8] gdb: Update Haiku support for 17.x Date: Thu, 12 Mar 2026 18:23:33 +0100 Message-ID: <20260312172336.15450-6-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 --- gdb/amd64-haiku-nat.c | 4 +- gdb/amd64-haiku-tdep.c | 4 +- gdb/haiku-nat.c | 4 +- gdb/haiku-tdep.c | 2 +- gdb/i386-haiku-nat.c | 4 +- gdb/i386-haiku-tdep.c | 4 +- gdb/solib-haiku.c | 96 +++++++++++++++++++++++------------------- gdb/solib-haiku.h | 6 ++- 8 files changed, 62 insertions(+), 62 deletions(-) diff --git a/gdb/amd64-haiku-nat.c b/gdb/amd64-haiku-nat.c index e622e660..6ce9fc7e 100644 --- a/gdb/amd64-haiku-nat.c +++ b/gdb/amd64-haiku-nat.c @@ -143,9 +143,7 @@ amd64_haiku_nat_target::store_registers (struct regcache *regcache, int regno) static amd64_haiku_nat_target the_amd64_haiku_nat_target; -void _initialize_amd64_haiku_nat (); -void -_initialize_amd64_haiku_nat () +INIT_GDB_FILE (amd64_haiku_nat) { haiku_target = &the_amd64_haiku_nat_target; diff --git a/gdb/amd64-haiku-tdep.c b/gdb/amd64-haiku-tdep.c index 086e6318..476d6db9 100644 --- a/gdb/amd64-haiku-tdep.c +++ b/gdb/amd64-haiku-tdep.c @@ -132,9 +132,7 @@ amd64_haiku_osabi_sniffer (bfd *abfd) return GDB_OSABI_HAIKU; } -void _initialize_amd64_haiku_tdep (); -void -_initialize_amd64_haiku_tdep () +INIT_GDB_FILE (amd64_haiku_tdep) { gdbarch_register_osabi_sniffer (bfd_arch_i386, bfd_target_elf_flavour, amd64_haiku_osabi_sniffer); diff --git a/gdb/haiku-nat.c b/gdb/haiku-nat.c index c1d768c9..4dcaf236 100644 --- a/gdb/haiku-nat.c +++ b/gdb/haiku-nat.c @@ -733,9 +733,7 @@ is_catching_syscalls_for (ptid_t ptid) /* Initialization. */ -void _initialize_haiku_nat (); -void -_initialize_haiku_nat () +INIT_GDB_FILE (haiku_nat) { /* We cannot do this in target_op's own callbacks, since they are called too early after attaching or an exec event. At that point, symfile_object_file diff --git a/gdb/haiku-tdep.c b/gdb/haiku-tdep.c index 3b866a58..f0fd1d2f 100644 --- a/gdb/haiku-tdep.c +++ b/gdb/haiku-tdep.c @@ -32,7 +32,7 @@ void haiku_init_abi (struct gdbarch_info info, struct gdbarch *gdbarch) { - set_gdbarch_so_ops (gdbarch, &haiku_so_ops); + set_gdbarch_make_solib_ops (gdbarch, make_haiku_solib_ops); } /* See haiku-tdep.h. */ diff --git a/gdb/i386-haiku-nat.c b/gdb/i386-haiku-nat.c index b41fcca1..7f00e54b 100644 --- a/gdb/i386-haiku-nat.c +++ b/gdb/i386-haiku-nat.c @@ -29,9 +29,7 @@ struct i386_haiku_nat_target final : public haiku_nat_target static i386_haiku_nat_target the_i386_haiku_nat_target; -void _initialize_i386_haiku_nat (); -void -_initialize_i386_haiku_nat () +INIT_GDB_FILE (i386_haiku_nat) { haiku_target = &the_i386_haiku_nat_target; diff --git a/gdb/i386-haiku-tdep.c b/gdb/i386-haiku-tdep.c index fd8011f7..38ddefbb 100644 --- a/gdb/i386-haiku-tdep.c +++ b/gdb/i386-haiku-tdep.c @@ -49,9 +49,7 @@ i386_haiku_osabi_sniffer (bfd *abfd) return GDB_OSABI_HAIKU; } -void _initialize_i386_haiku_tdep (); -void -_initialize_i386_haiku_tdep () +INIT_GDB_FILE (i386_haiku_tdep) { gdbarch_register_osabi_sniffer (bfd_arch_i386, bfd_target_elf_flavour, i386_haiku_osabi_sniffer); diff --git a/gdb/solib-haiku.c b/gdb/solib-haiku.c index 0ec56b5c..588bbc0f 100644 --- a/gdb/solib-haiku.c +++ b/gdb/solib-haiku.c @@ -23,9 +23,34 @@ #include "haiku-tdep.h" #include "inferior.h" #include "objfiles.h" +#include "solib.h" #include "solib-haiku.h" #include "solib-target.h" -#include "solist.h" + + +/* solib_ops for Haiku systems. */ + +struct haiku_solib_ops : public target_solib_ops +{ + using target_solib_ops::target_solib_ops; + + void relocate_section_addresses (solib &so, target_section *) const override; + void clear_solib (program_space *pspace) const override; + void create_inferior_hook (int from_tty) const override; + owning_intrusive_list current_sos () const override; + bool open_symbol_file_object (int from_tty) const override; + bool in_dynsym_resolve_code (CORE_ADDR pc) const override; + gdb_bfd_ref_ptr bfd_open (const char *pathname) const override; +}; + +/* See solib-haiku.h. */ + +solib_ops_up +make_haiku_solib_ops (program_space *pspace) +{ + return std::make_unique (pspace); +} + /* For other targets, the solib implementation usually reads hints from the dynamic linker in the active address space, which could be anything from a @@ -37,10 +62,10 @@ This is basically a wrapper around solib-target.c. */ -static void -haiku_relocate_section_addresses (solib &so, struct target_section *sec) +void +haiku_solib_ops::relocate_section_addresses (solib &so, struct target_section *sec) const { - if (so.so_name == "commpage") + if (so.name == "commpage") { CORE_ADDR commpage_address = haiku_get_commpage_address (); sec->addr = commpage_address; @@ -49,72 +74,55 @@ haiku_relocate_section_addresses (solib &so, struct target_section *sec) so.addr_low = commpage_address; so.addr_high = commpage_address + HAIKU_COMMPAGE_SIZE; } - else + /*else { - solib_target_so_ops.relocate_section_addresses (so, sec); - } + solib_target_so_ops::relocate_section_addresses (so, sec); + }*/ } -static void +/*static void haiku_clear_so (const solib &so) { if (solib_target_so_ops.clear_so != nullptr) solib_target_so_ops.clear_so (so); -} +}*/ -static void -haiku_clear_solib (program_space *pspace) +void +haiku_solib_ops::clear_solib (program_space *pspace) const { - if (solib_target_so_ops.clear_solib != nullptr) - solib_target_so_ops.clear_solib (pspace); + target_solib_ops::clear_solib (pspace); } -static void -haiku_solib_create_inferior_hook (int from_tty) +void +haiku_solib_ops::create_inferior_hook (int from_tty) const { - solib_target_so_ops.solib_create_inferior_hook (from_tty); + target_solib_ops::create_inferior_hook (from_tty); } -static owning_intrusive_list -haiku_current_sos () +owning_intrusive_list +haiku_solib_ops::current_sos () const { - return solib_target_so_ops.current_sos (); + return target_solib_ops::current_sos (); } -static int -haiku_open_symbol_file_object (int from_tty) +bool +haiku_solib_ops::open_symbol_file_object (int from_tty) const { - return solib_target_so_ops.open_symbol_file_object (from_tty); + return target_solib_ops::open_symbol_file_object (from_tty); } -static int -haiku_in_dynsym_resolve_code (CORE_ADDR pc) +bool +haiku_solib_ops::in_dynsym_resolve_code (CORE_ADDR pc) const { /* No dynamic resolving implemented in Haiku yet. Return what the generic code has to say. */ - return solib_target_so_ops.in_dynsym_resolve_code (pc); + return target_solib_ops::in_dynsym_resolve_code (pc); } -static gdb_bfd_ref_ptr -haiku_bfd_open (const char *pathname) +gdb_bfd_ref_ptr +haiku_solib_ops::bfd_open (const char *pathname) const { if (strcmp (pathname, "commpage") == 0) return haiku_bfd_open_commpage (); - return solib_target_so_ops.bfd_open (pathname); + return target_solib_ops::bfd_open (pathname); } - -const struct solib_ops haiku_so_ops = { - .relocate_section_addresses = haiku_relocate_section_addresses, - .clear_so = haiku_clear_so, - .clear_solib = haiku_clear_solib, - .solib_create_inferior_hook = haiku_solib_create_inferior_hook, - .current_sos = haiku_current_sos, - .open_symbol_file_object = haiku_open_symbol_file_object, - .in_dynsym_resolve_code = haiku_in_dynsym_resolve_code, - .bfd_open = haiku_bfd_open, - nullptr, - nullptr, - nullptr, - nullptr, - default_find_solib_addr, -}; diff --git a/gdb/solib-haiku.h b/gdb/solib-haiku.h index bd023f5b..092b2c5b 100644 --- a/gdb/solib-haiku.h +++ b/gdb/solib-haiku.h @@ -20,8 +20,10 @@ #ifndef GDB_SOLIB_HAIKU_H #define GDB_SOLIB_HAIKU_H -struct solib_ops; +#include "solib.h" -extern const struct solib_ops haiku_so_ops; +/* Return a new solib_ops for Haiku systems. */ + +extern solib_ops_up make_haiku_solib_ops (program_space *pspace); #endif /* GDB_SOLIB_HAIKU_H */ -- 2.43.0