diff --git a/sys-apps/pciutils/Manifest b/sys-apps/pciutils/Manifest
index af496ac..c0806c4 100644
--- a/sys-apps/pciutils/Manifest
+++ b/sys-apps/pciutils/Manifest
@@ -1 +1,3 @@
-DIST pciutils-3.7.0.tar.gz 516418 BLAKE2B fca6720cff73ec20559c666c76fdcd3b59cdf0e33e2c3894a82590d77c5d51cf22e667fe65d9f66a248a624c2b9c868f6e9b69f45f4b6d704b637afe55041e6a SHA512 8a8fb9dc44a8dd31f80e45a48f6693452c11d343b9dfed87dd5cea6846f38d001f294e4010cd7c0545e238fde45b0e9a8e88c67a43d80676a585336e3665a631
+DIST pciutils-3.10.0.tar.gz 931711 BLAKE2B 2e1255eb5508c9d1339f5bc772c2592a03cae4d8d097e8939748c9bb5d5d949be53d705d1b7d903f7ea88b2abeea91e39de16e39d2f46f0a1f62f8a9e32c6faa SHA512 3da1af4af8b0fa3cf4d3f06095524e25dc292182beec10aa2c16c5c6ba751fe469d0e7f54e43413b6f3f5bcdbd1fba3c66df1d8e39d2e1962ae36a2d9c06238e
+DIST pciutils-3.8.0.tar.gz 575255 BLAKE2B 7339189f7115af31ccc19663d54e12ef966fbcd75c6b6b4c28c8ddcaafa3e233313ca14300ef70100edb00f5f2e1e767af9d6527a9d836edd07b598f0a40f4f4 SHA512 4b0de02a54c6ed19d5ea85a01d89a62386000bc0f816498872479aba26fb007a8c394cba3f95e77a7ffe52d36ad2726169b7b83bda5ab0647f00e49d8a34bf15
+DIST pciutils-3.9.0.tar.gz 908219 BLAKE2B 59d2a151b114691980b8f0a0bfdf8e48b9e1a0a9976df6dbc94962c251d8bfc61e7bd3b0f3c47a4295f52b5df67ad0e44ed6f2e6a87728e213e4ef0b8a55c028 SHA512 e17225c2adcc21c9ff4253998aec5805ae5e031888fa01841a1ff680796f7515f9dd6e5c2e0588edba854f66f1268ba8e28ae1a2f794574e715fec8a8c8def4f
diff --git a/sys-apps/pciutils/files/pciutils-3.1.9-static-pc.patch b/sys-apps/pciutils/files/pciutils-3.1.9-static-pc.patch
deleted file mode 100644
index 9e63b7e..0000000
--- a/sys-apps/pciutils/files/pciutils-3.1.9-static-pc.patch
+++ /dev/null
@@ -1,13 +0,0 @@
-make sure all lib entries get into libs.private in the .pc file
-
---- a/lib/Makefile
-+++ b/lib/Makefile
-@@ -61,7 +61,7 @@ $(PCILIBPC): libpci.pc.in
- 		-e 's,@LIBDIR@,$(LIBDIR),' \
- 		-e 's,@IDSDIR@,$(IDSDIR),' \
- 		-e 's,@VERSION@,$(VERSION),' \
--		-e 's,@LDLIBS@,$(LDLIBS),'
-+		-e 's,@LDLIBS@,$(LDLIBS) $(LIB_LDLIBS),'
- 
- init.o: init.c $(INCL)
- access.o: access.c $(INCL)
diff --git a/sys-apps/pciutils/files/pciutils-3.8.0-no-which.patch b/sys-apps/pciutils/files/pciutils-3.8.0-no-which.patch
new file mode 100644
index 0000000..3024d73
--- /dev/null
+++ b/sys-apps/pciutils/files/pciutils-3.8.0-no-which.patch
@@ -0,0 +1,34 @@
+https://github.com/pciutils/pciutils/pull/105
+
+From 91bf24dd3c91f826377548b7e164b49cfed56f9a Mon Sep 17 00:00:00 2001
+From: Sam James <sam@gentoo.org>
+Date: Sun, 19 Jun 2022 23:52:22 +0100
+Subject: [PATCH 1/2] lib/configure: drop usage of which
+
+'which' is not required by POSIX and is an external command which may not be
+available, and 'command -v' does the job just fine.
+
+Debian and Gentoo at least are both making efforts to drop which from
+their base system package list.
+
+Signed-off-by: Sam James <sam@gentoo.org>
+--- a/lib/configure
++++ b/lib/configure
+@@ -238,7 +238,7 @@ if [ "$sys" = linux ] ; then
+ 		PKG_CONFIG=pkg-config
+ 	fi
+ 	if [ "$LIBKMOD" != no ] ; then
+-		if ! which $PKG_CONFIG >/dev/null ; then
++		if ! command -v $PKG_CONFIG >/dev/null ; then
+ 			echo_n "($PKG_CONFIG not found) "
+ 		elif $PKG_CONFIG libkmod ; then
+ 			LIBKMOD_DETECTED=1
+@@ -268,7 +268,7 @@ if [ "$sys" = linux ] ; then
+ 	if [ "$HWDB" = yes -o "$HWDB" = no ] ; then
+ 		echo "$HWDB (set manually)"
+ 	else
+-		if `which pkg-config >/dev/null && pkg-config --atleast-version=196 libudev` ; then
++		if `command -v pkg-config >/dev/null && pkg-config --atleast-version=196 libudev` ; then
+ 			HWDB=yes
+ 		else
+ 			HWDB=no
diff --git a/sys-apps/pciutils/files/pciutils-3.8.0-pkg-config.patch b/sys-apps/pciutils/files/pciutils-3.8.0-pkg-config.patch
new file mode 100644
index 0000000..4630609
--- /dev/null
+++ b/sys-apps/pciutils/files/pciutils-3.8.0-pkg-config.patch
@@ -0,0 +1,19 @@
+https://github.com/pciutils/pciutils/pull/105
+
+From a74832198ab36683a867c79b3d6ef2cac9baad55 Mon Sep 17 00:00:00 2001
+From: Sam James <sam@gentoo.org>
+Date: Sun, 19 Jun 2022 23:53:42 +0100
+Subject: [PATCH 2/2] lib/configure: respect $PKG_CONFIG completely
+
+Signed-off-by: Sam James <sam@gentoo.org>
+--- a/lib/configure
++++ b/lib/configure
+@@ -268,7 +268,7 @@ if [ "$sys" = linux ] ; then
+ 	if [ "$HWDB" = yes -o "$HWDB" = no ] ; then
+ 		echo "$HWDB (set manually)"
+ 	else
+-		if `command -v pkg-config >/dev/null && pkg-config --atleast-version=196 libudev` ; then
++		if `command -v $PKG_CONFIG >/dev/null && $PKG_CONFIG --atleast-version=196 libudev` ; then
+ 			HWDB=yes
+ 		else
+ 			HWDB=no
diff --git a/sys-apps/pciutils/metadata.xml b/sys-apps/pciutils/metadata.xml
index c6961f2..708b18c 100644
--- a/sys-apps/pciutils/metadata.xml
+++ b/sys-apps/pciutils/metadata.xml
@@ -1,13 +1,16 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!DOCTYPE pkgmetadata SYSTEM "https://www.gentoo.org/dtd/metadata.dtd">
 <pkgmetadata>
