Index | Thread | Search

From:
Stuart Henderson <stu@spacehopper.org>
Subject:
Re: Update to gdb-13.2 - tests wanted
To:
ports@openbsd.org, Pascal Stumpf <pascal@stumpf.co>, tb@openbsd.org, gkoehler@openbsd.org, kettenis@openbsd.org, miod@openbsd.org, visa@openbsd.org
Date:
Thu, 7 Nov 2024 16:39:54 +0000

Download raw body.

Thread
On 2024/11/07 17:28, Jeremie Courreges-Anglas wrote:
> 
> Runtime tests welcome on all platforms.  Among other things I'm
> curious about support for PAC-enabled platforms.  What's the status
> with the current package and with the updated port?

Will look and do at least some light arm64 and i386 tests later today or
tomorrow.

> * an alternative discussed with tb would be to have several versions
>   of gdb in the ports tree.  I'd slightly prefer that we work on
>   having a single one that works, even if updates are a bit painful.
>   Hopefully we can upstream support for some of our new architectures
>   at some point.  Thoughts?

Longer term I'd prefer a single port. But if there's too much pain at
the moment I'd prefer to get newer versions on those arch where they
work even if that means splitting it.

But let's collect more test results first.

(I'd prefer to only _build_ one port per arch. Would be good if
pkg_add gdb just works without fuss or asking about versions.
Would be even better if users typing "gdb" get a version for
standard objects built with the usual toolchain on that arch,
i.e. not 6.3 on LLVM archs, too ;-)


