pkgsrc-WIP-changes archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

gdb-netbsd: Remove gdb-netbsd



Module Name:	pkgsrc-wip
Committed By:	Kamil Rytarowski <n54%gmx.com@localhost>
Pushed By:	kamil
Date:		Thu Sep 10 15:46:33 2020 +0200
Changeset:	572f77a699509fa271488e25c14fd16f476708d2

Modified Files:
	Makefile
Removed Files:
	gdb-netbsd/DESCR
	gdb-netbsd/Makefile
	gdb-netbsd/PLIST.Linux
	gdb-netbsd/PLIST.common
	gdb-netbsd/distinfo
	gdb-netbsd/options.mk
	gdb-netbsd/patches/patch-gdb_ChangeLog
	gdb-netbsd/patches/patch-gdb_configure.nat
	gdb-netbsd/patches/patch-gdb_nat_fork-inferior.c
	gdb-netbsd/patches/patch-gdb_nat_netbsd-nat.c
	gdb-netbsd/patches/patch-gdb_nat_netbsd-nat.h
	gdb-netbsd/patches/patch-gdb_nbsd-nat.c
	gdb-netbsd/patches/patch-gdbserver_ChangeLog
	gdb-netbsd/patches/patch-gdbserver_Makefile.in
	gdb-netbsd/patches/patch-gdbserver_configure.srv
	gdb-netbsd/patches/patch-gdbserver_netbsd-amd64-low.cc
	gdb-netbsd/patches/patch-gdbserver_netbsd-low.cc
	gdb-netbsd/patches/patch-gdbserver_netbsd-low.h
	gdb-netbsd/patches/patch-gdbsupport_ChangeLog
	gdb-netbsd/patches/patch-gdbsupport_eintr.h

Log Message:
gdb-netbsd: Remove gdb-netbsd

All local patches merged upstream.

To see a diff of this commit:
https://wip.pkgsrc.org/cgi-bin/gitweb.cgi?p=pkgsrc-wip.git;a=commitdiff;h=572f77a699509fa271488e25c14fd16f476708d2

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

diffstat:
 Makefile                                           |    1 -
 gdb-netbsd/DESCR                                   |   17 -
 gdb-netbsd/Makefile                                |  100 --
 gdb-netbsd/PLIST.Linux                             |    4 -
 gdb-netbsd/PLIST.common                            |   52 -
 gdb-netbsd/distinfo                                |   20 -
 gdb-netbsd/options.mk                              |   13 -
 gdb-netbsd/patches/patch-gdb_ChangeLog             |   61 -
 gdb-netbsd/patches/patch-gdb_configure.nat         |   13 -
 gdb-netbsd/patches/patch-gdb_nat_fork-inferior.c   |   16 -
 gdb-netbsd/patches/patch-gdb_nat_netbsd-nat.c      |  218 ----
 gdb-netbsd/patches/patch-gdb_nat_netbsd-nat.h      |   77 --
 gdb-netbsd/patches/patch-gdb_nbsd-nat.c            |  236 ----
 gdb-netbsd/patches/patch-gdbserver_ChangeLog       |   17 -
 gdb-netbsd/patches/patch-gdbserver_Makefile.in     |   14 -
 gdb-netbsd/patches/patch-gdbserver_configure.srv   |   17 -
 .../patches/patch-gdbserver_netbsd-amd64-low.cc    |  192 ---
 gdb-netbsd/patches/patch-gdbserver_netbsd-low.cc   | 1332 --------------------
 gdb-netbsd/patches/patch-gdbserver_netbsd-low.h    |  159 ---
 gdb-netbsd/patches/patch-gdbsupport_ChangeLog      |   12 -
 gdb-netbsd/patches/patch-gdbsupport_eintr.h        |   72 --
 21 files changed, 2643 deletions(-)

diffs:
diff --git a/Makefile b/Makefile
index 74fcb450ef..33ac26b849 100644
--- a/Makefile
+++ b/Makefile
@@ -1071,7 +1071,6 @@ SUBDIR+=	gdal-docs
 SUBDIR+=	gdal-grass
 SUBDIR+=	gdb
 SUBDIR+=	gdb-git
-SUBDIR+=	gdb-netbsd
 SUBDIR+=	gdb5
 SUBDIR+=	gdb6
 SUBDIR+=	gde