-<maintainer type="project">
-	<email>base-system@gentoo.org</email>
-	<name>Gentoo Base System</name>
-</maintainer>
-<use>
-	<flag name="dns">Enable support for querying the central database of PCI IDs using DNS</flag>
-	<flag name="kmod">Enable <pkg>sys-apps/kmod</pkg> support for the -k switch in lspci command</flag>
-	<flag name="zlib">Support compressed pci.ids database</flag>
-</use>
+	<maintainer type="project">
+		<email>base-system@gentoo.org</email>
+		<name>Gentoo Base System</name>
+	</maintainer>
+	<use>
+		<flag name="dns">Enable support for querying the central database of PCI IDs using DNS</flag>
+		<flag name="kmod">Enable <pkg>sys-apps/kmod</pkg> support for the -k switch in lspci command</flag>
+		<flag name="zlib">Support compressed pci.ids database</flag>
+	</use>
+	<upstream>
+		<remote-id type="github">pciutils/pciutils</remote-id>
+	</upstream>
 </pkgmetadata>
diff --git a/sys-apps/pciutils/pciutils-3.10.0.ebuild b/sys-apps/pciutils/pciutils-3.10.0.ebuild
new file mode 100644
index 0000000..0dd9a47
--- /dev/null
+++ b/sys-apps/pciutils/pciutils-3.10.0.ebuild
@@ -0,0 +1,174 @@
+# Copyright 1999-2023 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+inherit toolchain-funcs multilib-minimal flag-o-matic
+
+DESCRIPTION="Various utilities dealing with the PCI bus"
+HOMEPAGE="https://mj.ucw.cz/sw/pciutils/ https://git.kernel.org/?p=utils/pciutils/pciutils.git"
+SRC_URI="https://mj.ucw.cz/download/linux/pci/${P}.tar.gz"
+
+LICENSE="GPL-2"
+SLOT="0"
+KEYWORDS="*"
+IUSE="dns +kmod static-libs +udev zlib"
+REQUIRED_USE="static-libs? ( !udev )"
+
+# Have the sub-libs in RDEPEND with [static-libs] since, logically,
+# our libpci.a depends on libz.a/etc... at runtime.
+LIB_DEPEND="zlib? ( >=sys-libs/zlib-1.2.8-r1[static-libs(+),${MULTILIB_USEDEP}] )"
+DEPEND="
+	kmod? ( sys-apps/kmod )
+	udev? ( >=virtual/libudev-208[${MULTILIB_USEDEP}] )
+	static-libs? ( ${LIB_DEPEND} )
+	!static-libs? ( ${LIB_DEPEND//static-libs([+-]),} )
+"
+RDEPEND="
+	${DEPEND}
+	sys-apps/hwdata
+"
+# See bug #847133 re binutils check
+BDEPEND="
+	|| ( >=sys-devel/binutils-2.37:* sys-devel/lld sys-devel/native-cctools )
+	kmod? ( virtual/pkgconfig )
+"
+
+MULTILIB_WRAPPED_HEADERS=( /usr/include/pci/config.h )
+
+switch_config() {
+	[[ $# -ne 2 ]] && return 1
+	local opt=$1 val=$2
+
+	sed "s@^\(${opt}=\).*\$@\1${val}@" -i Makefile || die
+	return 0
+}
+
+check_binutils_version() {
+	if [[ -z ${I_KNOW_WHAT_I_AM_DOING} ]] && ! tc-ld-is-gold && ! tc-ld-is-lld ; then
+		# Okay, hopefully it's Binutils' bfd.
+		# bug #847133
+
+		# Convert this:
+		# ```
+		# GNU ld (Gentoo 2.38 p4) 2.38
+		# Copyright (C) 2022 Free Software Foundation, Inc.
+		# This program is free software; you may redistribute it under the terms of
+		# the GNU General Public License version 3 or (at your option) a later version.
+		# This program has absolutely no warranty.
+		# ```
+		#
+		# into...
+		# ```
+		# 2.38
+		# ```
+		local ver=$($(tc-getLD) --version 2>&1 | head -n 1 | rev | cut -d' ' -f1 | rev)
+
+		if ! [[ ${ver} =~ [0-9].[0-9][0-9] ]] ; then
+			# Skip if unrecognised format so we don't pass something
+			# odd into ver_cut.
+			return
+		fi
+
+		ver_major=$(ver_cut 1 "${ver}")
+		ver_minor=$(ver_cut 2 "${ver}")
+
+		# We use 2.37 here, not 2.35, as https://github.com/pciutils/pciutils/issues/98 mentions
+		# because we've had other miscompiles with older Binutils (not just build failures!)
+		# and we don't want people running any unsupported versions of Binutils. An example
+		# of this is where glibc is completely broken with old binutils: bug #802036. It's
+		# just not sustainable to support.
+		if [[ ${ver_major} -eq 2 && ${ver_minor} -lt 37 ]] ; then
+			eerror "Old version of binutils activated! ${P} cannot be built with an old version."
+			eerror "Please follow these steps:"
+			eerror "1. Select a newer binutils (>= 2.37) using binutils-config"
+			eerror " (If no such version is installed, run emerge -v1 sys-devel/binutils)"
+			eerror "2. Run: . /etc/profile"
+			eerror "3. Try emerging again with: emerge -v1 ${CATEGORY}/${P}"
+			eerror "4. Complete your world upgrade if you were performing one."
+			eerror "5. Perform a depclean (emerge -acv)"
+			eerror "\tYou MUST depclean after every world upgrade in future!"
+			die "Old binutils found! Change to a newer ld using binutils-config (bug #847133)."
+		fi
+	fi
+}
+
+pkg_pretend() {
+	[[ ${MERGE_TYPE} != binary ]] && check_binutils_version
+}
+
+pkg_setup() {
+	[[ ${MERGE_TYPE} != binary ]] && check_binutils_version
+}
+
+src_prepare() {
+	default
+
+	if use static-libs ; then
+		cp -pPR "${S}" "${S}.static" || die
+		mv "${S}.static" "${S}/static" || die
+	fi
+
+	multilib_copy_sources
+}
+
+multilib_src_configure() {
+	# bug #640836, bug #852929
+	# Seems to be fixed in 3.10.0:
+	# https://github.com/pciutils/pciutils/commit/2d16e3a7875a9cb5abd60713bb2e39b536a7dec4
+	#filter-lto
+
+	# bug #471102
+	append-lfs-flags
+}
+
+pemake() {
+	emake \
+		HOST="${CHOST}" \
+		CROSS_COMPILE="${CHOST}-" \
+		CC="$(tc-getCC)" \
+		AR="$(tc-getAR)" \
+		PKG_CONFIG="$(tc-getPKG_CONFIG)" \
+		RANLIB="$(tc-getRANLIB)" \
+		DNS=$(usex dns) \
+		IDSDIR='$(SHAREDIR)/hwdata' \
+		MANDIR='$(SHAREDIR)/man' \
+		PREFIX="${EPREFIX}/usr" \
+		SHARED="yes" \
+		STRIP="" \
+		ZLIB=$(usex zlib) \
+		PCI_COMPRESSED_IDS=0 \
+		PCI_IDS=pci.ids \
+		LIBDIR="\${PREFIX}/$(get_libdir)" \
+		LIBKMOD=$(multilib_native_usex kmod) \
+		HWDB=$(usex udev) \
+		"$@"
+}
+
+multilib_src_compile() {
+	pemake OPT="${CFLAGS}" all
+
+	if use static-libs ; then
+		pemake \
+			-C "${BUILD_DIR}"/static \
+			OPT="${CFLAGS}" \
+			SHARED="no" \
+			lib/libpci.a
+	fi
+}
+
+multilib_src_install() {
+	pemake DESTDIR="${D}" install install-lib
+
+	use static-libs && dolib.a "${BUILD_DIR}"/static/lib/libpci.a
+}
+
+multilib_src_install_all() {
+	dodoc ChangeLog README TODO
+
+	rm "${ED}"/usr/sbin/update-pciids "${ED}"/usr/share/man/man8/update-pciids.8* || die
+	rm -r "${ED}"/usr/share/hwdata || die
+
+	newinitd "${FILESDIR}"/init.d-pciparm pciparm
+	newconfd "${FILESDIR}"/conf.d-pciparm pciparm
+}
diff --git a/sys-apps/pciutils/pciutils-3.7.0-r2.ebuild b/sys-apps/pciutils/pciutils-3.7.0-r2.ebuild
deleted file mode 100644
index e1e6c1f..0000000
--- a/sys-apps/pciutils/pciutils-3.7.0-r2.ebuild
+++ /dev/null
@@ -1,111 +0,0 @@
-# Copyright 1999-2021 Gentoo Authors
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=7
-
-inherit multilib toolchain-funcs multilib-minimal flag-o-matic
-
-DESCRIPTION="Various utilities dealing with the PCI bus"
-HOMEPAGE="https://mj.ucw.cz/sw/pciutils/ https://git.kernel.org/?p=utils/pciutils/pciutils.git"
-SRC_URI="https://mj.ucw.cz/download/linux/pci/${P}.tar.gz"
-
-LICENSE="GPL-2"
-SLOT="0"
-KEYWORDS="*"
-IUSE="dns +kmod static-libs +udev zlib"
-REQUIRED_USE="static-libs? ( !udev )"
-
-# Have the sub-libs in RDEPEND with [static-libs] since, logically,
-# our libpci.a depends on libz.a/etc... at runtime.
-LIB_DEPEND="
-	zlib? ( >=sys-libs/zlib-1.2.8-r1[static-libs(+),${MULTILIB_USEDEP}] )
-"
-DEPEND="
-	kmod? ( sys-apps/kmod )
-	udev? ( >=virtual/libudev-208[${MULTILIB_USEDEP}] )
-	static-libs? ( ${LIB_DEPEND} )
-	!static-libs? ( ${LIB_DEPEND//static-libs([+-]),} )
-"
-RDEPEND="
-	${DEPEND}
-	sys-apps/hwdata
-"
-BDEPEND="kmod? ( virtual/pkgconfig )"
-
-PATCHES=(
-	"${FILESDIR}"/${PN}-3.1.9-static-pc.patch
-)
-
-MULTILIB_WRAPPED_HEADERS=( /usr/include/pci/config.h )
-
-switch_config() {
-	[[ $# -ne 2 ]] && return 1
-	local opt=$1 val=$2
-
-	sed "s@^\(${opt}=\).*\$@\1${val}@" -i Makefile || die
-	return 0
-}
-
-src_prepare() {
-	default
-
-	if use static-libs ; then
-		cp -pPR "${S}" "${S}.static" || die
-		mv "${S}.static" "${S}/static" || die
-	fi
-
-	multilib_copy_sources
-}
-
-multilib_src_configure() {
-	append-lfs-flags #471102
-}
-
-pemake() {
-	emake \
-		HOST="${CHOST}" \
-		CROSS_COMPILE="${CHOST}-" \
-		CC="$(tc-getCC)" \
-		AR="$(tc-getAR)" \
-		PKG_CONFIG="$(tc-getPKG_CONFIG)" \
-		RANLIB="$(tc-getRANLIB)" \
-		DNS=$(usex dns) \
-		IDSDIR='$(SHAREDIR)/hwdata' \
-		MANDIR='$(SHAREDIR)/man' \
-		PREFIX="${EPREFIX}/usr" \
-		SHARED="yes" \
-		STRIP="" \
-		ZLIB=$(usex zlib) \
-		PCI_COMPRESSED_IDS=0 \
-		PCI_IDS=pci.ids \
-		LIBDIR="\${PREFIX}/$(get_libdir)" \
-		LIBKMOD=$(multilib_native_usex kmod) \
-		HWDB=$(usex udev) \
-		"$@"
-}
-
-multilib_src_compile() {
-	pemake OPT="${CFLAGS}" all
-	if use static-libs ; then
-		pemake \
-			-C "${BUILD_DIR}/static" \
-			OPT="${CFLAGS}" \
-			SHARED="no" \
-			lib/libpci.a
-	fi
-}
-
-multilib_src_install() {
-	pemake DESTDIR="${D}" install install-lib
-	use static-libs && dolib.a "${BUILD_DIR}/static/lib/libpci.a"
-}
-
-multilib_src_install_all() {
-	dodoc ChangeLog README TODO
-
-	rm "${ED}"/usr/sbin/update-pciids "${ED}"/usr/share/man/man8/update-pciids.8* || die
-	rm -r "${ED}"/usr/share/hwdata || die
-
-	newinitd "${FILESDIR}"/init.d-pciparm pciparm
-	newconfd "${FILESDIR}"/conf.d-pciparm pciparm
-}