> Index: Makefile
> ===================================================================
> RCS file: /cvs/ports/devel/gdb/Makefile,v
> diff -u -p -r1.85 Makefile
> --- Makefile	1 Oct 2024 07:41:42 -0000	1.85
> +++ Makefile	7 Nov 2024 15:55:58 -0000
> @@ -1,8 +1,7 @@
>  COMMENT=	GNU debugger
>  CATEGORIES=	devel
>  
> -DISTNAME=	gdb-9.2
> -REVISION=	7
> +DISTNAME=	gdb-13.2
>  
>  HOMEPAGE=	https://www.gnu.org/software/gdb/
>  
> @@ -17,7 +16,8 @@ EXTRACT_SUFX=	.tar.xz
>  
>  MODGNU_CONFIG_GUESS_DIRS=	${WRKSRC} ${WRKSRC}/gdb
>  
> -WANTLIB = c curses expat kvm intl m pthread ${MODPY_WANTLIB} ${COMPILER_LIBCXX} util
> +WANTLIB += ${MODPY_WANTLIB} ${COMPILER_LIBCXX}
> +WANTLIB += c curses expat kvm iconv intl m pthread util zstd
>  
>  DEBUG_PACKAGES=	${BUILD_PACKAGES}
>  
> @@ -29,7 +29,6 @@ CONFIGURE_STYLE=gnu
>  CONFIGURE_ARGS=	--program-prefix=e \
>  		--disable-nls \
>  		--disable-sim \
> -		--without-gmp \
>  		--without-guile \
>  		--without-isl \
>  		--without-lzma \
> @@ -45,7 +44,10 @@ MAKE_FLAGS=	V=1 LDFLAGS="${LDFLAGS}"
>  MODULES +=	lang/python
>  
>  BUILD_DEPENDS =	sysutils/xxhash
> -LIB_DEPENDS +=	${MODPY_LIB_DEPENDS}
> +# static link
> +BUILD_DEPENDS+=	devel/gmp,-main
> +LIB_DEPENDS +=	${MODPY_LIB_DEPENDS} \
> +		archivers/zstd
>  TEST_DEPENDS +=	devel/dejagnu
>  
>  post-install:
> Index: distinfo
> ===================================================================
> RCS file: /cvs/ports/devel/gdb/distinfo,v
> diff -u -p -r1.23 distinfo
> --- distinfo	22 Oct 2021 18:30:35 -0000	1.23
> +++ distinfo	7 Nov 2024 15:55:58 -0000
> @@ -1,2 +1,2 @@
> -SHA256 (gdb/gdb-9.2.tar.xz) = NgzXrnm3dpiOidj5oByYXQsfohx2ekKV5fiMtJF1xVU=
> -SIZE (gdb/gdb-9.2.tar.xz) = 20979436
> +SHA256 (gdb/gdb-13.2.tar.xz) = /Vvrt74YM6vbbgI8L0mKNUSYKB350FUj2JFbq+uJPwo=
> +SIZE (gdb/gdb-13.2.tar.xz) = 23664644
> Index: patches/patch-bfd_config_bfd
> ===================================================================
> RCS file: patches/patch-bfd_config_bfd
> diff -N patches/patch-bfd_config_bfd
> --- patches/patch-bfd_config_bfd	11 Mar 2022 18:50:04 -0000	1.5
> +++ /dev/null	1 Jan 1970 00:00:00 -0000
> @@ -1,32 +0,0 @@
> -Index: bfd/config.bfd
> ---- bfd/config.bfd.orig
> -+++ bfd/config.bfd
> -@@ -81,7 +81,6 @@ case $targ in
> -  arm*-*-aout | \
> -  arm-*-coff | \
> -  arm-*-netbsd* | \
> -- arm-*-openbsd* | \
> -  arm-*-oabi | \
> -  arm-*-riscix* | \
> -  arm-epoc-pe* | \
> -@@ -257,6 +256,11 @@ case "${targ}" in
> -     targ_selvecs="aarch64_elf64_be_vec aarch64_elf32_le_vec aarch64_elf32_be_vec arm_elf32_le_vec arm_elf32_be_vec"
> -     want64=true
> -     ;;
> -+  aarch64-*-openbsd*)
> -+    targ_defvec=aarch64_elf64_le_vec
> -+    targ_selvecs="aarch64_elf32_le_vec arm_elf32_le_vec"
> -+    want64=true
> -+    ;;
> -   aarch64_be-*-linux*)
> -     targ_defvec=aarch64_elf64_be_vec
> -     targ_selvecs="aarch64_elf64_le_vec aarch64_elf32_le_vec aarch64_elf32_be_vec arm_elf32_be_vec arm_elf32_le_vec"
> -@@ -352,7 +356,7 @@ case "${targ}" in
> -     targ_defvec=arm_elf32_be_vec
> -     targ_selvecs="arm_elf32_le_vec"
> -     ;;
> --  arm-*-netbsdelf*)
> -+  arm-*-netbsdelf* | arm-*-openbsd*)
> -     targ_defvec=arm_elf32_le_vec
> -     targ_selvecs="arm_elf32_be_vec"
> -     ;;
> Index: patches/patch-bfd_elf_c
> ===================================================================
> RCS file: /cvs/ports/devel/gdb/patches/patch-bfd_elf_c,v
> diff -u -p -r1.12 patch-bfd_elf_c
> --- patches/patch-bfd_elf_c	10 Jun 2023 19:19:12 -0000	1.12
> +++ patches/patch-bfd_elf_c	7 Nov 2024 15:55:58 -0000
> @@ -1,8 +1,8 @@
>  Index: bfd/elf.c
>  --- bfd/elf.c.orig
>  +++ bfd/elf.c
> -@@ -10758,6 +10758,11 @@ elfcore_grok_openbsd_procinfo (bfd *abfd, Elf_Internal
> - static bfd_boolean
> +@@ -11438,6 +11438,11 @@ elfcore_grok_solaris_note (bfd *abfd, Elf_Internal_Not
> + static bool
>   elfcore_grok_openbsd_note (bfd *abfd, Elf_Internal_Note *note)
>   {
>  +  int lwp;
> @@ -13,13 +13,13 @@ Index: bfd/elf.c
>     if (note->type == NT_OPENBSD_PROCINFO)
>       return elfcore_grok_openbsd_procinfo (abfd, note);
>   
> -@@ -10786,6 +10791,9 @@ elfcore_grok_openbsd_note (bfd *abfd, Elf_Internal_Not
> +@@ -11466,6 +11471,9 @@ elfcore_grok_openbsd_note (bfd *abfd, Elf_Internal_Not
>   
> -       return TRUE;
> +       return true;
>       }
>  +
>  +  if (note->type == NT_OPENBSD_PACMASK)
>  +    return elfcore_make_note_pseudosection (abfd, ".reg-aarch-pauth", note);
>   
> -   return TRUE;
> +   return true;
>   }
> Index: patches/patch-bfd_peXXigen_c
> ===================================================================
> RCS file: patches/patch-bfd_peXXigen_c
> diff -N patches/patch-bfd_peXXigen_c
> --- patches/patch-bfd_peXXigen_c	11 Mar 2022 18:50:04 -0000	1.8
> +++ /dev/null	1 Jan 1970 00:00:00 -0000
> @@ -1,22 +0,0 @@
> -Fix out-of-bounds memcpys (FILNMLEN is 18, sizeof x_fname is 14).
> -Index: bfd/peXXigen.c
> ---- bfd/peXXigen.c.orig
> -+++ bfd/peXXigen.c
> -@@ -318,7 +318,7 @@ _bfd_XXi_swap_aux_in (bfd *	abfd,
> - 	  in->x_file.x_n.x_offset = H_GET_32 (abfd, ext->x_file.x_n.x_offset);
> - 	}
> -       else
> --	memcpy (in->x_file.x_fname, ext->x_file.x_fname, FILNMLEN);
> -+	memcpy (in->x_file.x_fname, ext->x_file.x_fname, sizeof in->x_file.x_fname);
> -       return;
> - 
> -     case C_STAT:
> -@@ -392,7 +392,7 @@ _bfd_XXi_swap_aux_out (bfd *  abfd,
> - 	  H_PUT_32 (abfd, in->x_file.x_n.x_offset, ext->x_file.x_n.x_offset);
> - 	}
> -       else
> --	memcpy (ext->x_file.x_fname, in->x_file.x_fname, FILNMLEN);
> -+	memcpy (ext->x_file.x_fname, in->x_file.x_fname, sizeof ext->x_file.x_fname);
> - 
> -       return AUXESZ;
> - 
> Index: patches/patch-gdb_Makefile_in
> ===================================================================
> RCS file: /cvs/ports/devel/gdb/patches/patch-gdb_Makefile_in,v
> diff -u -p -r1.5 patch-gdb_Makefile_in
> --- patches/patch-gdb_Makefile_in	11 Mar 2022 18:50:04 -0000	1.5
> +++ patches/patch-gdb_Makefile_in	7 Nov 2024 15:55:58 -0000
> @@ -1,7 +1,11 @@
> +
> +Add support for aarch64, powerpc64 and riscv64.
> +TODO Use OpenBSD-specific files for arm.
> +
>  Index: gdb/Makefile.in
>  --- gdb/Makefile.in.orig
>  +++ gdb/Makefile.in
> -@@ -651,6 +651,7 @@ ALL_64_TARGET_OBS = \
> +@@ -699,6 +699,7 @@ ALL_64_TARGET_OBS = \
>   	aarch64-fbsd-tdep.o \
>   	aarch64-linux-tdep.o \
>   	aarch64-newlib-tdep.o \
> @@ -9,23 +13,23 @@ Index: gdb/Makefile.in
>   	aarch64-ravenscar-thread.o \
>   	aarch64-tdep.o \
>   	alpha-bsd-tdep.o \
> -@@ -675,6 +676,7 @@ ALL_64_TARGET_OBS = \
> - 	ia64-tdep.o \
> - 	ia64-vms-tdep.o \
> - 	mips64-obsd-tdep.o \
> +@@ -737,6 +738,7 @@ ALL_64_TARGET_OBS = \
> + 	riscv-fbsd-tdep.o \
> + 	riscv-linux-tdep.o \
> + 	riscv-none-tdep.o \
>  +	riscv-obsd-tdep.o \
> + 	riscv-ravenscar-thread.o \
> + 	riscv-tdep.o \
>   	sparc64-fbsd-tdep.o \
> - 	sparc64-linux-tdep.o \
> - 	sparc64-nbsd-tdep.o \
> -@@ -1381,6 +1383,7 @@ HFILES_NO_SRCDIR = \
> - 	remote-notif.h \
> +@@ -1436,6 +1438,7 @@ HFILES_NO_SRCDIR = \
>   	riscv-fbsd-tdep.h \
> + 	riscv-ravenscar-thread.h \
>   	riscv-tdep.h \
>  +	riscv-obsd-tdep.h \
>   	rs6000-aix-tdep.h \
> - 	rs6000-tdep.h \
>   	run-on-main-thread.h \
> -@@ -2157,6 +2160,8 @@ ALLDEPFILES = \
> + 	s390-linux-tdep.h \
> +@@ -1627,6 +1630,8 @@ ALLDEPFILES = \
>   	aarch64-linux-nat.c \
>   	aarch64-linux-tdep.c \
>   	aarch64-newlib-tdep.c \
> @@ -34,12 +38,12 @@ Index: gdb/Makefile.in
>   	aarch64-ravenscar-thread.c \
>   	aarch64-tdep.c \
>   	aix-thread.c \
> -@@ -2300,6 +2305,8 @@ ALLDEPFILES = \
> - 	riscv-linux-nat.c \
> - 	riscv-linux-tdep.c \
> +@@ -1776,6 +1781,8 @@ ALLDEPFILES = \
> + 	riscv-none-tdep.c \
> + 	riscv-ravenscar-thread.c \
>   	riscv-tdep.c \
>  +	riscv-obsd-nat.c \
>  +	riscv-obsd-tdep.c \
>   	rl78-tdep.c \
> + 	rs6000-aix-nat.c \
>   	rs6000-lynx178-tdep.c \
> - 	rs6000-nat.c \
> Index: patches/patch-gdb_aarch64-obsd-nat_c
> ===================================================================
> RCS file: /cvs/ports/devel/gdb/patches/patch-gdb_aarch64-obsd-nat_c,v
> diff -u -p -r1.3 patch-gdb_aarch64-obsd-nat_c
> --- patches/patch-gdb_aarch64-obsd-nat_c	10 Jun 2023 19:19:12 -0000	1.3
> +++ patches/patch-gdb_aarch64-obsd-nat_c	7 Nov 2024 15:55:58 -0000
> @@ -1,7 +1,7 @@
>  Index: gdb/aarch64-obsd-nat.c
>  --- gdb/aarch64-obsd-nat.c.orig
>  +++ gdb/aarch64-obsd-nat.c
> -@@ -0,0 +1,162 @@
> +@@ -0,0 +1,169 @@
>  +/* Native-dependent code for OpenBSD/aarch64.
>  +
>  +   Copyright (C) 2017-2020 Free Software Foundation, Inc.
> @@ -27,6 +27,7 @@ Index: gdb/aarch64-obsd-nat.c
>  +#include "target.h"
>  +
>  +#include <sys/types.h>
> ++#include <sys/auxv.h>
>  +#include <sys/ptrace.h>
>  +#include <machine/reg.h>
>  +
> @@ -156,7 +157,13 @@ Index: gdb/aarch64-obsd-nat.c
>  +const struct target_desc *
>  +aarch64_obsd_nat_target::read_description ()
>  +{
> -+  return aarch64_read_description(0, true);
> ++  aarch64_features features;
> ++  unsigned long hwcap;
> ++
> ++  if (elf_aux_info(AT_HWCAP, &hwcap, sizeof hwcap) == 0)
> ++    features.pauth = hwcap & HWCAP_PACA;
> ++
> ++  return aarch64_read_description (features);
>  +}
>  +
>  +void
> Index: patches/patch-gdb_aarch64-obsd-tdep_c
> ===================================================================
> RCS file: /cvs/ports/devel/gdb/patches/patch-gdb_aarch64-obsd-tdep_c,v
> diff -u -p -r1.3 patch-gdb_aarch64-obsd-tdep_c
> --- patches/patch-gdb_aarch64-obsd-tdep_c	10 Jun 2023 19:19:12 -0000	1.3
> +++ patches/patch-gdb_aarch64-obsd-tdep_c	7 Nov 2024 15:55:58 -0000
> @@ -1,7 +1,7 @@
>  Index: gdb/aarch64-obsd-tdep.c
>  --- gdb/aarch64-obsd-tdep.c.orig
>  +++ gdb/aarch64-obsd-tdep.c
> -@@ -0,0 +1,334 @@
> +@@ -0,0 +1,338 @@
>  +/* Target-dependent code for OpenBSD/aarch64.
>  +
>  +   Copyright (C) 2006-2017 Free Software Foundation, Inc.
> @@ -59,7 +59,7 @@ Index: gdb/aarch64-obsd-tdep.c
>  +
>  +static int
>  +aarch64obsd_sigtramp_frame_sniffer (const struct frame_unwind *self,
> -+				    struct frame_info *this_frame,
> ++				    frame_info_ptr this_frame,
>  +				    void **this_cache)
>  +{
>  +  struct gdbarch *gdbarch = get_frame_arch (this_frame);
> @@ -78,8 +78,7 @@ Index: gdb/aarch64-obsd-tdep.c
>  +      gdb_byte buf[8];
>  +      unsigned long insn;
>  +
> -+      if (!safe_frame_unwind_memory (this_frame, start_pc + *offset,
> -+				     buf, sizeof buf))
> ++      if (!safe_frame_unwind_memory (this_frame, start_pc + *offset, buf)
>  +	continue;
>  +
>  +      /* Check for "mov x8, #SYS_sigreturn".  */
> @@ -134,10 +133,10 @@ Index: gdb/aarch64-obsd-tdep.c
>  +#define AARCH64_SIGCONTEXT_X0_OFFSET		40
>  +
>  +static struct trad_frame_cache *
> -+aarch64obsd_sigtramp_frame_cache (struct frame_info *this_frame, void **this_cache)
> ++aarch64obsd_sigtramp_frame_cache (frame_info_ptr this_frame, void **this_cache)
>  +{
>  +  struct gdbarch *gdbarch = get_frame_arch (this_frame);
> -+  struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch);
> ++  aarch64_gdbarch_tdep *tdep = gdbarch_tdep<aarch64_gdbarch_tdep> (gdbarch);
>  +  enum bfd_endian byte_order = gdbarch_byte_order (gdbarch);
>  +  struct trad_frame_cache *cache;
>  +  CORE_ADDR sp, sigcontext_addr, x0_addr, func;
> @@ -153,7 +152,7 @@ Index: gdb/aarch64-obsd-tdep.c
>  +
>  +  func = get_frame_pc (this_frame);
>  +  func &= ~(aarch64obsd_page_size - 1);
> -+  if (!safe_frame_unwind_memory (this_frame, func, buf, sizeof buf))
> ++  if (!safe_frame_unwind_memory (this_frame, func, buf))
>  +    return cache;
>  +
>  +  /* Calculate the offset where we can find `struct sigframe'.  In 6.1
> @@ -188,7 +187,7 @@ Index: gdb/aarch64-obsd-tdep.c
>  +}
>  +
>  +static void
> -+aarch64obsd_sigtramp_frame_this_id (struct frame_info *this_frame,
> ++aarch64obsd_sigtramp_frame_this_id (frame_info_ptr this_frame,
>  +				    void **this_cache,
>  +				    struct frame_id *this_id)
>  +{
> @@ -199,7 +198,7 @@ Index: gdb/aarch64-obsd-tdep.c
>  +}
>  +
>  +static struct value *
> -+aarch64obsd_sigtramp_frame_prev_register (struct frame_info *this_frame,
> ++aarch64obsd_sigtramp_frame_prev_register (frame_info_ptr this_frame,
>  +				      void **this_cache, int regnum)
>  +{
>  +  struct trad_frame_cache *cache =
> @@ -268,7 +267,7 @@ Index: gdb/aarch64-obsd-tdep.c
>  +					   void *cb_data,
>  +					   const struct regcache *regcache)
>  +{
> -+  struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch);
> ++  aarch64_gdbarch_tdep *tdep = gdbarch_tdep<aarch64_gdbarch_tdep> (gdbarch);
>  +
>  +  cb (".reg", AARCH64_OBSD_SIZEOF_GREGSET, AARCH64_OBSD_SIZEOF_GREGSET,
>  +      &aarch64_obsd_gregset, NULL, cb_data);
> @@ -299,14 +298,19 @@ Index: gdb/aarch64-obsd-tdep.c
>  +aarch64_obsd_core_read_description (struct gdbarch *gdbarch,
>  +				    struct target_ops *target, bfd *abfd)
>  +{
> -+  return aarch64_read_description (0, true);
> ++  asection *pauth = bfd_get_section_by_name (abfd, ".reg-aarch-pauth");
> ++
> ++  aarch64_features features;
> ++  features.pauth = pauth != nullptr ? 1 : 0;
> ++
> ++  return aarch64_read_description (features);
>  +}
>  +␌
>  +
>  +static void
>  +aarch64obsd_init_abi (struct gdbarch_info info, struct gdbarch *gdbarch)
>  +{
> -+  struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch);
> ++  aarch64_gdbarch_tdep *tdep = gdbarch_tdep<aarch64_gdbarch_tdep> (gdbarch);
>  +
>  +  obsd_init_abi (info, gdbarch);
>  +
> Index: patches/patch-gdb_amd64-obsd-tdep_c
> ===================================================================
> RCS file: /cvs/ports/devel/gdb/patches/patch-gdb_amd64-obsd-tdep_c,v
> diff -u -p -r1.3 patch-gdb_amd64-obsd-tdep_c
> --- patches/patch-gdb_amd64-obsd-tdep_c	10 Dec 2023 12:06:58 -0000	1.3
> +++ patches/patch-gdb_amd64-obsd-tdep_c	7 Nov 2024 15:55:58 -0000
> @@ -47,7 +47,7 @@ Index: gdb/amd64-obsd-tdep.c
>   /* Return whether THIS_FRAME corresponds to an OpenBSD sigtramp
>      routine.  */
>   
> -@@ -49,20 +85,8 @@ amd64obsd_sigtramp_p (struct frame_info *this_frame)
> +@@ -49,20 +85,8 @@ amd64obsd_sigtramp_p (frame_info_ptr this_frame)
>   {
>     CORE_ADDR pc = get_frame_pc (this_frame);
>     CORE_ADDR start_pc = (pc & ~(amd64obsd_page_size - 1));
> @@ -70,19 +70,19 @@ Index: gdb/amd64-obsd-tdep.c
>     const char *name;
>   
>     /* If the function has a valid symbol name, it isn't a
> -@@ -76,22 +100,21 @@ amd64obsd_sigtramp_p (struct frame_info *this_frame)
> +@@ -76,22 +100,21 @@ amd64obsd_sigtramp_p (frame_info_ptr this_frame)
>     if (find_pc_section (pc) != NULL)
>       return 0;
>   
>  -  /* If we can't read the instructions at START_PC, return zero.  */
>  -  buf = (gdb_byte *) alloca ((sizeof sigreturn) + 1);
> --  if (!safe_frame_unwind_memory (this_frame, start_pc + 6, buf, buflen))
> +-  if (!safe_frame_unwind_memory (this_frame, start_pc + 6, {buf, buflen}))
>  -    return 0;
>  +  for (info = amd64obsd_sigreturn_info; info->offset != -1; info++)
>  +    {
>  +      /* If we can't read the instructions, return zero.  */
>  +      if (!safe_frame_unwind_memory (this_frame,
> -+        start_pc + info->offset, buf, sizeof buf))
> ++        start_pc + info->offset, buf))
>  +        continue;
>   
>  -  /* Check for sigreturn(2).  Depending on how the assembler encoded
> @@ -107,7 +107,7 @@ Index: gdb/amd64-obsd-tdep.c
>   
>   /* Assuming THIS_FRAME is for a BSD sigtramp routine, return the
>  @@ -101,7 +124,10 @@ static CORE_ADDR
> - amd64obsd_sigcontext_addr (struct frame_info *this_frame)
> + amd64obsd_sigcontext_addr (frame_info_ptr this_frame)
>   {
>     CORE_ADDR pc = get_frame_pc (this_frame);
>  +  CORE_ADDR start_pc = (pc & ~(amd64obsd_page_size - 1));
> @@ -117,7 +117,7 @@ Index: gdb/amd64-obsd-tdep.c
>   
>     /* The %rsp register points at `struct sigcontext' upon entry of a
>        signal trampoline.  The relevant part of the trampoline is
> -@@ -115,10 +141,22 @@ amd64obsd_sigcontext_addr (struct frame_info *this_fra
> +@@ -115,10 +141,22 @@ amd64obsd_sigcontext_addr (frame_info_ptr this_frame)
>        (see /usr/src/sys/arch/amd64/amd64/locore.S).  The `pushq'
>        instruction clobbers %rsp, but its value is saved in `%rdi'.  */
>   
> @@ -129,7 +129,7 @@ Index: gdb/amd64-obsd-tdep.c
>  +    {
>  +      /* If we can't read the instructions, return %rsp.  */
>  +      if (!safe_frame_unwind_memory (this_frame,
> -+        start_pc + info->offset, buf, sizeof buf))
> ++        start_pc + info->offset, buf))
>  +        continue;
>  +
>  +      /* Check for sigreturn(2).  */
> Index: patches/patch-gdb_arm-nbsd-nat_c
> ===================================================================
> RCS file: patches/patch-gdb_arm-nbsd-nat_c
> diff -N patches/patch-gdb_arm-nbsd-nat_c
> --- patches/patch-gdb_arm-nbsd-nat_c	11 Mar 2022 18:50:04 -0000	1.2
> +++ /dev/null	1 Jan 1970 00:00:00 -0000
> @@ -1,76 +0,0 @@
> -Index: gdb/arm-nbsd-nat.c
> ---- gdb/arm-nbsd-nat.c.orig
> -+++ gdb/arm-nbsd-nat.c
> -@@ -69,9 +69,9 @@ arm_supply_fparegset (struct regcache *regcache, struc
> - 
> -   for (regno = ARM_F0_REGNUM; regno <= ARM_F7_REGNUM; regno++)
> -     regcache->raw_supply (regno,
> --			  (char *) &fparegset->fpr[regno - ARM_F0_REGNUM]);
> -+			  (char *) &fparegset->fp_reg[regno - ARM_F0_REGNUM]);
> - 
> --  regcache->raw_supply (ARM_FPS_REGNUM, (char *) &fparegset->fpr_fpsr);
> -+  regcache->raw_supply (ARM_FPS_REGNUM, (char *) &fparegset->fp_scr);
> - }
> - 
> - static void
> -@@ -160,12 +160,12 @@ fetch_fp_register (struct regcache *regcache, int regn
> -     {
> -     case ARM_FPS_REGNUM:
> -       regcache->raw_supply (ARM_FPS_REGNUM,
> --			    (char *) &inferior_fp_registers.fpr_fpsr);
> -+			    (char *) &inferior_fp_registers.fp_scr);
> -       break;
> - 
> -     default:
> -       regcache->raw_supply
> --	(regno, (char *) &inferior_fp_registers.fpr[regno - ARM_F0_REGNUM]);
> -+	(regno, (char *) &inferior_fp_registers.fp_reg[regno - ARM_F0_REGNUM]);
> -       break;
> -     }
> - }
> -@@ -190,7 +190,7 @@ fetch_fp_regs (struct regcache *regcache)
> - }
> - 
> - void
> --arm_nbsd_nat_target::fetch_registers (struct regcache *regcache, int regno)
> -+arm_netbsd_nat_target::fetch_registers (struct regcache *regcache, int regno)
> - {
> -   if (regno >= 0)
> -     {
> -@@ -340,12 +340,12 @@ store_fp_register (const struct regcache *regcache, in
> -     {
> -     case ARM_FPS_REGNUM:
> -       regcache->raw_collect (ARM_FPS_REGNUM,
> --			     (char *) &inferior_fp_registers.fpr_fpsr);
> -+			     (char *) &inferior_fp_registers.fp_scr);
> -       break;
> - 
> -     default:
> -       regcache->raw_collect
> --	(regno, (char *) &inferior_fp_registers.fpr[regno - ARM_F0_REGNUM]);
> -+	(regno, (char *) &inferior_fp_registers.fp_reg[regno - ARM_F0_REGNUM]);
> -       break;
> -     }
> - 
> -@@ -366,10 +366,10 @@ store_fp_regs (const struct regcache *regcache)
> - 
> -   for (regno = ARM_F0_REGNUM; regno <= ARM_F7_REGNUM; regno++)
> -     regcache->raw_collect
> --      (regno, (char *) &inferior_fp_registers.fpr[regno - ARM_F0_REGNUM]);
> -+      (regno, (char *) &inferior_fp_registers.fp_reg[regno - ARM_F0_REGNUM]);
> - 
> -   regcache->raw_collect (ARM_FPS_REGNUM,
> --			 (char *) &inferior_fp_registers.fpr_fpsr);
> -+			 (char *) &inferior_fp_registers.fp_scr);
> - 
> -   ret = ptrace (PT_SETFPREGS, regcache->ptid ().pid (),
> - 		(PTRACE_TYPE_ARG3) &inferior_fp_registers, 0);
> -@@ -379,7 +379,7 @@ store_fp_regs (const struct regcache *regcache)
> - }
> - 
> - void
> --arm_nbsd_nat_target::store_registers (struct regcache *regcache, int regno)
> -+arm_netbsd_nat_target::store_registers (struct regcache *regcache, int regno)
> - {
> -   if (regno >= 0)
> -     {
> Index: patches/patch-gdb_arm-obsd-nat_c
> ===================================================================
> RCS file: patches/patch-gdb_arm-obsd-nat_c
> diff -N patches/patch-gdb_arm-obsd-nat_c
> --- /dev/null	1 Jan 1970 00:00:00 -0000
> +++ patches/patch-gdb_arm-obsd-nat_c	7 Nov 2024 15:55:58 -0000
> @@ -0,0 +1,428 @@
> +
> +TODO Reinstate OpenBSD/arm native support.
> +
> +Index: gdb/arm-obsd-nat.c
> +--- gdb/arm-obsd-nat.c.orig
> ++++ gdb/arm-obsd-nat.c
> +@@ -0,0 +1,421 @@
> ++/* Native-dependent code for BSD Unix running on ARM's, for GDB.
> ++
> ++   Copyright (C) 1988-2020 Free Software Foundation, Inc.
> ++
> ++   This file is part of GDB.
> ++
> ++   This program is free software; you can redistribute it and/or modify
> ++   it under the terms of the GNU General Public License as published by
> ++   the Free Software Foundation; either version 3 of the License, or
> ++   (at your option) any later version.
> ++
> ++   This program is distributed in the hope that it will be useful,
> ++   but WITHOUT ANY WARRANTY; without even the implied warranty of
> ++   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
> ++   GNU General Public License for more details.
> ++
> ++   You should have received a copy of the GNU General Public License
> ++   along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
> ++
> ++#include "defs.h"
> ++#include "gdbcore.h"
> ++#include "inferior.h"
> ++#include "regcache.h"
> ++#include "target.h"
> ++#include <sys/types.h>
> ++#include <sys/ptrace.h>
> ++#include <machine/reg.h>
> ++#include <machine/frame.h>
> ++
> ++#include "arm-tdep.h"
> ++#include "inf-ptrace.h"
> ++#include "obsd-nat.h"
> ++
> ++class arm_openbsd_nat_target final : public obsd_nat_target
> ++{
> ++public:
> ++  /* Add our register access methods.  */
> ++  void fetch_registers (struct regcache *, int) override;
> ++  void store_registers (struct regcache *, int) override;
> ++
> ++  const struct target_desc *read_description () override;
> ++};
> ++
> ++static arm_openbsd_nat_target the_arm_openbsd_nat_target;
> ++
> ++static void
> ++arm_supply_gregset (struct regcache *regcache, struct reg *gregset)
> ++{
> ++  int regno;
> ++  CORE_ADDR r_pc;
> ++
> ++  /* Integer registers.  */
> ++  for (regno = ARM_A1_REGNUM; regno < ARM_SP_REGNUM; regno++)
> ++    regcache->raw_supply (regno, (char *) &gregset->r[regno]);
> ++
> ++  regcache->raw_supply (ARM_SP_REGNUM, (char *) &gregset->r_sp);
> ++  regcache->raw_supply (ARM_LR_REGNUM, (char *) &gregset->r_lr);
> ++  /* This is ok: we're running native...  */
> ++  r_pc = gdbarch_addr_bits_remove (regcache->arch (), gregset->r_pc);
> ++  regcache->raw_supply (ARM_PC_REGNUM, (char *) &r_pc);
> ++
> ++  if (arm_apcs_32)
> ++    regcache->raw_supply (ARM_PS_REGNUM, (char *) &gregset->r_cpsr);
> ++  else
> ++    regcache->raw_supply (ARM_PS_REGNUM, (char *) &gregset->r_pc);
> ++}
> ++
> ++static void
> ++arm_supply_fparegset (struct regcache *regcache, struct fpreg *fparegset)
> ++{
> ++  int regno;
> ++
> ++  for (regno = ARM_F0_REGNUM; regno <= ARM_F7_REGNUM; regno++)
> ++    regcache->raw_supply (regno,
> ++			  (char *) &fparegset->fp_reg[regno - ARM_F0_REGNUM]);
> ++
> ++  regcache->raw_supply (ARM_FPS_REGNUM, (char *) &fparegset->fp_scr);
> ++}
> ++
> ++static void
> ++fetch_register (struct regcache *regcache, int regno)
> ++{
> ++  struct reg inferior_registers;
> ++  int ret;
> ++
> ++  ret = ptrace (PT_GETREGS, regcache->ptid ().pid (),
> ++		(PTRACE_TYPE_ARG3) &inferior_registers, 0);
> ++
> ++  if (ret < 0)
> ++    {
> ++      warning (_("unable to fetch general register"));
> ++      return;
> ++    }
> ++
> ++  switch (regno)
> ++    {
> ++    case ARM_SP_REGNUM:
> ++      regcache->raw_supply (ARM_SP_REGNUM, (char *) &inferior_registers.r_sp);
> ++      break;
> ++
> ++    case ARM_LR_REGNUM:
> ++      regcache->raw_supply (ARM_LR_REGNUM, (char *) &inferior_registers.r_lr);
> ++      break;
> ++
> ++    case ARM_PC_REGNUM:
> ++      /* This is ok: we're running native...  */
> ++      inferior_registers.r_pc = gdbarch_addr_bits_remove
> ++				  (regcache->arch (),
> ++				   inferior_registers.r_pc);
> ++      regcache->raw_supply (ARM_PC_REGNUM, (char *) &inferior_registers.r_pc);
> ++      break;
> ++
> ++    case ARM_PS_REGNUM:
> ++      if (arm_apcs_32)
> ++	regcache->raw_supply (ARM_PS_REGNUM,
> ++			      (char *) &inferior_registers.r_cpsr);
> ++      else
> ++	regcache->raw_supply (ARM_PS_REGNUM,
> ++			      (char *) &inferior_registers.r_pc);
> ++      break;
> ++
> ++    default:
> ++      regcache->raw_supply (regno, (char *) &inferior_registers.r[regno]);
> ++      break;
> ++    }
> ++}
> ++
> ++static void
> ++fetch_regs (struct regcache *regcache)
> ++{
> ++  struct reg inferior_registers;
> ++  int ret;
> ++  int regno;
> ++
> ++  ret = ptrace (PT_GETREGS, regcache->ptid ().pid (),
> ++		(PTRACE_TYPE_ARG3) &inferior_registers, 0);
> ++
> ++  if (ret < 0)
> ++    {
> ++      warning (_("unable to fetch general registers"));
> ++      return;
> ++    }
> ++
> ++  arm_supply_gregset (regcache, &inferior_registers);
> ++}
> ++
> ++static void
> ++fetch_fp_register (struct regcache *regcache, int regno)
> ++{
> ++  struct fpreg inferior_fp_registers;
> ++  int ret;
> ++
> ++  ret = ptrace (PT_GETFPREGS, regcache->ptid ().pid (),
> ++		(PTRACE_TYPE_ARG3) &inferior_fp_registers, 0);
> ++
> ++  if (ret < 0)
> ++    {
> ++      warning (_("unable to fetch floating-point register"));
> ++      return;
> ++    }
> ++
> ++  switch (regno)
> ++    {
> ++    case ARM_FPS_REGNUM:
> ++      regcache->raw_supply (ARM_FPS_REGNUM,
> ++			    (char *) &inferior_fp_registers.fp_scr);
> ++      break;
> ++
> ++    default:
> ++      regcache->raw_supply
> ++	(regno, (char *) &inferior_fp_registers.fp_reg[regno - ARM_F0_REGNUM]);
> ++      break;
> ++    }
> ++}
> ++
> ++static void
> ++fetch_fp_regs (struct regcache *regcache)
> ++{
> ++  struct fpreg inferior_fp_registers;
> ++  int ret;
> ++  int regno;
> ++
> ++  ret = ptrace (PT_GETFPREGS, regcache->ptid ().pid (),
> ++		(PTRACE_TYPE_ARG3) &inferior_fp_registers, 0);
> ++
> ++  if (ret < 0)
> ++    {
> ++      warning (_("unable to fetch general registers"));
> ++      return;
> ++    }
> ++
> ++  arm_supply_fparegset (regcache, &inferior_fp_registers);
> ++}
> ++
> ++void
> ++arm_openbsd_nat_target::fetch_registers (struct regcache *regcache, int regno)
> ++{
> ++  if (regno >= 0)
> ++    {
> ++      if (regno < ARM_F0_REGNUM || regno > ARM_FPS_REGNUM)
> ++	fetch_register (regcache, regno);
> ++      else
> ++	fetch_fp_register (regcache, regno);
> ++    }
> ++  else
> ++    {
> ++      fetch_regs (regcache);
> ++      fetch_fp_regs (regcache);
> ++    }
> ++}
> ++
> ++
> ++static void
> ++store_register (const struct regcache *regcache, int regno)
> ++{
> ++  gdbarch *gdbarch = regcache->arch ();
> ++  struct reg inferior_registers;
> ++  int ret;
> ++
> ++  ret = ptrace (PT_GETREGS, regcache->ptid ().pid (),
> ++		(PTRACE_TYPE_ARG3) &inferior_registers, 0);
> ++
> ++  if (ret < 0)
> ++    {
> ++      warning (_("unable to fetch general registers"));
> ++      return;
> ++    }
> ++
> ++  switch (regno)
> ++    {
> ++    case ARM_SP_REGNUM:
> ++      regcache->raw_collect (ARM_SP_REGNUM, (char *) &inferior_registers.r_sp);
> ++      break;
> ++
> ++    case ARM_LR_REGNUM:
> ++      regcache->raw_collect (ARM_LR_REGNUM, (char *) &inferior_registers.r_lr);
> ++      break;
> ++
> ++    case ARM_PC_REGNUM:
> ++      if (arm_apcs_32)
> ++	regcache->raw_collect (ARM_PC_REGNUM,
> ++			       (char *) &inferior_registers.r_pc);
> ++      else
> ++	{
> ++	  unsigned pc_val;
> ++
> ++	  regcache->raw_collect (ARM_PC_REGNUM, (char *) &pc_val);
> ++	  
> ++	  pc_val = gdbarch_addr_bits_remove (gdbarch, pc_val);
> ++	  inferior_registers.r_pc ^= gdbarch_addr_bits_remove
> ++				       (gdbarch, inferior_registers.r_pc);
> ++	  inferior_registers.r_pc |= pc_val;
> ++	}
> ++      break;
> ++
> ++    case ARM_PS_REGNUM:
> ++      if (arm_apcs_32)
> ++	regcache->raw_collect (ARM_PS_REGNUM,
> ++			       (char *) &inferior_registers.r_cpsr);
> ++      else
> ++	{
> ++	  unsigned psr_val;
> ++
> ++	  regcache->raw_collect (ARM_PS_REGNUM, (char *) &psr_val);
> ++
> ++	  psr_val ^= gdbarch_addr_bits_remove (gdbarch, psr_val);
> ++	  inferior_registers.r_pc = gdbarch_addr_bits_remove
> ++				      (gdbarch, inferior_registers.r_pc);
> ++	  inferior_registers.r_pc |= psr_val;
> ++	}
> ++      break;
> ++
> ++    default:
> ++      regcache->raw_collect (regno, (char *) &inferior_registers.r[regno]);
> ++      break;
> ++    }
> ++
> ++  ret = ptrace (PT_SETREGS, regcache->ptid ().pid (),
> ++		(PTRACE_TYPE_ARG3) &inferior_registers, 0);
> ++
> ++  if (ret < 0)
> ++    warning (_("unable to write register %d to inferior"), regno);
> ++}
> ++
> ++static void
> ++store_regs (const struct regcache *regcache)
> ++{
> ++  struct gdbarch *gdbarch = regcache->arch ();
> ++  struct reg inferior_registers;
> ++  int ret;
> ++  int regno;
> ++
> ++
> ++  for (regno = ARM_A1_REGNUM; regno < ARM_SP_REGNUM; regno++)
> ++    regcache->raw_collect (regno, (char *) &inferior_registers.r[regno]);
> ++
> ++  regcache->raw_collect (ARM_SP_REGNUM, (char *) &inferior_registers.r_sp);
> ++  regcache->raw_collect (ARM_LR_REGNUM, (char *) &inferior_registers.r_lr);
> ++
> ++  if (arm_apcs_32)
> ++    {
> ++      regcache->raw_collect (ARM_PC_REGNUM, (char *) &inferior_registers.r_pc);
> ++      regcache->raw_collect (ARM_PS_REGNUM,
> ++			     (char *) &inferior_registers.r_cpsr);
> ++    }
> ++  else
> ++    {
> ++      unsigned pc_val;
> ++      unsigned psr_val;
> ++
> ++      regcache->raw_collect (ARM_PC_REGNUM, (char *) &pc_val);
> ++      regcache->raw_collect (ARM_PS_REGNUM, (char *) &psr_val);
> ++	  
> ++      pc_val = gdbarch_addr_bits_remove (gdbarch, pc_val);
> ++      psr_val ^= gdbarch_addr_bits_remove (gdbarch, psr_val);
> ++
> ++      inferior_registers.r_pc = pc_val | psr_val;
> ++    }
> ++
> ++  ret = ptrace (PT_SETREGS, regcache->ptid ().pid (),
> ++		(PTRACE_TYPE_ARG3) &inferior_registers, 0);
> ++
> ++  if (ret < 0)
> ++    warning (_("unable to store general registers"));
> ++}
> ++
> ++static void
> ++store_fp_register (const struct regcache *regcache, int regno)
> ++{
> ++  struct fpreg inferior_fp_registers;
> ++  int ret;
> ++
> ++  ret = ptrace (PT_GETFPREGS, regcache->ptid ().pid (),
> ++		(PTRACE_TYPE_ARG3) &inferior_fp_registers, 0);
> ++
> ++  if (ret < 0)
> ++    {
> ++      warning (_("unable to fetch floating-point registers"));
> ++      return;
> ++    }
> ++
> ++  switch (regno)
> ++    {
> ++    case ARM_FPS_REGNUM:
> ++      regcache->raw_collect (ARM_FPS_REGNUM,
> ++			     (char *) &inferior_fp_registers.fp_scr);
> ++      break;
> ++
> ++    default:
> ++      regcache->raw_collect
> ++	(regno, (char *) &inferior_fp_registers.fp_reg[regno - ARM_F0_REGNUM]);
> ++      break;
> ++    }
> ++
> ++  ret = ptrace (PT_SETFPREGS, regcache->ptid ().pid (),
> ++		(PTRACE_TYPE_ARG3) &inferior_fp_registers, 0);
> ++
> ++  if (ret < 0)
> ++    warning (_("unable to write register %d to inferior"), regno);
> ++}
> ++
> ++static void
> ++store_fp_regs (const struct regcache *regcache)
> ++{
> ++  struct fpreg inferior_fp_registers;
> ++  int ret;
> ++  int regno;
> ++
> ++
> ++  for (regno = ARM_F0_REGNUM; regno <= ARM_F7_REGNUM; regno++)
> ++    regcache->raw_collect
> ++      (regno, (char *) &inferior_fp_registers.fp_reg[regno - ARM_F0_REGNUM]);
> ++
> ++  regcache->raw_collect (ARM_FPS_REGNUM,
> ++			 (char *) &inferior_fp_registers.fp_scr);
> ++
> ++  ret = ptrace (PT_SETFPREGS, regcache->ptid ().pid (),
> ++		(PTRACE_TYPE_ARG3) &inferior_fp_registers, 0);
> ++
> ++  if (ret < 0)
> ++    warning (_("unable to store floating-point registers"));
> ++}
> ++
> ++void
> ++arm_openbsd_nat_target::store_registers (struct regcache *regcache, int regno)
> ++{
> ++  if (regno >= 0)
> ++    {
> ++      if (regno < ARM_F0_REGNUM || regno > ARM_FPS_REGNUM)
> ++	store_register (regcache, regno);
> ++      else
> ++	store_fp_register (regcache, regno);
> ++    }
> ++  else
> ++    {
> ++      store_regs (regcache);
> ++      store_fp_regs (regcache);
> ++    }
> ++}
> ++
> ++const struct target_desc *
> ++arm_openbsd_nat_target::read_description ()
> ++{
> ++#ifdef notyet
> ++/*
> ++ * XXX clang on OpenBSD/arm enables NEON by default
> ++ * Should we try to use that code path?
> ++ */
> ++  if (neon)
> ++    return aarch32_read_description ();
> ++#endif
> ++
> ++  return arm_read_description (ARM_FP_TYPE_VFPV3, false);
> ++}
> ++
> ++void _initialize_arm_openbsd_nat ();
> ++void
> ++_initialize_arm_openbsd_nat ()
> ++{
> ++  add_inf_child_target (&the_arm_openbsd_nat_target);
> ++}
> Index: patches/patch-gdb_cli_cli-cmds_c
> ===================================================================
> RCS file: /cvs/ports/devel/gdb/patches/patch-gdb_cli_cli-cmds_c,v
> diff -u -p -r1.1 patch-gdb_cli_cli-cmds_c
> --- patches/patch-gdb_cli_cli-cmds_c	1 Oct 2024 07:41:42 -0000	1.1
> +++ patches/patch-gdb_cli_cli-cmds_c	7 Nov 2024 15:55:58 -0000
> @@ -1,7 +1,7 @@
>  Index: gdb/cli/cli-cmds.c
>  --- gdb/cli/cli-cmds.c.orig
>  +++ gdb/cli/cli-cmds.c
> -@@ -956,7 +956,7 @@ edit_command (const char *arg, int from_tty)
> +@@ -1043,7 +1043,7 @@ edit_command (const char *arg, int from_tty)
>       }
>   
>     if ((editor = getenv ("EDITOR")) == NULL)
> Index: patches/patch-gdb_configure_host
> ===================================================================
> RCS file: /cvs/ports/devel/gdb/patches/patch-gdb_configure_host,v
> diff -u -p -r1.4 patch-gdb_configure_host
> --- patches/patch-gdb_configure_host	11 Mar 2022 18:50:04 -0000	1.4
> +++ patches/patch-gdb_configure_host	7 Nov 2024 15:55:58 -0000
> @@ -1,16 +1,29 @@
> +
> +Add support for aarch64, powerpc64 and riscv64.
> +Use OpenBSD-specific files for arm (TBD).
> +
>  Index: gdb/configure.host
>  --- gdb/configure.host.orig
>  +++ gdb/configure.host
> -@@ -85,6 +85,7 @@ case "${host}" in
> +@@ -81,6 +81,7 @@ case "${host}" in
>   
>   aarch64*-*-linux*)	gdb_host=linux ;;
>   aarch64*-*-freebsd*)	gdb_host=fbsd ;;
>  +aarch64*-*-openbsd*)	gdb_host=obsd64 ;;
>   
>   alpha*-*-linux*)	gdb_host=alpha-linux ;;
> - alpha*-*-netbsd* | alpha*-*-knetbsd*-gnu)
> -@@ -139,12 +140,14 @@ powerpc*-*-freebsd*)	gdb_host=fbsd ;;
> - powerpc-*-netbsd* | powerpc-*-knetbsd*-gnu)
> + alpha*-*-netbsdaout* | alpha*-*-knetbsdaout*-gnu)
> +@@ -93,7 +94,7 @@ arm*-*-freebsd*)	gdb_host=fbsd ;;
> + arm*-*-linux*)		gdb_host=linux ;;
> + arm*-*-netbsd* | arm*-*-knetbsd*-gnu)
> + 			gdb_host=nbsdelf ;;
> +-arm*-*-openbsd*)	gdb_host=nbsdelf ;;
> ++arm*-*-openbsd*)	gdb_host=obsd ;;
> + 
> + hppa*-*-linux*)		gdb_host=linux ;;
> + hppa*-*-netbsd*)	gdb_host=nbsd ;;
> +@@ -141,12 +142,14 @@ powerpc*-*-freebsd*)	gdb_host=fbsd ;;
> + powerpc-*-netbsdaout* | powerpc-*-knetbsd*-gnu)
>   			gdb_host=nbsd ;;
>   powerpc-*-openbsd*)	gdb_host=obsd ;;
>  +powerpc64-*-openbsd*)	gdb_host=obsd64 ;;
> Index: patches/patch-gdb_configure_nat
> ===================================================================
> RCS file: /cvs/ports/devel/gdb/patches/patch-gdb_configure_nat,v
> diff -u -p -r1.2 patch-gdb_configure_nat
> --- patches/patch-gdb_configure_nat	11 Mar 2022 18:50:04 -0000	1.2
> +++ patches/patch-gdb_configure_nat	7 Nov 2024 15:55:58 -0000
> @@ -1,5 +1,6 @@
>  All our targets need obsd-nat.o and kvm etc -> dedup.
> -Add aarch64 and riscv64 support.
> +Add aarch64, powerpc64 and riscv64 support.
> +Use OpenBSD-specific files for arm. (TBD)
>  
>  Index: gdb/configure.nat
>  --- gdb/configure.nat.orig
> @@ -21,9 +22,15 @@ Index: gdb/configure.nat
>  +	LOADLIBES='-lkvm'
>   	;;
>       cygwin*)
> - 	NATDEPFILES='x86-nat.o nat/x86-dregs.o windows-nat.o'
> -@@ -416,49 +416,54 @@ case ${gdb_host} in
> + 	NATDEPFILES='x86-nat.o nat/x86-dregs.o windows-nat.o nat/windows-nat.o'
> +@@ -430,50 +430,60 @@ case ${gdb_host} in
> + 	;;
> +     obsd)
>   	case ${gdb_host_cpu} in
> ++	    arm)
> ++		# Host: OpenBSD/arm XXX TODO
> ++		#NATDEPFILES="${NATDEPFILES} arm-obsd-nat.o"
> ++		;;
>   	    i386)
>   		# Host: OpenBSD/i386 ELF
>  -		NATDEPFILES="${NATDEPFILES} obsd-nat.o x86-bsd-nat.o \
> @@ -65,9 +72,8 @@ Index: gdb/configure.nat
>  +		;;
>   	    i386)
>   		# Host: OpenBSD/amd64
> --		NATDEPFILES="${NATDEPFILES} obsd-nat.o amd64-nat.o x86-nat.o \
> --		x86-bsd-nat.o amd64-bsd-nat.o amd64-obsd-nat.o bsd-kvm.o \
> --		nat/x86-dregs.o"
> +-		NATDEPFILES="${NATDEPFILES} obsd-nat.o amd64-nat.o \
> +-		x86-bsd-nat.o amd64-bsd-nat.o amd64-obsd-nat.o bsd-kvm.o"
>  -		LOADLIBES='-lkvm'
>  +		NATDEPFILES="${NATDEPFILES} amd64-nat.o \
>  +		x86-bsd-nat.o amd64-bsd-nat.o amd64-obsd-nat.o"
> Index: patches/patch-gdb_configure_tgt
> ===================================================================
> RCS file: /cvs/ports/devel/gdb/patches/patch-gdb_configure_tgt,v
> diff -u -p -r1.4 patch-gdb_configure_tgt
> --- patches/patch-gdb_configure_tgt	11 Mar 2022 18:50:04 -0000	1.4
> +++ patches/patch-gdb_configure_tgt	7 Nov 2024 15:55:58 -0000
> @@ -1,8 +1,10 @@
> +Add support for aarch64, powerpc64 and riscv64.
> +
>  Index: gdb/configure.tgt
>  --- gdb/configure.tgt.orig
>  +++ gdb/configure.tgt
> -@@ -131,6 +131,13 @@ aarch64*-*-linux*)
> - 	build_gdbserver=yes
> +@@ -145,6 +145,13 @@ aarch64*-*-linux*)
> + 			symfile-mem.o linux-record.o"
>   	;;
>   
>  +aarch64*-*-openbsd*)
> @@ -15,7 +17,7 @@ Index: gdb/configure.tgt
>   alpha*-*-linux*)
>   	# Target: Little-endian Alpha running Linux
>   	gdb_target_obs="alpha-mdebug-tdep.o alpha-linux-tdep.o \
> -@@ -506,6 +513,12 @@ powerpc-*-openbsd*)
> +@@ -492,6 +499,12 @@ powerpc-*-openbsd*)
>   	gdb_target_obs="rs6000-tdep.o ppc-sysv-tdep.o ppc-obsd-tdep.o \
>   			ravenscar-thread.o ppc-ravenscar-thread.o"
>   	;;
> @@ -28,7 +30,7 @@ Index: gdb/configure.tgt
>   powerpc-*-aix* | rs6000-*-* | powerpc64-*-aix*)
>   	# Target: PowerPC running AIX
>   	gdb_target_obs="rs6000-tdep.o rs6000-aix-tdep.o xcoffread.o \
> -@@ -552,6 +565,12 @@ riscv*-*-linux*)
> +@@ -534,6 +547,12 @@ riscv*-*-linux*)
>   	# Target: Linux/RISC-V
>   	gdb_target_obs="riscv-linux-tdep.o glibc-tdep.o \
>    			linux-tdep.o solib-svr4.o symfile-mem.o linux-record.o"
> Index: patches/patch-gdb_data-directory_Makefile_in
> ===================================================================
> RCS file: /cvs/ports/devel/gdb/patches/patch-gdb_data-directory_Makefile_in,v
> diff -u -p -r1.11 patch-gdb_data-directory_Makefile_in
> --- patches/patch-gdb_data-directory_Makefile_in	11 Mar 2022 18:50:04 -0000	1.11
> +++ patches/patch-gdb_data-directory_Makefile_in	7 Nov 2024 15:55:58 -0000
> @@ -1,7 +1,7 @@
>  Index: gdb/data-directory/Makefile.in
>  --- gdb/data-directory/Makefile.in.orig
>  +++ gdb/data-directory/Makefile.in
> -@@ -198,7 +198,7 @@ stamp-syscalls: Makefile $(SYSCALLS_FILES)
> +@@ -200,7 +200,7 @@ stamp-syscalls: Makefile $(SYSCALLS_FILES)
>   	for file in $$files ; do \
>   	  f=$(SYSCALLS_SRCDIR)/$$file ; \
>   	  if test -f $$f ; then \
> @@ -10,7 +10,7 @@ Index: gdb/data-directory/Makefile.in
>   	  fi ; \
>   	done
>   	touch $@
> -@@ -240,8 +240,8 @@ stamp-python: Makefile $(PYTHON_FILES)
> +@@ -242,8 +242,8 @@ stamp-python: Makefile $(PYTHON_FILES)
>   	if test "x$$files" != x ; then \
>   	  for file in $$files ; do \
>   	    dir=`echo "$$file" | sed 's,/[^/]*$$,,'` ; \
> @@ -21,7 +21,7 @@ Index: gdb/data-directory/Makefile.in
>   	  done ; \
>   	fi
>   	touch $@
> -@@ -334,7 +334,7 @@ stamp-system-gdbinit: Makefile $(SYSTEM_GDBINIT_FILES)
> +@@ -336,7 +336,7 @@ stamp-system-gdbinit: Makefile $(SYSTEM_GDBINIT_FILES)
>   	for file in $$files ; do \
>   	  f=$(SYSTEM_GDBINIT_SRCDIR)/$$file ; \
>   	  if test -f $$f ; then \
> Index: patches/patch-gdb_doc_gdb_info-2
> ===================================================================
> RCS file: /cvs/ports/devel/gdb/patches/patch-gdb_doc_gdb_info-2,v
> diff -u -p -r1.1 patch-gdb_doc_gdb_info-2
> --- patches/patch-gdb_doc_gdb_info-2	1 Oct 2024 07:41:42 -0000	1.1
> +++ patches/patch-gdb_doc_gdb_info-2	7 Nov 2024 15:55:58 -0000
> @@ -1,7 +1,7 @@
>  Index: gdb/doc/gdb.info-2
>  --- gdb/doc/gdb.info-2.orig
>  +++ gdb/doc/gdb.info-2
> -@@ -626,7 +626,7 @@ parts of the program:
> +@@ -1156,7 +1156,7 @@ parts of the program:
>   --------------------------
>   
>   You can customize GDB to use any editor you want (1).  By default, it is
> Index: patches/patch-gdb_gdbsupport_enum-flags_h
> ===================================================================
> RCS file: patches/patch-gdb_gdbsupport_enum-flags_h
> diff -N patches/patch-gdb_gdbsupport_enum-flags_h
> --- patches/patch-gdb_gdbsupport_enum-flags_h	6 Sep 2023 21:03:04 -0000	1.1
> +++ /dev/null	1 Jan 1970 00:00:00 -0000
> @@ -1,22 +0,0 @@
> -From 12e3f3bc6ec74eb50e04675f5bcf962482d3ff25 Mon Sep 17 00:00:00 2001
> -From: Simon Marchi <simon.marchi@efficios.com>
> -Date: Thu, 23 Feb 2023 12:35:40 -0500
> -Subject: [PATCH] gdbsupport: ignore -Wenum-constexpr-conversion in
> - enum-flags.h
> -
> -Index: gdb/gdbsupport/enum-flags.h
> ---- gdb/gdbsupport/enum-flags.h.orig
> -+++ gdb/gdbsupport/enum-flags.h
> -@@ -81,9 +81,12 @@ template<> struct integer_for_size<8, 1> { typedef int
> - template<typename T>
> - struct enum_underlying_type
> - {
> -+  DIAGNOSTIC_PUSH
> -+  DIAGNOSTIC_IGNORE_ENUM_CONSTEXPR_CONVERSION
> -   typedef typename
> -     integer_for_size<sizeof (T), static_cast<bool>(T (-1) < T (0))>::type
> -     type;
> -+  DIAGNOSTIC_POP
> - };
> - 
> - template <typename E>
> Index: patches/patch-gdb_i386-bsd-nat_h
> ===================================================================
> RCS file: patches/patch-gdb_i386-bsd-nat_h
> diff -N patches/patch-gdb_i386-bsd-nat_h
> --- patches/patch-gdb_i386-bsd-nat_h	11 Mar 2022 18:50:04 -0000	1.2
> +++ /dev/null	1 Jan 1970 00:00:00 -0000
> @@ -1,14 +0,0 @@
> -Missing include.
> -
> -Index: gdb/i386-bsd-nat.h
> ---- gdb/i386-bsd-nat.h.orig
> -+++ gdb/i386-bsd-nat.h
> -@@ -20,6 +20,8 @@
> - #ifndef I386_BSD_NAT_H
> - #define I386_BSD_NAT_H
> - 
> -+#include "x86-bsd-nat.h"
> -+
> - /* Helper functions.  See definitions.  */
> - extern void i386bsd_fetch_inferior_registers (struct regcache *regcache,
> - 					      int regnum);
> Index: patches/patch-gdb_i386-obsd-nat_c
> ===================================================================
> RCS file: /cvs/ports/devel/gdb/patches/patch-gdb_i386-obsd-nat_c,v
> diff -u -p -r1.2 patch-gdb_i386-obsd-nat_c
> --- patches/patch-gdb_i386-obsd-nat_c	11 Mar 2022 18:50:04 -0000	1.2
> +++ patches/patch-gdb_i386-obsd-nat_c	7 Nov 2024 15:55:58 -0000
> @@ -3,9 +3,9 @@ Bogus variable name.
>  Index: gdb/i386-obsd-nat.c
>  --- gdb/i386-obsd-nat.c.orig
>  +++ gdb/i386-obsd-nat.c
> -@@ -93,7 +93,7 @@ static i386_bsd_nat_target<obsd_nat_target> the_i386_o
> +@@ -94,7 +94,7 @@ void _initialize_i386obsd_nat ();
>   void
> - _initialize_i386obsd_nat (void)
> + _initialize_i386obsd_nat ()
>   {
>  -  add_inf_child_target (&i386_obsd_nat_target);
>  +  add_inf_child_target (&the_i386_obsd_nat_target);
> Index: patches/patch-gdb_ppc64-obsd-tdep_c
> ===================================================================
> RCS file: /cvs/ports/devel/gdb/patches/patch-gdb_ppc64-obsd-tdep_c,v
> diff -u -p -r1.2 patch-gdb_ppc64-obsd-tdep_c
> --- patches/patch-gdb_ppc64-obsd-tdep_c	11 Mar 2022 18:50:04 -0000	1.2
> +++ patches/patch-gdb_ppc64-obsd-tdep_c	7 Nov 2024 15:55:58 -0000
> @@ -1,7 +1,7 @@
>  Index: gdb/ppc64-obsd-tdep.c
>  --- gdb/ppc64-obsd-tdep.c.orig
>  +++ gdb/ppc64-obsd-tdep.c
> -@@ -0,0 +1,411 @@
> +@@ -0,0 +1,410 @@
>  +/* Target-dependent code for OpenBSD/powerpc64.
>  +
>  +   Copyright (C) 2004, 2005, 2006 Free Software Foundation, Inc.
> @@ -230,7 +230,7 @@ Index: gdb/ppc64-obsd-tdep.c
>  +
>  +static int
>  +ppc64obsd_sigtramp_frame_sniffer (const struct frame_unwind *self,
> -+				  struct frame_info *this_frame,
> ++				  frame_info_ptr this_frame,
>  +				  void **this_cache)
>  +{
>  +  struct gdbarch *gdbarch = get_frame_arch (this_frame);
> @@ -249,8 +249,7 @@ Index: gdb/ppc64-obsd-tdep.c
>  +      gdb_byte buf[2 * PPC_INSN_SIZE];
>  +      unsigned long insn;
>  +
> -+      if (!safe_frame_unwind_memory (this_frame, start_pc + *offset,
> -+				     buf, sizeof buf))
> ++      if (!safe_frame_unwind_memory (this_frame, start_pc + *offset, buf))
>  +	continue;
>  +
>  +      /* Check for "li r0,SYS_sigreturn".  */
> @@ -271,7 +270,7 @@ Index: gdb/ppc64-obsd-tdep.c
>  +}
>  +
>  +static struct trad_frame_cache *
> -+ppc64obsd_sigtramp_frame_cache (struct frame_info *this_frame,
> ++ppc64obsd_sigtramp_frame_cache (frame_info_ptr this_frame,
>  +				void **this_cache)
>  +{
>  +  struct gdbarch *gdbarch = get_frame_arch (this_frame);
> @@ -291,7 +290,7 @@ Index: gdb/ppc64-obsd-tdep.c
>  +
>  +  func = get_frame_pc (this_frame);
>  +  func &= ~(ppc64obsd_page_size - 1);
> -+  if (!safe_frame_unwind_memory (this_frame, func, buf, sizeof buf))
> ++  if (!safe_frame_unwind_memory (this_frame, func, buf))
>  +    return cache;
>  +
>  +  /* Calculate the offset where we can find `struct sigcontext'.  We
> @@ -326,7 +325,7 @@ Index: gdb/ppc64-obsd-tdep.c
>  +}
>  +
>  +static void
> -+ppc64obsd_sigtramp_frame_this_id (struct frame_info *this_frame,
> ++ppc64obsd_sigtramp_frame_this_id (frame_info_ptr this_frame,
>  +				void **this_cache, struct frame_id *this_id)
>  +{
>  +  struct trad_frame_cache *cache =
> @@ -336,7 +335,7 @@ Index: gdb/ppc64-obsd-tdep.c
>  +}
>  +
>  +static struct value *
> -+ppc64obsd_sigtramp_frame_prev_register (struct frame_info *this_frame,
> ++ppc64obsd_sigtramp_frame_prev_register (frame_info_ptr this_frame,
>  +					void **this_cache, int regnum)
>  +{
>  +  struct trad_frame_cache *cache =
> Index: patches/patch-gdb_python_python-config_py
> ===================================================================
> RCS file: /cvs/ports/devel/gdb/patches/patch-gdb_python_python-config_py,v
> diff -u -p -r1.6 patch-gdb_python_python-config_py
> --- patches/patch-gdb_python_python-config_py	11 Mar 2022 18:50:04 -0000	1.6
> +++ patches/patch-gdb_python_python-config_py	7 Nov 2024 15:55:58 -0000
> @@ -1,12 +1,12 @@
>  Index: gdb/python/python-config.py
>  --- gdb/python/python-config.py.orig
>  +++ gdb/python/python-config.py
> -@@ -71,6 +71,8 @@ for opt in opt_flags:
> -                     libs.insert(0, '-L' + getvar('LIBPL'))
> -                 elif os.name == 'nt':
> -                     libs.insert(0, '-L' + sysconfig.PREFIX + '/libs')
> +@@ -77,6 +77,8 @@ for opt in opt_flags:
> +                     libs.insert(0, "-L" + getvar("LIBPL"))
> +                 elif os.name == "nt":
> +                     libs.insert(0, "-L" + os.path.normpath(sys.prefix) + "/libs")
>  +            if getvar('CONFIGURE_LDFLAGS') is not None:
>  +                libs.insert(0, getvar('CONFIGURE_LDFLAGS'))
> -             if getvar('LINKFORSHARED') is not None:
> -                 libs.extend(getvar('LINKFORSHARED').split())
> -         print (to_unix_path(' '.join(libs)))
> +             if getvar("LINKFORSHARED") is not None:
> +                 libs.extend(getvar("LINKFORSHARED").split())
> +         print(to_unix_path(" ".join(libs)))
> Index: patches/patch-gdb_python_python_c
> ===================================================================
> RCS file: patches/patch-gdb_python_python_c
> diff -N patches/patch-gdb_python_python_c
> --- patches/patch-gdb_python_python_c	11 Mar 2022 18:50:04 -0000	1.4
> +++ /dev/null	1 Jan 1970 00:00:00 -0000
> @@ -1,99 +0,0 @@
> -From c47bae859a5af0d95224d90000df0e529f7c5aa0 Mon Sep 17 00:00:00 2001
> -From: Kevin Buettner <kevinb@redhat.com>
> -Date: Wed, 27 May 2020 20:05:40 -0700
> -Subject: [PATCH] Fix Python3.9 related runtime problems
> -
> -Index: gdb/python/python.c
> ---- gdb/python/python.c.orig
> -+++ gdb/python/python.c
> -@@ -234,6 +234,30 @@ gdbpy_enter::~gdbpy_enter ()
> -   PyGILState_Release (m_state);
> - }
> - 
> -+/* A helper class to save and restore the GIL, but without touching
> -+   the other globals that are handled by gdbpy_enter.  */
> -+
> -+class gdbpy_gil
> -+{
> -+public:
> -+
> -+  gdbpy_gil ()
> -+    : m_state (PyGILState_Ensure ())
> -+  {
> -+  }
> -+
> -+  ~gdbpy_gil ()
> -+  {
> -+    PyGILState_Release (m_state);
> -+  }
> -+
> -+  DISABLE_COPY_AND_ASSIGN (gdbpy_gil);
> -+
> -+private:
> -+
> -+  PyGILState_STATE m_state;
> -+};
> -+
> - /* Set the quit flag.  */
> - 
> - static void
> -@@ -247,6 +271,10 @@ gdbpy_set_quit_flag (const struct extension_language_d
> - static int
> - gdbpy_check_quit_flag (const struct extension_language_defn *extlang)
> - {
> -+  if (!gdb_python_initialized)
> -+    return 0;
> -+
> -+  gdbpy_gil gil;
> -   return PyOS_InterruptOccurred ();
> - }
> - 
> -@@ -924,30 +952,6 @@ gdbpy_source_script (const struct extension_language_d
> - 
> - /* Posting and handling events.  */
> - 
> --/* A helper class to save and restore the GIL, but without touching
> --   the other globals that are handled by gdbpy_enter.  */
> --
> --class gdbpy_gil
> --{
> --public:
> --
> --  gdbpy_gil ()
> --    : m_state (PyGILState_Ensure ())
> --  {
> --  }
> --
> --  ~gdbpy_gil ()
> --  {
> --    PyGILState_Release (m_state);
> --  }
> --
> --  DISABLE_COPY_AND_ASSIGN (gdbpy_gil);
> --
> --private:
> --
> --  PyGILState_STATE m_state;
> --};
> --
> - /* A single event.  */
> - struct gdbpy_event
> - {
> -@@ -1548,6 +1552,7 @@ finalize_python (void *ignore)
> - 
> -   Py_Finalize ();
> - 
> -+  gdb_python_initialized = false;
> -   restore_active_ext_lang (previous_active);
> - }
> - 
> -@@ -1715,8 +1720,7 @@ do_start_initialization ()
> -     return false;
> - 
> -   /* Release the GIL while gdb runs.  */
> --  PyThreadState_Swap (NULL);
> --  PyEval_ReleaseLock ();
> -+  PyEval_SaveThread ();
> - 
> -   make_final_cleanup (finalize_python, NULL);
> - 
> Index: patches/patch-gdb_riscv-obsd-tdep_c
> ===================================================================
> RCS file: /cvs/ports/devel/gdb/patches/patch-gdb_riscv-obsd-tdep_c,v
> diff -u -p -r1.2 patch-gdb_riscv-obsd-tdep_c
> --- patches/patch-gdb_riscv-obsd-tdep_c	11 Mar 2022 18:50:04 -0000	1.2
> +++ patches/patch-gdb_riscv-obsd-tdep_c	7 Nov 2024 15:55:58 -0000
> @@ -1,7 +1,7 @@
>  Index: gdb/riscv-obsd-tdep.c
>  --- gdb/riscv-obsd-tdep.c.orig
>  +++ gdb/riscv-obsd-tdep.c
> -@@ -0,0 +1,235 @@
> +@@ -0,0 +1,219 @@
>  +/* Target-dependent code for OpenBSD on RISC-V processors.
>  +   Copyright (C) 2018-2021 Free Software Foundation, Inc.
>  +
> @@ -57,32 +57,16 @@ Index: gdb/riscv-obsd-tdep.c
>  +    { 0 }
>  +  };
>  +
> -+/* Supply the general-purpose registers stored in GREGS to REGCACHE.
> -+   This function only exists to supply the always-zero x0 in addition
> -+   to the registers in GREGS.  */
> -+
> -+static void
> -+riscv_obsd_supply_gregset (const struct regset *regset,
> -+			   struct regcache *regcache, int regnum,
> -+			   const void *gregs, size_t len)
> -+{
> -+  regcache->supply_regset (&riscv_obsd_gregset, regnum, gregs, len);
> -+  if (regnum == -1 || regnum == RISCV_ZERO_REGNUM)
> -+    regcache->raw_supply_zeroed (RISCV_ZERO_REGNUM);
> -+}
> -+
>  +/* Register set definitions.  */
>  +
>  +const struct regset riscv_obsd_gregset =
>  +  {
> -+    riscv_obsd_gregmap,
> -+    riscv_obsd_supply_gregset, regcache_collect_regset
> ++    riscv_obsd_gregmap, riscv_supply_regset, regcache_collect_regset
>  +  };
>  +
>  +const struct regset riscv_obsd_fpregset =
>  +  {
> -+    riscv_obsd_fpregmap,
> -+    regcache_supply_regset, regcache_collect_regset
> ++    riscv_obsd_fpregmap, riscv_supply_regset, regcache_collect_regset
>  +  };
>  +
>  +/* Implement the "iterate_over_regset_sections" gdbarch method.  */
> @@ -128,7 +112,7 @@ Index: gdb/riscv-obsd-tdep.c
>  +
>  +static void
>  +riscv_obsd_sigframe_init (const struct tramp_frame *self,
> -+			  struct frame_info *this_frame,
> ++			  frame_info_ptr this_frame,
>  +			  struct trad_frame_cache *this_cache,
>  +			  CORE_ADDR func)
>  +{
> Index: patches/patch-gdb_x86-bsd-nat_h
> ===================================================================
> RCS file: patches/patch-gdb_x86-bsd-nat_h
> diff -N patches/patch-gdb_x86-bsd-nat_h
> --- patches/patch-gdb_x86-bsd-nat_h	11 Mar 2022 18:50:04 -0000	1.2
> +++ /dev/null	1 Jan 1970 00:00:00 -0000
> @@ -1,32 +0,0 @@
> -Don't compile x86 debug register support on OpenBSD.
> -Upstream commit 757e686afb4ac97bcf9333b10a6a0880bdd310f8
> -
> -Index: gdb/x86-bsd-nat.h
> ---- gdb/x86-bsd-nat.h.orig
> -+++ gdb/x86-bsd-nat.h
> -@@ -27,18 +27,23 @@ extern size_t x86bsd_xsave_len;
> - 
> - /* A prototype *BSD/x86 target.  */
> - 
> -+#ifdef HAVE_PT_GETDBREGS
> - template<typename BaseTarget>
> - class x86bsd_nat_target : public x86_nat_target<BaseTarget>
> - {
> -   using base_class = x86_nat_target<BaseTarget>;
> - public:
> --#ifdef HAVE_PT_GETDBREGS
> -   void mourn_inferior () override
> -   {
> -     x86_cleanup_dregs ();
> -     base_class::mourn_inferior ();
> -   }
> --#endif /* HAVE_PT_GETDBREGS */
> - };
> -+#else /* !HAVE_PT_GETDBREGS */
> -+template<typename BaseTarget>
> -+class x86bsd_nat_target : public BaseTarget
> -+{
> -+};
> -+#endif /* HAVE_PT_GETDBREGS */
> - 
> - #endif /* x86-bsd-nat.h */
> Index: patches/patch-include_diagnostics_h
> ===================================================================
> RCS file: /cvs/ports/devel/gdb/patches/patch-include_diagnostics_h,v
> diff -u -p -r1.1 patch-include_diagnostics_h
> --- patches/patch-include_diagnostics_h	6 Sep 2023 21:03:04 -0000	1.1
> +++ patches/patch-include_diagnostics_h	7 Nov 2024 15:55:58 -0000
> @@ -7,9 +7,9 @@ Subject: [PATCH] gdbsupport: ignore -Wen
>  Index: include/diagnostics.h
>  --- include/diagnostics.h.orig
>  +++ include/diagnostics.h
> -@@ -63,6 +63,11 @@
> - # define DIAGNOSTIC_IGNORE_FORMAT_NONLITERAL \
> -   DIAGNOSTIC_IGNORE ("-Wformat-nonliteral")
> +@@ -81,6 +81,11 @@
> +    DIAGNOSTIC_IGNORE ("-Wenum-constexpr-conversion")
> + # endif
>   
>  +# if __has_warning ("-Wenum-constexpr-conversion")
>  +#  define DIAGNOSTIC_IGNORE_ENUM_CONSTEXPR_CONVERSION \
> @@ -18,8 +18,8 @@ Index: include/diagnostics.h
>  +
>   #elif defined (__GNUC__) /* GCC */
>   
> - # define DIAGNOSTIC_IGNORE_UNUSED_FUNCTION \
> -@@ -102,6 +107,10 @@
> + # define DIAGNOSTIC_IGNORE_DEPRECATED_DECLARATIONS \
> +@@ -146,6 +151,10 @@
>   
>   #ifndef DIAGNOSTIC_IGNORE_FORMAT_NONLITERAL
>   # define DIAGNOSTIC_IGNORE_FORMAT_NONLITERAL
> @@ -29,4 +29,4 @@ Index: include/diagnostics.h
>  +# define DIAGNOSTIC_IGNORE_ENUM_CONSTEXPR_CONVERSION
>   #endif
>   
> - #endif /* DIAGNOSTICS_H */
> + #ifndef DIAGNOSTIC_IGNORE_USER_DEFINED_WARNINGS
> Index: patches/patch-include_elf_common_h
> ===================================================================
> RCS file: /cvs/ports/devel/gdb/patches/patch-include_elf_common_h,v
> diff -u -p -r1.1 patch-include_elf_common_h
> --- patches/patch-include_elf_common_h	10 Jun 2023 19:19:12 -0000	1.1
> +++ patches/patch-include_elf_common_h	7 Nov 2024 15:55:58 -0000
> @@ -1,11 +1,11 @@
>  Index: include/elf/common.h
>  --- include/elf/common.h.orig
>  +++ include/elf/common.h
> -@@ -698,6 +698,7 @@
> +@@ -763,6 +763,7 @@
>   #define NT_OPENBSD_FPREGS	21
>   #define NT_OPENBSD_XFPREGS	22
>   #define NT_OPENBSD_WCOOKIE	23
>  +#define NT_OPENBSD_PACMASK	24
>   
>   
> - /* Note segments for core files on SPU systems.  Note name
> + /* Note segments for core files on Solaris systems.  Note name
> Index: patches/patch-include_filenames_h
> ===================================================================
> RCS file: /cvs/ports/devel/gdb/patches/patch-include_filenames_h,v
> diff -u -p -r1.3 patch-include_filenames_h
> --- patches/patch-include_filenames_h	11 Mar 2022 18:50:04 -0000	1.3
> +++ patches/patch-include_filenames_h	7 Nov 2024 15:55:58 -0000
> @@ -6,7 +6,7 @@ Fixes linking against libbfd with our sy
>  Index: include/filenames.h
>  --- include/filenames.h.orig
>  +++ include/filenames.h
> -@@ -80,11 +80,10 @@ extern "C" {
> +@@ -81,11 +81,10 @@ extern "C" {
>     (IS_DIR_SEPARATOR_1 (dos_based, (f)[0])		 \
>      || HAS_DRIVE_SPEC_1 (dos_based, f))
>   
> Index: patches/patch-libiberty_Makefile_in
> ===================================================================
> RCS file: /cvs/ports/devel/gdb/patches/patch-libiberty_Makefile_in,v
> diff -u -p -r1.9 patch-libiberty_Makefile_in
> --- patches/patch-libiberty_Makefile_in	11 Mar 2022 18:50:04 -0000	1.9
> +++ patches/patch-libiberty_Makefile_in	7 Nov 2024 15:55:58 -0000
> @@ -1,7 +1,7 @@
>  Index: libiberty/Makefile.in
>  --- libiberty/Makefile.in.orig
>  +++ libiberty/Makefile.in
> -@@ -355,7 +355,7 @@ libiberty.html : $(srcdir)/libiberty.texi $(TEXISRC)
> +@@ -376,7 +376,7 @@ libiberty.html : $(srcdir)/libiberty.texi $(TEXISRC)
>   @MAINT@	echo stamp > stamp-functions
>   
>   INSTALL_DEST = @INSTALL_DEST@
> Index: pkg/PLIST
> ===================================================================
> RCS file: /cvs/ports/devel/gdb/pkg/PLIST,v
> diff -u -p -r1.25 PLIST
> --- pkg/PLIST	28 May 2024 16:48:39 -0000	1.25
> +++ pkg/PLIST	7 Nov 2024 15:55:58 -0000
> @@ -2,7 +2,6 @@
>  bin/egdb-add-index
>  include/ansidecl.h
>  include/bfd.h
> -include/bfd_stdint.h
>  include/bfdlink.h
>  include/ctf-api.h
>  include/ctf.h
> @@ -11,10 +10,14 @@ include/dis-asm.h
>  include/gdb/
>  include/gdb/jit-reader.h
>  include/plugin-api.h
> +include/sframe-api.h
> +include/sframe.h
>  include/symcat.h
>  @info info/annotate.info
>  @info info/bfd.info
> +@info info/ctf-spec.info
>  @info info/gdb.info
> +@comment @info info/sframe-spec.info
>  @info info/stabs.info
>  @comment lib/charset.alias
>  @static-lib lib/libbfd.a
> @@ -25,6 +28,8 @@ lib/libctf-nobfd.la
>  lib/libctf.la
>  @static-lib lib/libopcodes.a
>  lib/libopcodes.la
> +@static-lib lib/libsframe.a
> +lib/libsframe.la
>  @man man/man1/egdb-add-index.1
>  @man man/man1/egdb.1
>  @man man/man1/egdbserver.1
> @@ -79,6 +84,7 @@ share/gdb/python/gdb/command/prompt.py
>  share/gdb/python/gdb/command/type_printers.py
>  share/gdb/python/gdb/command/unwinders.py
>  share/gdb/python/gdb/command/xmethods.py
> +share/gdb/python/gdb/disassembler.py
>  share/gdb/python/gdb/frames.py
>  share/gdb/python/gdb/function/
>  share/gdb/python/gdb/function/__init__.py
> @@ -104,6 +110,7 @@ share/gdb/python/gdb/printer/${MODPY_PYC
>  share/gdb/python/gdb/printer/bound_registers.py
>  share/gdb/python/gdb/printing.py
>  share/gdb/python/gdb/prompt.py
> +share/gdb/python/gdb/styling.py
>  share/gdb/python/gdb/types.py
>  share/gdb/python/gdb/unwinder.py
>  share/gdb/python/gdb/xmethod.py
> @@ -117,6 +124,7 @@ share/gdb/syscalls/i386-linux.xml
>  share/gdb/syscalls/mips-n32-linux.xml
>  share/gdb/syscalls/mips-n64-linux.xml
>  share/gdb/syscalls/mips-o32-linux.xml
> +share/gdb/syscalls/netbsd.xml
>  share/gdb/syscalls/ppc-linux.xml
>  share/gdb/syscalls/ppc64-linux.xml
>  share/gdb/syscalls/s390-linux.xml
> 
> 
> -- 
> jca
>