diff --git a/gdb-netbsd/DESCR b/gdb-netbsd/DESCR
deleted file mode 100644
index c7c2207693..0000000000
--- a/gdb-netbsd/DESCR
+++ /dev/null
@@ -1,17 +0,0 @@
-   The purpose of a debugger such as GDB is to allow you to see what
-is going on "inside" another program while it executes--or what
-another program was doing at the moment it crashed.
-
-   GDB can do four main kinds of things (plus other things in support
-of these) to help you catch bugs in the act:
-
-   * Start your program, specifying anything that might affect its
-     behavior.
-
-   * Make your program stop on specified conditions.
-
-   * Examine what has happened, when your program has stopped.
-
-   * Change things in your program, so you can experiment with
-     correcting the effects of one bug and go on to learn about
-     another.
diff --git a/gdb-netbsd/Makefile b/gdb-netbsd/Makefile
deleted file mode 100644
index ba14b8f077..0000000000
--- a/gdb-netbsd/Makefile
+++ /dev/null
@@ -1,100 +0,0 @@
-# $NetBSD: Makefile,v 1.62 2019/04/25 07:32:45 maya Exp $
-
-DISTNAME=	gdb-8.2.1
-CATEGORIES=	devel
-
-MASTER_SITES=		${MASTER_SITE_GITHUB:=bminor/}
-GITHUB_PROJECT=		binutils-gdb
-GITHUB_TAG=		c5cd900e4f197870812c2d3e2c194871c171ef42
-
-HOMEPAGE=	https://www.gnu.org/software/gdb/gdb.html
-COMMENT=	Symbolic debugger for multiple language frontends
-LICENSE=	gnu-gpl-v3
-
-USE_LANGUAGES=		c c++11
-
-BROKEN_GETTEXT_DETECTION=	yes
-GNU_CONFIGURE=			YES
-USE_PKGLOCALEDIR=		YES
-USE_LIBTOOL=			YES
-USE_TOOLS+=			gmake msgfmt makeinfo perl:build
-REPLACE_LOCALEDIR_PATTERNS+=	Make-in
-INSTALL_TARGET=			install install-info
-TEST_TARGET=			check
-INFO_FILES=			yes
-CONFIGURE_ENV+=			CONFIG_LDFLAGS=${LDFLAGS:M*:Q}
-
-# In gdb/configure, depcomp is parsed with sed.
-SUBST_CLASSES+=			fix-depcomp
-SUBST_STAGE.fix-depcomp+=	pre-configure
-SUBST_MESSAGE.fix-depcomp+=	Read depcomp directly
-SUBST_FILES.fix-depcomp+=	gdb/configure
-SUBST_SED.fix-depcomp+=		-e 's,< ./depcomp,${_OVERRIDE_PATH.depcomp},'
-
-CONFIGURE_ARGS+=	--disable-binutils
-CONFIGURE_ARGS+=	--disable-gprof
-CONFIGURE_ARGS+=	--disable-gold
-CONFIGURE_ARGS+=	--disable-gas
-CONFIGURE_ARGS+=	--disable-ld
-
-CONFIGURE_ARGS+=	--enable-targets=all
-
-AUTO_MKDIRS=		yes
-
-.include "options.mk"
-
-.include "../../mk/bsd.prefs.mk"
-
-PLIST_VARS+=	gcore
-.if (${OPSYS} == "SunOS" || ${OPSYS} == "NetBSD" \
-    || ${OPSYS} == "Linux" || ${OPSYS} == "FreeBSD")
-PLIST.gcore=	yes
-.endif
-
-.if ${OPSYS} == "SunOS"
-# Work around a bug in gdb's configure
-CONFIGURE_ENV+=		ac_cv_header_curses_h=yes
-.elif ${OPSYS} == "NetBSD"
-.include "../../mk/curses.buildlink3.mk"
-CONFIGURE_ARGS+= -with-curses
-CONFIGURE_ENV+= gdb_cv_var_elf=yes
-MAKE_ENV+= gdb_cv_var_elf=yes
-CONFIGURE_ENV+= gdb_cv_struct_lwp=yes
-MAKE_ENV+= gdb_cv_struct_lwp=yes
-
-CONFIGURE_ARGS+=	--with-separate-debug-dir=/usr/libdata/debug
-.elif ${OPSYS} == "DragonFly"
-TARGET_STR=		${MACHINE_ARCH}--dragonfly
-BUILD_DEFS+=		${TARGET_STR}
-## Remove "-pc" string, without this, getting following message:
-##	   *** Gdb does not support native target i386-pc-dragonfly"
-CONFIGURE_ARGS+=	--target=${TARGET_STR}
-TEST_ENV=		DEJAGNU=${WRKDIR}/../files/dragonfly-default.exp
-.endif
-
-post-install:
-	${RM} -f ${DESTDIR}/${PREFIX}/lib/charset.alias
-.if ${OPSYS} == "DragonFly"
-# Following are installed by binutils
-#. for f in ansidecl.h bfdlink.h dis-asm.h symcat.h
-#	(cd ${WRKSRC}/include; ${INSTALL_DATA} ${f}  ${DESTDIR}${PREFIX}/include)
-#. endfor
-	(cd ${DESTDIR}${PREFIX}/bin;               ${LN} ${TARGET_STR}-gdb gdb)
-	(cd ${DESTDIR}${PREFIX}/${PKGMANDIR}/man1; ${LN} ${TARGET_STR}-gdb.1 gdb.1)
-.endif
-#
-# PATH of libiberty.a differs between clang and gcc: (and conflicts to other toolchain)
-# Rename to avoid conflict to native and other toolchain
-# and clang differs its path so, (the same as avr-binutils).
-
-	(cd ${DESTDIR}${PREFIX};				\
-	for d in ${MACHINE_ARCH}/libiberty.a libiberty.a;	\
-	  do if [ -f lib/$$d ]; then				\
-		${MV}	lib/$$d	 lib/gdb/libiberty.a;		\
-		break;						\
-	     fi;						\
-	  done;	)
-
-.include "../../mk/termcap.buildlink3.mk"
-.include "../../devel/gettext-lib/buildlink3.mk"
-.include "../../mk/bsd.pkg.mk"
diff --git a/gdb-netbsd/PLIST.Linux b/gdb-netbsd/PLIST.Linux
deleted file mode 100644
index e4fe491ac0..0000000000
--- a/gdb-netbsd/PLIST.Linux
+++ /dev/null
@@ -1,4 +0,0 @@
-@comment $NetBSD: PLIST.Linux,v 1.5 2018/01/31 20:33:11 maya Exp $
-bin/gdbserver
-lib/libinproctrace.so
-man/man1/gcore.1
diff --git a/gdb-netbsd/PLIST.common b/gdb-netbsd/PLIST.common
deleted file mode 100644
index 9e7295ea95..0000000000
--- a/gdb-netbsd/PLIST.common
+++ /dev/null
@@ -1,52 +0,0 @@
-@comment $NetBSD: PLIST.common,v 1.13 2018/01/31 20:33:11 maya Exp $
-bin/gdb
-bin/gdb-add-index
-include/gdb/jit-reader.h
-info/annotate.info
-info/gdb.info
-info/stabs.info
-man/man1/gdb.1
-man/man1/gdb-add-index.1
-man/man1/gdbserver.1
-man/man5/gdbinit.5
-share/gdb/python/gdb/FrameDecorator.py
-share/gdb/python/gdb/FrameIterator.py
-share/gdb/python/gdb/__init__.py
-share/gdb/python/gdb/command/__init__.py
-share/gdb/python/gdb/command/explore.py
-share/gdb/python/gdb/command/frame_filters.py
-share/gdb/python/gdb/command/pretty_printers.py
-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/frames.py
-share/gdb/python/gdb/function/__init__.py
-share/gdb/python/gdb/function/as_string.py
-share/gdb/python/gdb/function/caller_is.py
-share/gdb/python/gdb/function/strfns.py
-share/gdb/python/gdb/printer/__init__.py
-share/gdb/python/gdb/printer/bound_registers.py
-share/gdb/python/gdb/printing.py
-share/gdb/python/gdb/prompt.py
-share/gdb/python/gdb/types.py
-share/gdb/python/gdb/unwinder.py
-share/gdb/python/gdb/xmethod.py
-share/gdb/syscalls/aarch64-linux.xml
-share/gdb/syscalls/amd64-linux.xml
-share/gdb/syscalls/arm-linux.xml
-share/gdb/syscalls/freebsd.xml
-share/gdb/syscalls/gdb-syscalls.dtd
-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/ppc-linux.xml
-share/gdb/syscalls/ppc64-linux.xml
-share/gdb/syscalls/s390-linux.xml
-share/gdb/syscalls/s390x-linux.xml
-share/gdb/syscalls/sparc-linux.xml
-share/gdb/syscalls/sparc64-linux.xml
-share/gdb/system-gdbinit/elinos.py
-share/gdb/system-gdbinit/wrs-linux.py
-${PLIST.gcore}bin/gcore
diff --git a/gdb-netbsd/distinfo b/gdb-netbsd/distinfo
deleted file mode 100644
index b87083fc5a..0000000000
--- a/gdb-netbsd/distinfo
+++ /dev/null
@@ -1,20 +0,0 @@
-$NetBSD$
-
-SHA1 (gdb-8.2.1-c5cd900e4f197870812c2d3e2c194871c171ef42.tar.gz) = a22b30c4bd636cff1a8f5116091146c81758e15c
-RMD160 (gdb-8.2.1-c5cd900e4f197870812c2d3e2c194871c171ef42.tar.gz) = c903097d45bd580b588f9aaf73ad94e0a134f8ed
-SHA512 (gdb-8.2.1-c5cd900e4f197870812c2d3e2c194871c171ef42.tar.gz) = be929f01e55df3e98fbdbbb2f93324c0a46c28cd651d1632d05cc41bdb8d1a2a778de7c26f4303b710cb80bff8c0596aa60b4b1167c390ec225dcf73955aceea
-Size (gdb-8.2.1-c5cd900e4f197870812c2d3e2c194871c171ef42.tar.gz) = 60943579 bytes
-SHA1 (patch-gdb_ChangeLog) = 8eec8e606020f5134aac488b95647496bf98aaf3
-SHA1 (patch-gdb_configure.nat) = ffaac7f26fba75a2eacd8b2b20a25c50b8d024ed
-SHA1 (patch-gdb_nat_fork-inferior.c) = ac89754b5dd1a69b0058bedaf512272a8d8d30fe
-SHA1 (patch-gdb_nat_netbsd-nat.c) = 7e3e38976d1c7bc6a1f19e4a80df9cd58c526459
-SHA1 (patch-gdb_nat_netbsd-nat.h) = df8d545ffb2a35ca6c467b15a5893612a596d49f
-SHA1 (patch-gdb_nbsd-nat.c) = 990e2a7028526f22719a7da91d3388c62dca074d
-SHA1 (patch-gdbserver_ChangeLog) = 6328d14345bf070aea1ea1028344ad6e8e0ba68a
-SHA1 (patch-gdbserver_Makefile.in) = 4fe153030dd40b672eae2184c68070be181a9161
-SHA1 (patch-gdbserver_configure.srv) = 003db2c5e3caaf41113d1a353dccac488a1b9948
-SHA1 (patch-gdbserver_netbsd-amd64-low.cc) = 02af27124b13e9eb59eb1037d3eb650d7b6c583f
-SHA1 (patch-gdbserver_netbsd-low.cc) = 6ee33d00356e4710058a4720889666023b377f33
-SHA1 (patch-gdbserver_netbsd-low.h) = debfbeffe74c441d93dbe2335caf89858a0f1c1b
-SHA1 (patch-gdbsupport_ChangeLog) = f32a8af60f2066764deffd6edebb5473416c6a27
-SHA1 (patch-gdbsupport_eintr.h) = dc8f7e8c97c473fea1997facecab37814b2b0f88
diff --git a/gdb-netbsd/options.mk b/gdb-netbsd/options.mk
deleted file mode 100644
index 3a52d30fcb..0000000000
--- a/gdb-netbsd/options.mk
+++ /dev/null
@@ -1,13 +0,0 @@
-# $NetBSD: options.mk,v 1.6 2019/04/26 13:13:49 maya Exp $
-
-PKG_OPTIONS_VAR=	PKG_OPTIONS.gdb
-PKG_SUPPORTED_OPTIONS=	python
-PKG_SUGGESTED_OPTIONS=	python
-
-.include "../../mk/bsd.options.mk"
-
-.if !empty(PKG_OPTIONS:Mpython)
-CONFIGURE_ARGS+=	--with-python=${PYTHONBIN}
-PYTHON_VERSIONS_ACCEPTED=	 27
-.include "../../lang/python/application.mk"
-.endif
diff --git a/gdb-netbsd/patches/patch-gdb_ChangeLog b/gdb-netbsd/patches/patch-gdb_ChangeLog
deleted file mode 100644
index 2451f1f196..0000000000
--- a/gdb-netbsd/patches/patch-gdb_ChangeLog
+++ /dev/null
@@ -1,61 +0,0 @@
-$NetBSD$
-
---- gdb/ChangeLog.orig	2020-09-03 16:35:18.000000000 +0000
-+++ gdb/ChangeLog
-@@ -1,3 +1,56 @@
-+2020-09-04  Kamil Rytarowski  <n54%gmx.com@localhost>
-+
-+	* nbsd-nat.c: Include "nat/netbsd-nat.h".
-+	* (nbsd_nat_target::pid_to_exec_file)
-+	(nbsd_nat_target::thread_alive, nbsd_nat_target::thread_name)
-+	(nbsd_nat_target::post_startup_inferior)
-+	(nbsd_nat_target::post_attach, nbsd_nat_target::xfer_partial)
-+	(nbsd_add_threads): Switch local code to common gdb/nat functions.
-+	* (nbsd_pid_to_cmdline): Call sysctl from the global namespace.
-+	* (nbsd_thread_lister): Remove.
-+
-+2020-09-04  Kamil Rytarowski  <n54%gmx.com@localhost>
-+
-+	* fork-inferior.c (startup_inferior): Avoid double free.
-+
-+2020-09-04  Kamil Rytarowski  <n54%gmx.com@localhost>
-+
-+	* netbsd-nat.h (netbsd_nat::qxfer_siginfo): Add.
-+	* netbsd-nat.c (netbsd_nat::qxfer_siginfo): Likewise.
-+
-+2020-09-04  Kamil Rytarowski  <n54%gmx.com@localhost>
-+
-+	* netbsd-nat.h (netbsd_nat::enable_proc_events): Add.
-+	* netbsd-nat.c: Include <sys/ptrace.h>.
-+	* (netbsd_nat::enable_proc_events): Add.
-+
-+2020-09-04  Kamil Rytarowski  <n54%gmx.com@localhost>
-+
-+	* netbsd-nat.h: Include "gdbsupport/function-view.h".
-+	* (netbsd_nat::thread_alive, netbsd_nat::thread_name)
-+	(netbsd_nat::for_each_thread): Add.
-+	* netbsd-nat.c: Include "gdbsupport/common-defs.h" and
-+	"gdbsupport/common-debug.h".
-+	* (netbsd_nat::netbsd_thread_lister)
-+	(netbsd_nat::thread_alive, netbsd_nat::thread_name)
-+	(netbsd_nat::for_each_thread): Add.
-+
-+2020-09-04  Kamil Rytarowski  <n54%gmx.com@localhost>
-+
-+	* netbsd-nat.h: Include <unistd.h>.
-+	* (netbsd_nat::pid_to_exec_file): Add.
-+	* netbsd-nat.c: Include <sys/types.h> and <sys/sysctl.h>.
-+	* (netbsd_nat::pid_to_exec_file) Add.
-+
-+2020-09-04  Kamil Rytarowski  <n54%gmx.com@localhost>
-+
-+	* configure.nat (NATDEPFILES): Add nat/netbsd-nat.o when needed.
-+
-+2020-09-04  Kamil Rytarowski  <n54%gmx.com@localhost>
-+
-+	* netbsd-nat.h: New file.
-+	* netbsd-nat.c: Likewise.
-+
- 2020-09-03  Alok Kumar Sharma  <AlokKumar.Sharma%amd.com@localhost>
- 
- 	* gdb/i386-tdep.c (i386_floatformat_for_type): Added conditions
diff --git a/gdb-netbsd/patches/patch-gdb_configure.nat b/gdb-netbsd/patches/patch-gdb_configure.nat
deleted file mode 100644
index a870cca0f9..0000000000
--- a/gdb-netbsd/patches/patch-gdb_configure.nat
+++ /dev/null
@@ -1,13 +0,0 @@
-$NetBSD$
-
---- gdb/configure.nat.orig	2020-09-03 16:35:18.000000000 +0000
-+++ gdb/configure.nat
-@@ -68,7 +68,7 @@ case ${gdb_host} in
- 	LOADLIBES='-lkvm'
- 	;;
-     nbsd*)
--	NATDEPFILES='fork-child.o nat/fork-inferior.o inf-ptrace.o'
-+	NATDEPFILES='fork-child.o nat/fork-inferior.o nat/netbsd-nat.o inf-ptrace.o'
- 	HAVE_NATIVE_GCORE_HOST=1
- 	;;
-     obsd*)
diff --git a/gdb-netbsd/patches/patch-gdb_nat_fork-inferior.c b/gdb-netbsd/patches/patch-gdb_nat_fork-inferior.c
deleted file mode 100644
index 7dc991a8c1..0000000000
--- a/gdb-netbsd/patches/patch-gdb_nat_fork-inferior.c
+++ /dev/null
@@ -1,16 +0,0 @@
-$NetBSD$
-
---- gdb/nat/fork-inferior.c.orig	2020-09-03 16:35:18.000000000 +0000
-+++ gdb/nat/fork-inferior.c
-@@ -526,7 +526,10 @@ startup_inferior (process_stratum_target
- 
- 	  case TARGET_WAITKIND_EXECD:
- 	    /* Handle EXEC signals as if they were SIGTRAP signals.  */
--	    xfree (ws.value.execd_pathname);
-+	    /* Free the exec'ed pathname, but only if this isn't the
-+	       waitstatus we are returning to the caller.  */
-+	    if (pending_execs != 1)
-+	      xfree (ws.value.execd_pathname);
- 	    resume_signal = GDB_SIGNAL_TRAP;
- 	    switch_to_thread (proc_target, event_ptid);
- 	    break;
diff --git a/gdb-netbsd/patches/patch-gdb_nat_netbsd-nat.c b/gdb-netbsd/patches/patch-gdb_nat_netbsd-nat.c
deleted file mode 100644
index 27bde0fe26..0000000000
--- a/gdb-netbsd/patches/patch-gdb_nat_netbsd-nat.c
+++ /dev/null
@@ -1,218 +0,0 @@
-$NetBSD$
-
---- gdb/nat/netbsd-nat.c.orig	2020-09-08 13:10:45.226850952 +0000
-+++ gdb/nat/netbsd-nat.c
-@@ -0,0 +1,213 @@
-+/* Internal interfaces for the NetBSD code.
-+
-+   Copyright (C) 2006-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 "gdbsupport/common-defs.h"
-+#include "nat/netbsd-nat.h"
-+#include "gdbsupport/common-debug.h"
-+
-+#include <sys/types.h>
-+#include <sys/ptrace.h>
-+#include <sys/sysctl.h>
-+
-+#include <cstring>
-+
-+#include "gdbsupport/function-view.h"
-+
-+namespace netbsd_nat
-+{
-+
-+/* See netbsd-nat.h.  */
-+
-+const char *
-+pid_to_exec_file (pid_t pid)
-+{
-+  static char buf[PATH_MAX];
-+  int mib[4] = {CTL_KERN, KERN_PROC_ARGS, pid, KERN_PROC_PATHNAME};
-+  size_t buflen = sizeof (buf);
-+  if (::sysctl (mib, ARRAY_SIZE (mib), buf, &buflen, NULL, 0) != 0)
-+    return NULL;
-+  return buf;
-+}
-+
-+/* Generic thread (LWP) lister within a specified PID.  The CALLBACK
-+   parameters is a C++ function that is called for each detected thread.
-+   When the CALLBACK function returns true, the iteration is interrupted.
-+
-+   This function assumes internally that the queried process is stopped
-+   and the number of threads does not change between two sysctl () calls.  */
-+
-+static bool
-+netbsd_thread_lister (const pid_t pid,
-+		      gdb::function_view<bool (const struct kinfo_lwp *)>
-+		      callback)
-+{
-+  int mib[5] = {CTL_KERN, KERN_LWP, pid, sizeof (struct kinfo_lwp), 0};
-+  size_t size;
-+
-+  if (sysctl (mib, ARRAY_SIZE (mib), NULL, &size, NULL, 0) == -1 || size == 0)
-+    perror_with_name (("sysctl"));
-+
-+  mib[4] = size / sizeof (size_t);
-+
-+  gdb::unique_xmalloc_ptr<struct kinfo_lwp[]> kl
-+    ((struct kinfo_lwp *) xcalloc (size, 1));
-+
-+  if (sysctl (mib, ARRAY_SIZE (mib), kl.get (), &size, NULL, 0) == -1
-+      || size == 0)
-+    perror_with_name (("sysctl"));
-+
-+  for (size_t i = 0; i < size / sizeof (struct kinfo_lwp); i++)
-+    {
-+      struct kinfo_lwp *l = &kl[i];
-+
-+      /* Return true if the specified thread is alive.  */
-+      auto lwp_alive
-+	= [] (struct kinfo_lwp *lwp)
-+	  {
-+	    switch (lwp->l_stat)
-+	      {
-+	      case LSSLEEP:
-+	      case LSRUN:
-+	      case LSONPROC:
-+	      case LSSTOP:
-+	      case LSSUSPENDED:
-+		return true;
-+	      default:
-+		return false;
-+	      }
-+	  };
-+
-+      /* Ignore embryonic or demised threads.  */
-+      if (!lwp_alive (l))
-+	continue;
-+
-+      if (callback (l))
-+	return true;
-+    }
-+
-+  return false;
-+}
-+
-+/* See netbsd-nat.h.  */
-+
-+bool
-+thread_alive (ptid_t ptid)
-+{
-+  pid_t pid = ptid.pid ();
-+  lwpid_t lwp = ptid.lwp ();
-+
-+  auto fn
-+    = [=] (const struct kinfo_lwp *kl)
-+      {
-+        return kl->l_lid == lwp;
-+      };
-+
-+  return netbsd_thread_lister (pid, fn);
-+}
-+
-+/* See netbsd-nat.h.  */
-+
-+const char *
-+thread_name (ptid_t ptid)
-+{
-+  pid_t pid = ptid.pid ();
-+  lwpid_t lwp = ptid.lwp ();
-+
-+  static char buf[KI_LNAMELEN] = {};
-+
-+  auto fn
-+    = [=] (const struct kinfo_lwp *kl)
-+      {
-+	if (kl->l_lid == lwp)
-+	  {
-+	    xsnprintf (buf, sizeof buf, "%s", kl->l_name);
-+	    return true;
-+	  }
-+	return false;
-+      };
-+
-+  if (netbsd_thread_lister (pid, fn))
-+    return buf;
-+  else
-+    return NULL;
-+}
-+
-+/* See netbsd-nat.h.  */
-+
-+void
-+for_each_thread (pid_t pid, gdb::function_view<void (ptid_t)> callback)
-+{
-+  auto fn
-+    = [=, &callback] (const struct kinfo_lwp *kl)
-+      {
-+	ptid_t ptid = ptid_t (pid, kl->l_lid, 0);
-+	callback (ptid);
-+	return false;
-+      };
-+
-+  netbsd_thread_lister (pid, fn);
-+}
-+
-+/* See netbsd-nat.h.  */
-+
-+void
-+enable_proc_events (pid_t pid)
-+{
-+  int events;
-+
-+  if (ptrace (PT_GET_EVENT_MASK, pid, &events, sizeof (events)) == -1)
-+    perror_with_name (("ptrace"));
-+
-+  events |= PTRACE_LWP_CREATE;
-+  events |= PTRACE_LWP_EXIT;
-+
-+  if (ptrace (PT_SET_EVENT_MASK, pid, &events, sizeof (events)) == -1)
-+    perror_with_name (("ptrace"));
-+}
-+
-+/* See netbsd-nat.h.  */
-+
-+int
-+qxfer_siginfo (pid_t pid, const char *annex, unsigned char *readbuf,
-+	       unsigned const char *writebuf, CORE_ADDR offset, int len)
-+{
-+  ptrace_siginfo_t psi;
-+
-+  if (offset > sizeof (siginfo_t))
-+    return -1;
-+
-+  if (ptrace (PT_GET_SIGINFO, pid, &psi, sizeof (psi)) == -1)
-+    return -1;
-+
-+  if (offset + len > sizeof (siginfo_t))
-+    len = sizeof (siginfo_t) - offset;
-+
-+  if (readbuf != NULL)
-+    memcpy (readbuf, ((gdb_byte *) &psi.psi_siginfo) + offset, len);
-+  else
-+    {
-+      memcpy (((gdb_byte *) &psi.psi_siginfo) + offset, writebuf, len);
-+
-+      if (ptrace (PT_SET_SIGINFO, pid, &psi, sizeof (psi)) == -1)
-+	return -1;
-+    }
-+  return len;
-+}
-+
-+}
diff --git a/gdb-netbsd/patches/patch-gdb_nat_netbsd-nat.h b/gdb-netbsd/patches/patch-gdb_nat_netbsd-nat.h
deleted file mode 100644
index c1218ab119..0000000000
--- a/gdb-netbsd/patches/patch-gdb_nat_netbsd-nat.h
+++ /dev/null
@@ -1,77 +0,0 @@
-$NetBSD$
-
---- gdb/nat/netbsd-nat.h.orig	2020-09-08 13:10:45.226975075 +0000
-+++ gdb/nat/netbsd-nat.h
-@@ -0,0 +1,72 @@
-+/* Internal interfaces for the NetBSD code.
-+
-+   Copyright (C) 2006-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/>.  */
-+
-+#ifndef NAT_NETBSD_NAT_H
-+#define NAT_NETBSD_NAT_H
-+
-+#include "gdbsupport/function-view.h"
-+
-+#include <unistd.h>
-+
-+namespace netbsd_nat
-+{
-+
-+/* Return the executable file name of a process specified by PID.  Returns the
-+   string in a static buffer.  */
-+
-+extern const char *pid_to_exec_file (pid_t pid);
-+
-+/* Return true if PTID is still active in the inferior.  */
-+
-+extern bool thread_alive (ptid_t ptid);
-+
-+/* Return the name assigned to a thread by an application.  Returns
-+   the string in a static buffer.
-+
-+   This function assumes internally that the queried process is stopped.  */
-+
-+extern const char *thread_name (ptid_t ptid);
-+
-+/* A generic thread lister within a specific PID.  The CALLBACK parameter
-+   is a C++ function that is called for each detected thread.
-+
-+   This function assumes internally that the queried process is stopped.  */
-+
-+extern void for_each_thread (pid_t pid,
-+			     gdb::function_view<void (ptid_t)> callback);
-+
-+/* Enable additional event reporting in a new process specified by PID.
-+
-+   This function assumes internally that the queried process is stopped and
-+   traced.  */
-+
-+extern void enable_proc_events (pid_t pid);
-+
-+/* Implement reading and writing of inferior's siginfo_t specified by PID.
-+   Returns -1 on failure and the number of bytes on a successful transfer.
-+
-+   This function assumes internally that the queried process is stopped and
-+   traced.  */
-+
-+extern int qxfer_siginfo (pid_t pid, const char *annex, unsigned char *readbuf,
-+			  unsigned const char *writebuf, CORE_ADDR offset,
-+			  int len);
-+}
-+
-+#endif
diff --git a/gdb-netbsd/patches/patch-gdb_nbsd-nat.c b/gdb-netbsd/patches/patch-gdb_nbsd-nat.c
deleted file mode 100644
index 1ac4141a61..0000000000
--- a/gdb-netbsd/patches/patch-gdb_nbsd-nat.c
+++ /dev/null
@@ -1,236 +0,0 @@
-$NetBSD$
-
---- gdb/nbsd-nat.c.orig	2020-09-03 16:35:18.000000000 +0000
-+++ gdb/nbsd-nat.c
-@@ -20,6 +20,7 @@
- #include "defs.h"
- 
- #include "nbsd-nat.h"
-+#include "nat/netbsd-nat.h"
- #include "gdbthread.h"
- #include "nbsd-tdep.h"
- #include "inferior.h"
-@@ -36,13 +37,7 @@
- char *
- nbsd_nat_target::pid_to_exec_file (int pid)
- {
--  static char buf[PATH_MAX];
--  size_t buflen;
--  int mib[4] = {CTL_KERN, KERN_PROC_ARGS, pid, KERN_PROC_PATHNAME};
--  buflen = sizeof (buf);
--  if (sysctl (mib, ARRAY_SIZE (mib), buf, &buflen, NULL, 0))
--    return NULL;
--  return buf;
-+  return const_cast<char *> (netbsd_nat::pid_to_exec_file (pid));
- }
- 
- /* Return the current directory for the process identified by PID.  */
-@@ -80,12 +75,12 @@ nbsd_pid_to_cmdline (int pid)
-   int mib[4] = {CTL_KERN, KERN_PROC_ARGS, pid, KERN_PROC_ARGV};
- 
-   size_t size = 0;
--  if (sysctl (mib, ARRAY_SIZE (mib), NULL, &size, NULL, 0) == -1 || size == 0)
-+  if (::sysctl (mib, ARRAY_SIZE (mib), NULL, &size, NULL, 0) == -1 || size == 0)
-     return nullptr;
- 
-   gdb::unique_xmalloc_ptr<char[]> args (XNEWVAR (char, size));
- 
--  if (sysctl (mib, ARRAY_SIZE (mib), args.get (), &size, NULL, 0) == -1
-+  if (::sysctl (mib, ARRAY_SIZE (mib), args.get (), &size, NULL, 0) == -1
-       || size == 0)
-     return nullptr;
- 
-@@ -99,76 +94,12 @@ nbsd_pid_to_cmdline (int pid)
-   return args;
- }
- 
--/* Generic thread (LWP) lister within a specified process.  The callback
--   parameters is a C++ function that is called for each detected thread.  */
--
--static bool
--nbsd_thread_lister (const pid_t pid,
--		    gdb::function_view<bool (const struct kinfo_lwp *)>
--		    callback)
--{
--  int mib[5] = {CTL_KERN, KERN_LWP, pid, sizeof (struct kinfo_lwp), 0};
--  size_t size;
--
--  if (sysctl (mib, ARRAY_SIZE (mib), NULL, &size, NULL, 0) == -1 || size == 0)
--    perror_with_name (("sysctl"));
--
--  mib[4] = size / sizeof (size_t);
--
--  gdb::unique_xmalloc_ptr<struct kinfo_lwp[]> kl
--    ((struct kinfo_lwp *) xcalloc (size, 1));
--
--  if (sysctl (mib, ARRAY_SIZE (mib), kl.get (), &size, NULL, 0) == -1
--      || size == 0)
--    perror_with_name (("sysctl"));
--
--  for (size_t i = 0; i < size / sizeof (struct kinfo_lwp); i++)
--    {
--      struct kinfo_lwp *l = &kl[i];
--
--      /* Return true if the specified thread is alive.  */
--      auto lwp_alive
--	= [] (struct kinfo_lwp *lwp)
--	  {
--	    switch (lwp->l_stat)
--	      {
--	      case LSSLEEP:
--	      case LSRUN:
--	      case LSONPROC:
--	      case LSSTOP:
--	      case LSSUSPENDED:
--		return true;
--	      default:
--		return false;
--	      }
--	  };
--
--      /* Ignore embryonic or demised threads.  */
--      if (!lwp_alive (l))
--	continue;
--
--      if (callback (l))
--	return true;
--    }
--
--  return false;
--}
--
- /* Return true if PTID is still active in the inferior.  */
- 
- bool
- nbsd_nat_target::thread_alive (ptid_t ptid)
- {
--  pid_t pid = ptid.pid ();
--  int lwp = ptid.lwp ();
--
--  auto fn
--    = [&lwp] (const struct kinfo_lwp *kl)
--      {
--        return kl->l_lid == lwp;
--      };
--
--  return nbsd_thread_lister (pid, fn);
-+  return netbsd_nat::thread_alive (ptid);
- }
- 
- /* Return the name assigned to a thread by an application.  Returns
-@@ -178,26 +109,7 @@ const char *
- nbsd_nat_target::thread_name (struct thread_info *thr)
- {
-   ptid_t ptid = thr->ptid;
--  pid_t pid = ptid.pid ();
--  int lwp = ptid.lwp ();
--
--  static char buf[KI_LNAMELEN] = {};
--
--  auto fn
--    = [&lwp] (const struct kinfo_lwp *kl)
--      {
--	if (kl->l_lid == lwp)
--	  {
--	    xsnprintf (buf, sizeof buf, "%s", kl->l_name);
--	    return true;
--	  }
--	return false;
--      };
--
--  if (nbsd_thread_lister (pid, fn))
--    return buf;
--  else
--    return NULL;
-+  return netbsd_nat::thread_name (ptid);
- }
- 
- /* Implement the "post_attach" target_ops method.  */
-@@ -206,9 +118,8 @@ static void
- nbsd_add_threads (nbsd_nat_target *target, pid_t pid)
- {
-   auto fn
--    = [&target, &pid] (const struct kinfo_lwp *kl)
-+    = [&target] (ptid_t ptid)
-       {
--	ptid_t ptid = ptid_t (pid, kl->l_lid, 0);
- 	if (!in_thread_list (target, ptid))
- 	  {
- 	    if (inferior_ptid.lwp () == 0)
-@@ -216,27 +127,9 @@ nbsd_add_threads (nbsd_nat_target *targe
- 	    else
- 	      add_thread (target, ptid);
- 	  }
--	return false;
-       };
- 
--  nbsd_thread_lister (pid, fn);
--}
--
--/* Enable additional event reporting on new processes.  */
--
--static void
--nbsd_enable_proc_events (pid_t pid)
--{
--  int events;
--
--  if (ptrace (PT_GET_EVENT_MASK, pid, &events, sizeof (events)) == -1)
--    perror_with_name (("ptrace"));
--
--  events |= PTRACE_LWP_CREATE;
--  events |= PTRACE_LWP_EXIT;
--
--  if (ptrace (PT_SET_EVENT_MASK, pid, &events, sizeof (events)) == -1)
--    perror_with_name (("ptrace"));
-+  netbsd_nat::for_each_thread (pid, fn);
- }
- 
- /* Implement the "post_startup_inferior" target_ops method.  */
-@@ -244,7 +137,7 @@ nbsd_enable_proc_events (pid_t pid)
- void
- nbsd_nat_target::post_startup_inferior (ptid_t ptid)
- {
--  nbsd_enable_proc_events (ptid.pid ());
-+  netbsd_nat::enable_proc_events (ptid.pid ());
- }
- 
- /* Implement the "post_attach" target_ops method.  */
-@@ -252,7 +145,7 @@ nbsd_nat_target::post_startup_inferior (
- void
- nbsd_nat_target::post_attach (int pid)
- {
--  nbsd_enable_proc_events (pid);
-+  netbsd_nat::enable_proc_events (pid);
-   nbsd_add_threads (this, pid);
- }
- 
-@@ -861,26 +754,12 @@ nbsd_nat_target::xfer_partial (enum targ
-     {
-     case TARGET_OBJECT_SIGNAL_INFO:
-       {
--	ptrace_siginfo_t psi;
--
--	if (offset > sizeof (siginfo_t))
--	  return TARGET_XFER_E_IO;
-+	len = netbsd_nat::qxfer_siginfo(pid, annex, readbuf, writebuf, offset,
-+					len);
- 
--	if (ptrace (PT_GET_SIGINFO, pid, &psi, sizeof (psi)) == -1)
-+	if (len == -1)
- 	  return TARGET_XFER_E_IO;
- 
--	if (offset + len > sizeof (siginfo_t))
--	  len = sizeof (siginfo_t) - offset;
--
--	if (readbuf != NULL)
--	  memcpy (readbuf, ((gdb_byte *) &psi.psi_siginfo) + offset, len);
--	else
--	  {
--	    memcpy (((gdb_byte *) &psi.psi_siginfo) + offset, writebuf, len);
--
--	    if (ptrace (PT_SET_SIGINFO, pid, &psi, sizeof (psi)) == -1)
--	      return TARGET_XFER_E_IO;
--	  }
- 	*xfered_len = len;
- 	return TARGET_XFER_OK;
-       }
diff --git a/gdb-netbsd/patches/patch-gdbserver_ChangeLog b/gdb-netbsd/patches/patch-gdbserver_ChangeLog
deleted file mode 100644
index c497e7de73..0000000000
--- a/gdb-netbsd/patches/patch-gdbserver_ChangeLog
+++ /dev/null
@@ -1,17 +0,0 @@
-$NetBSD$
-
---- gdbserver/ChangeLog.orig	2020-09-03 16:35:18.000000000 +0000
-+++ gdbserver/ChangeLog
-@@ -1,3 +1,12 @@
-+2020-09-04  Kamil Rytarowski  <n54%gmx.com@localhost>
-+
-+	* netbsd-low.cc: Add.
-+	* netbsd-low.h: Likewise.
-+	* netbsd-amd64-low.cc: Likewise.
-+	* Makefile.in (SFILES): Register "netbsd-low.cc", "netbsd-low.h",
-+	"netbsd-amd64-low.cc".
-+	* configure.srv: Add x86_64-*-netbsd*.
-+
- 2020-08-13  Simon Marchi  <simon.marchi%polymtl.ca@localhost>
- 
- 	* server.cc (captured_main): Accept multiple `--selftest=`
diff --git a/gdb-netbsd/patches/patch-gdbserver_Makefile.in b/gdb-netbsd/patches/patch-gdbserver_Makefile.in
deleted file mode 100644
index eb78a8b26d..0000000000
--- a/gdb-netbsd/patches/patch-gdbserver_Makefile.in
+++ /dev/null
@@ -1,14 +0,0 @@
-$NetBSD$
-
---- gdbserver/Makefile.in.orig	2020-09-03 16:35:18.000000000 +0000
-+++ gdbserver/Makefile.in
-@@ -193,6 +193,9 @@ SFILES = \
- 	$(srcdir)/linux-x86-low.cc \
- 	$(srcdir)/linux-xtensa-low.cc \
- 	$(srcdir)/mem-break.cc \
-+	$(srcdir)/netbsd-amd64-low.cc \
-+	$(srcdir)/netbsd-low.cc \
-+	$(srcdir)/netbsd-low.h \
- 	$(srcdir)/proc-service.cc \
- 	$(srcdir)/proc-service.list \
- 	$(srcdir)/regcache.cc \
diff --git a/gdb-netbsd/patches/patch-gdbserver_configure.srv b/gdb-netbsd/patches/patch-gdbserver_configure.srv
deleted file mode 100644
index e3340ea560..0000000000
--- a/gdb-netbsd/patches/patch-gdbserver_configure.srv
+++ /dev/null
@@ -1,17 +0,0 @@
-$NetBSD$
-
---- gdbserver/configure.srv.orig	2020-09-03 16:35:18.000000000 +0000
-+++ gdbserver/configure.srv
-@@ -349,6 +349,12 @@ case "${gdbserver_host}" in
- 			srv_tgtobj="${srv_tgtobj} nat/windows-nat.o"
- 			srv_tgtobj="${srv_tgtobj} arch/amd64.o arch/i386.o"
- 			;;
-+  x86_64-*-netbsd*)	srv_regobj=""
-+			srv_tgtobj="netbsd-low.o netbsd-amd64-low.o fork-child.o"
-+			srv_tgtobj="${srv_tgtobj} nat/fork-inferior.o"
-+			srv_tgtobj="${srv_tgtobj} nat/netbsd-nat.o"
-+			srv_tgtobj="${srv_tgtobj} arch/amd64.o"
-+			;;
- 
-   xtensa*-*-linux*)	srv_regobj=reg-xtensa.o
- 			srv_tgtobj="$srv_linux_obj linux-xtensa-low.o"
diff --git a/gdb-netbsd/patches/patch-gdbserver_netbsd-amd64-low.cc b/gdb-netbsd/patches/patch-gdbserver_netbsd-amd64-low.cc
deleted file mode 100644
index 92a2fa6517..0000000000
--- a/gdb-netbsd/patches/patch-gdbserver_netbsd-amd64-low.cc
+++ /dev/null
@@ -1,192 +0,0 @@
-$NetBSD$
-
---- gdbserver/netbsd-amd64-low.cc.orig	2020-09-08 13:10:47.483752505 +0000
-+++ gdbserver/netbsd-amd64-low.cc
-@@ -0,0 +1,187 @@
-+/* Copyright (C) 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 <sys/types.h>
-+#include <sys/ptrace.h>
-+#include <limits.h>
-+
-+#include "server.h"
-+#include "netbsd-low.h"
-+#include "gdbsupport/x86-xstate.h"
-+#include "arch/amd64.h"
-+#include "x86-tdesc.h"
-+#include "tdesc.h"
-+
-+/* The index of various registers inside the regcache.  */
-+
-+enum netbsd_x86_64_gdb_regnum
-+{
-+  AMD64_RAX_REGNUM,	     /* %rax */
-+  AMD64_RBX_REGNUM,	     /* %rbx */
-+  AMD64_RCX_REGNUM,	     /* %rcx */
-+  AMD64_RDX_REGNUM,	     /* %rdx */
-+  AMD64_RSI_REGNUM,	     /* %rsi */
-+  AMD64_RDI_REGNUM,	     /* %rdi */
-+  AMD64_RBP_REGNUM,	     /* %rbp */
-+  AMD64_RSP_REGNUM,	     /* %rsp */
-+  AMD64_R8_REGNUM,	      /* %r8 */
-+  AMD64_R9_REGNUM,	      /* %r9 */
-+  AMD64_R10_REGNUM,	     /* %r10 */
-+  AMD64_R11_REGNUM,	     /* %r11 */
-+  AMD64_R12_REGNUM,	     /* %r12 */
-+  AMD64_R13_REGNUM,	     /* %r13 */
-+  AMD64_R14_REGNUM,	     /* %r14 */
-+  AMD64_R15_REGNUM,	     /* %r15 */
-+  AMD64_RIP_REGNUM,	     /* %rip */
-+  AMD64_EFLAGS_REGNUM,	  /* %eflags */
-+  AMD64_CS_REGNUM,	      /* %cs */
-+  AMD64_SS_REGNUM,	      /* %ss */
-+  AMD64_DS_REGNUM,	      /* %ds */
-+  AMD64_ES_REGNUM,	      /* %es */
-+  AMD64_FS_REGNUM,	      /* %fs */
-+  AMD64_GS_REGNUM,	      /* %gs */
-+  AMD64_ST0_REGNUM = 24,     /* %st0 */
-+  AMD64_ST1_REGNUM,	     /* %st1 */
-+  AMD64_FCTRL_REGNUM = AMD64_ST0_REGNUM + 8,
-+  AMD64_FSTAT_REGNUM = AMD64_ST0_REGNUM + 9,
-+  AMD64_FTAG_REGNUM = AMD64_ST0_REGNUM + 10,
-+  AMD64_XMM0_REGNUM = 40,   /* %xmm0 */
-+  AMD64_XMM1_REGNUM,	    /* %xmm1 */
-+  AMD64_MXCSR_REGNUM = AMD64_XMM0_REGNUM + 16,
-+  AMD64_YMM0H_REGNUM,	   /* %ymm0h */
-+  AMD64_YMM15H_REGNUM = AMD64_YMM0H_REGNUM + 15,
-+  AMD64_BND0R_REGNUM = AMD64_YMM15H_REGNUM + 1,
-+  AMD64_BND3R_REGNUM = AMD64_BND0R_REGNUM + 3,
-+  AMD64_BNDCFGU_REGNUM,
-+  AMD64_BNDSTATUS_REGNUM,
-+  AMD64_XMM16_REGNUM,
-+  AMD64_XMM31_REGNUM = AMD64_XMM16_REGNUM + 15,
-+  AMD64_YMM16H_REGNUM,
-+  AMD64_YMM31H_REGNUM = AMD64_YMM16H_REGNUM + 15,
-+  AMD64_K0_REGNUM,
-+  AMD64_K7_REGNUM = AMD64_K0_REGNUM + 7,
-+  AMD64_ZMM0H_REGNUM,
-+  AMD64_ZMM31H_REGNUM = AMD64_ZMM0H_REGNUM + 31,
-+  AMD64_PKRU_REGNUM,
-+  AMD64_FSBASE_REGNUM,
-+  AMD64_GSBASE_REGNUM
-+};
-+
-+/* The fill_function for the general-purpose register set.  */
-+
-+static void
-+netbsd_x86_64_fill_gregset (struct regcache *regcache, char *buf)
-+{
-+  struct reg *r = (struct reg *) buf;
-+
-+#define netbsd_x86_64_collect_gp(regnum, fld) do {		\
-+    collect_register (regcache, regnum, &r->regs[_REG_##fld]);	\
-+  } while (0)
-+
-+  netbsd_x86_64_collect_gp (AMD64_RAX_REGNUM, RAX);
-+  netbsd_x86_64_collect_gp (AMD64_RBX_REGNUM, RBX);
-+  netbsd_x86_64_collect_gp (AMD64_RCX_REGNUM, RCX);
-+  netbsd_x86_64_collect_gp (AMD64_RDX_REGNUM, RDX);
-+  netbsd_x86_64_collect_gp (AMD64_RSI_REGNUM, RSI);
-+  netbsd_x86_64_collect_gp (AMD64_RDI_REGNUM, RDI);
-+  netbsd_x86_64_collect_gp (AMD64_RBP_REGNUM, RBP);
-+  netbsd_x86_64_collect_gp (AMD64_RSP_REGNUM, RSP);
-+  netbsd_x86_64_collect_gp (AMD64_R8_REGNUM, R8);
-+  netbsd_x86_64_collect_gp (AMD64_R9_REGNUM, R9);
-+  netbsd_x86_64_collect_gp (AMD64_R10_REGNUM, R10);
-+  netbsd_x86_64_collect_gp (AMD64_R11_REGNUM, R11);
-+  netbsd_x86_64_collect_gp (AMD64_R12_REGNUM, R12);
-+  netbsd_x86_64_collect_gp (AMD64_R13_REGNUM, R13);
-+  netbsd_x86_64_collect_gp (AMD64_R14_REGNUM, R14);
-+  netbsd_x86_64_collect_gp (AMD64_R15_REGNUM, R15);
-+  netbsd_x86_64_collect_gp (AMD64_RIP_REGNUM, RIP);
-+  netbsd_x86_64_collect_gp (AMD64_EFLAGS_REGNUM, RFLAGS);
-+  netbsd_x86_64_collect_gp (AMD64_CS_REGNUM, CS);
-+  netbsd_x86_64_collect_gp (AMD64_SS_REGNUM, SS);
-+  netbsd_x86_64_collect_gp (AMD64_DS_REGNUM, DS);
-+  netbsd_x86_64_collect_gp (AMD64_ES_REGNUM, ES);
-+  netbsd_x86_64_collect_gp (AMD64_FS_REGNUM, FS);
-+  netbsd_x86_64_collect_gp (AMD64_GS_REGNUM, GS);
-+}
-+
-+/* The store_function for the general-purpose register set.  */
-+
-+static void
-+netbsd_x86_64_store_gregset (struct regcache *regcache, const char *buf)
-+{
-+  struct reg *r = (struct reg *) buf;
-+
-+#define netbsd_x86_64_supply_gp(regnum, fld) do {		\
-+    supply_register (regcache, regnum, &r->regs[_REG_##fld]);	\
-+  } while(0)
-+
-+  netbsd_x86_64_supply_gp (AMD64_RAX_REGNUM, RAX);
-+  netbsd_x86_64_supply_gp (AMD64_RBX_REGNUM, RBX);
-+  netbsd_x86_64_supply_gp (AMD64_RCX_REGNUM, RCX);
-+  netbsd_x86_64_supply_gp (AMD64_RDX_REGNUM, RDX);
-+  netbsd_x86_64_supply_gp (AMD64_RSI_REGNUM, RSI);
-+  netbsd_x86_64_supply_gp (AMD64_RDI_REGNUM, RDI);
-+  netbsd_x86_64_supply_gp (AMD64_RBP_REGNUM, RBP);
-+  netbsd_x86_64_supply_gp (AMD64_RSP_REGNUM, RSP);
-+  netbsd_x86_64_supply_gp (AMD64_R8_REGNUM, R8);
-+  netbsd_x86_64_supply_gp (AMD64_R9_REGNUM, R9);
-+  netbsd_x86_64_supply_gp (AMD64_R10_REGNUM, R10);
-+  netbsd_x86_64_supply_gp (AMD64_R11_REGNUM, R11);
-+  netbsd_x86_64_supply_gp (AMD64_R12_REGNUM, R12);
-+  netbsd_x86_64_supply_gp (AMD64_R13_REGNUM, R13);
-+  netbsd_x86_64_supply_gp (AMD64_R14_REGNUM, R14);
-+  netbsd_x86_64_supply_gp (AMD64_R15_REGNUM, R15);
-+  netbsd_x86_64_supply_gp (AMD64_RIP_REGNUM, RIP);
-+  netbsd_x86_64_supply_gp (AMD64_EFLAGS_REGNUM, RFLAGS);
-+  netbsd_x86_64_supply_gp (AMD64_CS_REGNUM, CS);
-+  netbsd_x86_64_supply_gp (AMD64_SS_REGNUM, SS);
-+  netbsd_x86_64_supply_gp (AMD64_DS_REGNUM, DS);
-+  netbsd_x86_64_supply_gp (AMD64_ES_REGNUM, ES);
-+  netbsd_x86_64_supply_gp (AMD64_FS_REGNUM, FS);
-+  netbsd_x86_64_supply_gp (AMD64_GS_REGNUM, GS);
-+}
-+
-+/* Implements the netbsd_target_ops.arch_setup routine.  */
-+
-+static void
-+netbsd_x86_64_arch_setup (void)
-+{
-+  struct target_desc *tdesc
-+    = amd64_create_target_description (X86_XSTATE_SSE_MASK, false, false, false);
-+
-+  init_target_desc (tdesc, amd64_expedite_regs);
-+
-+  netbsd_tdesc = tdesc;
-+}
-+
-+/* Description of all the x86-netbsd register sets.  */
-+
-+struct netbsd_regset_info netbsd_target_regsets[] =
-+{
-+ /* General Purpose Registers.  */
-+ {PT_GETREGS, PT_SETREGS, sizeof (struct reg),
-+  netbsd_x86_64_fill_gregset, netbsd_x86_64_store_gregset},
-+ /* End of list marker.  */
-+ {0, 0, -1, NULL, NULL }
-+};
-+
-+/* The netbsd_target_ops vector for x86-netbsd.  */
-+
-+struct netbsd_target_ops the_low_target =
-+{
-+ netbsd_x86_64_arch_setup,
-+};
diff --git a/gdb-netbsd/patches/patch-gdbserver_netbsd-low.cc b/gdb-netbsd/patches/patch-gdbserver_netbsd-low.cc
deleted file mode 100644
index 83faed208f..0000000000
--- a/gdb-netbsd/patches/patch-gdbserver_netbsd-low.cc
+++ /dev/null
@@ -1,1332 +0,0 @@
-$NetBSD$
-
---- gdbserver/netbsd-low.cc.orig	2020-09-08 13:10:47.484204564 +0000
-+++ gdbserver/netbsd-low.cc
-@@ -0,0 +1,1327 @@
-+/* Copyright (C) 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 "server.h"
-+#include "target.h"
-+#include "netbsd-low.h"
-+#include "nat/netbsd-nat.h"
-+
-+#include <sys/param.h>
-+#include <sys/types.h>
-+
-+#include <sys/ptrace.h>
-+#include <sys/sysctl.h>
-+
-+#include <limits.h>
-+#include <unistd.h>
-+#include <signal.h>
-+
-+#include <elf.h>
-+
-+#include <type_traits>
-+
-+#include "gdbsupport/eintr.h"
-+#include "gdbsupport/gdb_wait.h"
-+#include "gdbsupport/filestuff.h"
-+#include "gdbsupport/common-inferior.h"
-+#include "nat/fork-inferior.h"
-+#include "hostio.h"
-+
-+int using_threads = 1;
-+
-+const struct target_desc *netbsd_tdesc;
-+
-+/* Call add_process with the given parameters, and initialize
-+   the process' private data.  */
-+
-+static void
-+netbsd_add_process (int pid, int attached)
-+{
-+  struct process_info *proc = add_process (pid, attached);
-+  proc->tdesc = netbsd_tdesc;
-+  proc->priv = nullptr;
-+}
-+
-+/* Callback used by fork_inferior to start tracing the inferior.  */
-+
-+static void
-+netbsd_ptrace_fun ()
-+{
-+  /* Switch child to its own process group so that signals won't
-+     directly affect GDBserver. */
-+  if (setpgid (0, 0) < 0)
-+    trace_start_error_with_name (("setpgid"));
-+
-+  if (ptrace (PT_TRACE_ME, 0, nullptr, 0) < 0)
-+    trace_start_error_with_name (("ptrace"));
-+
-+  /* If GDBserver is connected to gdb via stdio, redirect the inferior's
-+     stdout to stderr so that inferior i/o doesn't corrupt the connection.
-+     Also, redirect stdin to /dev/null.  */
-+  if (remote_connection_is_stdio ())
-+    {
-+      if (close (0) < 0)
-+	trace_start_error_with_name (("close"));
-+      if (open ("/dev/null", O_RDONLY) < 0)
-+	trace_start_error_with_name (("open"));
-+      if (dup2 (2, 1) < 0)
-+	trace_start_error_with_name (("dup2"));
-+      if (write (2, "stdin/stdout redirected\n",
-+		 sizeof ("stdin/stdout redirected\n") - 1) < 0)
-+	{
-+	  /* Errors ignored.  */
-+	}
-+    }
-+}
-+
-+/* Implement the create_inferior method of the target_ops vector.  */
-+
-+int
-+netbsd_process_target::create_inferior (const char *program,
-+					const std::vector<char *> &program_args)
-+{
-+  std::string str_program_args = construct_inferior_arguments (program_args);
-+
-+  pid_t pid = fork_inferior (program, str_program_args.c_str (),
-+			     get_environ ()->envp (), netbsd_ptrace_fun,
-+			     nullptr, nullptr, nullptr, nullptr);
-+
-+  netbsd_add_process (pid, 0);
-+
-+  post_fork_inferior (pid, program);
-+
-+  return pid;
-+}
-+
-+/* Implement the post_create_inferior target_ops method.  */
-+
-+void
-+netbsd_process_target::post_create_inferior ()
-+{
-+  pid_t pid = current_process ()->pid;
-+  netbsd_nat::enable_proc_events (pid);
-+}
-+
-+/* Implement the attach target_ops method.  */
-+
-+int
-+netbsd_process_target::attach (unsigned long pid)
-+{
-+  /* Unimplemented.  */
-+  return -1;
-+}
-+
-+/* Returns true if GDB is interested in any child syscalls.  */
-+
-+static bool
-+gdb_catching_syscalls_p (pid_t pid)
-+{
-+  struct process_info *proc = find_process_pid (pid);
-+  return !proc->syscalls_to_catch.empty ();
-+}
-+
-+/* Implement the resume target_ops method.  */
-+
-+void
-+netbsd_process_target::resume (struct thread_resume *resume_info, size_t n)
-+{
-+  ptid_t resume_ptid = resume_info[0].thread;
-+  const int signal = resume_info[0].sig;
-+  const bool step = resume_info[0].kind == resume_step;
-+
-+  if (resume_ptid == minus_one_ptid)
-+    resume_ptid = ptid_of (current_thread);
-+
-+  const pid_t pid = resume_ptid.pid ();
-+  const lwpid_t lwp = resume_ptid.lwp ();
-+  regcache_invalidate_pid (pid);
-+
-+  auto fn
-+    = [&] (ptid_t ptid)
-+      {
-+	if (step)
-+	  {
-+	    if (ptid.lwp () == lwp || n != 1)
-+	      {
-+		if (ptrace (PT_SETSTEP, pid, NULL, ptid.lwp ()) == -1)
-+		  perror_with_name (("ptrace"));
-+		if (ptrace (PT_RESUME, pid, NULL, ptid.lwp ()) == -1)
-+		  perror_with_name (("ptrace"));
-+	      }
-+	    else
-+	      {
-+		if (ptrace (PT_CLEARSTEP, pid, NULL, ptid.lwp ()) == -1)
-+		  perror_with_name (("ptrace"));
-+		if (ptrace (PT_SUSPEND, pid, NULL, ptid.lwp ()) == -1)
-+		  perror_with_name (("ptrace"));
-+	      }
-+	  }
-+	else
-+	  {
-+	    if (ptrace (PT_CLEARSTEP, pid, NULL, ptid.lwp ()) == -1)
-+	      perror_with_name (("ptrace"));
-+	    if (ptrace (PT_RESUME, pid, NULL, ptid.lwp ()) == -1)
-+	      perror_with_name (("ptrace"));
-+	  }
-+      };
-+
-+  netbsd_nat::for_each_thread (pid, fn);
-+
-+  int request = gdb_catching_syscalls_p (pid) ? PT_CONTINUE : PT_SYSCALL;
-+
-+  errno = 0;
-+  ptrace (request, pid, (void *)1, signal);
-+  if (errno)
-+    perror_with_name (("ptrace"));
-+}
-+
-+/* Returns true if GDB is interested in the reported SYSNO syscall.  */
-+
-+static bool
-+netbsd_catch_this_syscall (int sysno)
-+{
-+  struct process_info *proc = current_process ();
-+
-+  if (proc->syscalls_to_catch.empty ())
-+    return false;
-+
-+  if (proc->syscalls_to_catch[0] == ANY_SYSCALL)
-+    return true;
-+
-+  for (int iter : proc->syscalls_to_catch)
-+    if (iter == sysno)
-+      return true;
-+
-+  return false;
-+}
-+
-+/* Helper function for child_wait and the derivatives of child_wait.
-+   HOSTSTATUS is the waitstatus from wait() or the equivalent; store our
-+   translation of that in OURSTATUS.  */
-+
-+static void
-+netbsd_store_waitstatus (struct target_waitstatus *ourstatus, int hoststatus)
-+{
-+  if (WIFEXITED (hoststatus))
-+    {
-+      ourstatus->kind = TARGET_WAITKIND_EXITED;
-+      ourstatus->value.integer = WEXITSTATUS (hoststatus);
-+    }
-+  else if (!WIFSTOPPED (hoststatus))
-+    {
-+      ourstatus->kind = TARGET_WAITKIND_SIGNALLED;
-+      ourstatus->value.sig = gdb_signal_from_host (WTERMSIG (hoststatus));
-+    }
-+  else
-+    {
-+      ourstatus->kind = TARGET_WAITKIND_STOPPED;
-+      ourstatus->value.sig = gdb_signal_from_host (WSTOPSIG (hoststatus));
-+    }
-+}
-+
-+/* Implement a safe wrapper around waitpid().  */
-+
-+static pid_t
-+netbsd_waitpid (ptid_t ptid, struct target_waitstatus *ourstatus, int options)
-+{
-+  int status;
-+
-+  pid_t pid
-+    = gdb::handle_eintr<int> (-1, ::waitpid, ptid.pid (), &status, options);
-+
-+  if (pid == -1)
-+    perror_with_name (_("Child process unexpectedly missing"));
-+
-+  netbsd_store_waitstatus (ourstatus, status);
-+  return pid;
-+}
-+
-+
-+/* Implement the wait target_ops method.
-+
-+   Wait for the child specified by PTID to do something.  Return the
-+   process ID of the child, or MINUS_ONE_PTID in case of error; store
-+   the status in *OURSTATUS.  */
-+
-+static ptid_t
-+netbsd_wait (ptid_t ptid, struct target_waitstatus *ourstatus,
-+	     int target_options)
-+{
-+  pid_t pid = netbsd_waitpid (ptid, ourstatus, target_options);
-+  ptid_t wptid = ptid_t (pid);
-+
-+  if (pid == 0)
-+    {
-+      gdb_assert (target_options & TARGET_WNOHANG);
-+      ourstatus->kind = TARGET_WAITKIND_IGNORE;
-+      return null_ptid;
-+    }
-+
-+  gdb_assert (pid != -1);
-+
-+  /* If the child stopped, keep investigating its status.  */
-+  if (ourstatus->kind != TARGET_WAITKIND_STOPPED)
-+    return wptid;
-+
-+  /* Extract the event and thread that received a signal.  */
-+  ptrace_siginfo_t psi;
-+  if (ptrace (PT_GET_SIGINFO, pid, &psi, sizeof (psi)) == -1)
-+    perror_with_name (("ptrace"));
-+
-+  /* Pick child's siginfo_t.  */
-+  siginfo_t *si = &psi.psi_siginfo;
-+
-+  lwpid_t lwp = psi.psi_lwpid;
-+
-+  int signo = si->si_signo;
-+  const int code = si->si_code;
-+
-+  /* Construct PTID with a specified thread that received the event.
-+     If a signal was targeted to the whole process, lwp is 0.  */
-+  wptid = ptid_t (pid, lwp, 0);
-+
-+  /* Bail out on non-debugger oriented signals.  */
-+  if (signo != SIGTRAP)
-+    return wptid;
-+
-+  /* Stop examining non-debugger oriented SIGTRAP codes.  */
-+  if (code <= SI_USER || code == SI_NOINFO)
-+    return wptid;
-+
-+  /* Process state for threading events.  */
-+  ptrace_state_t pst = {};
-+  if (code == TRAP_LWP)
-+    if (ptrace (PT_GET_PROCESS_STATE, pid, &pst, sizeof (pst)) == -1)
-+      perror_with_name (("ptrace"));
-+
-+  if (code == TRAP_LWP && pst.pe_report_event == PTRACE_LWP_EXIT)
-+    {
-+      /* If GDB attaches to a multi-threaded process, exiting
-+	 threads might be skipped during post_attach that
-+	 have not yet reported their PTRACE_LWP_EXIT event.
-+	 Ignore exited events for an unknown LWP.  */
-+      thread_info *thr = find_thread_ptid (wptid);
-+      if (thr == nullptr)
-+	  ourstatus->kind = TARGET_WAITKIND_SPURIOUS;
-+      else
-+	{
-+	  ourstatus->kind = TARGET_WAITKIND_THREAD_EXITED;
-+	  /* NetBSD does not store an LWP exit status.  */
-+	  ourstatus->value.integer = 0;
-+
-+	  remove_thread (thr);
-+	}
-+      return wptid;
-+    }
-+
-+  if (find_thread_ptid (ptid_t (pid)))
-+    current_thread = find_thread_ptid (wptid);
-+
-+  if (code == TRAP_LWP && pst.pe_report_event == PTRACE_LWP_CREATE)
-+    {
-+      /* If GDB attaches to a multi-threaded process, newborn
-+	 threads might be added by nbsd_add_threads that have
-+	 not yet reported their PTRACE_LWP_CREATE event.  Ignore
-+	 born events for an already-known LWP.  */
-+      if (find_thread_ptid (wptid))
-+	  ourstatus->kind = TARGET_WAITKIND_SPURIOUS;
-+      else
-+	{
-+	  add_thread (wptid, NULL);
-+	  ourstatus->kind = TARGET_WAITKIND_THREAD_CREATED;
-+	}
-+      return wptid;
-+    }
-+
-+  if (code == TRAP_EXEC)
-+    {
-+      ourstatus->kind = TARGET_WAITKIND_EXECD;
-+      ourstatus->value.execd_pathname
-+	= xstrdup (netbsd_nat::pid_to_exec_file (pid));
-+      return wptid;
-+    }
-+
-+  if (code == TRAP_TRACE)
-+      return wptid;
-+
-+  if (code == TRAP_SCE || code == TRAP_SCX)
-+    {
-+      int sysnum = si->si_sysnum;
-+
-+      if (!netbsd_catch_this_syscall(sysnum))
-+	{
-+	  /* If the core isn't interested in this event, ignore it.  */
-+	  ourstatus->kind = TARGET_WAITKIND_SPURIOUS;
-+	  return wptid;
-+	}
-+
-+      ourstatus->kind
-+	= ((code == TRAP_SCE) ? TARGET_WAITKIND_SYSCALL_ENTRY :
-+	   TARGET_WAITKIND_SYSCALL_RETURN);
-+      ourstatus->value.syscall_number = sysnum;
-+      return wptid;
-+    }
-+
-+  if (code == TRAP_BRKPT)
-+    {
-+#ifdef PTRACE_BREAKPOINT_ADJ
-+      CORE_ADDR pc;
-+      struct reg r;
-+      ptrace (PT_GETREGS, pid, &r, psi.psi_lwpid);
-+      pc = PTRACE_REG_PC (&r);
-+      PTRACE_REG_SET_PC (&r, pc - PTRACE_BREAKPOINT_ADJ);
-+      ptrace (PT_SETREGS, pid, &r, psi.psi_lwpid);
-+#endif
-+      return wptid;
-+    }
-+
-+  /* Unclassified SIGTRAP event.  */
-+  ourstatus->kind = TARGET_WAITKIND_SPURIOUS;
-+  return wptid;
-+}
-+
-+/* Implement the wait target_ops method.  */
-+
-+ptid_t
-+netbsd_process_target::wait (ptid_t ptid, struct target_waitstatus *ourstatus,
-+			     int target_options)
-+{
-+  while (true)
-+    {
-+      ptid_t wptid = netbsd_wait (ptid, ourstatus, target_options);
-+
-+      /* Register thread in the gdbcore if a thread was not reported earlier.
-+	 This is required after ::create_inferior, when the gdbcore does not
-+	 know about the first internal thread.
-+	 This may also happen on attach, when an event is registered on a thread
-+	 that was not fully initialized during the attach stage.  */
-+      if (wptid.lwp () != 0 && !find_thread_ptid (wptid)
-+	  && ourstatus->kind != TARGET_WAITKIND_THREAD_EXITED)
-+	add_thread (wptid, nullptr);
-+
-+      switch (ourstatus->kind)
-+	{
-+	case TARGET_WAITKIND_EXITED:
-+	case TARGET_WAITKIND_STOPPED:
-+	case TARGET_WAITKIND_SIGNALLED:
-+	case TARGET_WAITKIND_FORKED:
-+	case TARGET_WAITKIND_VFORKED:
-+	case TARGET_WAITKIND_EXECD:
-+	case TARGET_WAITKIND_VFORK_DONE:
-+	case TARGET_WAITKIND_SYSCALL_ENTRY:
-+	case TARGET_WAITKIND_SYSCALL_RETURN:
-+	  /* Pass the result to the generic code.  */
-+	  return wptid;
-+	case TARGET_WAITKIND_THREAD_CREATED:
-+	case TARGET_WAITKIND_THREAD_EXITED:
-+	  /* The core needlessly stops on these events.  */
-+	  /* FALLTHROUGH */
-+	case TARGET_WAITKIND_SPURIOUS:
-+	  /* Spurious events are unhandled by the gdbserver core.  */
-+	  if (ptrace (PT_CONTINUE, current_process ()->pid, (void *) 1, 0)
-+	      == -1)
-+	    perror_with_name (("ptrace"));
-+	  break;
-+	default:
-+	  error (("Unknown stopped status"));
-+	}
-+    }
-+}
-+
-+/* Implement the kill target_ops method.  */
-+
-+int
-+netbsd_process_target::kill (process_info *process)
-+{
-+  pid_t pid = process->pid;
-+  if (ptrace (PT_KILL, pid, nullptr, 0) == -1)
-+    return -1;
-+
-+  int status;
-+  if (gdb::handle_eintr<int> (-1, ::waitpid, pid, &status, 0) == -1)
-+    return -1;
-+  mourn (process);
-+  return 0;
-+}
-+
-+/* Implement the detach target_ops method.  */
-+
-+int
-+netbsd_process_target::detach (process_info *process)
-+{
-+  pid_t pid = process->pid;
-+
-+  ptrace (PT_DETACH, pid, (void *) 1, 0);
-+  mourn (process);
-+  return 0;
-+}
-+
-+/* Implement the mourn target_ops method.  */
-+
-+void
-+netbsd_process_target::mourn (struct process_info *proc)
-+{
-+  for_each_thread (proc->pid, remove_thread);
-+
-+  remove_process (proc);
-+}
-+
-+/* Implement the join target_ops method.  */
-+
-+void
-+netbsd_process_target::join (int pid)
-+{
-+  /* The PT_DETACH is sufficient to detach from the process.
-+     So no need to do anything extra.  */
-+}
-+
-+/* Implement the thread_alive target_ops method.  */
-+
-+bool
-+netbsd_process_target::thread_alive (ptid_t ptid)
-+{
-+  return netbsd_nat::thread_alive (ptid);
-+}
-+
-+/* Implement the fetch_registers target_ops method.  */
-+
-+void
-+netbsd_process_target::fetch_registers (struct regcache *regcache, int regno)
-+{
-+  struct netbsd_regset_info *regset = netbsd_target_regsets;
-+  ptid_t inferior_ptid = ptid_of (current_thread);
-+
-+  while (regset->size >= 0)
-+    {
-+      std::vector<char> buf;
-+      buf.resize (regset->size);
-+      int res = ptrace (regset->get_request, inferior_ptid.pid (), buf.data (),
-+			inferior_ptid.lwp ());
-+      if (res == -1)
-+	perror_with_name (("ptrace"));
-+      regset->store_function (regcache, buf.data ());
-+      regset++;
-+    }
-+}
-+
-+/* Implement the store_registers target_ops method.  */
-+
-+void
-+netbsd_process_target::store_registers (struct regcache *regcache, int regno)
-+{
-+  struct netbsd_regset_info *regset = netbsd_target_regsets;
-+  ptid_t inferior_ptid = ptid_of (current_thread);
-+
-+  while (regset->size >= 0)
-+    {
-+      std::vector<char> buf;
-+      buf.resize (regset->size);
-+      int res = ptrace (regset->get_request, inferior_ptid.pid (), buf.data (),
-+			inferior_ptid.lwp ());
-+      if (res == -1)
-+	perror_with_name (("ptrace"));
-+
-+      /* Then overlay our cached registers on that.  */
-+      regset->fill_function (regcache, buf.data ());
-+      /* Only now do we write the register set.  */
-+      res = ptrace (regset->set_request, inferior_ptid.pid (), buf. data (),
-+		    inferior_ptid.lwp ());
-+      if (res == -1)
-+	perror_with_name (("ptrace"));
-+      regset++;
-+    }
-+}
-+
-+/* Implement the read_memory target_ops method.  */
-+
-+int
-+netbsd_process_target::read_memory (CORE_ADDR memaddr, unsigned char *myaddr,
-+				    int size)
-+{
-+  struct ptrace_io_desc io;
-+  io.piod_op = PIOD_READ_D;
-+  io.piod_len = size;
-+
-+  pid_t pid = current_process ()->pid;
-+
-+  int bytes_read = 0;
-+
-+  if (size == 0)
-+    {
-+      /* Zero length write always succeeds.  */
-+      return 0;
-+    }
-+  do
-+    {
-+      io.piod_offs = (void *)(memaddr + bytes_read);
-+      io.piod_addr = myaddr + bytes_read;
-+
-+      int rv = ptrace (PT_IO, pid, &io, 0);
-+      if (rv == -1)
-+	return errno;
-+      if (io.piod_len == 0)
-+	return 0;
-+
-+      bytes_read += io.piod_len;
-+      io.piod_len = size - bytes_read;
-+    }
-+  while (bytes_read < size);
-+
-+  return 0;
-+}
-+
-+/* Implement the write_memory target_ops method.  */
-+
-+int
-+netbsd_process_target::write_memory (CORE_ADDR memaddr,
-+				     const unsigned char *myaddr, int size)
-+{
-+  struct ptrace_io_desc io;
-+  io.piod_op = PIOD_WRITE_D;
-+  io.piod_len = size;
-+
-+  pid_t pid = current_process ()->pid;
-+
-+  int bytes_written = 0;
-+
-+  if (size == 0)
-+    {
-+      /* Zero length write always succeeds.  */
-+      return 0;
-+    }
-+
-+  do
-+    {
-+      io.piod_addr = (void *)(myaddr + bytes_written);
-+      io.piod_offs = (void *)(memaddr + bytes_written);
-+
-+      int rv = ptrace (PT_IO, pid, &io, 0);
-+      if (rv == -1)
-+	return errno;
-+      if (io.piod_len == 0)
-+	return 0;
-+
-+      bytes_written += io.piod_len;
-+      io.piod_len = size - bytes_written;
-+    }
-+  while (bytes_written < size);
-+
-+  return 0;
-+}
-+
-+/* Implement the request_interrupt target_ops method.  */
-+
-+void
-+netbsd_process_target::request_interrupt ()
-+{
-+  ptid_t inferior_ptid = ptid_of (get_first_thread ());
-+
-+  ::kill (inferior_ptid.pid(), SIGINT);
-+}
-+
-+/* Read the AUX Vector for the specified PID, wrapping the ptrace(2) call
-+   with the PIOD_READ_AUXV operation and using the PT_IO standard input
-+   and output arguments.  */
-+
-+static size_t
-+netbsd_read_auxv(pid_t pid, void *offs, void *addr, size_t len)
-+{
-+  struct ptrace_io_desc pio;
-+
-+  pio.piod_op = PIOD_READ_AUXV;
-+  pio.piod_offs = offs;
-+  pio.piod_addr = addr;
-+  pio.piod_len = len;
-+
-+  if (ptrace (PT_IO, pid, &pio, 0) == -1)
-+    perror_with_name (("ptrace"));
-+
-+  return pio.piod_len;
-+}
-+
-+/* Copy LEN bytes from inferior's auxiliary vector starting at OFFSET
-+   to debugger memory starting at MYADDR.  */
-+
-+int
-+netbsd_process_target::read_auxv (CORE_ADDR offset,
-+				  unsigned char *myaddr, unsigned int len)
-+{
-+  pid_t pid = pid_of (current_thread);
-+
-+  return netbsd_read_auxv (pid, (void *) (intptr_t) offset, myaddr, len);
-+}
-+
-+bool
-+netbsd_process_target::supports_z_point_type (char z_type)
-+{
-+  switch (z_type)
-+    {
-+    case Z_PACKET_SW_BP:
-+      return true;
-+    case Z_PACKET_HW_BP:
-+    case Z_PACKET_WRITE_WP:
-+    case Z_PACKET_READ_WP:
-+    case Z_PACKET_ACCESS_WP:
-+    default:
-+      return false; /* Not supported.  */
-+    }
-+}
-+
-+/* Insert {break/watch}point at address ADDR.  SIZE is not used.  */
-+
-+int
-+netbsd_process_target::insert_point (enum raw_bkpt_type type, CORE_ADDR addr,
-+		     int size, struct raw_breakpoint *bp)
-+{
-+  switch (type)
-+    {
-+    case raw_bkpt_type_sw:
-+      return insert_memory_breakpoint (bp);
-+    case raw_bkpt_type_hw:
-+    case raw_bkpt_type_write_wp:
-+    case raw_bkpt_type_read_wp:
-+    case raw_bkpt_type_access_wp:
-+    default:
-+      return 1; /* Not supported.  */
-+    }
-+}
-+
-+/* Remove {break/watch}point at address ADDR.  SIZE is not used.  */
-+
-+int
-+netbsd_process_target::remove_point (enum raw_bkpt_type type, CORE_ADDR addr,
-+				     int size, struct raw_breakpoint *bp)
-+{
-+  switch (type)
-+    {
-+    case raw_bkpt_type_sw:
-+      return remove_memory_breakpoint (bp);
-+    case raw_bkpt_type_hw:
-+    case raw_bkpt_type_write_wp:
-+    case raw_bkpt_type_read_wp:
-+    case raw_bkpt_type_access_wp:
-+    default:
-+      return 1; /* Not supported.  */
-+    }
-+}
-+
-+/* Implement the stopped_by_sw_breakpoint target_ops method.  */
-+
-+bool
-+netbsd_process_target::stopped_by_sw_breakpoint ()
-+{
-+  ptrace_siginfo_t psi;
-+  pid_t pid = current_process ()->pid;
-+
-+  if (ptrace (PT_GET_SIGINFO, pid, &psi, sizeof (psi)) == -1)
-+    perror_with_name (("ptrace"));
-+
-+  return psi.psi_siginfo.si_signo == SIGTRAP &&
-+	 psi.psi_siginfo.si_code == TRAP_BRKPT;
-+}
-+
-+/* Implement the supports_stopped_by_sw_breakpoint target_ops method.  */
-+
-+bool
-+netbsd_process_target::supports_stopped_by_sw_breakpoint ()
-+{
-+  return true;
-+}
-+
-+/* Implement the supports_qxfer_siginfo target_ops method.  */
-+
-+bool
-+netbsd_process_target::supports_qxfer_siginfo ()
-+{
-+  return true;
-+}
-+
-+/* Implement the qxfer_siginfo target_ops method.  */
-+
-+int
-+netbsd_process_target::qxfer_siginfo (const char *annex, unsigned char *readbuf,
-+				      unsigned const char *writebuf,
-+				      CORE_ADDR offset, int len)
-+{
-+  if (current_thread == nullptr)
-+    return -1;
-+
-+  pid_t pid = current_process ()->pid;
-+
-+  return netbsd_nat::qxfer_siginfo(pid, annex, readbuf, writebuf, offset, len);
-+}
-+
-+/* Implement the supports_non_stop target_ops method.  */
-+
-+bool
-+netbsd_process_target::supports_non_stop ()
-+{
-+  return false;
-+}
-+
-+/* Implement the supports_multi_process target_ops method.  */
-+
-+bool
-+netbsd_process_target::supports_multi_process ()
-+{
-+  return true;
-+}
-+
-+/* Check if fork events are supported.  */
-+
-+bool
-+netbsd_process_target::supports_fork_events ()
-+{
-+  return false;
-+}
-+
-+/* Check if vfork events are supported.  */
-+
-+bool
-+netbsd_process_target::supports_vfork_events ()
-+{
-+  return false;
-+}
-+
-+/* Check if exec events are supported.  */
-+
-+bool
-+netbsd_process_target::supports_exec_events ()
-+{
-+  return true;
-+}
-+
-+/* Implement the supports_disable_randomization target_ops method.  */
-+
-+bool
-+netbsd_process_target::supports_disable_randomization ()
-+{
-+  return false;
-+}
-+
-+/* Extract &phdr and num_phdr in the inferior.  Return 0 on success.  */
-+
-+template <typename T>
-+int get_phdr_phnum_from_proc_auxv (const pid_t pid,
-+				   CORE_ADDR *phdr_memaddr, int *num_phdr)
-+{
-+  typedef typename std::conditional<sizeof(T) == sizeof(int64_t),
-+				    Aux64Info, Aux32Info>::type auxv_type;
-+  const size_t auxv_size = sizeof (auxv_type);
-+  const size_t auxv_buf_size = 128 * sizeof (auxv_type);
-+
-+  std::vector<char> auxv_buf;
-+  auxv_buf.resize (auxv_buf_size);
-+
-+  netbsd_read_auxv (pid, nullptr, auxv_buf.data (), auxv_buf_size);
-+
-+  *phdr_memaddr = 0;
-+  *num_phdr = 0;
-+
-+  for (char *buf = auxv_buf.data ();
-+       buf < (auxv_buf.data () + auxv_buf_size);
-+       buf += auxv_size)
-+    {
-+      auxv_type *const aux = (auxv_type *) buf;
-+
-+      switch (aux->a_type)
-+	{
-+	case AT_PHDR:
-+	  *phdr_memaddr = aux->a_v;
-+	  break;
-+	case AT_PHNUM:
-+	  *num_phdr = aux->a_v;
-+	  break;
-+	}
-+
-+      if (*phdr_memaddr != 0 && *num_phdr != 0)
-+	break;
-+    }
-+
-+  if (*phdr_memaddr == 0 || *num_phdr == 0)
-+    {
-+      warning ("Unexpected missing AT_PHDR and/or AT_PHNUM: "
-+	       "phdr_memaddr = %s, phdr_num = %d",
-+	       core_addr_to_string (*phdr_memaddr), *num_phdr);
-+      return 2;
-+    }
-+
-+  return 0;
-+}
-+
-+/* Return &_DYNAMIC (via PT_DYNAMIC) in the inferior, or 0 if not present.  */
-+
-+template <typename T>
-+static CORE_ADDR
-+get_dynamic (netbsd_process_target *target, const pid_t pid)
-+{
-+  typedef typename std::conditional<sizeof(T) == sizeof(int64_t),
-+				    Elf64_Phdr, Elf32_Phdr>::type phdr_type;
-+  const int phdr_size = sizeof (phdr_type);
-+
-+  CORE_ADDR phdr_memaddr;
-+  int num_phdr;
-+  if (get_phdr_phnum_from_proc_auxv<T> (pid, &phdr_memaddr, &num_phdr))
-+    return 0;
-+
-+  std::vector<unsigned char> phdr_buf;
-+  phdr_buf.resize (num_phdr * phdr_size);
-+
-+  if (target->read_memory (phdr_memaddr, phdr_buf.data (), phdr_buf.size ()))
-+    return 0;
-+
-+  /* Compute relocation: it is expected to be 0 for "regular" executables,
-+     non-zero for PIE ones.  */
-+  CORE_ADDR relocation = -1;
-+  for (int i = 0; relocation == -1 && i < num_phdr; i++)
-+    {
-+      phdr_type *const p = (phdr_type *) (phdr_buf.data() + i * phdr_size);
-+
-+      if (p->p_type == PT_PHDR)
-+	relocation = phdr_memaddr - p->p_vaddr;
-+    }
-+
-+  if (relocation == -1)
-+    {
-+      /* PT_PHDR is optional, but necessary for PIE in general.  Fortunately
-+	 any real world executables, including PIE executables, have always
-+	 PT_PHDR present.  PT_PHDR is not present in some shared libraries or
-+	 in fpc (Free Pascal 2.4) binaries but neither of those have a need for
-+	 or present DT_DEBUG anyway (fpc binaries are statically linked).
-+
-+	 Therefore if there exists DT_DEBUG there is always also PT_PHDR.
-+
-+	 GDB could find RELOCATION also from AT_ENTRY - e_entry.  */
-+
-+      return 0;
-+    }
-+
-+  for (int i = 0; i < num_phdr; i++)
-+    {
-+      phdr_type *const p = (phdr_type *) (phdr_buf.data () + i * phdr_size);
-+
-+      if (p->p_type == PT_DYNAMIC)
-+	return p->p_vaddr + relocation;
-+    }
-+
-+  return 0;
-+}
-+
-+/* Return &_r_debug in the inferior, or -1 if not present.  Return value
-+   can be 0 if the inferior does not yet have the library list initialized.
-+   We look for DT_MIPS_RLD_MAP first.  MIPS executables use this instead of
-+   DT_DEBUG, although they sometimes contain an unused DT_DEBUG entry too.  */
-+
-+template <typename T>
-+static CORE_ADDR
-+get_r_debug (netbsd_process_target *target, const int pid)
-+{
-+  typedef typename std::conditional<sizeof(T) == sizeof(int64_t),
-+				    Elf64_Dyn, Elf32_Dyn>::type dyn_type;
-+  const int dyn_size = sizeof (dyn_type);
-+  unsigned char buf[sizeof (dyn_type)];  /* The larger of the two.  */
-+  CORE_ADDR map = -1;
-+
-+  CORE_ADDR dynamic_memaddr = get_dynamic<T> (target, pid);
-+  if (dynamic_memaddr == 0)
-+    return map;
-+
-+  while (target->read_memory (dynamic_memaddr, buf, dyn_size) == 0)
-+    {
-+      dyn_type *const dyn = (dyn_type *) buf;
-+#if defined DT_MIPS_RLD_MAP
-+      union
-+      {
-+	T map;
-+	unsigned char buf[sizeof (T)];
-+      }
-+      rld_map;
-+
-+      if (dyn->d_tag == DT_MIPS_RLD_MAP)
-+	{
-+	  if (read_memory (dyn->d_un.d_val,
-+			   rld_map.buf, sizeof (rld_map.buf)) == 0)
-+	    return rld_map.map;
-+	  else
-+	    break;
-+	}
-+#endif  /* DT_MIPS_RLD_MAP */
-+
-+      if (dyn->d_tag == DT_DEBUG && map == -1)
-+	map = dyn->d_un.d_val;
-+
-+      if (dyn->d_tag == DT_NULL)
-+	break;
-+
-+      dynamic_memaddr += dyn_size;
-+    }
-+
-+  return map;
-+}
-+
-+/* Read one pointer from MEMADDR in the inferior.  */
-+
-+static int
-+read_one_ptr (netbsd_process_target *target, CORE_ADDR memaddr, CORE_ADDR *ptr,
-+	      int ptr_size)
-+{
-+  /* Go through a union so this works on either big or little endian
-+     hosts, when the inferior's pointer size is smaller than the size
-+     of CORE_ADDR.  It is assumed the inferior's endianness is the
-+     same of the superior's.  */
-+
-+  union
-+  {
-+    CORE_ADDR core_addr;
-+    unsigned int ui;
-+    unsigned char uc;
-+  } addr;
-+
-+  int ret = target->read_memory (memaddr, &addr.uc, ptr_size);
-+  if (ret == 0)
-+    {
-+      if (ptr_size == sizeof (CORE_ADDR))
-+	*ptr = addr.core_addr;
-+      else if (ptr_size == sizeof (unsigned int))
-+	*ptr = addr.ui;
-+      else
-+	gdb_assert_not_reached ("unhandled pointer size");
-+    }
-+  return ret;
-+}
-+
-+/* Construct qXfer:libraries-svr4:read reply.  */
-+
-+template <typename T>
-+int
-+netbsd_qxfer_libraries_svr4 (netbsd_process_target *target,
-+			     const pid_t pid, const char *annex,
-+			     unsigned char *readbuf,
-+			     unsigned const char *writebuf,
-+			     CORE_ADDR offset, int len)
-+{
-+  struct link_map_offsets
-+  {
-+    /* Offset and size of r_debug.r_version.  */
-+    int r_version_offset;
-+
-+    /* Offset and size of r_debug.r_map.  */
-+    int r_map_offset;
-+
-+    /* Offset to l_addr field in struct link_map.  */
-+    int l_addr_offset;
-+
-+    /* Offset to l_name field in struct link_map.  */
-+    int l_name_offset;
-+
-+    /* Offset to l_ld field in struct link_map.  */
-+    int l_ld_offset;
-+
-+    /* Offset to l_next field in struct link_map.  */
-+    int l_next_offset;
-+
-+    /* Offset to l_prev field in struct link_map.  */
-+    int l_prev_offset;
-+  };
-+
-+  static const struct link_map_offsets lmo_32bit_offsets =
-+    {
-+      0,     /* r_version offset. */
-+      4,     /* r_debug.r_map offset.  */
-+      0,     /* l_addr offset in link_map.  */
-+      4,     /* l_name offset in link_map.  */
-+      8,     /* l_ld offset in link_map.  */
-+      12,    /* l_next offset in link_map.  */
-+      16     /* l_prev offset in link_map.  */
-+    };
-+
-+  static const struct link_map_offsets lmo_64bit_offsets =
-+    {
-+      0,     /* r_version offset. */
-+      8,     /* r_debug.r_map offset.  */
-+      0,     /* l_addr offset in link_map.  */
-+      8,     /* l_name offset in link_map.  */
-+      16,    /* l_ld offset in link_map.  */
-+      24,    /* l_next offset in link_map.  */
-+      32     /* l_prev offset in link_map.  */
-+    };
-+
-+  CORE_ADDR lm_addr = 0, lm_prev = 0;
-+  CORE_ADDR l_name, l_addr, l_ld, l_next, l_prev;
-+  int header_done = 0;
-+
-+  const struct link_map_offsets *lmo
-+    = ((sizeof (T) == sizeof (int64_t))
-+       ? &lmo_64bit_offsets : &lmo_32bit_offsets);
-+  int ptr_size = sizeof (T);
-+
-+  while (annex[0] != '\0')
-+    {
-+      const char *sep = strchr (annex, '=');
-+      if (sep == nullptr)
-+	break;
-+
-+      int name_len = sep - annex;
-+      CORE_ADDR *addrp;
-+      if (name_len == 5 && startswith (annex, "start"))
-+	addrp = &lm_addr;
-+      else if (name_len == 4 && startswith (annex, "prev"))
-+	addrp = &lm_prev;
-+      else
-+	{
-+	  annex = strchr (sep, ';');
-+	  if (annex == nullptr)
-+	    break;
-+	  annex++;
-+	  continue;
-+	}
-+
-+      annex = decode_address_to_semicolon (addrp, sep + 1);
-+    }
-+
-+  if (lm_addr == 0)
-+    {
-+      CORE_ADDR r_debug = get_r_debug<T> (target, pid);
-+
-+      /* We failed to find DT_DEBUG.  Such situation will not change
-+	 for this inferior - do not retry it.  Report it to GDB as
-+	 E01, see for the reasons at the GDB solib-svr4.c side.  */
-+      if (r_debug == (CORE_ADDR) -1)
-+	return -1;
-+
-+      if (r_debug != 0)
-+	{
-+	  CORE_ADDR map_offset = r_debug + lmo->r_map_offset;
-+	  if (read_one_ptr (target, map_offset, &lm_addr, ptr_size) != 0)
-+	    warning ("unable to read r_map from %s",
-+		     core_addr_to_string (map_offset));
-+	}
-+    }
-+
-+  std::string document = "<library-list-svr4 version=\"1.0\"";
-+
-+  while (lm_addr
-+	 && read_one_ptr (target, lm_addr + lmo->l_name_offset,
-+			  &l_name, ptr_size) == 0
-+	 && read_one_ptr (target, lm_addr + lmo->l_addr_offset,
-+			  &l_addr, ptr_size) == 0
-+	 && read_one_ptr (target, lm_addr + lmo->l_ld_offset,
-+			  &l_ld, ptr_size) == 0
-+	 && read_one_ptr (target, lm_addr + lmo->l_prev_offset,
-+			  &l_prev, ptr_size) == 0
-+	 && read_one_ptr (target, lm_addr + lmo->l_next_offset,
-+			  &l_next, ptr_size) == 0)
-+    {
-+      if (lm_prev != l_prev)
-+	{
-+	  warning ("Corrupted shared library list: 0x%lx != 0x%lx",
-+		   (long) lm_prev, (long) l_prev);
-+	  break;
-+	}
-+
-+      /* Ignore the first entry even if it has valid name as the first entry
-+	 corresponds to the main executable.  The first entry should not be
-+	 skipped if the dynamic loader was loaded late by a static executable
-+	 (see solib-svr4.c parameter ignore_first).  But in such case the main
-+	 executable does not have PT_DYNAMIC present and this function already
-+	 exited above due to failed get_r_debug.  */
-+      if (lm_prev == 0)
-+	string_appendf (document, " main-lm=\"0x%lx\"",
-+			(unsigned long) lm_addr);
-+      else
-+	{
-+	  unsigned char libname[PATH_MAX];
-+
-+	  /* Not checking for error because reading may stop before
-+	     we've got PATH_MAX worth of characters.  */
-+	  libname[0] = '\0';
-+	  target->read_memory (l_name, libname, sizeof (libname) - 1);
-+	  libname[sizeof (libname) - 1] = '\0';
-+	  if (libname[0] != '\0')
-+	    {
-+	      if (!header_done)
-+		{
-+		  /* Terminate `<library-list-svr4'.  */
-+		  document += '>';
-+		  header_done = 1;
-+		}
-+
-+	      string_appendf (document, "<library name=\"");
-+	      xml_escape_text_append (&document, (char *) libname);
-+	      string_appendf (document, "\" lm=\"0x%lx\" "
-+			      "l_addr=\"0x%lx\" l_ld=\"0x%lx\"/>",
-+			      (unsigned long) lm_addr, (unsigned long) l_addr,
-+			      (unsigned long) l_ld);
-+	    }
-+	}
-+
-+      lm_prev = lm_addr;
-+      lm_addr = l_next;
-+    }
-+
-+  if (!header_done)
-+    {
-+      /* Empty list; terminate `<library-list-svr4'.  */
-+      document += "/>";
-+    }
-+  else
-+    document += "</library-list-svr4>";
-+
-+  int document_len = document.length ();
-+  if (offset < document_len)
-+    document_len -= offset;
-+  else
-+    document_len = 0;
-+  if (len > document_len)
-+    len = document_len;
-+
-+  memcpy (readbuf, document.data () + offset, len);
-+
-+  return len;
-+}
-+
-+/* Return true if FILE is a 64-bit ELF file,
-+   false if the file is not a 64-bit ELF file,
-+   and error if the file is not accessible or doesn't exist.  */
-+
-+static bool
-+elf_64_file_p (const char *file)
-+{
-+  int fd = gdb::handle_eintr<int> (-1, ::open, file, O_RDONLY);
-+  if (fd < 0)
-+    perror_with_name (("open"));
-+
-+  Elf64_Ehdr header;
-+  ssize_t ret = gdb::handle_eintr<ssize_t> (-1, ::read, fd, &header, sizeof (header));
-+  if (ret == -1)
-+    perror_with_name (("read"));
-+  gdb::handle_eintr<int> (-1, ::close, fd);
-+  if (ret != sizeof (header))
-+    error ("Cannot read ELF file header: %s", file);
-+
-+  if (header.e_ident[EI_MAG0] != ELFMAG0
-+      || header.e_ident[EI_MAG1] != ELFMAG1
-+      || header.e_ident[EI_MAG2] != ELFMAG2
-+      || header.e_ident[EI_MAG3] != ELFMAG3)
-+    error ("Unrecognized ELF file header: %s", file);
-+
-+  return header.e_ident[EI_CLASS] == ELFCLASS64;
-+}
-+
-+/* Construct qXfer:libraries-svr4:read reply.  */
-+
-+int
-+netbsd_process_target::qxfer_libraries_svr4 (const char *annex,
-+					     unsigned char *readbuf,
-+					     unsigned const char *writebuf,
-+					     CORE_ADDR offset, int len)
-+{
-+  if (writebuf != nullptr)
-+    return -2;
-+  if (readbuf == nullptr)
-+    return -1;
-+
-+  struct process_info *proc = current_process ();
-+  pid_t pid = proc->pid;
-+  bool is_elf64 = elf_64_file_p (netbsd_nat::pid_to_exec_file (pid));
-+
-+  if (is_elf64)
-+    return netbsd_qxfer_libraries_svr4<int64_t> (this, pid, annex, readbuf,
-+						 writebuf, offset, len);
-+  else
-+    return netbsd_qxfer_libraries_svr4<int32_t> (this, pid, annex, readbuf,
-+						 writebuf, offset, len);
-+}
-+
-+/* Implement the supports_qxfer_libraries_svr4 target_ops method.  */
-+
-+bool
-+netbsd_process_target::supports_qxfer_libraries_svr4 ()
-+{
-+  return true;
-+}
-+
-+/* Return the name of a file that can be opened to get the symbols for
-+   the child process identified by PID.  */
-+
-+char *
-+netbsd_process_target::pid_to_exec_file (pid_t pid)
-+{
-+  return const_cast<char *> (netbsd_nat::pid_to_exec_file (pid));
-+}
-+
-+/* Implementation of the target_ops method "supports_pid_to_exec_file".  */
-+
-+bool
-+netbsd_process_target::supports_pid_to_exec_file ()
-+{
-+  return true;
-+}
-+
-+/* Implementation of the target_ops method "supports_hardware_single_step".  */
-+bool
-+netbsd_process_target::supports_hardware_single_step ()
-+{
-+  return true;
-+}
-+
-+/* Implementation of the target_ops method "sw_breakpoint_from_kind".  */
-+
-+const gdb_byte *
-+netbsd_process_target::sw_breakpoint_from_kind (int kind, int *size)
-+{
-+  static gdb_byte brkpt[PTRACE_BREAKPOINT_SIZE] = {*PTRACE_BREAKPOINT};
-+
-+  *size = PTRACE_BREAKPOINT_SIZE;
-+
-+  return brkpt;
-+}
-+
-+/* Implement the thread_name target_ops method.  */
-+
-+const char *
-+netbsd_process_target::thread_name (ptid_t ptid)
-+{
-+  return netbsd_nat::thread_name (ptid);
-+}
-+
-+/* Implement the supports_catch_syscall target_ops method.  */
-+
-+bool
-+netbsd_process_target::supports_catch_syscall ()
-+{
-+  return true;
-+}
-+
-+/* Implement the supports_read_auxv target_ops method.  */
-+
-+bool
-+netbsd_process_target::supports_read_auxv ()
-+{
-+  return true;
-+}
-+
-+/* The NetBSD target ops object.  */
-+
-+static netbsd_process_target the_netbsd_target;
-+
-+void
-+initialize_low ()
-+{
-+  set_target_ops (&the_netbsd_target);
-+  the_low_target.arch_setup ();
-+}
diff --git a/gdb-netbsd/patches/patch-gdbserver_netbsd-low.h b/gdb-netbsd/patches/patch-gdbserver_netbsd-low.h
deleted file mode 100644
index 71f0659260..0000000000
--- a/gdb-netbsd/patches/patch-gdbserver_netbsd-low.h
+++ /dev/null
@@ -1,159 +0,0 @@
-$NetBSD$
-
---- gdbserver/netbsd-low.h.orig	2020-09-08 13:10:47.484369884 +0000
-+++ gdbserver/netbsd-low.h
-@@ -0,0 +1,154 @@
-+/* Copyright (C) 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/>.  */
-+
-+#ifndef GDBSERVER_NETBSD_LOW_H
-+#define GDBSERVER_NETBSD_LOW_H
-+
-+struct regcache;
-+struct target_desc;
-+
-+/*  Some information relative to a given register set.   */
-+
-+struct netbsd_regset_info
-+{
-+  /* The ptrace request needed to get/set registers of this set.  */
-+  int get_request, set_request;
-+  /* The size of the register set.  */
-+  int size;
-+  /* Fill the buffer BUF from the contents of the given REGCACHE.  */
-+  void (*fill_function) (struct regcache *regcache, char *buf);
-+  /* Store the register value in BUF in the given REGCACHE.  */
-+  void (*store_function) (struct regcache *regcache, const char *buf);
-+};
-+
-+/* A list of regsets for the target being debugged, terminated by an entry
-+   where the size is negative.
-+
-+   This list should be created by the target-specific code.  */
-+
-+extern struct netbsd_regset_info netbsd_target_regsets[];
-+
-+/* The target-specific operations for NetBSD support.  */
-+
-+struct netbsd_target_ops
-+{
-+  /* Architecture-specific setup.  */
-+  void (*arch_setup) ();
-+};
-+
-+/* Target ops definitions for a NetBSD target.  */
-+
-+class netbsd_process_target : public process_stratum_target
-+{
-+public:
-+
-+  int create_inferior (const char *program,
-+		       const std::vector<char *> &program_args) override;
-+
-+  void post_create_inferior () override;
-+
-+  int attach (unsigned long pid) override;
-+
-+  int kill (process_info *proc) override;
-+
-+  int detach (process_info *proc) override;
-+
-+  void mourn (process_info *proc) override;
-+
-+  void join (int pid) override;
-+
-+  bool thread_alive (ptid_t pid) override;
-+
-+  void resume (thread_resume *resume_info, size_t n) override;
-+
-+  ptid_t wait (ptid_t ptid, target_waitstatus *status,
-+	       int options) override;
-+
-+  void fetch_registers (regcache *regcache, int regno) override;
-+
-+  void store_registers (regcache *regcache, int regno) override;
-+
-+  int read_memory (CORE_ADDR memaddr, unsigned char *myaddr,
-+		   int len) override;
-+
-+  int write_memory (CORE_ADDR memaddr, const unsigned char *myaddr,
-+		    int len) override;
-+
-+  void request_interrupt () override;
-+
-+  bool supports_read_auxv () override;
-+
-+  int read_auxv (CORE_ADDR offset, unsigned char *myaddr,
-+		 unsigned int len) override;
-+
-+  bool supports_hardware_single_step () override;
-+
-+  const gdb_byte *sw_breakpoint_from_kind (int kind, int *size) override;
-+
-+  bool supports_z_point_type (char z_type) override;
-+
-+  int insert_point (enum raw_bkpt_type type, CORE_ADDR addr,
-+		    int size, struct raw_breakpoint *bp) override;
-+
-+  int remove_point (enum raw_bkpt_type type, CORE_ADDR addr,
-+		    int size, struct raw_breakpoint *bp) override;
-+
-+  bool stopped_by_sw_breakpoint () override;
-+
-+  bool supports_qxfer_siginfo () override;
-+
-+  int qxfer_siginfo (const char *annex, unsigned char *readbuf,
-+		     unsigned const char *writebuf, CORE_ADDR offset,
-+		     int len) override;
-+
-+  bool supports_stopped_by_sw_breakpoint () override;
-+
-+  bool supports_non_stop () override;
-+
-+  bool supports_multi_process () override;
-+
-+  bool supports_fork_events () override;
-+
-+  bool supports_vfork_events () override;
-+
-+  bool supports_exec_events () override;
-+
-+  bool supports_disable_randomization () override;
-+
-+  bool supports_qxfer_libraries_svr4 () override;
-+
-+  int qxfer_libraries_svr4 (const char*, unsigned char*, const unsigned char*,
-+			    CORE_ADDR, int) override;
-+
-+  bool supports_pid_to_exec_file () override;
-+
-+  char *pid_to_exec_file (int pid) override;
-+
-+  const char *thread_name (ptid_t thread) override;
-+
-+  bool supports_catch_syscall () override;
-+};
-+
-+/* The inferior's target description.  This is a global because the
-+   NetBSD ports support neither bi-arch nor multi-process.  */
-+
-+extern struct netbsd_target_ops the_low_target;
-+
-+/* XXX: multilib */
-+extern const struct target_desc *netbsd_tdesc;
-+
-+#endif /* GDBSERVER_NETBSD_LOW_H */
diff --git a/gdb-netbsd/patches/patch-gdbsupport_ChangeLog b/gdb-netbsd/patches/patch-gdbsupport_ChangeLog
deleted file mode 100644
index 1a45e9cb27..0000000000
--- a/gdb-netbsd/patches/patch-gdbsupport_ChangeLog
+++ /dev/null
@@ -1,12 +0,0 @@
-$NetBSD$
-
---- gdbsupport/ChangeLog.orig	2020-09-03 16:35:18.000000000 +0000
-+++ gdbsupport/ChangeLog
-@@ -1,3 +1,7 @@
-+2020-09-04  Kamil Rytarowski  <n54%gmx.com@localhost>
-+
-+	* eintr.h: New file.
-+
- 2020-08-13  Simon Marchi  <simon.marchi%polymtl.ca@localhost>
- 
- 	* selftest.h (run_tests): Change parameter to array_view.
diff --git a/gdb-netbsd/patches/patch-gdbsupport_eintr.h b/gdb-netbsd/patches/patch-gdbsupport_eintr.h
deleted file mode 100644
index 1be725a990..0000000000
--- a/gdb-netbsd/patches/patch-gdbsupport_eintr.h
+++ /dev/null
@@ -1,72 +0,0 @@
-$NetBSD$
-
---- gdbsupport/eintr.h.orig	2020-09-08 13:10:47.484579232 +0000
-+++ gdbsupport/eintr.h
-@@ -0,0 +1,67 @@
-+/* Utility for handling interrupted syscalls by signals.
-+
-+   Copyright (C) 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/>.  */
-+
-+#ifndef GDBSUPPORT_EINTR_H
-+#define GDBSUPPORT_EINTR_H
-+
-+#include <cerrno>
-+
-+namespace gdb
-+{
-+/* Repeat a system call interrupted with a signal.
-+
-+   A utility for handling interrupted syscalls, which return with error
-+   and set the errno to EINTR.  The interrupted syscalls can be repeated,
-+   until successful completion.  This utility avoids wrapping code with
-+   manual checks for such errors which are highly repetitive.
-+
-+   For example, with:
-+
-+   ssize_t ret;
-+   do
-+     {
-+       errno = 0;
-+       ret = ::write (pipe[1], "+", 1);
-+     }
-+   while (ret == -1 && errno == EINTR);
-+
-+   You could wrap it by writing the wrapped form:
-+
-+   ssize_t ret = gdb::handle_eintr<ssize_t> (-1, ::write, pipe[1], "+", 1);
-+
-+   The RET typename specifies the return type of the wrapped system call, which
-+   is typically int or ssize_t.  The R argument specifies the failure value
-+   indicating the interrupted syscall when calling the F function with
-+   the A... arguments.  */
-+
-+template <typename Ret, typename Fun, typename... Args>
-+inline Ret handle_eintr (const Ret &R, const Fun &F, const Args &... A)
-+{
-+  Ret ret;
-+  do
-+    {
-+      errno = 0;
-+      ret = F (A...);
-+    }
-+  while (ret == R && errno == EINTR);
-+  return ret;
-+}
-+}
-+
-+#endif /* GDBSUPPORT_EINTR_H */


Home | Main Index | Thread Index | Old Index