repo/gentoo:master commit in: sys-libs/glibc/

Andreas K. Hüttel <[email protected]>
Newsgroups gmane.linux.gentoo.cvs
Message-ID <1786630279.79133c41498ae7622cb1635efb5771ff2fd362a4.dilfridge@gentoo>
commit:     79133c41498ae7622cb1635efb5771ff2fd362a4
Author:     Andreas K. Hüttel <dilfridge <AT> gentoo <DOT> org>
AuthorDate: Thu Aug 13 14:11:19 2026 +0000
Commit:     Andreas K. Hüttel <dilfridge <AT> gentoo <DOT> org>
CommitDate: Thu Aug 13 14:11:19 2026 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=79133c41

sys-libs/glibc: drop 2.42-r5, 2.42-r6, 2.43, 2.43-r1

Signed-off-by: Andreas K. Hüttel <dilfridge <AT> gentoo.org>

 sys-libs/glibc/Manifest             |    4 -
 sys-libs/glibc/glibc-2.42-r5.ebuild | 1861 ----------------------------------
 sys-libs/glibc/glibc-2.42-r6.ebuild | 1861 ----------------------------------
 sys-libs/glibc/glibc-2.43-r1.ebuild | 1897 ----------------------------------
 sys-libs/glibc/glibc-2.43.ebuild    | 1899 -----------------------------------
 5 files changed, 7522 deletions(-)

diff --git a/sys-libs/glibc/Manifest b/sys-libs/glibc/Manifest
index 21650b139dd3..e6103b3c9ac0 100644
--- a/sys-libs/glibc/Manifest
+++ b/sys-libs/glibc/Manifest
@@ -27,13 +27,9 @@ DIST glibc-2.40-patches-11.tar.xz 227044 BLAKE2B 2a8c799a88596f3fc28bc45fc206f23
 DIST glibc-2.40.tar.xz 18752204 BLAKE2B 8593cab5b2549b77159b6866fbb40b917e491fd5bc0814f7f85b6529166d78d4583436450c479b86cdfe468304fc4d2a9ba8294230a55dbc4c15e89c3ab6c000 SHA512 33caf91dbfddde6480b7cdf7a68b36aff8c522bfee56160af26af297f1b768668edb08bc4e1a7ff61c64721e3c1d49c347a5dd01c5edd3b914ee6479c8b27885
 DIST glibc-2.41-patches-12.tar.xz 168252 BLAKE2B c844fba0871e7aa60af636c0569d01beebd314367081313635598074643449cc047a07b88979d341ba8327ac7becd3aef8b20662c8490565d29c49ade474cb8b SHA512 b780db3e31f3724cc19129bc11f49e4ad649a1a2b8174f990041640c81e03fcda3c5f3c25dffd215c7b1173e5ebb226312af58112e9798ba7254889d7b05f454
 DIST glibc-2.41.tar.xz 19344868 BLAKE2B 4da62f489ba7a95bb069c2cfea8cf78e4d37e3a5f7e1736239670ba1dca12b69aa77bd00ced078c27d91b1e622c58cbd70258161a9d18c5b3bcc95863b8d744d SHA512 894a3e5a796bc13df30c26a5bfbe4d60b5dbdaac54e7763432235124b547070c7dda88c50584536870cab79183d8cad73a3ac6ed09bfe54fa8482aad07253169
-DIST glibc-2.42-patches-7.tar.xz 69864 BLAKE2B 59c1ec784d49ccce40c14a3b09c3edb7ad557677dc9ab9af526ca27b3716fa3727e10ef34c2c1ea09a9855ec0d8553ce873cbbf75af57e6e0717ef97d1d37def SHA512 9ac6ba2392b76dce2cf39f6e7b054166d0fc07395b7958b9a84bbb1654ae3e3548113e5fe5bfcd4b9000668c4ea07a70c8c1e5688c0e72e613462383222ae48f
-DIST glibc-2.42-patches-8.tar.xz 77696 BLAKE2B dfde3bce38f34d99e1011532ce19fdb34cc1f59fae0d8d6df4b285520e7e7c2995d14be84dc0127346b38ab9e313c4aa0eb4c112a49dc6f28822f55f16bec206 SHA512 d482b7aff496db59efb0c91f2eb4b5302374986fa241e9f9248bfceb6296c1b65ca26160019564b3f40c7d0f7512ed096d771b98ce563d4889a3499880cd9c27
 DIST glibc-2.42-patches-9.tar.xz 86380 BLAKE2B ecc9869d2e3c5e33170c05dc02c47e033450e19f590e4eeb63a5735773fc81b907038a22a990412596505b0040b4378ecffef0eec1db43602d335408b15fcc4b SHA512 92a207e8de80914437e05d59ae070331afc5fe8f48459c0608961277150208f7e4eb73838b1cfdcb737ce9d7fb2b7b96711c33f134d213288316e10430a89fc9
 DIST glibc-2.42.tar.xz 19930508 BLAKE2B 6ffabfe7942034a5a4fb5097679cb47bc3431eb2a3864af07cea0cb6aa5db63fbaf6f026b3c9299e00268058a6762eb21e92499f012d552ed87d65c7ffbd0bbe SHA512 73a617db8e0f0958c0575f7a1c5a35b72b7e070b6cbdd02a9bb134995ca7ca0909f1e50d7362c53d2572d72f1879bb201a61d5275bac16136895d9a34ef0c068
 DIST glibc-2.42.tar.xz.sig 981 BLAKE2B 890e637c444982b2b07fac4607ce3e9f416c9c7688267ebd135e53878d93db95c609facfa1f347c59f23776cafb4b5df8ffb60235c89be451276202dd676dab2 SHA512 d868220778e98d24aead10a585e6a903892e4d043cd96a404634c8aa03d001d624a46a5c0fe13c86f83f66396a1f360a10990966fe377e98a722914b5087575d
-DIST glibc-2.43-patches-1.tar.xz 23328 BLAKE2B 4d7d719d234af725861b06eee6b86c269c88386efbd6dc411fa52c196b00541c07247ef8d0e2eea02d0369da0f09c440c8ccef4a03881aad568a84978eecb17e SHA512 33d260fcfe96e5b9bf85bd12cc8f83915b197b1bf512f6c06f8542df01803b1b5152dd2e60723b193ad26885fb1473f750d556a1abfe213d39d6df30ad19b9a1
-DIST glibc-2.43-patches-2.tar.xz 90172 BLAKE2B 9927b0bfc836597047e2c268a1d5c7b593f0be1e89f5ed5156c8bb34298f13bdd4d80fd813b4535442ce6d1c535753b6f3cbca4f3f0e9bdda890029e1e3d2de3 SHA512 363f815b41e9ffe809e1db61864efa4c61666e7033df95191d58da44582a64555cedb9197e6d6a8fb2a6c6f0609cf07ca5cab2ab2f840f723bbbc4a099d3d00e
 DIST glibc-2.43-patches-3.tar.xz 99856 BLAKE2B 4bc4b2fc9b23e7e2d295b8f87919ed676147d3520b27e773db48200768c3f6647a4383fcf8962881611d622ddbc71fe1bc3732fbb7df5c1968ea78ab047226a6 SHA512 0070d0b8552f8385e3133f522dfb563b9fa5f5663e1cce3c4b99a4e1d9da57a4c0305e3908f1c739f4e17113f4775b253af83fc8ee3885a0305aebc970314edf
 DIST glibc-2.43-patches-4.tar.xz 131800 BLAKE2B 011f236e3ad30a61fc0592787eb3db875e066a696f2765cb9ebbf6cfbc29c2038e660415661c7aae47f9f5fb145655338bed78bf0ca8815d65ee7e25b3bce10a SHA512 acc4ac2ad4f17a3f0e824cf1674768a75776890ca11c11bc8d1c7d85cc5a074f678f77746ea766301c031012fef3edb0807abc87afd201ffe77036c0036ee660
 DIST glibc-2.43.tar.xz 20297012 BLAKE2B a764edf3d0d52809aa94cf1a8f73341159d226ecc2a595aa3c9e1d1fd4b2d4eb9a599d70bda8812b73d8ef58b39746efdd34026772e38c0f091fe071d461ea98 SHA512 25765f86bf54a22fc69dd13023ec9be59bd7e1f9d6ea1630cf21851898df2043bb8a01538c4b5fdd06495d0163289362b0768b391b0617f709b89a777168291c

diff --git a/sys-libs/glibc/glibc-2.42-r5.ebuild b/sys-libs/glibc/glibc-2.42-r5.ebuild
deleted file mode 100644
index 4aa40f80a75c..000000000000
--- a/sys-libs/glibc/glibc-2.42-r5.ebuild
+++ /dev/null
@@ -1,1861 +0,0 @@
-# Copyright 1999-2026 Gentoo Authors
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=8
-
-# Bumping notes: https://wiki.gentoo.org/wiki/Project:Toolchain/sys-libs/glibc
-# Please read & adapt the page as necessary if obsolete.
-
-PYTHON_COMPAT=( python3_{11..14} )
-TMPFILES_OPTIONAL=1
-
-EMULTILIB_PKG="true"
-
-# Gentoo patchset (ignored for live ebuilds)
-PATCH_VER=7
-PATCH_DEV=dilfridge
-
-# gcc mulitilib bootstrap files version
-GCC_BOOTSTRAP_VER=20201208
-
-# systemd integration version
-GLIBC_SYSTEMD_VER=20210729
-
-# Minimum kernel version that glibc requires
-MIN_KERN_VER="3.2.0"
-
-# Minimum pax-utils version needed (which contains any new syscall changes for
-# its seccomp filter!). Please double check this!
-MIN_PAX_UTILS_VER="1.3.3"
-
-# Minimum systemd version needed (which contains any new syscall changes for
-# its seccomp filter!). Please double check this!
-MIN_SYSTEMD_VER="254.9-r1"
-
-VERIFY_SIG_OPENPGP_KEY_PATH=/usr/share/openpgp-keys/glibc.asc
-
-inherit python-any-r1 prefix preserve-libs toolchain-funcs flag-o-matic gnuconfig \
-	multilib systemd multiprocessing tmpfiles eapi9-ver verify-sig
-
-DESCRIPTION="GNU libc C library"
-HOMEPAGE="https://www.gnu.org/software/libc/"
-
-if [[ ${PV} == *9999 ]]; then
-	inherit git-r3
-else
-	KEYWORDS="~alpha amd64 arm arm64 ~hppa ~loong ~m68k ~mips ppc ppc64 ~riscv ~s390 ~sparc x86"
-	SRC_URI="mirror://gnu/glibc/${P}.tar.xz"
-	SRC_URI+=" verify-sig? ( mirror://gnu/glibc/${P}.tar.xz.sig )"
-	SRC_URI+=" https://dev.gentoo.org/~${PATCH_DEV}/distfiles/${P}-patches-${PATCH_VER}.tar.xz"
-fi
-
-SRC_URI+=" multilib-bootstrap? ( https://dev.gentoo.org/~dilfridge/distfiles/gcc-multilib-bootstrap-${GCC_BOOTSTRAP_VER}.tar.xz )"
-SRC_URI+=" systemd? ( https://gitweb.gentoo.org/proj/toolchain/glibc-systemd.git/snapshot/glibc-systemd-${GLIBC_SYSTEMD_VER}.tar.gz )"
-
-LICENSE="LGPL-2.1+ BSD HPND ISC inner-net rc PCRE"
-SLOT="2.2"
-IUSE="audit caps cet compile-locales custom-cflags doc gd hash-sysv-compat headers-only +multiarch multilib multilib-bootstrap nscd perl profile selinux sframe +ssp stack-realign +static-libs suid systemd systemtap test vanilla"
-
-# Here's how the cross-compile logic breaks down ...
-#  CTARGET - machine that will target the binaries
-#  CHOST   - machine that will host the binaries
-#  CBUILD  - machine that will build the binaries
-# If CTARGET != CHOST, it means you want a libc for cross-compiling.
-# If CHOST != CBUILD, it means you want to cross-compile the libc.
-#  CBUILD = CHOST = CTARGET    - native build/install
-#  CBUILD != (CHOST = CTARGET) - cross-compile a native build
-#  (CBUILD = CHOST) != CTARGET - libc for cross-compiler
-#  CBUILD != CHOST != CTARGET  - cross-compile a libc for a cross-compiler
-# For install paths:
-#  CHOST = CTARGET  - install into /
-#  CHOST != CTARGET - install into /usr/CTARGET/
-#
-export CBUILD=${CBUILD:-${CHOST}}
-export CTARGET=${CTARGET:-${CHOST}}
-if [[ ${CTARGET} == ${CHOST} ]] ; then
-	if [[ ${CATEGORY} == cross-* ]] ; then
-		export CTARGET=${CATEGORY#cross-}
-	fi
-fi
-
-# Note [Disable automatic stripping]
-# Disabling automatic stripping for a few reasons:
-# - portage's attempt to strip breaks non-native binaries at least on
-#   arm: bug #697428
-# - portage's attempt to strip libpthread.so.0 breaks gdb thread
-#   enumeration: bug #697910. This is quite subtle:
-#   * gdb uses glibc's libthread_db-1.0.so to enumerate threads.
-#   * libthread_db-1.0.so needs access to libpthread.so.0 local symbols
-#     via 'ps_pglobal_lookup' symbol defined in gdb.
-#   * 'ps_pglobal_lookup' uses '.symtab' section table to resolve all
-#     known symbols in 'libpthread.so.0'. Specifically 'nptl_version'
-#     (unexported) is used to sanity check compatibility before enabling
-#     debugging.
-#     Also see https://sourceware.org/gdb/wiki/FAQ#GDB_does_not_see_any_threads_besides_the_one_in_which_crash_occurred.3B_or_SIGTRAP_kills_my_program_when_I_set_a_breakpoint
-#   * normal 'strip' command trims '.symtab'
-#   Thus our main goal here is to prevent 'libpthread.so.0' from
-#   losing it's '.symtab' entries.
-# - similarly, valgrind requires knowledge about symbols in ld.so:
-#	bug #920753
-# As Gentoo's strip does not allow us to pass less aggressive stripping
-# options and does not check the machine target we strip selectively.
-
-# We need a new-enough binutils/gcc to match upstream baseline.
-# Also we need to make sure our binutils/gcc supports TLS,
-# and that gcc already contains the hardened patches.
-# Lastly, let's avoid some openssh nastiness, bug 708224, as
-# convenience to our users.
-
-IDEPEND="
-	!compile-locales? ( sys-apps/locale-gen )
-"
-BDEPEND="
-	${PYTHON_DEPS}
-	>=app-misc/pax-utils-${MIN_PAX_UTILS_VER}
-	sys-devel/bison
-	compile-locales? ( sys-apps/locale-gen )
-	doc? (
-		dev-lang/perl
-		sys-apps/texinfo
-	)
-	sframe? ( >=sys-devel/binutils-2.45 )
-	test? (
-		dev-lang/perl
-		>=net-dns/libidn2-2.3.0
-		sys-apps/gawk[mpfr]
-	)
-	verify-sig? ( sec-keys/openpgp-keys-glibc )
-"
-COMMON_DEPEND="
-	gd? ( media-libs/gd:2= )
-	nscd? ( selinux? (
-		audit? ( sys-process/audit )
-		caps? ( sys-libs/libcap )
-	) )
-	suid? ( caps? ( sys-libs/libcap ) )
-	selinux? ( sys-libs/libselinux )
-	systemtap? ( dev-debug/systemtap )
-"
-DEPEND="${COMMON_DEPEND}
-"
-RDEPEND="${COMMON_DEPEND}
-	!<app-misc/pax-utils-${MIN_PAX_UTILS_VER}
-	!<sys-apps/systemd-${MIN_SYSTEMD_VER}
-	perl? ( dev-lang/perl )
-"
-
-RESTRICT="!test? ( test )"
-
-if [[ ${CATEGORY} == cross-* ]] ; then
-	BDEPEND+=" !headers-only? (
-		>=${CATEGORY}/binutils-2.27
-		>=${CATEGORY}/gcc-6.2
-	)"
-	[[ ${CATEGORY} == *-linux* ]] && DEPEND+=" ${CATEGORY}/linux-headers"
-else
-	BDEPEND+="
-		>=sys-devel/binutils-2.27
-		>=sys-devel/gcc-6.2
-	"
-	DEPEND+=" virtual/os-headers "
-	RDEPEND+="
-		>=net-dns/libidn2-2.3.0
-		vanilla? ( !sys-libs/timezone-data )
-	"
-	PDEPEND+=" !vanilla? ( sys-libs/timezone-data )"
-fi
-
-# Ignore tests whitelisted below
-GENTOO_GLIBC_XFAIL_TESTS="${GENTOO_GLIBC_XFAIL_TESTS:-yes}"
-
-# The following tests fail due to the Gentoo build system and are thus
-# executed but ignored:
-XFAIL_TEST_LIST=(
-	# buggy test, assumes /dev/ and /dev/null on a single filesystem
-	# 'mount --bind /dev/null /chroot/dev/null' breaks it.
-	# https://sourceware.org/PR25909
-	tst-support_descriptors
-
-	# The following tests fail only inside portage
-	# https://bugs.gentoo.org/831267
-	tst-system
-	tst-strerror
-	tst-strsignal
-
-	# Fails with certain PORTAGE_NICENESS/PORTAGE_SCHEDULING_POLICY
-	tst-sched1
-	tst-sched_setattr
-	tst-sched_setattr-thread
-
-	# Fails regularly, unreliable
-	tst-valgrind-smoke
-
-	# https://sourceware.org/bugzilla/show_bug.cgi?id=31877 (bug #927973)
-	tst-shstk-legacy-1g
-
-	# https://sourceware.org/bugzilla/show_bug.cgi?id=33239
-	test-double-compoundn
-	test-float-compoundn
-	test-float32-compoundn
-	test-float32x-compoundn
-	test-float64-compoundn
-
-	# Fails only in portage. Needs investigation.
-	tst-setvbuf2
-)
-
-XFAIL_NSPAWN_TEST_LIST=(
-	# These tests need to be adapted to handle EPERM/ENOSYS(?) properly
-	# upstream, as systemd-nspawn's default seccomp whitelist is too strict.
-	# https://sourceware.org/PR30603
-	test-errno-linux
-	tst-aarch64-pkey
-	tst-bz21269
-	tst-mlock2
-	tst-ntp_gettime
-	tst-ntp_gettime-time64
-	tst-ntp_gettimex
-	tst-ntp_gettimex-time64
-	tst-pkey
-	tst-process_mrelease
-	tst-adjtime
-	tst-adjtime-time64
-	tst-clock2
-	tst-clock2-time64
-
-	# These fail if --suppress-sync and/or low priority is set
-	tst-sync_file_range
-	test-errno
-)
-
-#
-# Small helper functions
-#
-
-dump_build_environment() {
-	einfo ==== glibc build environment ========================================================
-	local v
-	for v in ABI CBUILD CHOST CTARGET CBUILD_OPT CTARGET_OPT CC CXX CPP LD \
-		{AS,C,CPP,CXX,LD}FLAGS MAKEINFO NM AR AS STRIP RANLIB OBJCOPY \
-		STRINGS OBJDUMP READELF; do
-		einfo " $(printf '%15s' ${v}:)   ${!v}"
-	done
-	einfo =====================================================================================
-}
-
-is_crosscompile() {
-	[[ ${CHOST} != ${CTARGET} ]]
-}
-
-is_linux() {
-	[[ ${CTARGET} == *-linux-* ]]
-}
-
-is_hurd() {
-	# Let's hope this holds for a long time
-	[[ ${CTARGET} != *-linux-* ]]
-}
-
-just_headers() {
-	is_crosscompile && use headers-only
-}
-
-alt_prefix() {
-	is_crosscompile && echo /usr/${CTARGET}
-}
-
-# This prefix is applicable to CHOST when building against this
-# glibc. It is baked into the library at configure time.
-host_eprefix() {
-	is_crosscompile || echo "${EPREFIX}"
-}
-
-# This prefix is applicable to CBUILD when building against this
-# glibc. It determines the destination path at install time.
-build_eprefix() {
-	is_crosscompile && echo "${EPREFIX}"
-}
-
-alt_headers() {
-	echo $(alt_prefix)/usr/include
-}
-alt_libdir() {
-	echo $(alt_prefix)/$(get_libdir)
-}
-alt_usrlibdir() {
-	echo $(alt_prefix)/usr/$(get_libdir)
-}
-
-builddir() {
-	echo "${WORKDIR}/build-${ABI}-${CTARGET}-$1"
-}
-
-do_compile_test() {
-	local ret save_cflags=${CFLAGS}
-	CFLAGS+=" $1"
-	shift
-
-	pushd "${T}" >/dev/null
-
-	rm -f glibc-test*
-	printf '%b' "$*" > glibc-test.c
-
-	# We assume CC is already set up.
-	nonfatal emake glibc-test
-	ret=$?
-
-	popd >/dev/null
-
-	CFLAGS=${save_cflags}
-	return ${ret}
-}
-
-do_run_test() {
-	local ret
-
-	if [[ ${MERGE_TYPE} == "binary" ]] ; then
-		# ignore build failures when installing a binary package #324685
-		CC="${glibc__ORIG_CC}" CXX="${glibc__ORIG_CXX}" CPP="${glibc__ORIG_CPP}" \
-			CFLAGS="-O2" LDFLAGS="" do_compile_test "" "$@" 2>/dev/null || return 0
-	else
-		ebegin "Performing simple compile test for ABI=${ABI}"
-		if ! do_compile_test "" "$@" ; then
-			ewarn "Simple build failed ... assuming this is desired #324685"
-			eend 1
-			return 0
-		else
-			eend 0
-		fi
-	fi
-
-	pushd "${T}" >/dev/null
-
-	./glibc-test
-	ret=$?
-	rm -f glibc-test*
-
-	popd >/dev/null
-
-	return ${ret}
-}
-
-setup_target_flags() {
-	# This largely mucks with compiler flags.  None of which should matter
-	# when building up just the headers.
-	just_headers && return 0
-
-	case $(tc-arch) in
-		x86)
-			# -march needed for #185404 #199334
-			# TODO: When creating the first glibc cross-compile, this test will
-			# always fail as it does a full link which in turn requires glibc.
-			# Probably also applies when changing multilib profile settings (e.g.
-			# enabling x86 when the profile was amd64-only previously).
-			# We could change main to _start and pass -nostdlib here so that we
-			# only test the gcc code compilation.  Or we could do a compile and
-			# then look for the symbol via scanelf.
-			if ! do_compile_test "" 'void f(int i, void *p) {if (__sync_fetch_and_add(&i, 1)) f(i, p);}\nint main(){return 0;}\n'; then
-				local t=${CTARGET_OPT:-${CTARGET}}
-				t=${t%%-*}
-				filter-flags '-march=*'
-				export CFLAGS="-march=${t} ${CFLAGS}"
-				einfo "Auto adding -march=${t} to CFLAGS #185404"
-			fi
-			# For compatibility with older binaries at slight performance cost.
-			use stack-realign && export CFLAGS+=" -mstackrealign"
-		;;
-		amd64)
-			# -march needed for #185404 #199334
-			# TODO: See cross-compile issues listed above for x86.
-			if [[ ${ABI} == x86 ]]; then
-				if ! do_compile_test "${CFLAGS_x86}" 'void f(int i, void *p) {if (__sync_fetch_and_add(&i, 1)) f(i, p);}\nint main(){return 0;}\n'; then
-					local t=${CTARGET_OPT:-${CTARGET}}
-					t=${t%%-*}
-					# Normally the target is x86_64-xxx, so turn that into the -march that
-					# gcc actually accepts. #528708
-					[[ ${t} == "x86_64" ]] && t="x86-64"
-					filter-flags '-march=*'
-					# ugly, ugly, ugly.  ugly.
-					CFLAGS_x86=$(CFLAGS=${CFLAGS_x86}; filter-flags '-march=*'; echo "${CFLAGS}")
-					export CFLAGS_x86="${CFLAGS_x86} -march=${t}"
-					einfo "Auto adding -march=${t} to CFLAGS_x86 #185404 (ABI=${ABI})"
-				fi
-				# For compatibility with older binaries at slight performance cost.
-				use stack-realign && export CFLAGS_x86+=" -mstackrealign"
-			fi
-		;;
-		mips)
-			# The mips abi cannot support the GNU style hashes. #233233
-			filter-ldflags -Wl,--hash-style=gnu -Wl,--hash-style=both
-		;;
-		ppc|ppc64)
-			# Many arch-specific implementations do not work on ppc with
-			# cache-block not equal to 128 bytes. This breaks memset:
-			#   https://sourceware.org/PR26522
-			#   https://bugs.gentoo.org/737996
-			# Use default -mcpu=. For ppc it means non-multiarch setup.
-			filter-flags '-mcpu=*'
-		;;
-		sparc)
-			# Both sparc and sparc64 can use -fcall-used-g6.  -g7 is bad, though.
-			filter-flags "-fcall-used-g7"
-			append-flags "-fcall-used-g6"
-
-			local cpu
-			case ${CTARGET} in
-			sparc64-*)
-				cpu="sparc64"
-				case $(get-flag mcpu) in
-				v9)
-					# We need to force at least v9a because the base build doesn't
-					# work with just v9.
-					# https://sourceware.org/bugzilla/show_bug.cgi?id=19477
-					append-flags "-Wa,-xarch=v9a"
-					;;
-				esac
-				;;
-			sparc-*)
-				case $(get-flag mcpu) in
-				v8|supersparc|hypersparc|leon|leon3)
-					cpu="sparcv8"
-					;;
-				*)
-					cpu="sparcv9"
-					;;
-				esac
-			;;
-			esac
-			[[ -n ${cpu} ]] && CTARGET_OPT="${cpu}-${CTARGET#*-}"
-		;;
-	esac
-}
-
-setup_flags() {
-	# Make sure host make.conf doesn't pollute us
-	if is_crosscompile || tc-is-cross-compiler ; then
-		CHOST=${CTARGET} strip-unsupported-flags
-	fi
-
-	# Store our CFLAGS because it's changed depending on which CTARGET
-	# we are building when pulling glibc on a multilib profile
-	CFLAGS_BASE=${CFLAGS_BASE-${CFLAGS}}
-	CFLAGS=${CFLAGS_BASE}
-	CXXFLAGS_BASE=${CXXFLAGS_BASE-${CXXFLAGS}}
-	CXXFLAGS=${CXXFLAGS_BASE}
-	ASFLAGS_BASE=${ASFLAGS_BASE-${ASFLAGS}}
-	ASFLAGS=${ASFLAGS_BASE}
-
-	# Allow users to explicitly avoid flag sanitization via
-	# USE=custom-cflags.
-	if ! use custom-cflags; then
-		# Over-zealous CFLAGS can often cause problems.  What may work for one
-		# person may not work for another.  To avoid a large influx of bugs
-		# relating to failed builds, we strip most CFLAGS out to ensure as few
-		# problems as possible.
-		strip-flags
-
-		# Allow -O2 and -O3, but nothing else for now.
-		# TODO: Test -Os, -Oz.
-		if ! is-flagq '-O@(2|3)' ; then
-			# Lock glibc at -O2. We want to be conservative here.
-			filter-flags '-O?'
-			append-flags -O2
-		fi
-	fi
-
-	strip-unsupported-flags
-	filter-lto
-	filter-flags -m32 -m64 '-mabi=*'
-
-	# glibc aborts if rpath is set by LDFLAGS
-	filter-ldflags '-Wl,-rpath=*'
-
-	# ld can't use -r & --relax at the same time, bug #788901
-	# https://sourceware.org/PR27837
-	filter-ldflags '-Wl,--relax'
-
-	# Flag added for cross-prefix, but causes ldconfig to segfault. Not needed
-	# anyway because glibc already handles this by itself.
-	filter-ldflags '-Wl,--dynamic-linker=*'
-
-	# Fails to link (bug #940709) in some cases but even if it manages to,
-	# subtle runtime breakage will occur because the linker scripts need
-	# adaptation. Mentioned in PR21557#c0.
-	filter-ldflags '-Wl,--gc-sections'
-
-	# some weird software relies on sysv hashes in glibc, bug 863863, bug 864100
-	# we have to do that here already so mips can filter it out again :P
-	if use hash-sysv-compat ; then
-		append-ldflags '-Wl,--hash-style=both'
-	fi
-
-	# #492892
-	filter-flags -frecord-gcc-switches
-
-	# #898098
-	filter-flags -fno-builtin
-
-	# #798774
-	filter-flags -fno-semantic-interposition
-
-	# #829583
-	filter-lfs-flags
-
-	unset CBUILD_OPT CTARGET_OPT
-	if use multilib ; then
-		CTARGET_OPT=$(get_abi_CTARGET)
-		[[ -z ${CTARGET_OPT} ]] && CTARGET_OPT=$(get_abi_CHOST)
-	fi
-
-	setup_target_flags
-
-	if [[ -n ${CTARGET_OPT} && ${CBUILD} == ${CHOST} ]] && ! is_crosscompile; then
-		CBUILD_OPT=${CTARGET_OPT}
-	fi
-
-	# glibc's headers disallow -O0 and fail at build time:
-	#  include/libc-symbols.h:75:3: #error "glibc cannot be compiled without optimization"
-	# https://sourceware.org/glibc/wiki/FAQ#Why_do_I_get:.60.23error_.22glibc_cannot_be_compiled_without_optimization.22.27.2C_when_trying_to_compile_GNU_libc_with_GNU_CC.3F
-	replace-flags -O0 -O1
-
-	# Similar issues as with SSP. Can't inject yourself that early.
-	filter-flags '-fsanitize=*'
-
-	# See end of bug #830454; we handle this via USE=cet
-	filter-flags '-fcf-protection=*'
-
-	# When bootstrapping, we may have a situation where
-	# CET-enabled gcc from seed is used to build CET-disabled
-	# glibc. As such, gcc implicitly enables CET if no
-	# -fcf-protection flag is passed. For a typical package it
-	# should not be a problem, but for glibc it matters as it is
-	# dealing with CET in ld.so. So if CET is supposed to be
-	# disabled for glibc, be explicit about it.
-	if ! use cet; then
-		case ${ABI}-${CTARGET} in
-			amd64-x86_64-*|x32-x86_64-*-*-gnux32)
-				append-flags '-fcf-protection=none'
-				;;
-			arm64-aarch64*)
-				append-flags '-mbranch-protection=none'
-				;;
-		esac
-	fi
-}
-
-use_multiarch() {
-	# Allow user to disable runtime arch detection in multilib.
-	use multiarch || return 1
-	# Make sure binutils is new enough to support indirect functions,
-	# #336792. This funky sed supports gold and bfd linkers.
-	local bver nver
-	bver=$($(tc-getLD ${CTARGET}) -v | sed -n -r '1{s:[^0-9]*::;s:^([0-9.]*).*:\1:;p}')
-	case $(tc-arch ${CTARGET}) in
-	amd64|x86) nver="2.20" ;;
-	arm)       nver="2.22" ;;
-	hppa)      nver="2.23" ;;
-	ppc|ppc64) nver="2.20" ;;
-	# ifunc support was added in 2.23, but glibc also needs
-	# machinemode which is in 2.24.
-	s390)      nver="2.24" ;;
-	sparc)     nver="2.21" ;;
-	*)         return 1 ;;
-	esac
-	ver_test ${bver} -ge ${nver}
-}
-
-# Setup toolchain variables that had historically been defined in the
-# profiles for these archs.
-setup_env() {
-	# silly users
-	unset LD_RUN_PATH
-	unset LD_ASSUME_KERNEL
-
-	if is_crosscompile || tc-is-cross-compiler ; then
-		multilib_env ${CTARGET_OPT:-${CTARGET}}
-
-		if ! use multilib ; then
-			MULTILIB_ABIS=${DEFAULT_ABI}
-		else
-			MULTILIB_ABIS=${MULTILIB_ABIS:-${DEFAULT_ABI}}
-		fi
-
-		# If the user has CFLAGS_<CTARGET> in their make.conf, use that,
-		# and fall back on CFLAGS.
-		local VAR=CFLAGS_${CTARGET//[-.]/_}
-		CFLAGS=${!VAR-${CFLAGS}}
-		einfo " $(printf '%15s' 'Manual CFLAGS:')   ${CFLAGS}"
-	fi
-
-	setup_flags
-
-	export ABI=${ABI:-${DEFAULT_ABI:-default}}
-
-	if just_headers ; then
-		# Avoid mixing host's CC and target's CFLAGS_${ABI}:
-		# At this bootstrap stage we have only binutils for
-		# target but not compiler yet.
-		einfo "Skip CC ABI injection. We can't use (cross-)compiler yet."
-		return 0
-	fi
-
-	# glibc does not work with non-bfd (for various reasons):
-	# * gold (bug #269274)
-	# * mold (bug #860900)
-	tc-ld-force-bfd
-
-	if use doc ; then
-		export MAKEINFO=makeinfo
-	else
-		export MAKEINFO=/dev/null
-	fi
-
-	# Reset CC and CXX to the value at start of emerge
-	export CC=${glibc__ORIG_CC:-${CC:-$(tc-getCC ${CTARGET})}}
-	export CXX=${glibc__ORIG_CXX:-${CXX:-$(tc-getCXX ${CTARGET})}}
-	export CPP=${glibc__ORIG_CPP:-${CPP:-$(tc-getCPP ${CTARGET})}}
-
-	# and make sure glibc__ORIG_CC and glibc__ORIG_CXX is defined now.
-	export glibc__ORIG_CC=${CC}
-	export glibc__ORIG_CXX=${CXX}
-	export glibc__ORIG_CPP=${CPP}
-
-	if tc-is-clang && ! use custom-cflags && ! is_crosscompile ; then
-		export glibc__force_gcc=yes
-		# once this is toggled on, it needs to stay on, since with CPP manipulated
-		# tc-is-clang does not work correctly anymore...
-	fi
-
-	if [[ ${glibc__force_gcc} == "yes" ]] ; then
-		# If we are running in an otherwise clang/llvm environment, we need to
-		# recover the proper gcc and binutils settings here, at least until glibc
-		# is finally building with clang. So let's override everything that is
-		# set in the clang profiles.
-		# Want to shoot yourself into the foot? Set USE=custom-cflags, that's always
-		# a good start into that direction.
-		# Also, if you're crosscompiling, let's assume you know what you are doing.
-		# Hopefully.
-		# Last, we need the settings of the *build* environment, not of the
-		# target environment...
-
-		local current_binutils_path=$(env CHOST="${CBUILD}" ROOT="${BROOT}" binutils-config -B "${CTARGET}")
-		local current_gcc_path=$(env ROOT="${BROOT}" gcc-config -B)
-		einfo "Overriding clang configuration, since it won't work here"
-
-		export CC="${current_gcc_path}/${CTARGET}-gcc"
-		export CPP="${current_gcc_path}/${CTARGET}-cpp"
-		export CXX="${current_gcc_path}/${CTARGET}-g++"
-		export LD="${current_binutils_path}/ld.bfd"
-		export AR="${current_binutils_path}/ar"
-		export AS="${current_binutils_path}/as"
-		export NM="${current_binutils_path}/nm"
-		export STRIP="${current_binutils_path}/strip"
-		export RANLIB="${current_binutils_path}/ranlib"
-		export OBJCOPY="${current_binutils_path}/objcopy"
-		export STRINGS="${current_binutils_path}/strings"
-		export OBJDUMP="${current_binutils_path}/objdump"
-		export READELF="${current_binutils_path}/readelf"
-		export ADDR2LINE="${current_binutils_path}/addr2line"
-
-		# do we need to also do flags munging here? yes! at least...
-		filter-flags '-fuse-ld=*'
-		filter-flags '-D_FORTIFY_SOURCE=*'
-
-	else
-
-		# this is the "normal" case
-
-		export CC="$(tc-getCC ${CTARGET})"
-		export CXX="$(tc-getCXX ${CTARGET})"
-		export CPP="$(tc-getCPP ${CTARGET})"
-
-		# Always use tuple-prefixed toolchain. For non-native ABI glibc's configure
-		# can't detect them automatically due to ${CHOST} mismatch and fallbacks
-		# to unprefixed tools. Similar to multilib.eclass:multilib_toolchain_setup().
-		export NM="$(tc-getNM ${CTARGET})"
-		export READELF="$(tc-getREADELF ${CTARGET})"
-
-	fi
-
-	# We need to export CFLAGS with abi information in them because glibc's
-	# configure script checks CFLAGS for some targets (like mips).  Keep
-	# around the original clean value to avoid appending multiple ABIs on
-	# top of each other. (Why does the comment talk about CFLAGS if the code
-	# acts on CC?)
-	export glibc__GLIBC_CC=${CC}
-	export glibc__GLIBC_CXX=${CXX}
-	export glibc__GLIBC_CPP=${CPP}
-
-	export glibc__abi_CFLAGS="$(get_abi_CFLAGS)"
-
-	# CFLAGS can contain ABI-specific flags like -mfpu=neon, see bug #657760
-	# To build .S (assembly) files with the same ABI-specific flags
-	# upstream currently recommends adding CFLAGS to CC/CXX:
-	#    https://sourceware.org/PR23273
-	# Note: Passing CFLAGS via CPPFLAGS overrides glibc's arch-specific CFLAGS
-	# and breaks multiarch support. See 659030#c3 for an example.
-	# The glibc configure script doesn't properly use LDFLAGS all the time.
-	export CC="${glibc__GLIBC_CC} ${glibc__abi_CFLAGS} ${CFLAGS} ${LDFLAGS}"
-
-	# Some of the tests are written in C++, so we need to force our multlib abis in, bug 623548
-	export CXX="${glibc__GLIBC_CXX} ${glibc__abi_CFLAGS} ${CFLAGS}"
-
-	export CPP="${glibc__GLIBC_CPP} ${glibc__abi_CFLAGS} ${CFLAGS}"
-
-	if is_crosscompile; then
-		# Assume worst-case bootstrap: glibc is built for the first time
-		# with ${CTARGET}-g++ not available yet. We avoid
-		# building auxiliary programs that require C++: bug #683074
-		# It should not affect final result.
-		export libc_cv_cxx_link_ok=no
-		# The line above has the same effect. We set CXX explicitly
-		# to make build logs less confusing.
-		export CXX=
-	fi
-}
-
-foreach_abi() {
-	setup_env
-
-	local ret=0
-	local abilist=""
-	if use multilib ; then
-		abilist=$(get_install_abis)
-	else
-		abilist=${DEFAULT_ABI}
-	fi
-	local -x ABI
-	for ABI in ${abilist:-default} ; do
-		setup_env
-		einfo "Running $1 for ABI ${ABI}"
-		$1
-		: $(( ret |= $? ))
-	done
-	return ${ret}
-}
-
-glibc_banner() {
-	local b="Gentoo ${PVR}"
-	[[ -n ${PATCH_VER} ]] && ! use vanilla && b+=" (patchset ${PATCH_VER})"
-	echo "${b}"
-}
-
-# The following Kernel version handling functions are mostly copied from portage
-# source. It's better not to use linux-info.eclass here since a) it adds too
-# much magic, see bug 326693 for some of the arguments, and b) some of the
-# functions are just not provided.
-
-g_get_running_KV() {
-	uname -r
-	return $?
-}
-
-g_KV_major() {
-	[[ -z $1 ]] && return 1
-	local KV=$@
-	echo "${KV%%.*}"
-}
-
-g_KV_minor() {
-	[[ -z $1 ]] && return 1
-	local KV=$@
-	KV=${KV#*.}
-	echo "${KV%%.*}"
-}
-
-g_KV_micro() {
-	[[ -z $1 ]] && return 1
-	local KV=$@
-	KV=${KV#*.*.}
-	echo "${KV%%[^[:digit:]]*}"
-}
-
-g_KV_to_int() {
-	[[ -z $1 ]] && return 1
-	local KV_MAJOR=$(g_KV_major "$1")
-	local KV_MINOR=$(g_KV_minor "$1")
-	local KV_MICRO=$(g_KV_micro "$1")
-	local KV_int=$(( KV_MAJOR * 65536 + KV_MINOR * 256 + KV_MICRO ))
-
-	# We make version 2.2.0 the minimum version we will handle as
-	# a sanity check ... if its less, we fail ...
-	if [[ ${KV_int} -ge 131584 ]] ; then
-		echo "${KV_int}"
-		return 0
-	fi
-	return 1
-}
-
-g_int_to_KV() {
-	local version=$1 major minor micro
-	major=$((version / 65536))
-	minor=$(((version % 65536) / 256))
-	micro=$((version % 256))
-	echo ${major}.${minor}.${micro}
-}
-
-get_kheader_version() {
-	printf '#include <linux/version.h>\nLINUX_VERSION_CODE\n' | \
-	$(tc-getCPP ${CTARGET}) -I "${ESYSROOT}$(alt_headers)" - | \
-	tail -n 1
-}
-
-# We collect all sanity checks here. Consistency is not guranteed between
-# pkg_ and src_ phases, so we call this function both in pkg_pretend and in
-# src_unpack.
-sanity_prechecks() {
-	# Prevent native builds from downgrading
-	if [[ ${MERGE_TYPE} != "buildonly" ]] && \
-	   [[ -z ${ROOT} ]] && \
-	   [[ ${CBUILD} == ${CHOST} ]] && \
-	   [[ ${CHOST} == ${CTARGET} ]] ; then
-
-		# The high rev # is to allow people to downgrade between -r#
-		# versions. We want to block 2.20->2.19, but 2.20-r3->2.20-r2
-		# should be fine. Hopefully we never actually use a r# this
-		# high.
-		if has_version ">${CATEGORY}/${P}-r10000" ; then
-			eerror "Sanity check to keep you from breaking your system:"
-			eerror " Downgrading glibc is not supported and a sure way to destruction."
-			[[ ${I_ALLOW_TO_BREAK_MY_SYSTEM} = yes ]] || die "Aborting to save your system."
-		fi
-
-		if ! do_run_test '#include <unistd.h>\n#include <sys/syscall.h>\nint main(){return syscall(1000)!=-1;}\n' ; then
-			eerror "Your old kernel is broken. You need to update it to a newer"
-			eerror "version as syscall(<bignum>) will break. See bug 279260."
-			[[ ${I_ALLOW_TO_BREAK_MY_SYSTEM} = yes ]] || die "Old and broken kernel."
-		fi
-	fi
-
-	if [[ ${CTARGET} == i386-* ]] ; then
-		eerror "i386 CHOSTs are no longer supported."
-		eerror "Chances are you don't actually want/need i386."
-		eerror "Please read https://www.gentoo.org/doc/en/change-chost.xml"
-		die "Please fix your CHOST"
-	fi
-
-	if [[ -e /proc/xen ]] && [[ $(tc-arch) == "x86" ]] && ! is-flag -mno-tls-direct-seg-refs ; then
-		ewarn "You are using Xen but don't have -mno-tls-direct-seg-refs in your CFLAGS."
-		ewarn "This will result in a 50% performance penalty when running with a 32bit"
-		ewarn "hypervisor, which is probably not what you want."
-	fi
-
-	# ABI-specific checks follow here. Hey, we have a lot more specific conditions that
-	# we test for...
-	if ! is_crosscompile && ! tc-is-cross-compiler ; then
-		if use amd64 && use multilib && [[ ${MERGE_TYPE} != "binary" ]] ; then
-			ebegin "Checking if the system can execute 32-bit binaries"
-			echo 'int main(){return 0;}' > "${T}/check-ia32-emulation.c"
-			local STAT
-			if ${CC-${CHOST}-gcc} ${CFLAGS_x86} "${T}/check-ia32-emulation.c" -o "${T}/check-ia32-emulation.elf32"; then
-				"${T}/check-ia32-emulation.elf32"
-				STAT=$?
-			else
-				# Don't fail here to allow single->multi ABI switch
-				# or recover from breakage like bug #646424
-				ewarn "Failed to compile the ABI test. Broken host glibc?"
-				STAT=0
-			fi
-			rm -f "${T}/check-ia32-emulation.elf32"
-			eend $STAT
-			if [[ $STAT -ne 0 ]]; then
-				eerror "Ensure that CONFIG_IA32_EMULATION is enabled in the kernel."
-				eerror "Seek support otherwise."
-				die "Unable to execute 32-bit binaries"
-			fi
-		fi
-
-	fi
-
-	# When we actually have to compile something...
-	if ! just_headers && [[ ${MERGE_TYPE} != "binary" ]] ; then
-		if [[ -d "${ESYSROOT}"/usr/lib/include ]] ; then
-			# bug #833620, bug #643302
-			eerror "Found ${ESYSROOT}/usr/lib/include directory!"
-			eerror "This is known to break glibc's build."
-			eerror "Please backup its contents then remove the directory."
-			die "Found directory (${ESYSROOT}/usr/lib/include) which will break build (bug #833620)!"
-		fi
-
-		if [[ ${CTARGET} == *-linux* ]] ; then
-			local run_kv build_kv want_kv
-
-			run_kv=$(g_get_running_KV)
-			build_kv=$(g_int_to_KV $(get_kheader_version))
-			want_kv=${MIN_KERN_VER}
-
-			if ! is_crosscompile && ! tc-is-cross-compiler ; then
-				# Building fails on an non-supporting kernel
-				ebegin "Checking running kernel version (${run_kv} >= ${want_kv})"
-				if ! [[ $(g_KV_to_int ${run_kv}) -ge $(g_KV_to_int ${want_kv}) ]] ; then
-					eend 1
-					echo
-					eerror "You need a kernel of at least ${want_kv}!"
-					die "Kernel version too low!"
-				fi
-				eend 0
-			fi
-
-			# Do not run this check for pkg_pretend, just pkg_setup and friends (if we ever get used there).
-			# It's plausible (seen it in the wild) that Portage will (correctly) schedule a linux-headers
-			# upgrade before glibc, but because pkg_pretend gets run before any packages are merged at all (not
-			# just glibc), the whole emerge gets aborted without a good reason. We probably don't
-			# need to run this check at all given we have a dependency on the right headers,
-			# but let's leave it as-is for now.
-			if [[ ${EBUILD_PHASE_FUNC} != pkg_pretend ]] ; then
-				ebegin "Checking linux-headers version (${build_kv} >= ${want_kv})"
-				if ! [[ $(g_KV_to_int ${build_kv}) -ge $(g_KV_to_int ${want_kv}) ]] ; then
-					eend 1
-					echo
-					eerror "You need linux-headers of at least ${want_kv}!"
-					die "linux-headers version too low!"
-				fi
-				eend 0
-			fi
-		fi
-	fi
-}
-
-upgrade_warning() {
-	is_crosscompile && return
-
-	if [[ ${MERGE_TYPE} != buildonly && -n ${REPLACING_VERSIONS} && -z ${ROOT} ]]; then
-		if ver_replacing -lt $(ver_cut 1-2 ${PV}); then
-			ewarn "After upgrading glibc, please restart all running processes."
-			ewarn "Be sure to include init (telinit u) or systemd (systemctl daemon-reexec)."
-			ewarn "Alternatively, reboot your system."
-			ewarn "(See bug #660556, bug #741116, bug #823756, etc)"
-		fi
-	fi
-}
-
-#
-# the phases
-#
-
-# pkg_pretend
-
-pkg_pretend() {
-	upgrade_warning
-}
-
-# pkg_setup
-
-pkg_setup() {
-	# see bug 682570
-	[[ -z ${BOOTSTRAP_RAP} ]] && python-any-r1_pkg_setup
-}
-
-# src_unpack
-
-src_unpack() {
-	setup_env
-
-	einfo "Checking general environment sanity."
-	sanity_prechecks
-
-	use multilib-bootstrap && unpack gcc-multilib-bootstrap-${GCC_BOOTSTRAP_VER}.tar.xz
-
-	if [[ ${PV} == *9999 ]] ; then
-		EGIT_REPO_URI="
-			https://anongit.gentoo.org/git/proj/toolchain/glibc-patches.git
-			https://github.com/gentoo/glibc-patches.git
-		"
-		EGIT_CHECKOUT_DIR=${WORKDIR}/patches-git
-		git-r3_src_unpack
-		mv patches-git/9999 patches || die
-		EGIT_REPO_URI="
-			https://sourceware.org/git/glibc.git
-			https://git.sr.ht/~sourceware/glibc
-			https://gitlab.com/x86-glibc/glibc.git
-		"
-		EGIT_CHECKOUT_DIR=${S}
-		[[ ${PV} == *.*.9999 ]] && EGIT_BRANCH=release/${PV%.*}/master
-		git-r3_src_unpack
-	else
-		if use verify-sig; then
-			verify-sig_verify_detached "${DISTDIR}/${P}.tar.xz" "${DISTDIR}/${P}.tar.xz.sig"
-		fi
-		unpack ${P}.tar.xz
-
-		cd "${WORKDIR}" || die
-		unpack ${P}-patches-${PATCH_VER}.tar.xz
-	fi
-
-	cd "${WORKDIR}" || die
-	use systemd && unpack glibc-systemd-${GLIBC_SYSTEMD_VER}.tar.gz
-}
-
-# src_prepare
-
-src_prepare() {
-	local patchsetname
-	if ! use vanilla ; then
-		if [[ ${PV} == 9999* ]] ; then
-			patchsetname="from git master"
-		else
-			patchsetname="${PV}-${PATCH_VER}"
-		fi
-		einfo "Applying Gentoo Glibc patchset ${patchsetname}"
-		eapply "${WORKDIR}"/patches
-		einfo "Done."
-	fi
-
-	case ${CTARGET} in
-		m68*-aligned-*)
-			einfo "Applying utmp format fix for m68k with -maligned-int"
-			eapply "${FILESDIR}/glibc-2.41-m68k-malign.patch"
-			;;
-		*)
-			;;
-	esac
-
-	default
-
-	gnuconfig_update
-
-	cd "${WORKDIR}" || die
-	find . -name configure -exec touch {} +
-
-	# Fix permissions on some of the scripts.
-	chmod u+x "${S}"/scripts/*.sh
-
-	cd "${S}" || die
-}
-
-# src_configure
-
-glibc_do_configure() {
-	dump_build_environment
-
-	local myconf=()
-
-	# Use '=strong' instead of '=all' to protect only functions
-	# worth protecting from stack smashes.
-	myconf+=( --enable-stack-protector=$(usex ssp strong no) )
-
-	# Keep a whitelist of targets supporting IFUNC. glibc's ./configure
-	# is not robust enough to detect proper support:
-	#    https://bugs.gentoo.org/641216
-	#    https://sourceware.org/PR22634#c0
-	case $(tc-arch ${CTARGET}) in
-		# Keep whitelist of targets where autodetection mostly works.
-		amd64|x86|sparc|ppc|ppc64|arm|arm64|s390|riscv|loong) ;;
-		# Blacklist everywhere else
-		*) myconf+=( libc_cv_ld_gnu_indirect_function=no ) ;;
-	esac
-
-	case ${ABI}-${CTARGET} in
-		amd64-x86_64-*|x32-x86_64-*-*-gnux32) myconf+=( $(use_enable cet) ) ;;
-		*) ;;
-	esac
-
-	case ${ABI}-${CTARGET} in
-		amd64-x86_64-*|arm64-aarch64-*) myconf+=( $(use_enable sframe) ) ;;
-		*) ;;
-	esac
-
-	[[ $(tc-is-softfloat) == "yes" ]] && myconf+=( --without-fp )
-
-	myconf+=( --enable-kernel=${MIN_KERN_VER} )
-
-	# Since SELinux support is only required for nscd, only enable it if:
-	# 1. USE selinux
-	# 2. only for the primary ABI on multilib systems
-	# 3. Not a crosscompile
-	if ! is_crosscompile && use selinux ; then
-		if use multilib ; then
-			if is_final_abi ; then
-				myconf+=( --with-selinux )
-			else
-				myconf+=( --without-selinux )
-			fi
-		else
-			myconf+=( --with-selinux )
-		fi
-	else
-		myconf+=( --without-selinux )
-	fi
-
-	# Force a few tests where we always know the answer but
-	# configure is incapable of finding it.
-	if is_crosscompile ; then
-		export \
-			libc_cv_c_cleanup=yes \
-			libc_cv_forced_unwind=yes
-	fi
-
-	myconf+=(
-		--disable-werror
-		--enable-bind-now
-		--enable-fortify-source
-		--build=${CBUILD_OPT:-${CBUILD}}
-		--host=${CTARGET_OPT:-${CTARGET}}
-		$(use_enable profile)
-		$(use_with gd)
-		--with-headers="${ESYSROOT}$(alt_headers)"
-		--prefix="$(host_eprefix)/usr"
-		--sysconfdir="$(host_eprefix)/etc"
-		--localstatedir="$(host_eprefix)/var"
-		--libdir='$(prefix)'/$(get_libdir)
-		--mandir='$(prefix)'/share/man
-		--infodir='$(prefix)'/share/info
-		--libexecdir='$(libdir)'/misc/glibc
-		--with-bugurl=https://bugs.gentoo.org/
-		--with-pkgversion="$(glibc_banner)"
-		$(use_multiarch || echo --disable-multi-arch)
-		$(use_enable systemtap)
-		$(use_enable nscd)
-
-		# /usr/bin/mtrace has a Perl shebang. Gentoo Prefix QA checks fail if
-		# Perl hasn't been installed inside the prefix yet and configure picks
-		# up a Perl from outside the prefix instead. configure will fail to
-		# execute Perl during configure if we're cross-compiling a prefix, but
-		# it will just disable mtrace in that case.
-		# Note: mtrace is needed by the test suite.
-		ac_cv_path_PERL="$(usex perl "${EPREFIX}"/usr/bin/perl $(usex test "${EPREFIX}"/usr/bin/perl $(usex doc "${EPREFIX}"/usr/bin/perl no)))"
-
-		# locale data is arch-independent
-		# https://bugs.gentoo.org/753740
-		libc_cv_complocaledir='${exec_prefix}/lib/locale'
-
-		# On aarch64 there is no way to override -mcpu=native, and if
-		# the current cpu does not support SVE configure fails.
-		# Let's boldly assume our toolchain can always build SVE instructions.
-		libc_cv_aarch64_sve_asm=yes
-
-		${EXTRA_ECONF}
-	)
-
-	# We rely on sys-libs/timezone-data for timezone tools normally.
-	myconf+=( $(use_enable vanilla timezone-tools) )
-
-	# These libs don't have configure flags.
-	ac_cv_lib_audit_audit_log_user_avc_message=$(usex audit || echo no)
-	ac_cv_lib_cap_cap_init=$(usex caps || echo no)
-
-	# There is no configure option for this and we need to export it
-	# since the glibc build will re-run configure on itself
-	export libc_cv_rootsbindir="$(host_eprefix)/sbin"
-	export libc_cv_slibdir="$(host_eprefix)/$(get_libdir)"
-
-	local builddir=$(builddir nptl)
-	mkdir -p "${builddir}"
-	cd "${builddir}"
-	set -- "${S}"/configure "${myconf[@]}"
-	echo "$@"
-	"$@" || die "failed to configure glibc"
-
-	# If we're trying to migrate between ABI sets, we need
-	# to lie and use a local copy of gcc.  Like if the system
-	# is built with MULTILIB_ABIS="amd64 x86" but we want to
-	# add x32 to it, gcc/glibc don't yet support x32.
-	#
-	if [[ -n ${GCC_BOOTSTRAP_VER} ]] && use multilib-bootstrap ; then
-		echo 'int main(void){}' > "${T}"/test.c || die
-		if ! $(tc-getCC ${CTARGET}) ${CFLAGS} ${LDFLAGS} "${T}"/test.c -Wl,-emain -lgcc 2>/dev/null ; then
-			sed -i -e '/^CC = /s:$: -B$(objdir)/../'"gcc-multilib-bootstrap-${GCC_BOOTSTRAP_VER}/${ABI}:" config.make || die
-		fi
-	fi
-}
-
-glibc_headers_configure() {
-	export ABI=default
-
-	local builddir=$(builddir "headers")
-	mkdir -p "${builddir}"
-	cd "${builddir}"
-
-	# if we don't have a compiler yet, we can't really test it now ...
-	# hopefully they don't affect header generation, so let's hope for
-	# the best here ...
-	local v vars=(
-		ac_cv_header_cpuid_h=yes
-		libc_cv_{386,390,alpha,arm,hppa,mips,{powerpc,sparc}{,32,64},sh,x86_64}_tls=yes
-		libc_cv_asm_cfi_directives=yes
-		libc_cv_broken_visibility_attribute=no
-		libc_cv_c_cleanup=yes
-		libc_cv_compiler_powerpc64le_binary128_ok=yes
-		libc_cv_forced_unwind=yes
-		libc_cv_gcc___thread=yes
-		libc_cv_mlong_double_128=yes
-		libc_cv_mlong_double_128ibm=yes
-		libc_cv_ppc_machine=yes
-		libc_cv_ppc_rel16=yes
-		libc_cv_predef_fortify_source=no
-		libc_cv_target_power8_ok=yes
-		libc_cv_visibility_attribute=yes
-		libc_cv_z_combreloc=yes
-		libc_cv_z_execstack=yes
-		libc_cv_z_initfirst=yes
-		libc_cv_z_nodelete=yes
-		libc_cv_z_nodlopen=yes
-		libc_cv_z_relro=yes
-		libc_mips_abi=${ABI}
-		libc_mips_float=$([[ $(tc-is-softfloat) == "yes" ]] && echo soft || echo hard)
-		# These libs don't have configure flags.
-		ac_cv_lib_audit_audit_log_user_avc_message=no
-		ac_cv_lib_cap_cap_init=no
-	)
-
-	einfo "Forcing cached settings:"
-	for v in "${vars[@]}" ; do
-		einfo " ${v}"
-		export ${v}
-	done
-
-	local headers_only_arch_CPPFLAGS=()
-
-	# Blow away some random CC settings that screw things up. #550192
-	if [[ -d ${S}/sysdeps/mips ]]; then
-		pushd "${S}"/sysdeps/mips >/dev/null
-		sed -i -e '/^CC +=/s:=.*:= -D_MIPS_SZPTR=32:' mips32/Makefile mips64/n32/Makefile || die
-		sed -i -e '/^CC +=/s:=.*:= -D_MIPS_SZPTR=64:' mips64/n64/Makefile || die
-
-		# Force the mips ABI to the default.  This is OK because the set of
-		# installed headers in this phase is the same between the 3 ABIs.
-		# If this ever changes, this hack will break, but that's unlikely
-		# as glibc discourages that behavior.
-		# https://crbug.com/647033
-		sed -i -e 's:abiflag=.*:abiflag=_ABIO32:' preconfigure || die
-
-		popd >/dev/null
-	fi
-
-	local myconf=()
-
-	case ${CTARGET} in
-	aarch64*)
-		# The configure checks fail during cross-build, so disable here
-		# for headers-only
-		myconf+=(
-			--disable-mathvec
-		) ;;
-	riscv*)
-		# RISC-V interrogates the compiler to determine which target to
-		# build.  If building the headers then we don't strictly need a
-		# RISC-V compiler, so the built-in definitions that are provided
-		# along with all RISC-V compiler might not exist.  This causes
-		# glibc's RISC-V preconfigure script to blow up.  Since we're just
-		# building the headers any value will actually work here, so just
-		# pick the standard one (rv64g/lp64d) to make the build scripts
-		# happy for now -- the headers are all the same anyway so it
-		# doesn't matter.
-		headers_only_arch_CPPFLAGS+=(
-			-D__riscv_xlen=64
-			-D__riscv_flen=64
-			-D__riscv_float_abi_double=1
-			-D__riscv_atomic=1
-		) ;;
-	esac
-
-	myconf+=(
-		--disable-sanity-checks
-		--enable-hacker-mode
-		--disable-werror
-		--enable-bind-now
-		--build=${CBUILD_OPT:-${CBUILD}}
-		--host=${CTARGET_OPT:-${CTARGET}}
-		--with-headers="${ESYSROOT}$(alt_headers)"
-		--prefix="$(host_eprefix)/usr"
-		${EXTRA_ECONF}
-	)
-
-	# Nothing is compiled here which would affect the headers for the target.
-	# So forcing CC/CFLAGS is sane.
-	local headers_only_CC=$(tc-getBUILD_CC)
-	local headers_only_CFLAGS="-O1 -pipe"
-	local headers_only_CPPFLAGS="-U_FORTIFY_SOURCE ${headers_only_arch_CPPFLAGS[*]}"
-	local headers_only_LDFLAGS=""
-	set -- "${S}"/configure "${myconf[@]}"
-	echo \
-		"CC=${headers_only_CC}" \
-		"CFLAGS=${headers_only_CFLAGS}" \
-		"CPPFLAGS=${headers_only_CPPFLAGS}" \
-		"LDFLAGS=${headers_only_LDFLAGS}" \
-		"$@"
-	CC=${headers_only_CC} \
-	CFLAGS=${headers_only_CFLAGS} \
-	CPPFLAGS=${headers_only_CPPFLAGS} \
-	LDFLAGS="" \
-	"$@" || die "failed to configure glibc"
-}
-
-do_src_configure() {
-	if just_headers ; then
-		glibc_headers_configure
-	else
-		glibc_do_configure nptl
-	fi
-}
-
-src_configure() {
-	foreach_abi do_src_configure
-}
-
-# src_compile
-
-do_src_compile() {
-	emake -C "$(builddir nptl)"
-}
-
-src_compile() {
-	if just_headers ; then
-		return
-	fi
-
-	foreach_abi do_src_compile
-}
-
-# src_test
-
-glibc_src_test() {
-	cd "$(builddir nptl)"
-
-	local myxfailparams=""
-	if [[ "${GENTOO_GLIBC_XFAIL_TESTS}" == "yes" ]] ; then
-		local virt=$(systemd-detect-virt 2>/dev/null)
-		if [[ ${virt} == systemd-nspawn ]] ; then
-			ewarn "Skipping extra tests because in systemd-nspawn container"
-			XFAIL_TEST_LIST+=( "${XFAIL_NSPAWN_TEST_LIST[@]}" )
-		fi
-		if [[ "$(nice)" == "19" ]] ; then
-			# Expects to be able to increase niceness, which it can't do if
-			# already at the highest nice value
-			XFAIL_TEST_LIST+=( "tst-nice" )
-		fi
-
-		for myt in ${XFAIL_TEST_LIST[@]} ; do
-			myxfailparams+="test-xfail-${myt}=yes "
-		done
-	fi
-
-	# sandbox does not understand unshare() and prevents
-	# writes to /proc/, which makes many tests fail
-
-	# we give the tests a bit more time to avoid spurious
-	# bug reports on slow arches
-
-	SANDBOX_ON=0 LD_PRELOAD= TIMEOUTFACTOR=16 nonfatal emake ${myxfailparams} check
-}
-
-src_test() {
-	if just_headers ; then
-		return
-	fi
-
-	# glibc_src_test uses nonfatal so that we can run tests for all ABIs
-	# and fail at the end instead.
-	foreach_abi glibc_src_test || die "tests failed"
-}
-
-# src_install
-
-run_locale_gen() {
-	local fatal=$1 prefix=$2
-	local user_config action config stderr noun ret
-	local -a hasversion_opts localegen_args
-
-	if [[ ${EBUILD_PHASE_FUNC} == src_install ]]; then
-		hasversion_opts=( -b )
-	fi
-
-	if has_version "${hasversion_opts[@]}" '>=sys-apps/locale-gen-3'; then
-		localegen_args=( --prefix "${prefix}" )
-	else
-		config="${prefix}/usr/share/i18n/SUPPORTED"
-		user_config="${prefix}/etc/locale.gen"
-		if [[ ${EBUILD_PHASE_FUNC} == src_install ]]; then
-			# For USE=compile-locales, all locales should be built.
-			mkdir -p -- "${prefix}/usr/lib/locale" || die
-		elif locale-gen --list --config "${user_config}" | read -r; then
-			config=${user_config}
-		fi
-		localegen_args=( --config "${config}" --destdir "${prefix}" )
-	fi
-
-	# bug 736794: we need to be careful with the parallelization... the
-	# number of processors saved in the environment of a binary package may
-	# differ strongly from the number of processes available during postinst
-	if [[ ${EMERGE_FROM} != binary ]]; then
-		localegen_args+=( --jobs "$(get_makeopts_jobs)" )
-	fi
-
-	printf 'Executing: locale-gen %s\n' "${localegen_args[*]@Q}" >&2
-	{ stderr=$(locale-gen "${localegen_args[@]}" 2>&1 >&3); } 3>&1
-	ret=$?
-	action="ewarn"
-	if (( ret == 0 )); then
-		noun="warning"
-	else
-		noun="error"
-		if (( fatal )); then
-			action="die"
-		fi
-	fi
-	# Convey warnings/errors so that they can be reseen upon emerge exiting.
-	if [[ ${stderr} ]]; then
-		ewarn "locale-gen(8) issued the following ${noun}s:"
-		while read -r; do
-			ewarn "$REPLY"
-		done <<<"${stderr}"
-	fi
-	if (( ret != 0 )); then
-		"${action}" "locale-gen(8) unexpectedly failed during the ${EBUILD_PHASE_FUNC} phase"
-	fi
-}
-
-glibc_do_src_install() {
-	local builddir=$(builddir nptl)
-	cd "${builddir}"
-
-	emake install_root="${D}/$(build_eprefix)$(alt_prefix)" install
-
-	# This version (2.26) provides some compatibility libraries for the NIS/NIS+ support
-	# which come without headers etc. Only needed for binary packages since the
-	# external net-libs/libnsl has increased soversion. Keep only versioned libraries.
-	find "${D}" -name "libnsl.a" -delete
-	find "${D}" -name "libnsl.so" -delete
-
-	# Normally upstream_pv is ${PV}. Live ebuilds are exception, there we need
-	# to infer upstream version:
-	# '#define VERSION "2.26.90"' -> '2.26.90'
-	local upstream_pv=$(sed -n -r 's/#define VERSION "(.*)"/\1/p' "${S}"/version.h)
-
-	# Avoid stripping binaries not targeted by ${CHOST}. Or else
-	# ${CHOST}-strip would break binaries build for ${CTARGET}.
-	is_crosscompile && dostrip -x /
-
-	# gdb thread introspection relies on local libpthreads symbols. stripping breaks it
-	# See Note [Disable automatic stripping]
-	dostrip -x $(alt_libdir)/libpthread-${upstream_pv}.so
-	# valgrind requires knowledge about ld.so symbols.
-	dostrip -x $(alt_libdir)/ld-*.so*
-
-	if [[ -e ${ED}/$(alt_usrlibdir)/libm-${upstream_pv}.a ]] ; then
-		# Move versioned .a file out of libdir to evade portage QA checks
-		# instead of using gen_usr_ldscript(). We fix ldscript as:
-		# "GROUP ( /usr/lib64/libm-<pv>.a ..." -> "GROUP ( /usr/lib64/glibc-<pv>/libm-<pv>.a ..."
-		sed -i "s@\(libm-${upstream_pv}.a\)@${P}/\1@" \
-			"${ED}"/$(alt_usrlibdir)/libm.a || die
-		dodir $(alt_usrlibdir)/${P}
-		mv "${ED}"/$(alt_usrlibdir)/libm-${upstream_pv}.a \
-			"${ED}"/$(alt_usrlibdir)/${P}/libm-${upstream_pv}.a || die
-	fi
-
-	# We configure toolchains for standalone prefix systems with a sysroot,
-	# which is prepended to paths in ld scripts, so strip the prefix from these.
-	# Before: GROUP ( /foo/lib64/libc.so.6 /foo/usr/lib64/libc_nonshared.a  AS_NEEDED ( /foo/lib64/ld-linux-x86-64.so.2 ) )
-	# After: GROUP ( /lib64/libc.so.6 /usr/lib64/libc_nonshared.a  AS_NEEDED ( /lib64/ld-linux-x86-64.so.2 ) )
-	if [[ -n $(host_eprefix) ]] ; then
-		local file
-		grep -lZIF "ld script" "${ED}/$(alt_usrlibdir)"/lib*.{a,so} 2>/dev/null | while read -rd '' file ; do
-			sed -i "s|$(host_eprefix)/|/|g" "${file}" || die
-		done
-	fi
-
-	# We'll take care of the cache ourselves
-	rm -f "${ED}"/etc/ld.so.cache
-
-	# Everything past this point just needs to be done once ...
-	is_final_abi || return 0
-
-	# Make sure the non-native interp can be found on multilib systems even
-	# if the main library set isn't installed into the right place.  Maybe
-	# we should query the active gcc for info instead of hardcoding it ?
-	local i ldso_abi ldso_name
-	if is_linux ; then
-		local ldso_abi_list=(
-			# x86
-			amd64   /lib64/ld-linux-x86-64.so.2
-			x32     /libx32/ld-linux-x32.so.2
-			x86     /lib/ld-linux.so.2
-			# mips
-			o32     /lib/ld.so.1
-			n32     /lib32/ld.so.1
-			n64     /lib64/ld.so.1
-			# powerpc
-			ppc     /lib/ld.so.1
-			# riscv
-			ilp32d  /lib/ld-linux-riscv32-ilp32d.so.1
-			ilp32   /lib/ld-linux-riscv32-ilp32.so.1
-			lp64d   /lib/ld-linux-riscv64-lp64d.so.1
-			lp64    /lib/ld-linux-riscv64-lp64.so.1
-			# s390
-			s390    /lib/ld.so.1
-			s390x   /lib/ld64.so.1
-			# sparc
-			sparc32 /lib/ld-linux.so.2
-			sparc64 /lib64/ld-linux.so.2
-		)
-		case $(tc-endian) in
-		little)
-			ldso_abi_list+=(
-				# arm
-				arm64   /lib/ld-linux-aarch64.so.1
-				# ELFv2 (glibc does not support ELFv1 on LE)
-				ppc64   /lib64/ld64.so.2
-			)
-			;;
-		big)
-			ldso_abi_list+=(
-				# arm
-				arm64   /lib/ld-linux-aarch64_be.so.1
-				# ELFv1 (glibc does not support ELFv2 on BE)
-				ppc64   /lib64/ld64.so.1
-			)
-			;;
-		esac
-	else
-	# we must be using hurd then
-		local ldso_abi_list=(
-			# x86
-			amd64   /lib64/ld-x86-64.so.1
-			x86     /lib/ld.so.1
-		)
-	fi
-	if [[ ${SYMLINK_LIB} == "yes" ]] && [[ ! -e ${ED}/$(alt_prefix)/lib ]] ; then
-		dosym $(get_abi_LIBDIR ${DEFAULT_ABI}) $(alt_prefix)/lib
-	fi
-	for (( i = 0; i < ${#ldso_abi_list[@]}; i += 2 )) ; do
-		ldso_abi=${ldso_abi_list[i]}
-		has ${ldso_abi} $(get_install_abis) || continue
-
-		ldso_name="$(alt_prefix)${ldso_abi_list[i+1]}"
-		if [[ ! -L ${ED}/${ldso_name} && ! -e ${ED}/${ldso_name} ]] ; then
-			dosym ../$(get_abi_LIBDIR ${ldso_abi})/${ldso_name##*/} ${ldso_name}
-		fi
-	done
-
-	if is_linux ; then
-		# In the LSB 5.0 definition, someone had the excellent idea to "standardize"
-		# the runtime loader name, see also https://xkcd.com/927/
-		# Normally, in Gentoo one should never come across executables that require this.
-		# However, binary commercial packages are known to adhere to weird practices.
-		# https://refspecs.linuxfoundation.org/LSB_5.0.0/LSB-Core-AMD64/LSB-Core-AMD64.html#BASELIB
-		local lsb_ldso_name native_ldso_name lsb_ldso_abi
-		local lsb_ldso_abi_list=(
-			# x86
-			amd64	ld-linux-x86-64.so.2	ld-lsb-x86-64.so.3
-		)
-		for (( i = 0; i < ${#lsb_ldso_abi_list[@]}; i += 3 )) ; do
-			lsb_ldso_abi=${lsb_ldso_abi_list[i]}
-			native_ldso_name=${lsb_ldso_abi_list[i+1]}
-			lsb_ldso_name=${lsb_ldso_abi_list[i+2]}
-			has ${lsb_ldso_abi} $(get_install_abis) || continue
-
-			if [[ ! -L ${ED}/$(get_abi_LIBDIR ${lsb_ldso_abi})/${lsb_ldso_name} && ! -e ${ED}/$(get_abi_LIBDIR ${lsb_ldso_abi})/${lsb_ldso_name} ]] ; then
-				dosym ${native_ldso_name} "$(alt_prefix)/$(get_abi_LIBDIR ${lsb_ldso_abi})/${lsb_ldso_name}"
-			fi
-		done
-	fi
-
-	# On Hurd, glibc and (unpatched) gcc tend to disagree about the proper location for
-	# the dynamic loader. Which is maximally stupid since this one information is hardcoded
-	# into every single binary, and even if we were to fix *our* gcc it could still prevent
-	# us from running binaries prepared anywhere else...
-
-	if is_hurd && has amd64 $(get_install_abis) ; then
-		# First, let's check for sanity
-		if [[ -f "$(alt_prefix)/lib/ld-x86-64.so.1" ]] ; then
-			die "Somehow your amd64 hurd glibc installed /lib/ld-x86-64.so.1 ... this should not happen."
-		fi
-
-		# Then make a compatibility symlink.
-		dosym ../lib64/ld-x86-64.so.1 "$(alt_prefix)/lib/ld-x86-64.so.1"
-	fi
-
-	if is_hurd && has x86 $(get_install_abis) ; then
-		# First, let's check for sanity
-		if [[ -f "$(alt_prefix)/$(get_abi_LIBDIR x86)/ld.so" ]] ; then
-			die "Somehow your x86 hurd glibc installed ld.so ... this should not happen."
-		fi
-
-		# Then make a compatibility symlink.
-		dosym ld.so.1 "$(alt_prefix)/$(get_abi_LIBDIR x86)/ld.so"
-	fi
-
-	# With devpts under Linux mounted properly, we do not need the pt_chown
-	# binary to be setuid.  This is because the default owners/perms will be
-	# exactly what we want.
-	if ! use suid ; then
-		find "${ED}" -name pt_chown -exec chmod -s {} +
-	fi
-
-	#################################################################
-	# EVERYTHING AFTER THIS POINT IS FOR NATIVE GLIBC INSTALLS ONLY #
-	#################################################################
-
-	# Make sure we install some symlink hacks so that when we build
-	# a 2nd stage cross-compiler, gcc finds the target system
-	# headers correctly.  See gcc/doc/gccinstall.info
-	if is_crosscompile ; then
-		# We need to make sure that /lib and /usr/lib always exists.
-		# gcc likes to use relative paths to get to its multilibs like
-		# /usr/lib/../lib64/.  So while we don't install any files into
-		# /usr/lib/, we do need it to exist.
-		keepdir $(alt_prefix)/lib
-		keepdir $(alt_prefix)/usr/lib
-
-		dosym usr/include $(alt_prefix)/sys-include
-		return 0
-	fi
-
-	# Files for Debian-style locale updating
-	dodir /usr/share/i18n
-	sed \
-		-e "/^#/d" \
-		-e "/SUPPORTED-LOCALES=/d" \
-		-e "s: \\\\::g" -e "s:/: :g" \
-		"${S}"/localedata/SUPPORTED > "${ED}"/usr/share/i18n/SUPPORTED \
-		|| die "generating /usr/share/i18n/SUPPORTED failed"
-
-	cd "${S}" || die
-
-	# Install misc network config files
-	insinto /etc
-	doins posix/gai.conf
-
-	if use systemd ; then
-		doins "${WORKDIR}/glibc-systemd-${GLIBC_SYSTEMD_VER}/gentoo-config/nsswitch.conf"
-	else
-		doins nss/nsswitch.conf
-	fi
-
-	# Gentoo-specific
-	newins "${FILESDIR}"/host.conf-1 host.conf
-
-	if use nscd ; then
-		doins nscd/nscd.conf
-
-		newinitd "$(prefixify_ro "${FILESDIR}"/nscd-1)" nscd
-
-		local nscd_args=(
-			-e "s:@PIDFILE@:$(strings "${ED}"/usr/sbin/nscd | grep nscd.pid):"
-		)
-
-		sed -i "${nscd_args[@]}" "${ED}"/etc/init.d/nscd
-
-		use systemd && systemd_dounit nscd/nscd.service
-		newtmpfiles nscd/nscd.tmpfiles nscd.conf
-	fi
-
-	echo 'LDPATH="include ld.so.conf.d/*.conf"' > "${T}"/00glibc
-	doenvd "${T}"/00glibc
-
-	for d in BUGS ChangeLog CONFORMANCE FAQ NEWS NOTES PROJECTS README* ; do
-		[[ -s ${d} ]] && dodoc ${d}
-	done
-	dodoc -r ChangeLog.old
-
-	# Prevent overwriting of the /etc/localtime symlink.  We'll handle the
-	# creation of the "factory" symlink in pkg_postinst().
-	rm -f "${ED}"/etc/localtime
-
-	# Generate all locales if this is a native build as locale generation
-	if use compile-locales && ! is_crosscompile; then
-		run_locale_gen 1 "${ED}"
-	fi
-}
-
-glibc_headers_install() {
-	local builddir=$(builddir "headers")
-	cd "${builddir}"
-	emake install_root="${D}/$(build_eprefix)$(alt_prefix)" install-headers
-
-	insinto $(alt_headers)/gnu
-	doins "${S}"/include/gnu/stubs.h
-
-	# Make sure we install the sys-include symlink so that when
-	# we build a 2nd stage cross-compiler, gcc finds the target
-	# system headers correctly.  See gcc/doc/gccinstall.info
-	dosym usr/include $(alt_prefix)/sys-include
-}
-
-src_install() {
-	if just_headers ; then
-		export ABI=default
-		glibc_headers_install
-		return
-	fi
-
-	foreach_abi glibc_do_src_install
-
-	if ! use static-libs ; then
-		einfo "Not installing static glibc libraries"
-		find "${ED}" -name "*.a" -and -not -name "*_nonshared.a" -delete
-	fi
-}
-
-# Simple test to make sure our new glibc isn't completely broken.
-# Make sure we don't test with statically built binaries since
-# they will fail.  Also, skip if this glibc is a cross compiler.
-#
-# If coreutils is built with USE=multicall, some of these files
-# will just be wrapper scripts, not actual ELFs we can test.
-glibc_sanity_check() {
-	cd / #228809
-
-	# We enter ${ED} so to avoid trouble if the path contains
-	# special characters; for instance if the path contains the
-	# colon character (:), then the linker will try to split it
-	# and look for the libraries in an unexpected place. This can
-	# lead to unsafe code execution if the generated prefix is
-	# within a world-writable directory.
-	# (e.g. /var/tmp/portage:${HOSTNAME})
-	pushd "${ED}"/$(get_libdir) >/dev/null
-
-	# first let's find the actual dynamic linker here
-	# symlinks may point to the wrong abi
-	local newldso=$(find . -maxdepth 1 -name 'ld*so.?' -type f -print -quit)
-
-	einfo Last-minute run tests with ${newldso} in /$(get_libdir) ...
-
-	local x striptest
-	for x in cal date env free ls true uname uptime ; do
-		x=$(type -p ${x})
-		[[ -z ${x} || ${x} != ${EPREFIX}/* ]] && continue
-		striptest=$(LC_ALL="C" file -L ${x} 2>/dev/null) || continue
-		case ${striptest} in
-		*"statically linked"*) continue;;
-		*"ASCII text"*) continue;;
-		esac
-		# We need to clear the locale settings as the upgrade might want
-		# incompatible locale data.  This test is not for verifying that.
-		LC_ALL=C \
-		${newldso} --library-path . ${x} > /dev/null \
-			|| die "simple run test (${x}) failed"
-	done
-
-	popd >/dev/null
-}
-
-pkg_preinst() {
-	# nothing to do if just installing headers
-	just_headers && return
-
-	einfo "Checking general environment sanity."
-	sanity_prechecks
-
-	# prepare /etc/ld.so.conf.d/ for files
-	mkdir -p "${EROOT}"/etc/ld.so.conf.d
-
-	# Default /etc/hosts.conf:multi to on for systems with small dbs.
-	if [[ $(wc -l < "${EROOT}"/etc/hosts) -lt 1000 ]] ; then
-		sed -i '/^multi off/s:off:on:' "${ED}"/etc/host.conf
-		einfo "Defaulting /etc/host.conf:multi to on"
-	fi
-
-	[[ -n ${ROOT} ]] && return 0
-	[[ -d ${ED}/$(get_libdir) ]] || return 0
-	[[ -z ${BOOTSTRAP_RAP} ]] && glibc_sanity_check
-
-	if [[ -L ${EROOT}/usr/lib/locale ]]; then
-		# Help portage migrate this to a directory
-		# https://bugs.gentoo.org/753740
-		rm "${EROOT}"/usr/lib/locale || die
-	fi
-
-	# Keep around libcrypt so that Perl doesn't break when merging libxcrypt
-	# (libxcrypt is the new provider for now of libcrypt.so.{1,2}).
-	# bug #802207
-	if has_version "${CATEGORY}/${PN}[crypt]" && ! has preserve-libs ${FEATURES}; then
-		PRESERVED_OLD_LIBCRYPT=1
-		cp -p "${EROOT}/$(get_libdir)/libcrypt$(get_libname 1)" \
-			"${T}/libcrypt$(get_libname 1)" || die
-	else
-		PRESERVED_OLD_LIBCRYPT=0
-	fi
-}
-
-glibc_refresh_ldconfig() {
-	if [[ ${MERGE_TYPE} == buildonly ]]; then
-		return
-	fi
-
-	# Version check could be added to avoid unnecessary work, but ldconfig
-	# should finish quickly enough to not matter.
-	ebegin "Refreshing ld.so.cache"
-	ldconfig -i
-	if ! eend $?; then
-		ewarn "Failed to refresh the ld.so.cache for you. Some programs may be broken"
-		ewarn "before you manually do so (ldconfig -i)."
-	fi
-}
-
-pkg_postinst() {
-	# nothing to do if just installing headers
-	just_headers && return
-
-	if ! tc-is-cross-compiler && [[ -x ${EROOT}/usr/sbin/iconvconfig ]] ; then
-		# Generate fastloading iconv module configuration file.
-		"${EROOT}"/usr/sbin/iconvconfig --prefix="${ROOT}/"
-	fi
-
-	if ! is_crosscompile && [[ -z ${ROOT} ]] ; then
-		# glibc-2.38+ on loong has ldconfig support added, but the ELF e_flags
-		# handling has changed as well, which means stale ldconfig auxiliary
-		# cache entries and failure to lookup libgcc_s / libstdc++ (breaking
-		# every C++ application) / libgomp etc., among other breakages.
-		#
-		# To fix this, simply refresh the ld.so.cache without using the
-		# auxiliary cache if we're natively installing on loong. This should
-		# be done relatively soon because we want to minimize the breakage
-		# window for the affected programs.
-		use loong && glibc_refresh_ldconfig
-
-		if ! use compile-locales; then
-			run_locale_gen 0 "${EROOT}"
-		fi
-
-		# If fixincludes was/is active for a particular GCC slot, we
-		# must refresh it. See bug #933282 and GCC's documentation:
-		# https://gcc.gnu.org/onlinedocs/gcc/Fixed-Headers.html
-		#
-		# TODO: Could this be done for cross? Some care would be needed
-		# to pass the right arguments.
-		while IFS= read -r -d $'\0' slot ; do
-			local mkheaders_path="${BROOT}"/usr/libexec/gcc/${CBUILD}/${slot##*/}/install-tools/mkheaders
-			local pthread_h="${BROOT}"/usr/lib/gcc/${CBUILD}/${slot##*/}/include-fixed/pthread.h
-			if [[ -x ${mkheaders_path} ]] ; then
-				ebegin "Refreshing fixincludes for ${CBUILD} with gcc-${slot##*/}"
-				${mkheaders_path} -v
-				eend $?
-			elif [[ -f ${pthread_h} ]] ; then
-				# fixincludes might have been enabled in the past for this
-				# GCC slot but not since we fixed toolchain.eclass to install
-				# mkheaders, so we need to manually delete pthread.h at least.
-				ebegin "Deleting stale fixincludes'd pthread.h for ${CBUILD} with gcc-${slot##*/}"
-				mv -v "${pthread_h}" "${pthread_h}.bak"
-				eend $?
-			fi
-		done < <(find "${BROOT}"/usr/libexec/gcc/${CBUILD}/ -mindepth 1 -maxdepth 1 -type d -print0)
-	fi
-
-	upgrade_warning
-
-	# Check for sanity of /etc/nsswitch.conf, take 2
-	if [[ -e ${EROOT}/etc/nsswitch.conf ]] && ! has_version sys-auth/libnss-nis ; then
-		local entry
-		for entry in passwd group shadow; do
-			if grep -E -q "^[ \t]*${entry}:.*nis" "${EROOT}"/etc/nsswitch.conf; then
-				ewarn ""
-				ewarn "Your ${EROOT}/etc/nsswitch.conf uses NIS. Support for that has been"
-				ewarn "removed from glibc and is now provided by the package"
-				ewarn "  sys-auth/libnss-nis"
-				ewarn "Install it now to keep your NIS setup working."
-				ewarn ""
-			fi
-		done
-	fi
-
-	if [[ ${PRESERVED_OLD_LIBCRYPT} -eq 1 ]] ; then
-		cp -p "${T}/libcrypt$(get_libname 1)" "${EROOT}/$(get_libdir)/libcrypt$(get_libname 1)" || die
-		preserve_old_lib_notify /$(get_libdir)/libcrypt$(get_libname 1)
-
-		elog "Please ignore a possible later error message about a file collision involving"
-		elog "${EROOT}/$(get_libdir)/libcrypt$(get_libname 1). We need to preserve this file for the moment to keep"
-		elog "the upgrade working, but it also needs to be overwritten when"
-		elog "sys-libs/libxcrypt is installed. See bug 802210 for more details."
-	fi
-}

diff --git a/sys-libs/glibc/glibc-2.42-r6.ebuild b/sys-libs/glibc/glibc-2.42-r6.ebuild
deleted file mode 100644
index 980ea27506f7..000000000000
--- a/sys-libs/glibc/glibc-2.42-r6.ebuild
+++ /dev/null
@@ -1,1861 +0,0 @@
-# Copyright 1999-2026 Gentoo Authors
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=8
-
-# Bumping notes: https://wiki.gentoo.org/wiki/Project:Toolchain/sys-libs/glibc
-# Please read & adapt the page as necessary if obsolete.
-
-PYTHON_COMPAT=( python3_{11..14} )
-TMPFILES_OPTIONAL=1
-
-EMULTILIB_PKG="true"
-
-# Gentoo patchset (ignored for live ebuilds)
-PATCH_VER=8
-PATCH_DEV=dilfridge
-
-# gcc mulitilib bootstrap files version
-GCC_BOOTSTRAP_VER=20201208
-
-# systemd integration version
-GLIBC_SYSTEMD_VER=20210729
-
-# Minimum kernel version that glibc requires
-MIN_KERN_VER="3.2.0"
-
-# Minimum pax-utils version needed (which contains any new syscall changes for
-# its seccomp filter!). Please double check this!
-MIN_PAX_UTILS_VER="1.3.3"
-
-# Minimum systemd version needed (which contains any new syscall changes for
-# its seccomp filter!). Please double check this!
-MIN_SYSTEMD_VER="254.9-r1"
-
-VERIFY_SIG_OPENPGP_KEY_PATH=/usr/share/openpgp-keys/glibc.asc
-
-inherit python-any-r1 prefix preserve-libs toolchain-funcs flag-o-matic gnuconfig \
-	multilib systemd multiprocessing tmpfiles eapi9-ver verify-sig
-
-DESCRIPTION="GNU libc C library"
-HOMEPAGE="https://www.gnu.org/software/libc/"
-
-if [[ ${PV} == *9999 ]]; then
-	inherit git-r3
-else
-	KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86"
-	SRC_URI="mirror://gnu/glibc/${P}.tar.xz"
-	SRC_URI+=" verify-sig? ( mirror://gnu/glibc/${P}.tar.xz.sig )"
-	SRC_URI+=" https://dev.gentoo.org/~${PATCH_DEV}/distfiles/${P}-patches-${PATCH_VER}.tar.xz"
-fi
-
-SRC_URI+=" multilib-bootstrap? ( https://dev.gentoo.org/~dilfridge/distfiles/gcc-multilib-bootstrap-${GCC_BOOTSTRAP_VER}.tar.xz )"
-SRC_URI+=" systemd? ( https://gitweb.gentoo.org/proj/toolchain/glibc-systemd.git/snapshot/glibc-systemd-${GLIBC_SYSTEMD_VER}.tar.gz )"
-
-LICENSE="LGPL-2.1+ BSD HPND ISC inner-net rc PCRE"
-SLOT="2.2"
-IUSE="audit caps cet compile-locales custom-cflags doc gd hash-sysv-compat headers-only +multiarch multilib multilib-bootstrap nscd perl profile selinux sframe +ssp stack-realign +static-libs suid systemd systemtap test vanilla"
-
-# Here's how the cross-compile logic breaks down ...
-#  CTARGET - machine that will target the binaries
-#  CHOST   - machine that will host the binaries
-#  CBUILD  - machine that will build the binaries
-# If CTARGET != CHOST, it means you want a libc for cross-compiling.
-# If CHOST != CBUILD, it means you want to cross-compile the libc.
-#  CBUILD = CHOST = CTARGET    - native build/install
-#  CBUILD != (CHOST = CTARGET) - cross-compile a native build
-#  (CBUILD = CHOST) != CTARGET - libc for cross-compiler
-#  CBUILD != CHOST != CTARGET  - cross-compile a libc for a cross-compiler
-# For install paths:
-#  CHOST = CTARGET  - install into /
-#  CHOST != CTARGET - install into /usr/CTARGET/
-#
-export CBUILD=${CBUILD:-${CHOST}}
-export CTARGET=${CTARGET:-${CHOST}}
-if [[ ${CTARGET} == ${CHOST} ]] ; then
-	if [[ ${CATEGORY} == cross-* ]] ; then
-		export CTARGET=${CATEGORY#cross-}
-	fi
-fi
-
-# Note [Disable automatic stripping]
-# Disabling automatic stripping for a few reasons:
-# - portage's attempt to strip breaks non-native binaries at least on
-#   arm: bug #697428
-# - portage's attempt to strip libpthread.so.0 breaks gdb thread
-#   enumeration: bug #697910. This is quite subtle:
-#   * gdb uses glibc's libthread_db-1.0.so to enumerate threads.
-#   * libthread_db-1.0.so needs access to libpthread.so.0 local symbols
-#     via 'ps_pglobal_lookup' symbol defined in gdb.
-#   * 'ps_pglobal_lookup' uses '.symtab' section table to resolve all
-#     known symbols in 'libpthread.so.0'. Specifically 'nptl_version'
-#     (unexported) is used to sanity check compatibility before enabling
-#     debugging.
-#     Also see https://sourceware.org/gdb/wiki/FAQ#GDB_does_not_see_any_threads_besides_the_one_in_which_crash_occurred.3B_or_SIGTRAP_kills_my_program_when_I_set_a_breakpoint
-#   * normal 'strip' command trims '.symtab'
-#   Thus our main goal here is to prevent 'libpthread.so.0' from
-#   losing it's '.symtab' entries.
-# - similarly, valgrind requires knowledge about symbols in ld.so:
-#	bug #920753
-# As Gentoo's strip does not allow us to pass less aggressive stripping
-# options and does not check the machine target we strip selectively.
-
-# We need a new-enough binutils/gcc to match upstream baseline.
-# Also we need to make sure our binutils/gcc supports TLS,
-# and that gcc already contains the hardened patches.
-# Lastly, let's avoid some openssh nastiness, bug 708224, as
-# convenience to our users.
-
-IDEPEND="
-	!compile-locales? ( sys-apps/locale-gen )
-"
-BDEPEND="
-	${PYTHON_DEPS}
-	>=app-misc/pax-utils-${MIN_PAX_UTILS_VER}
-	sys-devel/bison
-	compile-locales? ( sys-apps/locale-gen )
-	doc? (
-		dev-lang/perl
-		sys-apps/texinfo
-	)
-	sframe? ( >=sys-devel/binutils-2.45 )
-	test? (
-		dev-lang/perl
-		>=net-dns/libidn2-2.3.0
-		sys-apps/gawk[mpfr]
-	)
-	verify-sig? ( sec-keys/openpgp-keys-glibc )
-"
-COMMON_DEPEND="
-	gd? ( media-libs/gd:2= )
-	nscd? ( selinux? (
-		audit? ( sys-process/audit )
-		caps? ( sys-libs/libcap )
-	) )
-	suid? ( caps? ( sys-libs/libcap ) )
-	selinux? ( sys-libs/libselinux )
-	systemtap? ( dev-debug/systemtap )
-"
-DEPEND="${COMMON_DEPEND}
-"
-RDEPEND="${COMMON_DEPEND}
-	!<app-misc/pax-utils-${MIN_PAX_UTILS_VER}
-	!<sys-apps/systemd-${MIN_SYSTEMD_VER}
-	perl? ( dev-lang/perl )
-"
-
-RESTRICT="!test? ( test )"
-
-if [[ ${CATEGORY} == cross-* ]] ; then
-	BDEPEND+=" !headers-only? (
-		>=${CATEGORY}/binutils-2.27
-		>=${CATEGORY}/gcc-6.2
-	)"
-	[[ ${CATEGORY} == *-linux* ]] && DEPEND+=" ${CATEGORY}/linux-headers"
-else
-	BDEPEND+="
-		>=sys-devel/binutils-2.27
-		>=sys-devel/gcc-6.2
-	"
-	DEPEND+=" virtual/os-headers "
-	RDEPEND+="
-		>=net-dns/libidn2-2.3.0
-		vanilla? ( !sys-libs/timezone-data )
-	"
-	PDEPEND+=" !vanilla? ( sys-libs/timezone-data )"
-fi
-
-# Ignore tests whitelisted below
-GENTOO_GLIBC_XFAIL_TESTS="${GENTOO_GLIBC_XFAIL_TESTS:-yes}"
-
-# The following tests fail due to the Gentoo build system and are thus
-# executed but ignored:
-XFAIL_TEST_LIST=(
-	# buggy test, assumes /dev/ and /dev/null on a single filesystem
-	# 'mount --bind /dev/null /chroot/dev/null' breaks it.
-	# https://sourceware.org/PR25909
-	tst-support_descriptors
-
-	# The following tests fail only inside portage
-	# https://bugs.gentoo.org/831267
-	tst-system
-	tst-strerror
-	tst-strsignal
-
-	# Fails with certain PORTAGE_NICENESS/PORTAGE_SCHEDULING_POLICY
-	tst-sched1
-	tst-sched_setattr
-	tst-sched_setattr-thread
-
-	# Fails regularly, unreliable
-	tst-valgrind-smoke
-
-	# https://sourceware.org/bugzilla/show_bug.cgi?id=31877 (bug #927973)
-	tst-shstk-legacy-1g
-
-	# https://sourceware.org/bugzilla/show_bug.cgi?id=33239
-	test-double-compoundn
-	test-float-compoundn
-	test-float32-compoundn
-	test-float32x-compoundn
-	test-float64-compoundn
-
-	# Fails only in portage. Needs investigation.
-	tst-setvbuf2
-)
-
-XFAIL_NSPAWN_TEST_LIST=(
-	# These tests need to be adapted to handle EPERM/ENOSYS(?) properly
-	# upstream, as systemd-nspawn's default seccomp whitelist is too strict.
-	# https://sourceware.org/PR30603
-	test-errno-linux
-	tst-aarch64-pkey
-	tst-bz21269
-	tst-mlock2
-	tst-ntp_gettime
-	tst-ntp_gettime-time64
-	tst-ntp_gettimex
-	tst-ntp_gettimex-time64
-	tst-pkey
-	tst-process_mrelease
-	tst-adjtime
-	tst-adjtime-time64
-	tst-clock2
-	tst-clock2-time64
-
-	# These fail if --suppress-sync and/or low priority is set
-	tst-sync_file_range
-	test-errno
-)
-
-#
-# Small helper functions
-#
-
-dump_build_environment() {
-	einfo ==== glibc build environment ========================================================
-	local v
-	for v in ABI CBUILD CHOST CTARGET CBUILD_OPT CTARGET_OPT CC CXX CPP LD \
-		{AS,C,CPP,CXX,LD}FLAGS MAKEINFO NM AR AS STRIP RANLIB OBJCOPY \
-		STRINGS OBJDUMP READELF; do
-		einfo " $(printf '%15s' ${v}:)   ${!v}"
-	done
-	einfo =====================================================================================
-}
-
-is_crosscompile() {
-	[[ ${CHOST} != ${CTARGET} ]]
-}
-
-is_linux() {
-	[[ ${CTARGET} == *-linux-* ]]
-}
-
-is_hurd() {
-	# Let's hope this holds for a long time
-	[[ ${CTARGET} != *-linux-* ]]
-}
-
-just_headers() {
-	is_crosscompile && use headers-only
-}
-
-alt_prefix() {
-	is_crosscompile && echo /usr/${CTARGET}
-}
-
-# This prefix is applicable to CHOST when building against this
-# glibc. It is baked into the library at configure time.
-host_eprefix() {
-	is_crosscompile || echo "${EPREFIX}"
-}
-
-# This prefix is applicable to CBUILD when building against this
-# glibc. It determines the destination path at install time.
-build_eprefix() {
-	is_crosscompile && echo "${EPREFIX}"
-}
-
-alt_headers() {
-	echo $(alt_prefix)/usr/include
-}
-alt_libdir() {
-	echo $(alt_prefix)/$(get_libdir)
-}
-alt_usrlibdir() {
-	echo $(alt_prefix)/usr/$(get_libdir)
-}
-
-builddir() {
-	echo "${WORKDIR}/build-${ABI}-${CTARGET}-$1"
-}
-
-do_compile_test() {
-	local ret save_cflags=${CFLAGS}
-	CFLAGS+=" $1"
-	shift
-
-	pushd "${T}" >/dev/null
-
-	rm -f glibc-test*
-	printf '%b' "$*" > glibc-test.c
-
-	# We assume CC is already set up.
-	nonfatal emake glibc-test
-	ret=$?
-
-	popd >/dev/null
-
-	CFLAGS=${save_cflags}
-	return ${ret}
-}
-
-do_run_test() {
-	local ret
-
-	if [[ ${MERGE_TYPE} == "binary" ]] ; then
-		# ignore build failures when installing a binary package #324685
-		CC="${glibc__ORIG_CC}" CXX="${glibc__ORIG_CXX}" CPP="${glibc__ORIG_CPP}" \
-			CFLAGS="-O2" LDFLAGS="" do_compile_test "" "$@" 2>/dev/null || return 0
-	else
-		ebegin "Performing simple compile test for ABI=${ABI}"
-		if ! do_compile_test "" "$@" ; then
-			ewarn "Simple build failed ... assuming this is desired #324685"
-			eend 1
-			return 0
-		else
-			eend 0
-		fi
-	fi
-
-	pushd "${T}" >/dev/null
-
-	./glibc-test
-	ret=$?
-	rm -f glibc-test*
-
-	popd >/dev/null
-
-	return ${ret}
-}
-
-setup_target_flags() {
-	# This largely mucks with compiler flags.  None of which should matter
-	# when building up just the headers.
-	just_headers && return 0
-
-	case $(tc-arch) in
-		x86)
-			# -march needed for #185404 #199334
-			# TODO: When creating the first glibc cross-compile, this test will
-			# always fail as it does a full link which in turn requires glibc.
-			# Probably also applies when changing multilib profile settings (e.g.
-			# enabling x86 when the profile was amd64-only previously).
-			# We could change main to _start and pass -nostdlib here so that we
-			# only test the gcc code compilation.  Or we could do a compile and
-			# then look for the symbol via scanelf.
-			if ! do_compile_test "" 'void f(int i, void *p) {if (__sync_fetch_and_add(&i, 1)) f(i, p);}\nint main(){return 0;}\n'; then
-				local t=${CTARGET_OPT:-${CTARGET}}
-				t=${t%%-*}
-				filter-flags '-march=*'
-				export CFLAGS="-march=${t} ${CFLAGS}"
-				einfo "Auto adding -march=${t} to CFLAGS #185404"
-			fi
-			# For compatibility with older binaries at slight performance cost.
-			use stack-realign && export CFLAGS+=" -mstackrealign"
-		;;
-		amd64)
-			# -march needed for #185404 #199334
-			# TODO: See cross-compile issues listed above for x86.
-			if [[ ${ABI} == x86 ]]; then
-				if ! do_compile_test "${CFLAGS_x86}" 'void f(int i, void *p) {if (__sync_fetch_and_add(&i, 1)) f(i, p);}\nint main(){return 0;}\n'; then
-					local t=${CTARGET_OPT:-${CTARGET}}
-					t=${t%%-*}
-					# Normally the target is x86_64-xxx, so turn that into the -march that
-					# gcc actually accepts. #528708
-					[[ ${t} == "x86_64" ]] && t="x86-64"
-					filter-flags '-march=*'
-					# ugly, ugly, ugly.  ugly.
-					CFLAGS_x86=$(CFLAGS=${CFLAGS_x86}; filter-flags '-march=*'; echo "${CFLAGS}")
-					export CFLAGS_x86="${CFLAGS_x86} -march=${t}"
-					einfo "Auto adding -march=${t} to CFLAGS_x86 #185404 (ABI=${ABI})"
-				fi
-				# For compatibility with older binaries at slight performance cost.
-				use stack-realign && export CFLAGS_x86+=" -mstackrealign"
-			fi
-		;;
-		mips)
-			# The mips abi cannot support the GNU style hashes. #233233
-			filter-ldflags -Wl,--hash-style=gnu -Wl,--hash-style=both
-		;;
-		ppc|ppc64)
-			# Many arch-specific implementations do not work on ppc with
-			# cache-block not equal to 128 bytes. This breaks memset:
-			#   https://sourceware.org/PR26522
-			#   https://bugs.gentoo.org/737996
-			# Use default -mcpu=. For ppc it means non-multiarch setup.
-			filter-flags '-mcpu=*'
-		;;
-		sparc)
-			# Both sparc and sparc64 can use -fcall-used-g6.  -g7 is bad, though.
-			filter-flags "-fcall-used-g7"
-			append-flags "-fcall-used-g6"
-
-			local cpu
-			case ${CTARGET} in
-			sparc64-*)
-				cpu="sparc64"
-				case $(get-flag mcpu) in
-				v9)
-					# We need to force at least v9a because the base build doesn't
-					# work with just v9.
-					# https://sourceware.org/bugzilla/show_bug.cgi?id=19477
-					append-flags "-Wa,-xarch=v9a"
-					;;
-				esac
-				;;
-			sparc-*)
-				case $(get-flag mcpu) in
-				v8|supersparc|hypersparc|leon|leon3)
-					cpu="sparcv8"
-					;;
-				*)
-					cpu="sparcv9"
-					;;
-				esac
-			;;
-			esac
-			[[ -n ${cpu} ]] && CTARGET_OPT="${cpu}-${CTARGET#*-}"
-		;;
-	esac
-}
-
-setup_flags() {
-	# Make sure host make.conf doesn't pollute us
-	if is_crosscompile || tc-is-cross-compiler ; then
-		CHOST=${CTARGET} strip-unsupported-flags
-	fi
-
-	# Store our CFLAGS because it's changed depending on which CTARGET
-	# we are building when pulling glibc on a multilib profile
-	CFLAGS_BASE=${CFLAGS_BASE-${CFLAGS}}
-	CFLAGS=${CFLAGS_BASE}
-	CXXFLAGS_BASE=${CXXFLAGS_BASE-${CXXFLAGS}}
-	CXXFLAGS=${CXXFLAGS_BASE}
-	ASFLAGS_BASE=${ASFLAGS_BASE-${ASFLAGS}}
-	ASFLAGS=${ASFLAGS_BASE}
-
-	# Allow users to explicitly avoid flag sanitization via
-	# USE=custom-cflags.
-	if ! use custom-cflags; then
-		# Over-zealous CFLAGS can often cause problems.  What may work for one
-		# person may not work for another.  To avoid a large influx of bugs
-		# relating to failed builds, we strip most CFLAGS out to ensure as few
-		# problems as possible.
-		strip-flags
-
-		# Allow -O2 and -O3, but nothing else for now.
-		# TODO: Test -Os, -Oz.
-		if ! is-flagq '-O@(2|3)' ; then
-			# Lock glibc at -O2. We want to be conservative here.
-			filter-flags '-O?'
-			append-flags -O2
-		fi
-	fi
-
-	strip-unsupported-flags
-	filter-lto
-	filter-flags -m32 -m64 '-mabi=*'
-
-	# glibc aborts if rpath is set by LDFLAGS
-	filter-ldflags '-Wl,-rpath=*'
-
-	# ld can't use -r & --relax at the same time, bug #788901
-	# https://sourceware.org/PR27837
-	filter-ldflags '-Wl,--relax'
-
-	# Flag added for cross-prefix, but causes ldconfig to segfault. Not needed
-	# anyway because glibc already handles this by itself.
-	filter-ldflags '-Wl,--dynamic-linker=*'
-
-	# Fails to link (bug #940709) in some cases but even if it manages to,
-	# subtle runtime breakage will occur because the linker scripts need
-	# adaptation. Mentioned in PR21557#c0.
-	filter-ldflags '-Wl,--gc-sections'
-
-	# some weird software relies on sysv hashes in glibc, bug 863863, bug 864100
-	# we have to do that here already so mips can filter it out again :P
-	if use hash-sysv-compat ; then
-		append-ldflags '-Wl,--hash-style=both'
-	fi
-
-	# #492892
-	filter-flags -frecord-gcc-switches
-
-	# #898098
-	filter-flags -fno-builtin
-
-	# #798774
-	filter-flags -fno-semantic-interposition
-
-	# #829583
-	filter-lfs-flags
-
-	unset CBUILD_OPT CTARGET_OPT
-	if use multilib ; then
-		CTARGET_OPT=$(get_abi_CTARGET)
-		[[ -z ${CTARGET_OPT} ]] && CTARGET_OPT=$(get_abi_CHOST)
-	fi
-
-	setup_target_flags
-
-	if [[ -n ${CTARGET_OPT} && ${CBUILD} == ${CHOST} ]] && ! is_crosscompile; then
-		CBUILD_OPT=${CTARGET_OPT}
-	fi
-
-	# glibc's headers disallow -O0 and fail at build time:
-	#  include/libc-symbols.h:75:3: #error "glibc cannot be compiled without optimization"
-	# https://sourceware.org/glibc/wiki/FAQ#Why_do_I_get:.60.23error_.22glibc_cannot_be_compiled_without_optimization.22.27.2C_when_trying_to_compile_GNU_libc_with_GNU_CC.3F
-	replace-flags -O0 -O1
-
-	# Similar issues as with SSP. Can't inject yourself that early.
-	filter-flags '-fsanitize=*'
-
-	# See end of bug #830454; we handle this via USE=cet
-	filter-flags '-fcf-protection=*'
-
-	# When bootstrapping, we may have a situation where
-	# CET-enabled gcc from seed is used to build CET-disabled
-	# glibc. As such, gcc implicitly enables CET if no
-	# -fcf-protection flag is passed. For a typical package it
-	# should not be a problem, but for glibc it matters as it is
-	# dealing with CET in ld.so. So if CET is supposed to be
-	# disabled for glibc, be explicit about it.
-	if ! use cet; then
-		case ${ABI}-${CTARGET} in
-			amd64-x86_64-*|x32-x86_64-*-*-gnux32)
-				append-flags '-fcf-protection=none'
-				;;
-			arm64-aarch64*)
-				append-flags '-mbranch-protection=none'
-				;;
-		esac
-	fi
-}
-
-use_multiarch() {
-	# Allow user to disable runtime arch detection in multilib.
-	use multiarch || return 1
-	# Make sure binutils is new enough to support indirect functions,
-	# #336792. This funky sed supports gold and bfd linkers.
-	local bver nver
-	bver=$($(tc-getLD ${CTARGET}) -v | sed -n -r '1{s:[^0-9]*::;s:^([0-9.]*).*:\1:;p}')
-	case $(tc-arch ${CTARGET}) in
-	amd64|x86) nver="2.20" ;;
-	arm)       nver="2.22" ;;
-	hppa)      nver="2.23" ;;
-	ppc|ppc64) nver="2.20" ;;
-	# ifunc support was added in 2.23, but glibc also needs
-	# machinemode which is in 2.24.
-	s390)      nver="2.24" ;;
-	sparc)     nver="2.21" ;;
-	*)         return 1 ;;
-	esac
-	ver_test ${bver} -ge ${nver}
-}
-
-# Setup toolchain variables that had historically been defined in the
-# profiles for these archs.
-setup_env() {
-	# silly users
-	unset LD_RUN_PATH
-	unset LD_ASSUME_KERNEL
-
-	if is_crosscompile || tc-is-cross-compiler ; then
-		multilib_env ${CTARGET_OPT:-${CTARGET}}
-
-		if ! use multilib ; then
-			MULTILIB_ABIS=${DEFAULT_ABI}
-		else
-			MULTILIB_ABIS=${MULTILIB_ABIS:-${DEFAULT_ABI}}
-		fi
-
-		# If the user has CFLAGS_<CTARGET> in their make.conf, use that,
-		# and fall back on CFLAGS.
-		local VAR=CFLAGS_${CTARGET//[-.]/_}
-		CFLAGS=${!VAR-${CFLAGS}}
-		einfo " $(printf '%15s' 'Manual CFLAGS:')   ${CFLAGS}"
-	fi
-
-	setup_flags
-
-	export ABI=${ABI:-${DEFAULT_ABI:-default}}
-
-	if just_headers ; then
-		# Avoid mixing host's CC and target's CFLAGS_${ABI}:
-		# At this bootstrap stage we have only binutils for
-		# target but not compiler yet.
-		einfo "Skip CC ABI injection. We can't use (cross-)compiler yet."
-		return 0
-	fi
-
-	# glibc does not work with non-bfd (for various reasons):
-	# * gold (bug #269274)
-	# * mold (bug #860900)
-	tc-ld-force-bfd
-
-	if use doc ; then
-		export MAKEINFO=makeinfo
-	else
-		export MAKEINFO=/dev/null
-	fi
-
-	# Reset CC and CXX to the value at start of emerge
-	export CC=${glibc__ORIG_CC:-${CC:-$(tc-getCC ${CTARGET})}}
-	export CXX=${glibc__ORIG_CXX:-${CXX:-$(tc-getCXX ${CTARGET})}}
-	export CPP=${glibc__ORIG_CPP:-${CPP:-$(tc-getCPP ${CTARGET})}}
-
-	# and make sure glibc__ORIG_CC and glibc__ORIG_CXX is defined now.
-	export glibc__ORIG_CC=${CC}
-	export glibc__ORIG_CXX=${CXX}
-	export glibc__ORIG_CPP=${CPP}
-
-	if tc-is-clang && ! use custom-cflags && ! is_crosscompile ; then
-		export glibc__force_gcc=yes
-		# once this is toggled on, it needs to stay on, since with CPP manipulated
-		# tc-is-clang does not work correctly anymore...
-	fi
-
-	if [[ ${glibc__force_gcc} == "yes" ]] ; then
-		# If we are running in an otherwise clang/llvm environment, we need to
-		# recover the proper gcc and binutils settings here, at least until glibc
-		# is finally building with clang. So let's override everything that is
-		# set in the clang profiles.
-		# Want to shoot yourself into the foot? Set USE=custom-cflags, that's always
-		# a good start into that direction.
-		# Also, if you're crosscompiling, let's assume you know what you are doing.
-		# Hopefully.
-		# Last, we need the settings of the *build* environment, not of the
-		# target environment...
-
-		local current_binutils_path=$(env CHOST="${CBUILD}" ROOT="${BROOT}" binutils-config -B "${CTARGET}")
-		local current_gcc_path=$(env ROOT="${BROOT}" gcc-config -B)
-		einfo "Overriding clang configuration, since it won't work here"
-
-		export CC="${current_gcc_path}/${CTARGET}-gcc"
-		export CPP="${current_gcc_path}/${CTARGET}-cpp"
-		export CXX="${current_gcc_path}/${CTARGET}-g++"
-		export LD="${current_binutils_path}/ld.bfd"
-		export AR="${current_binutils_path}/ar"
-		export AS="${current_binutils_path}/as"
-		export NM="${current_binutils_path}/nm"
-		export STRIP="${current_binutils_path}/strip"
-		export RANLIB="${current_binutils_path}/ranlib"
-		export OBJCOPY="${current_binutils_path}/objcopy"
-		export STRINGS="${current_binutils_path}/strings"
-		export OBJDUMP="${current_binutils_path}/objdump"
-		export READELF="${current_binutils_path}/readelf"
-		export ADDR2LINE="${current_binutils_path}/addr2line"
-
-		# do we need to also do flags munging here? yes! at least...
-		filter-flags '-fuse-ld=*'
-		filter-flags '-D_FORTIFY_SOURCE=*'
-
-	else
-
-		# this is the "normal" case
-
-		export CC="$(tc-getCC ${CTARGET})"
-		export CXX="$(tc-getCXX ${CTARGET})"
-		export CPP="$(tc-getCPP ${CTARGET})"
-
-		# Always use tuple-prefixed toolchain. For non-native ABI glibc's configure
-		# can't detect them automatically due to ${CHOST} mismatch and fallbacks
-		# to unprefixed tools. Similar to multilib.eclass:multilib_toolchain_setup().
-		export NM="$(tc-getNM ${CTARGET})"
-		export READELF="$(tc-getREADELF ${CTARGET})"
-
-	fi
-
-	# We need to export CFLAGS with abi information in them because glibc's
-	# configure script checks CFLAGS for some targets (like mips).  Keep
-	# around the original clean value to avoid appending multiple ABIs on
-	# top of each other. (Why does the comment talk about CFLAGS if the code
-	# acts on CC?)
-	export glibc__GLIBC_CC=${CC}
-	export glibc__GLIBC_CXX=${CXX}
-	export glibc__GLIBC_CPP=${CPP}
-
-	export glibc__abi_CFLAGS="$(get_abi_CFLAGS)"
-
-	# CFLAGS can contain ABI-specific flags like -mfpu=neon, see bug #657760
-	# To build .S (assembly) files with the same ABI-specific flags
-	# upstream currently recommends adding CFLAGS to CC/CXX:
-	#    https://sourceware.org/PR23273
-	# Note: Passing CFLAGS via CPPFLAGS overrides glibc's arch-specific CFLAGS
-	# and breaks multiarch support. See 659030#c3 for an example.
-	# The glibc configure script doesn't properly use LDFLAGS all the time.
-	export CC="${glibc__GLIBC_CC} ${glibc__abi_CFLAGS} ${CFLAGS} ${LDFLAGS}"
-
-	# Some of the tests are written in C++, so we need to force our multlib abis in, bug 623548
-	export CXX="${glibc__GLIBC_CXX} ${glibc__abi_CFLAGS} ${CFLAGS}"
-
-	export CPP="${glibc__GLIBC_CPP} ${glibc__abi_CFLAGS} ${CFLAGS}"
-
-	if is_crosscompile; then
-		# Assume worst-case bootstrap: glibc is built for the first time
-		# with ${CTARGET}-g++ not available yet. We avoid
-		# building auxiliary programs that require C++: bug #683074
-		# It should not affect final result.
-		export libc_cv_cxx_link_ok=no
-		# The line above has the same effect. We set CXX explicitly
-		# to make build logs less confusing.
-		export CXX=
-	fi
-}
-
-foreach_abi() {
-	setup_env
-
-	local ret=0
-	local abilist=""
-	if use multilib ; then
-		abilist=$(get_install_abis)
-	else
-		abilist=${DEFAULT_ABI}
-	fi
-	local -x ABI
-	for ABI in ${abilist:-default} ; do
-		setup_env
-		einfo "Running $1 for ABI ${ABI}"
-		$1
-		: $(( ret |= $? ))
-	done
-	return ${ret}
-}
-
-glibc_banner() {
-	local b="Gentoo ${PVR}"
-	[[ -n ${PATCH_VER} ]] && ! use vanilla && b+=" (patchset ${PATCH_VER})"
-	echo "${b}"
-}
-
-# The following Kernel version handling functions are mostly copied from portage
-# source. It's better not to use linux-info.eclass here since a) it adds too
-# much magic, see bug 326693 for some of the arguments, and b) some of the
-# functions are just not provided.
-
-g_get_running_KV() {
-	uname -r
-	return $?
-}
-
-g_KV_major() {
-	[[ -z $1 ]] && return 1
-	local KV=$@
-	echo "${KV%%.*}"
-}
-
-g_KV_minor() {
-	[[ -z $1 ]] && return 1
-	local KV=$@
-	KV=${KV#*.}
-	echo "${KV%%.*}"
-}
-
-g_KV_micro() {
-	[[ -z $1 ]] && return 1
-	local KV=$@
-	KV=${KV#*.*.}
-	echo "${KV%%[^[:digit:]]*}"
-}
-
-g_KV_to_int() {
-	[[ -z $1 ]] && return 1
-	local KV_MAJOR=$(g_KV_major "$1")
-	local KV_MINOR=$(g_KV_minor "$1")
-	local KV_MICRO=$(g_KV_micro "$1")
-	local KV_int=$(( KV_MAJOR * 65536 + KV_MINOR * 256 + KV_MICRO ))
-
-	# We make version 2.2.0 the minimum version we will handle as
-	# a sanity check ... if its less, we fail ...
-	if [[ ${KV_int} -ge 131584 ]] ; then
-		echo "${KV_int}"
-		return 0
-	fi
-	return 1
-}
-
-g_int_to_KV() {
-	local version=$1 major minor micro
-	major=$((version / 65536))
-	minor=$(((version % 65536) / 256))
-	micro=$((version % 256))
-	echo ${major}.${minor}.${micro}
-}
-
-get_kheader_version() {
-	printf '#include <linux/version.h>\nLINUX_VERSION_CODE\n' | \
-	$(tc-getCPP ${CTARGET}) -I "${ESYSROOT}$(alt_headers)" - | \
-	tail -n 1
-}
-
-# We collect all sanity checks here. Consistency is not guranteed between
-# pkg_ and src_ phases, so we call this function both in pkg_pretend and in
-# src_unpack.
-sanity_prechecks() {
-	# Prevent native builds from downgrading
-	if [[ ${MERGE_TYPE} != "buildonly" ]] && \
-	   [[ -z ${ROOT} ]] && \
-	   [[ ${CBUILD} == ${CHOST} ]] && \
-	   [[ ${CHOST} == ${CTARGET} ]] ; then
-
-		# The high rev # is to allow people to downgrade between -r#
-		# versions. We want to block 2.20->2.19, but 2.20-r3->2.20-r2
-		# should be fine. Hopefully we never actually use a r# this
-		# high.
-		if has_version ">${CATEGORY}/${P}-r10000" ; then
-			eerror "Sanity check to keep you from breaking your system:"
-			eerror " Downgrading glibc is not supported and a sure way to destruction."
-			[[ ${I_ALLOW_TO_BREAK_MY_SYSTEM} = yes ]] || die "Aborting to save your system."
-		fi
-
-		if ! do_run_test '#include <unistd.h>\n#include <sys/syscall.h>\nint main(){return syscall(1000)!=-1;}\n' ; then
-			eerror "Your old kernel is broken. You need to update it to a newer"
-			eerror "version as syscall(<bignum>) will break. See bug 279260."
-			[[ ${I_ALLOW_TO_BREAK_MY_SYSTEM} = yes ]] || die "Old and broken kernel."
-		fi
-	fi
-
-	if [[ ${CTARGET} == i386-* ]] ; then
-		eerror "i386 CHOSTs are no longer supported."
-		eerror "Chances are you don't actually want/need i386."
-		eerror "Please read https://www.gentoo.org/doc/en/change-chost.xml"
-		die "Please fix your CHOST"
-	fi
-
-	if [[ -e /proc/xen ]] && [[ $(tc-arch) == "x86" ]] && ! is-flag -mno-tls-direct-seg-refs ; then
-		ewarn "You are using Xen but don't have -mno-tls-direct-seg-refs in your CFLAGS."
-		ewarn "This will result in a 50% performance penalty when running with a 32bit"
-		ewarn "hypervisor, which is probably not what you want."
-	fi
-
-	# ABI-specific checks follow here. Hey, we have a lot more specific conditions that
-	# we test for...
-	if ! is_crosscompile && ! tc-is-cross-compiler ; then
-		if use amd64 && use multilib && [[ ${MERGE_TYPE} != "binary" ]] ; then
-			ebegin "Checking if the system can execute 32-bit binaries"
-			echo 'int main(){return 0;}' > "${T}/check-ia32-emulation.c"
-			local STAT
-			if ${CC-${CHOST}-gcc} ${CFLAGS_x86} "${T}/check-ia32-emulation.c" -o "${T}/check-ia32-emulation.elf32"; then
-				"${T}/check-ia32-emulation.elf32"
-				STAT=$?
-			else
-				# Don't fail here to allow single->multi ABI switch
-				# or recover from breakage like bug #646424
-				ewarn "Failed to compile the ABI test. Broken host glibc?"
-				STAT=0
-			fi
-			rm -f "${T}/check-ia32-emulation.elf32"
-			eend $STAT
-			if [[ $STAT -ne 0 ]]; then
-				eerror "Ensure that CONFIG_IA32_EMULATION is enabled in the kernel."
-				eerror "Seek support otherwise."
-				die "Unable to execute 32-bit binaries"
-			fi
-		fi
-
-	fi
-
-	# When we actually have to compile something...
-	if ! just_headers && [[ ${MERGE_TYPE} != "binary" ]] ; then
-		if [[ -d "${ESYSROOT}"/usr/lib/include ]] ; then
-			# bug #833620, bug #643302
-			eerror "Found ${ESYSROOT}/usr/lib/include directory!"
-			eerror "This is known to break glibc's build."
-			eerror "Please backup its contents then remove the directory."
-			die "Found directory (${ESYSROOT}/usr/lib/include) which will break build (bug #833620)!"
-		fi
-
-		if [[ ${CTARGET} == *-linux* ]] ; then
-			local run_kv build_kv want_kv
-
-			run_kv=$(g_get_running_KV)
-			build_kv=$(g_int_to_KV $(get_kheader_version))
-			want_kv=${MIN_KERN_VER}
-
-			if ! is_crosscompile && ! tc-is-cross-compiler ; then
-				# Building fails on an non-supporting kernel
-				ebegin "Checking running kernel version (${run_kv} >= ${want_kv})"
-				if ! [[ $(g_KV_to_int ${run_kv}) -ge $(g_KV_to_int ${want_kv}) ]] ; then
-					eend 1
-					echo
-					eerror "You need a kernel of at least ${want_kv}!"
-					die "Kernel version too low!"
-				fi
-				eend 0
-			fi
-
-			# Do not run this check for pkg_pretend, just pkg_setup and friends (if we ever get used there).
-			# It's plausible (seen it in the wild) that Portage will (correctly) schedule a linux-headers
-			# upgrade before glibc, but because pkg_pretend gets run before any packages are merged at all (not
-			# just glibc), the whole emerge gets aborted without a good reason. We probably don't
-			# need to run this check at all given we have a dependency on the right headers,
-			# but let's leave it as-is for now.
-			if [[ ${EBUILD_PHASE_FUNC} != pkg_pretend ]] ; then
-				ebegin "Checking linux-headers version (${build_kv} >= ${want_kv})"
-				if ! [[ $(g_KV_to_int ${build_kv}) -ge $(g_KV_to_int ${want_kv}) ]] ; then
-					eend 1
-					echo
-					eerror "You need linux-headers of at least ${want_kv}!"
-					die "linux-headers version too low!"
-				fi
-				eend 0
-			fi
-		fi
-	fi
-}
-
-upgrade_warning() {
-	is_crosscompile && return
-
-	if [[ ${MERGE_TYPE} != buildonly && -n ${REPLACING_VERSIONS} && -z ${ROOT} ]]; then
-		if ver_replacing -lt $(ver_cut 1-2 ${PV}); then
-			ewarn "After upgrading glibc, please restart all running processes."
-			ewarn "Be sure to include init (telinit u) or systemd (systemctl daemon-reexec)."
-			ewarn "Alternatively, reboot your system."
-			ewarn "(See bug #660556, bug #741116, bug #823756, etc)"
-		fi
-	fi
-}
-
-#
-# the phases
-#
-
-# pkg_pretend
-
-pkg_pretend() {
-	upgrade_warning
-}
-
-# pkg_setup
-
-pkg_setup() {
-	# see bug 682570
-	[[ -z ${BOOTSTRAP_RAP} ]] && python-any-r1_pkg_setup
-}
-
-# src_unpack
-
-src_unpack() {
-	setup_env
-
-	einfo "Checking general environment sanity."
-	sanity_prechecks
-
-	use multilib-bootstrap && unpack gcc-multilib-bootstrap-${GCC_BOOTSTRAP_VER}.tar.xz
-
-	if [[ ${PV} == *9999 ]] ; then
-		EGIT_REPO_URI="
-			https://anongit.gentoo.org/git/proj/toolchain/glibc-patches.git
-			https://github.com/gentoo/glibc-patches.git
-		"
-		EGIT_CHECKOUT_DIR=${WORKDIR}/patches-git
-		git-r3_src_unpack
-		mv patches-git/9999 patches || die
-		EGIT_REPO_URI="
-			https://sourceware.org/git/glibc.git
-			https://git.sr.ht/~sourceware/glibc
-			https://gitlab.com/x86-glibc/glibc.git
-		"
-		EGIT_CHECKOUT_DIR=${S}
-		[[ ${PV} == *.*.9999 ]] && EGIT_BRANCH=release/${PV%.*}/master
-		git-r3_src_unpack
-	else
-		if use verify-sig; then
-			verify-sig_verify_detached "${DISTDIR}/${P}.tar.xz" "${DISTDIR}/${P}.tar.xz.sig"
-		fi
-		unpack ${P}.tar.xz
-
-		cd "${WORKDIR}" || die
-		unpack ${P}-patches-${PATCH_VER}.tar.xz
-	fi
-
-	cd "${WORKDIR}" || die
-	use systemd && unpack glibc-systemd-${GLIBC_SYSTEMD_VER}.tar.gz
-}
-
-# src_prepare
-
-src_prepare() {
-	local patchsetname
-	if ! use vanilla ; then
-		if [[ ${PV} == 9999* ]] ; then
-			patchsetname="from git master"
-		else
-			patchsetname="${PV}-${PATCH_VER}"
-		fi
-		einfo "Applying Gentoo Glibc patchset ${patchsetname}"
-		eapply "${WORKDIR}"/patches
-		einfo "Done."
-	fi
-
-	case ${CTARGET} in
-		m68*-aligned-*)
-			einfo "Applying utmp format fix for m68k with -maligned-int"
-			eapply "${FILESDIR}/glibc-2.41-m68k-malign.patch"
-			;;
-		*)
-			;;
-	esac
-
-	default
-
-	gnuconfig_update
-
-	cd "${WORKDIR}" || die
-	find . -name configure -exec touch {} +
-
-	# Fix permissions on some of the scripts.
-	chmod u+x "${S}"/scripts/*.sh
-
-	cd "${S}" || die
-}
-
-# src_configure
-
-glibc_do_configure() {
-	dump_build_environment
-
-	local myconf=()
-
-	# Use '=strong' instead of '=all' to protect only functions
-	# worth protecting from stack smashes.
-	myconf+=( --enable-stack-protector=$(usex ssp strong no) )
-
-	# Keep a whitelist of targets supporting IFUNC. glibc's ./configure
-	# is not robust enough to detect proper support:
-	#    https://bugs.gentoo.org/641216
-	#    https://sourceware.org/PR22634#c0
-	case $(tc-arch ${CTARGET}) in
-		# Keep whitelist of targets where autodetection mostly works.
-		amd64|x86|sparc|ppc|ppc64|arm|arm64|s390|riscv|loong) ;;
-		# Blacklist everywhere else
-		*) myconf+=( libc_cv_ld_gnu_indirect_function=no ) ;;
-	esac
-
-	case ${ABI}-${CTARGET} in
-		amd64-x86_64-*|x32-x86_64-*-*-gnux32) myconf+=( $(use_enable cet) ) ;;
-		*) ;;
-	esac
-
-	case ${ABI}-${CTARGET} in
-		amd64-x86_64-*|arm64-aarch64-*) myconf+=( $(use_enable sframe) ) ;;
-		*) ;;
-	esac
-
-	[[ $(tc-is-softfloat) == "yes" ]] && myconf+=( --without-fp )
-
-	myconf+=( --enable-kernel=${MIN_KERN_VER} )
-
-	# Since SELinux support is only required for nscd, only enable it if:
-	# 1. USE selinux
-	# 2. only for the primary ABI on multilib systems
-	# 3. Not a crosscompile
-	if ! is_crosscompile && use selinux ; then
-		if use multilib ; then
-			if is_final_abi ; then
-				myconf+=( --with-selinux )
-			else
-				myconf+=( --without-selinux )
-			fi
-		else
-			myconf+=( --with-selinux )
-		fi
-	else
-		myconf+=( --without-selinux )
-	fi
-
-	# Force a few tests where we always know the answer but
-	# configure is incapable of finding it.
-	if is_crosscompile ; then
-		export \
-			libc_cv_c_cleanup=yes \
-			libc_cv_forced_unwind=yes
-	fi
-
-	myconf+=(
-		--disable-werror
-		--enable-bind-now
-		--enable-fortify-source
-		--build=${CBUILD_OPT:-${CBUILD}}
-		--host=${CTARGET_OPT:-${CTARGET}}
-		$(use_enable profile)
-		$(use_with gd)
-		--with-headers="${ESYSROOT}$(alt_headers)"
-		--prefix="$(host_eprefix)/usr"
-		--sysconfdir="$(host_eprefix)/etc"
-		--localstatedir="$(host_eprefix)/var"
-		--libdir='$(prefix)'/$(get_libdir)
-		--mandir='$(prefix)'/share/man
-		--infodir='$(prefix)'/share/info
-		--libexecdir='$(libdir)'/misc/glibc
-		--with-bugurl=https://bugs.gentoo.org/
-		--with-pkgversion="$(glibc_banner)"
-		$(use_multiarch || echo --disable-multi-arch)
-		$(use_enable systemtap)
-		$(use_enable nscd)
-
-		# /usr/bin/mtrace has a Perl shebang. Gentoo Prefix QA checks fail if
-		# Perl hasn't been installed inside the prefix yet and configure picks
-		# up a Perl from outside the prefix instead. configure will fail to
-		# execute Perl during configure if we're cross-compiling a prefix, but
-		# it will just disable mtrace in that case.
-		# Note: mtrace is needed by the test suite.
-		ac_cv_path_PERL="$(usex perl "${EPREFIX}"/usr/bin/perl $(usex test "${EPREFIX}"/usr/bin/perl $(usex doc "${EPREFIX}"/usr/bin/perl no)))"
-
-		# locale data is arch-independent
-		# https://bugs.gentoo.org/753740
-		libc_cv_complocaledir='${exec_prefix}/lib/locale'
-
-		# On aarch64 there is no way to override -mcpu=native, and if
-		# the current cpu does not support SVE configure fails.
-		# Let's boldly assume our toolchain can always build SVE instructions.
-		libc_cv_aarch64_sve_asm=yes
-
-		${EXTRA_ECONF}
-	)
-
-	# We rely on sys-libs/timezone-data for timezone tools normally.
-	myconf+=( $(use_enable vanilla timezone-tools) )
-
-	# These libs don't have configure flags.
-	ac_cv_lib_audit_audit_log_user_avc_message=$(usex audit || echo no)
-	ac_cv_lib_cap_cap_init=$(usex caps || echo no)
-
-	# There is no configure option for this and we need to export it
-	# since the glibc build will re-run configure on itself
-	export libc_cv_rootsbindir="$(host_eprefix)/sbin"
-	export libc_cv_slibdir="$(host_eprefix)/$(get_libdir)"
-
-	local builddir=$(builddir nptl)
-	mkdir -p "${builddir}"
-	cd "${builddir}"
-	set -- "${S}"/configure "${myconf[@]}"
-	echo "$@"
-	"$@" || die "failed to configure glibc"
-
-	# If we're trying to migrate between ABI sets, we need
-	# to lie and use a local copy of gcc.  Like if the system
-	# is built with MULTILIB_ABIS="amd64 x86" but we want to
-	# add x32 to it, gcc/glibc don't yet support x32.
-	#
-	if [[ -n ${GCC_BOOTSTRAP_VER} ]] && use multilib-bootstrap ; then
-		echo 'int main(void){}' > "${T}"/test.c || die
-		if ! $(tc-getCC ${CTARGET}) ${CFLAGS} ${LDFLAGS} "${T}"/test.c -Wl,-emain -lgcc 2>/dev/null ; then
-			sed -i -e '/^CC = /s:$: -B$(objdir)/../'"gcc-multilib-bootstrap-${GCC_BOOTSTRAP_VER}/${ABI}:" config.make || die
-		fi
-	fi
-}
-
-glibc_headers_configure() {
-	export ABI=default
-
-	local builddir=$(builddir "headers")
-	mkdir -p "${builddir}"
-	cd "${builddir}"
-
-	# if we don't have a compiler yet, we can't really test it now ...
-	# hopefully they don't affect header generation, so let's hope for
-	# the best here ...
-	local v vars=(
-		ac_cv_header_cpuid_h=yes
-		libc_cv_{386,390,alpha,arm,hppa,mips,{powerpc,sparc}{,32,64},sh,x86_64}_tls=yes
-		libc_cv_asm_cfi_directives=yes
-		libc_cv_broken_visibility_attribute=no
-		libc_cv_c_cleanup=yes
-		libc_cv_compiler_powerpc64le_binary128_ok=yes
-		libc_cv_forced_unwind=yes
-		libc_cv_gcc___thread=yes
-		libc_cv_mlong_double_128=yes
-		libc_cv_mlong_double_128ibm=yes
-		libc_cv_ppc_machine=yes
-		libc_cv_ppc_rel16=yes
-		libc_cv_predef_fortify_source=no
-		libc_cv_target_power8_ok=yes
-		libc_cv_visibility_attribute=yes
-		libc_cv_z_combreloc=yes
-		libc_cv_z_execstack=yes
-		libc_cv_z_initfirst=yes
-		libc_cv_z_nodelete=yes
-		libc_cv_z_nodlopen=yes
-		libc_cv_z_relro=yes
-		libc_mips_abi=${ABI}
-		libc_mips_float=$([[ $(tc-is-softfloat) == "yes" ]] && echo soft || echo hard)
-		# These libs don't have configure flags.
-		ac_cv_lib_audit_audit_log_user_avc_message=no
-		ac_cv_lib_cap_cap_init=no
-	)
-
-	einfo "Forcing cached settings:"
-	for v in "${vars[@]}" ; do
-		einfo " ${v}"
-		export ${v}
-	done
-
-	local headers_only_arch_CPPFLAGS=()
-
-	# Blow away some random CC settings that screw things up. #550192
-	if [[ -d ${S}/sysdeps/mips ]]; then
-		pushd "${S}"/sysdeps/mips >/dev/null
-		sed -i -e '/^CC +=/s:=.*:= -D_MIPS_SZPTR=32:' mips32/Makefile mips64/n32/Makefile || die
-		sed -i -e '/^CC +=/s:=.*:= -D_MIPS_SZPTR=64:' mips64/n64/Makefile || die
-
-		# Force the mips ABI to the default.  This is OK because the set of
-		# installed headers in this phase is the same between the 3 ABIs.
-		# If this ever changes, this hack will break, but that's unlikely
-		# as glibc discourages that behavior.
-		# https://crbug.com/647033
-		sed -i -e 's:abiflag=.*:abiflag=_ABIO32:' preconfigure || die
-
-		popd >/dev/null
-	fi
-
-	local myconf=()
-
-	case ${CTARGET} in
-	aarch64*)
-		# The configure checks fail during cross-build, so disable here
-		# for headers-only
-		myconf+=(
-			--disable-mathvec
-		) ;;
-	riscv*)
-		# RISC-V interrogates the compiler to determine which target to
-		# build.  If building the headers then we don't strictly need a
-		# RISC-V compiler, so the built-in definitions that are provided
-		# along with all RISC-V compiler might not exist.  This causes
-		# glibc's RISC-V preconfigure script to blow up.  Since we're just
-		# building the headers any value will actually work here, so just
-		# pick the standard one (rv64g/lp64d) to make the build scripts
-		# happy for now -- the headers are all the same anyway so it
-		# doesn't matter.
-		headers_only_arch_CPPFLAGS+=(
-			-D__riscv_xlen=64
-			-D__riscv_flen=64
-			-D__riscv_float_abi_double=1
-			-D__riscv_atomic=1
-		) ;;
-	esac
-
-	myconf+=(
-		--disable-sanity-checks
-		--enable-hacker-mode
-		--disable-werror
-		--enable-bind-now
-		--build=${CBUILD_OPT:-${CBUILD}}
-		--host=${CTARGET_OPT:-${CTARGET}}
-		--with-headers="${ESYSROOT}$(alt_headers)"
-		--prefix="$(host_eprefix)/usr"
-		${EXTRA_ECONF}
-	)
-
-	# Nothing is compiled here which would affect the headers for the target.
-	# So forcing CC/CFLAGS is sane.
-	local headers_only_CC=$(tc-getBUILD_CC)
-	local headers_only_CFLAGS="-O1 -pipe"
-	local headers_only_CPPFLAGS="-U_FORTIFY_SOURCE ${headers_only_arch_CPPFLAGS[*]}"
-	local headers_only_LDFLAGS=""
-	set -- "${S}"/configure "${myconf[@]}"
-	echo \
-		"CC=${headers_only_CC}" \
-		"CFLAGS=${headers_only_CFLAGS}" \
-		"CPPFLAGS=${headers_only_CPPFLAGS}" \
-		"LDFLAGS=${headers_only_LDFLAGS}" \
-		"$@"
-	CC=${headers_only_CC} \
-	CFLAGS=${headers_only_CFLAGS} \
-	CPPFLAGS=${headers_only_CPPFLAGS} \
-	LDFLAGS="" \
-	"$@" || die "failed to configure glibc"
-}
-
-do_src_configure() {
-	if just_headers ; then
-		glibc_headers_configure
-	else
-		glibc_do_configure nptl
-	fi
-}
-
-src_configure() {
-	foreach_abi do_src_configure
-}
-
-# src_compile
-
-do_src_compile() {
-	emake -C "$(builddir nptl)"
-}
-
-src_compile() {
-	if just_headers ; then
-		return
-	fi
-
-	foreach_abi do_src_compile
-}
-
-# src_test
-
-glibc_src_test() {
-	cd "$(builddir nptl)"
-
-	local myxfailparams=""
-	if [[ "${GENTOO_GLIBC_XFAIL_TESTS}" == "yes" ]] ; then
-		local virt=$(systemd-detect-virt 2>/dev/null)
-		if [[ ${virt} == systemd-nspawn ]] ; then
-			ewarn "Skipping extra tests because in systemd-nspawn container"
-			XFAIL_TEST_LIST+=( "${XFAIL_NSPAWN_TEST_LIST[@]}" )
-		fi
-		if [[ "$(nice)" == "19" ]] ; then
-			# Expects to be able to increase niceness, which it can't do if
-			# already at the highest nice value
-			XFAIL_TEST_LIST+=( "tst-nice" )
-		fi
-
-		for myt in ${XFAIL_TEST_LIST[@]} ; do
-			myxfailparams+="test-xfail-${myt}=yes "
-		done
-	fi
-
-	# sandbox does not understand unshare() and prevents
-	# writes to /proc/, which makes many tests fail
-
-	# we give the tests a bit more time to avoid spurious
-	# bug reports on slow arches
-
-	SANDBOX_ON=0 LD_PRELOAD= TIMEOUTFACTOR=16 nonfatal emake ${myxfailparams} check
-}
-
-src_test() {
-	if just_headers ; then
-		return
-	fi
-
-	# glibc_src_test uses nonfatal so that we can run tests for all ABIs
-	# and fail at the end instead.
-	foreach_abi glibc_src_test || die "tests failed"
-}
-
-# src_install
-
-run_locale_gen() {
-	local fatal=$1 prefix=$2
-	local user_config action config stderr noun ret
-	local -a hasversion_opts localegen_args
-
-	if [[ ${EBUILD_PHASE_FUNC} == src_install ]]; then
-		hasversion_opts=( -b )
-	fi
-
-	if has_version "${hasversion_opts[@]}" '>=sys-apps/locale-gen-3'; then
-		localegen_args=( --prefix "${prefix}" )
-	else
-		config="${prefix}/usr/share/i18n/SUPPORTED"
-		user_config="${prefix}/etc/locale.gen"
-		if [[ ${EBUILD_PHASE_FUNC} == src_install ]]; then
-			# For USE=compile-locales, all locales should be built.
-			mkdir -p -- "${prefix}/usr/lib/locale" || die
-		elif locale-gen --list --config "${user_config}" | read -r; then
-			config=${user_config}
-		fi
-		localegen_args=( --config "${config}" --destdir "${prefix}" )
-	fi
-
-	# bug 736794: we need to be careful with the parallelization... the
-	# number of processors saved in the environment of a binary package may
-	# differ strongly from the number of processes available during postinst
-	if [[ ${EMERGE_FROM} != binary ]]; then
-		localegen_args+=( --jobs "$(get_makeopts_jobs)" )
-	fi
-
-	printf 'Executing: locale-gen %s\n' "${localegen_args[*]@Q}" >&2
-	{ stderr=$(locale-gen "${localegen_args[@]}" 2>&1 >&3); } 3>&1
-	ret=$?
-	action="ewarn"
-	if (( ret == 0 )); then
-		noun="warning"
-	else
-		noun="error"
-		if (( fatal )); then
-			action="die"
-		fi
-	fi
-	# Convey warnings/errors so that they can be reseen upon emerge exiting.
-	if [[ ${stderr} ]]; then
-		ewarn "locale-gen(8) issued the following ${noun}s:"
-		while read -r; do
-			ewarn "$REPLY"
-		done <<<"${stderr}"
-	fi
-	if (( ret != 0 )); then
-		"${action}" "locale-gen(8) unexpectedly failed during the ${EBUILD_PHASE_FUNC} phase"
-	fi
-}
-
-glibc_do_src_install() {
-	local builddir=$(builddir nptl)
-	cd "${builddir}"
-
-	emake install_root="${D}/$(build_eprefix)$(alt_prefix)" install
-
-	# This version (2.26) provides some compatibility libraries for the NIS/NIS+ support
-	# which come without headers etc. Only needed for binary packages since the
-	# external net-libs/libnsl has increased soversion. Keep only versioned libraries.
-	find "${D}" -name "libnsl.a" -delete
-	find "${D}" -name "libnsl.so" -delete
-
-	# Normally upstream_pv is ${PV}. Live ebuilds are exception, there we need
-	# to infer upstream version:
-	# '#define VERSION "2.26.90"' -> '2.26.90'
-	local upstream_pv=$(sed -n -r 's/#define VERSION "(.*)"/\1/p' "${S}"/version.h)
-
-	# Avoid stripping binaries not targeted by ${CHOST}. Or else
-	# ${CHOST}-strip would break binaries build for ${CTARGET}.
-	is_crosscompile && dostrip -x /
-
-	# gdb thread introspection relies on local libpthreads symbols. stripping breaks it
-	# See Note [Disable automatic stripping]
-	dostrip -x $(alt_libdir)/libpthread-${upstream_pv}.so
-	# valgrind requires knowledge about ld.so symbols.
-	dostrip -x $(alt_libdir)/ld-*.so*
-
-	if [[ -e ${ED}/$(alt_usrlibdir)/libm-${upstream_pv}.a ]] ; then
-		# Move versioned .a file out of libdir to evade portage QA checks
-		# instead of using gen_usr_ldscript(). We fix ldscript as:
-		# "GROUP ( /usr/lib64/libm-<pv>.a ..." -> "GROUP ( /usr/lib64/glibc-<pv>/libm-<pv>.a ..."
-		sed -i "s@\(libm-${upstream_pv}.a\)@${P}/\1@" \
-			"${ED}"/$(alt_usrlibdir)/libm.a || die
-		dodir $(alt_usrlibdir)/${P}
-		mv "${ED}"/$(alt_usrlibdir)/libm-${upstream_pv}.a \
-			"${ED}"/$(alt_usrlibdir)/${P}/libm-${upstream_pv}.a || die
-	fi
-
-	# We configure toolchains for standalone prefix systems with a sysroot,
-	# which is prepended to paths in ld scripts, so strip the prefix from these.
-	# Before: GROUP ( /foo/lib64/libc.so.6 /foo/usr/lib64/libc_nonshared.a  AS_NEEDED ( /foo/lib64/ld-linux-x86-64.so.2 ) )
-	# After: GROUP ( /lib64/libc.so.6 /usr/lib64/libc_nonshared.a  AS_NEEDED ( /lib64/ld-linux-x86-64.so.2 ) )
-	if [[ -n $(host_eprefix) ]] ; then
-		local file
-		grep -lZIF "ld script" "${ED}/$(alt_usrlibdir)"/lib*.{a,so} 2>/dev/null | while read -rd '' file ; do
-			sed -i "s|$(host_eprefix)/|/|g" "${file}" || die
-		done
-	fi
-
-	# We'll take care of the cache ourselves
-	rm -f "${ED}"/etc/ld.so.cache
-
-	# Everything past this point just needs to be done once ...
-	is_final_abi || return 0
-
-	# Make sure the non-native interp can be found on multilib systems even
-	# if the main library set isn't installed into the right place.  Maybe
-	# we should query the active gcc for info instead of hardcoding it ?
-	local i ldso_abi ldso_name
-	if is_linux ; then
-		local ldso_abi_list=(
-			# x86
-			amd64   /lib64/ld-linux-x86-64.so.2
-			x32     /libx32/ld-linux-x32.so.2
-			x86     /lib/ld-linux.so.2
-			# mips
-			o32     /lib/ld.so.1
-			n32     /lib32/ld.so.1
-			n64     /lib64/ld.so.1
-			# powerpc
-			ppc     /lib/ld.so.1
-			# riscv
-			ilp32d  /lib/ld-linux-riscv32-ilp32d.so.1
-			ilp32   /lib/ld-linux-riscv32-ilp32.so.1
-			lp64d   /lib/ld-linux-riscv64-lp64d.so.1
-			lp64    /lib/ld-linux-riscv64-lp64.so.1
-			# s390
-			s390    /lib/ld.so.1
-			s390x   /lib/ld64.so.1
-			# sparc
-			sparc32 /lib/ld-linux.so.2
-			sparc64 /lib64/ld-linux.so.2
-		)
-		case $(tc-endian) in
-		little)
-			ldso_abi_list+=(
-				# arm
-				arm64   /lib/ld-linux-aarch64.so.1
-				# ELFv2 (glibc does not support ELFv1 on LE)
-				ppc64   /lib64/ld64.so.2
-			)
-			;;
-		big)
-			ldso_abi_list+=(
-				# arm
-				arm64   /lib/ld-linux-aarch64_be.so.1
-				# ELFv1 (glibc does not support ELFv2 on BE)
-				ppc64   /lib64/ld64.so.1
-			)
-			;;
-		esac
-	else
-	# we must be using hurd then
-		local ldso_abi_list=(
-			# x86
-			amd64   /lib64/ld-x86-64.so.1
-			x86     /lib/ld.so.1
-		)
-	fi
-	if [[ ${SYMLINK_LIB} == "yes" ]] && [[ ! -e ${ED}/$(alt_prefix)/lib ]] ; then
-		dosym $(get_abi_LIBDIR ${DEFAULT_ABI}) $(alt_prefix)/lib
-	fi
-	for (( i = 0; i < ${#ldso_abi_list[@]}; i += 2 )) ; do
-		ldso_abi=${ldso_abi_list[i]}
-		has ${ldso_abi} $(get_install_abis) || continue
-
-		ldso_name="$(alt_prefix)${ldso_abi_list[i+1]}"
-		if [[ ! -L ${ED}/${ldso_name} && ! -e ${ED}/${ldso_name} ]] ; then
-			dosym ../$(get_abi_LIBDIR ${ldso_abi})/${ldso_name##*/} ${ldso_name}
-		fi
-	done
-
-	if is_linux ; then
-		# In the LSB 5.0 definition, someone had the excellent idea to "standardize"
-		# the runtime loader name, see also https://xkcd.com/927/
-		# Normally, in Gentoo one should never come across executables that require this.
-		# However, binary commercial packages are known to adhere to weird practices.
-		# https://refspecs.linuxfoundation.org/LSB_5.0.0/LSB-Core-AMD64/LSB-Core-AMD64.html#BASELIB
-		local lsb_ldso_name native_ldso_name lsb_ldso_abi
-		local lsb_ldso_abi_list=(
-			# x86
-			amd64	ld-linux-x86-64.so.2	ld-lsb-x86-64.so.3
-		)
-		for (( i = 0; i < ${#lsb_ldso_abi_list[@]}; i += 3 )) ; do
-			lsb_ldso_abi=${lsb_ldso_abi_list[i]}
-			native_ldso_name=${lsb_ldso_abi_list[i+1]}
-			lsb_ldso_name=${lsb_ldso_abi_list[i+2]}
-			has ${lsb_ldso_abi} $(get_install_abis) || continue
-
-			if [[ ! -L ${ED}/$(get_abi_LIBDIR ${lsb_ldso_abi})/${lsb_ldso_name} && ! -e ${ED}/$(get_abi_LIBDIR ${lsb_ldso_abi})/${lsb_ldso_name} ]] ; then
-				dosym ${native_ldso_name} "$(alt_prefix)/$(get_abi_LIBDIR ${lsb_ldso_abi})/${lsb_ldso_name}"
-			fi
-		done
-	fi
-
-	# On Hurd, glibc and (unpatched) gcc tend to disagree about the proper location for
-	# the dynamic loader. Which is maximally stupid since this one information is hardcoded
-	# into every single binary, and even if we were to fix *our* gcc it could still prevent
-	# us from running binaries prepared anywhere else...
-
-	if is_hurd && has amd64 $(get_install_abis) ; then
-		# First, let's check for sanity
-		if [[ -f "${D}/$(alt_prefix)/lib/ld-x86-64.so.1" ]] ; then
-			die "Somehow your amd64 hurd glibc installed /lib/ld-x86-64.so.1 ... this should not happen."
-		fi
-
-		# Then make a compatibility symlink.
-		dosym ../lib64/ld-x86-64.so.1 "$(alt_prefix)/lib/ld-x86-64.so.1"
-	fi
-
-	if is_hurd && has x86 $(get_install_abis) ; then
-		# First, let's check for sanity
-		if [[ -f "${D}/$(alt_prefix)/$(get_abi_LIBDIR x86)/ld.so" ]] ; then
-			die "Somehow your x86 hurd glibc installed ld.so ... this should not happen."
-		fi
-
-		# Then make a compatibility symlink.
-		dosym ld.so.1 "$(alt_prefix)/$(get_abi_LIBDIR x86)/ld.so"
-	fi
-
-	# With devpts under Linux mounted properly, we do not need the pt_chown
-	# binary to be setuid.  This is because the default owners/perms will be
-	# exactly what we want.
-	if ! use suid ; then
-		find "${ED}" -name pt_chown -exec chmod -s {} +
-	fi
-
-	#################################################################
-	# EVERYTHING AFTER THIS POINT IS FOR NATIVE GLIBC INSTALLS ONLY #
-	#################################################################
-
-	# Make sure we install some symlink hacks so that when we build
-	# a 2nd stage cross-compiler, gcc finds the target system
-	# headers correctly.  See gcc/doc/gccinstall.info
-	if is_crosscompile ; then
-		# We need to make sure that /lib and /usr/lib always exists.
-		# gcc likes to use relative paths to get to its multilibs like
-		# /usr/lib/../lib64/.  So while we don't install any files into
-		# /usr/lib/, we do need it to exist.
-		keepdir $(alt_prefix)/lib
-		keepdir $(alt_prefix)/usr/lib
-
-		dosym usr/include $(alt_prefix)/sys-include
-		return 0
-	fi
-
-	# Files for Debian-style locale updating
-	dodir /usr/share/i18n
-	sed \
-		-e "/^#/d" \
-		-e "/SUPPORTED-LOCALES=/d" \
-		-e "s: \\\\::g" -e "s:/: :g" \
-		"${S}"/localedata/SUPPORTED > "${ED}"/usr/share/i18n/SUPPORTED \
-		|| die "generating /usr/share/i18n/SUPPORTED failed"
-
-	cd "${S}" || die
-
-	# Install misc network config files
-	insinto /etc
-	doins posix/gai.conf
-
-	if use systemd ; then
-		doins "${WORKDIR}/glibc-systemd-${GLIBC_SYSTEMD_VER}/gentoo-config/nsswitch.conf"
-	else
-		doins nss/nsswitch.conf
-	fi
-
-	# Gentoo-specific
-	newins "${FILESDIR}"/host.conf-1 host.conf
-
-	if use nscd ; then
-		doins nscd/nscd.conf
-
-		newinitd "$(prefixify_ro "${FILESDIR}"/nscd-1)" nscd
-
-		local nscd_args=(
-			-e "s:@PIDFILE@:$(strings "${ED}"/usr/sbin/nscd | grep nscd.pid):"
-		)
-
-		sed -i "${nscd_args[@]}" "${ED}"/etc/init.d/nscd
-
-		use systemd && systemd_dounit nscd/nscd.service
-		newtmpfiles nscd/nscd.tmpfiles nscd.conf
-	fi
-
-	echo 'LDPATH="include ld.so.conf.d/*.conf"' > "${T}"/00glibc
-	doenvd "${T}"/00glibc
-
-	for d in BUGS ChangeLog CONFORMANCE FAQ NEWS NOTES PROJECTS README* ; do
-		[[ -s ${d} ]] && dodoc ${d}
-	done
-	dodoc -r ChangeLog.old
-
-	# Prevent overwriting of the /etc/localtime symlink.  We'll handle the
-	# creation of the "factory" symlink in pkg_postinst().
-	rm -f "${ED}"/etc/localtime
-
-	# Generate all locales if this is a native build as locale generation
-	if use compile-locales && ! is_crosscompile; then
-		run_locale_gen 1 "${ED}"
-	fi
-}
-
-glibc_headers_install() {
-	local builddir=$(builddir "headers")
-	cd "${builddir}"
-	emake install_root="${D}/$(build_eprefix)$(alt_prefix)" install-headers
-
-	insinto $(alt_headers)/gnu
-	doins "${S}"/include/gnu/stubs.h
-
-	# Make sure we install the sys-include symlink so that when
-	# we build a 2nd stage cross-compiler, gcc finds the target
-	# system headers correctly.  See gcc/doc/gccinstall.info
-	dosym usr/include $(alt_prefix)/sys-include
-}
-
-src_install() {
-	if just_headers ; then
-		export ABI=default
-		glibc_headers_install
-		return
-	fi
-
-	foreach_abi glibc_do_src_install
-
-	if ! use static-libs ; then
-		einfo "Not installing static glibc libraries"
-		find "${ED}" -name "*.a" -and -not -name "*_nonshared.a" -delete
-	fi
-}
-
-# Simple test to make sure our new glibc isn't completely broken.
-# Make sure we don't test with statically built binaries since
-# they will fail.  Also, skip if this glibc is a cross compiler.
-#
-# If coreutils is built with USE=multicall, some of these files
-# will just be wrapper scripts, not actual ELFs we can test.
-glibc_sanity_check() {
-	cd / #228809
-
-	# We enter ${ED} so to avoid trouble if the path contains
-	# special characters; for instance if the path contains the
-	# colon character (:), then the linker will try to split it
-	# and look for the libraries in an unexpected place. This can
-	# lead to unsafe code execution if the generated prefix is
-	# within a world-writable directory.
-	# (e.g. /var/tmp/portage:${HOSTNAME})
-	pushd "${ED}"/$(get_libdir) >/dev/null
-
-	# first let's find the actual dynamic linker here
-	# symlinks may point to the wrong abi
-	local newldso=$(find . -maxdepth 1 -name 'ld*so.?' -type f -print -quit)
-
-	einfo Last-minute run tests with ${newldso} in /$(get_libdir) ...
-
-	local x striptest
-	for x in cal date env free ls true uname uptime ; do
-		x=$(type -p ${x})
-		[[ -z ${x} || ${x} != ${EPREFIX}/* ]] && continue
-		striptest=$(LC_ALL="C" file -L ${x} 2>/dev/null) || continue
-		case ${striptest} in
-		*"statically linked"*) continue;;
-		*"ASCII text"*) continue;;
-		esac
-		# We need to clear the locale settings as the upgrade might want
-		# incompatible locale data.  This test is not for verifying that.
-		LC_ALL=C \
-		${newldso} --library-path . ${x} > /dev/null \
-			|| die "simple run test (${x}) failed"
-	done
-
-	popd >/dev/null
-}
-
-pkg_preinst() {
-	# nothing to do if just installing headers
-	just_headers && return
-
-	einfo "Checking general environment sanity."
-	sanity_prechecks
-
-	# prepare /etc/ld.so.conf.d/ for files
-	mkdir -p "${EROOT}"/etc/ld.so.conf.d
-
-	# Default /etc/hosts.conf:multi to on for systems with small dbs.
-	if [[ $(wc -l < "${EROOT}"/etc/hosts) -lt 1000 ]] ; then
-		sed -i '/^multi off/s:off:on:' "${ED}"/etc/host.conf
-		einfo "Defaulting /etc/host.conf:multi to on"
-	fi
-
-	[[ -n ${ROOT} ]] && return 0
-	[[ -d ${ED}/$(get_libdir) ]] || return 0
-	[[ -z ${BOOTSTRAP_RAP} ]] && glibc_sanity_check
-
-	if [[ -L ${EROOT}/usr/lib/locale ]]; then
-		# Help portage migrate this to a directory
-		# https://bugs.gentoo.org/753740
-		rm "${EROOT}"/usr/lib/locale || die
-	fi
-
-	# Keep around libcrypt so that Perl doesn't break when merging libxcrypt
-	# (libxcrypt is the new provider for now of libcrypt.so.{1,2}).
-	# bug #802207
-	if has_version "${CATEGORY}/${PN}[crypt]" && ! has preserve-libs ${FEATURES}; then
-		PRESERVED_OLD_LIBCRYPT=1
-		cp -p "${EROOT}/$(get_libdir)/libcrypt$(get_libname 1)" \
-			"${T}/libcrypt$(get_libname 1)" || die
-	else
-		PRESERVED_OLD_LIBCRYPT=0
-	fi
-}
-
-glibc_refresh_ldconfig() {
-	if [[ ${MERGE_TYPE} == buildonly ]]; then
-		return
-	fi
-
-	# Version check could be added to avoid unnecessary work, but ldconfig
-	# should finish quickly enough to not matter.
-	ebegin "Refreshing ld.so.cache"
-	ldconfig -i
-	if ! eend $?; then
-		ewarn "Failed to refresh the ld.so.cache for you. Some programs may be broken"
-		ewarn "before you manually do so (ldconfig -i)."
-	fi
-}
-
-pkg_postinst() {
-	# nothing to do if just installing headers
-	just_headers && return
-
-	if ! tc-is-cross-compiler && [[ -x ${EROOT}/usr/sbin/iconvconfig ]] ; then
-		# Generate fastloading iconv module configuration file.
-		"${EROOT}"/usr/sbin/iconvconfig --prefix="${ROOT}/"
-	fi
-
-	if ! is_crosscompile && [[ -z ${ROOT} ]] ; then
-		# glibc-2.38+ on loong has ldconfig support added, but the ELF e_flags
-		# handling has changed as well, which means stale ldconfig auxiliary
-		# cache entries and failure to lookup libgcc_s / libstdc++ (breaking
-		# every C++ application) / libgomp etc., among other breakages.
-		#
-		# To fix this, simply refresh the ld.so.cache without using the
-		# auxiliary cache if we're natively installing on loong. This should
-		# be done relatively soon because we want to minimize the breakage
-		# window for the affected programs.
-		use loong && glibc_refresh_ldconfig
-
-		if ! use compile-locales; then
-			run_locale_gen 0 "${EROOT}"
-		fi
-
-		# If fixincludes was/is active for a particular GCC slot, we
-		# must refresh it. See bug #933282 and GCC's documentation:
-		# https://gcc.gnu.org/onlinedocs/gcc/Fixed-Headers.html
-		#
-		# TODO: Could this be done for cross? Some care would be needed
-		# to pass the right arguments.
-		while IFS= read -r -d $'\0' slot ; do
-			local mkheaders_path="${BROOT}"/usr/libexec/gcc/${CBUILD}/${slot##*/}/install-tools/mkheaders
-			local pthread_h="${BROOT}"/usr/lib/gcc/${CBUILD}/${slot##*/}/include-fixed/pthread.h
-			if [[ -x ${mkheaders_path} ]] ; then
-				ebegin "Refreshing fixincludes for ${CBUILD} with gcc-${slot##*/}"
-				${mkheaders_path} -v
-				eend $?
-			elif [[ -f ${pthread_h} ]] ; then
-				# fixincludes might have been enabled in the past for this
-				# GCC slot but not since we fixed toolchain.eclass to install
-				# mkheaders, so we need to manually delete pthread.h at least.
-				ebegin "Deleting stale fixincludes'd pthread.h for ${CBUILD} with gcc-${slot##*/}"
-				mv -v "${pthread_h}" "${pthread_h}.bak"
-				eend $?
-			fi
-		done < <(find "${BROOT}"/usr/libexec/gcc/${CBUILD}/ -mindepth 1 -maxdepth 1 -type d -print0)
-	fi
-
-	upgrade_warning
-
-	# Check for sanity of /etc/nsswitch.conf, take 2
-	if [[ -e ${EROOT}/etc/nsswitch.conf ]] && ! has_version sys-auth/libnss-nis ; then
-		local entry
-		for entry in passwd group shadow; do
-			if grep -E -q "^[ \t]*${entry}:.*nis" "${EROOT}"/etc/nsswitch.conf; then
-				ewarn ""
-				ewarn "Your ${EROOT}/etc/nsswitch.conf uses NIS. Support for that has been"
-				ewarn "removed from glibc and is now provided by the package"
-				ewarn "  sys-auth/libnss-nis"
-				ewarn "Install it now to keep your NIS setup working."
-				ewarn ""
-			fi
-		done
-	fi
-
-	if [[ ${PRESERVED_OLD_LIBCRYPT} -eq 1 ]] ; then
-		cp -p "${T}/libcrypt$(get_libname 1)" "${EROOT}/$(get_libdir)/libcrypt$(get_libname 1)" || die
-		preserve_old_lib_notify /$(get_libdir)/libcrypt$(get_libname 1)
-
-		elog "Please ignore a possible later error message about a file collision involving"
-		elog "${EROOT}/$(get_libdir)/libcrypt$(get_libname 1). We need to preserve this file for the moment to keep"
-		elog "the upgrade working, but it also needs to be overwritten when"
-		elog "sys-libs/libxcrypt is installed. See bug 802210 for more details."
-	fi
-}

diff --git a/sys-libs/glibc/glibc-2.43-r1.ebuild b/sys-libs/glibc/glibc-2.43-r1.ebuild
deleted file mode 100644
index 4d8fe312db3b..000000000000
--- a/sys-libs/glibc/glibc-2.43-r1.ebuild
+++ /dev/null
@@ -1,1897 +0,0 @@
-# Copyright 1999-2026 Gentoo Authors
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=8
-
-# Bumping notes: https://wiki.gentoo.org/wiki/Project:Toolchain/sys-libs/glibc
-# Please read & adapt the page as necessary if obsolete.
-
-PYTHON_COMPAT=( python3_{11..14} )
-TMPFILES_OPTIONAL=1
-
-EMULTILIB_PKG="true"
-
-# Gentoo patchset (ignored for live ebuilds)
-PATCH_VER=2
-PATCH_DEV=dilfridge
-
-# gcc mulitilib bootstrap files version
-GCC_BOOTSTRAP_VER=20201208
-
-# systemd integration version
-GLIBC_SYSTEMD_VER=20210729
-
-# Minimum kernel version that glibc requires
-MIN_KERN_VER="3.2.0"
-
-# Minimum pax-utils version needed (which contains any new syscall changes for
-# its seccomp filter!). Please double check this!
-MIN_PAX_UTILS_VER="1.3.3"
-
-# Minimum systemd version needed (which contains any new syscall changes for
-# its seccomp filter!). Please double check this!
-MIN_SYSTEMD_VER="254.9-r1"
-
-VERIFY_SIG_OPENPGP_KEY_PATH=/usr/share/openpgp-keys/glibc.asc
-
-inherit python-any-r1 prefix preserve-libs toolchain-funcs flag-o-matic gnuconfig \
-	multilib systemd multiprocessing tmpfiles eapi9-ver verify-sig
-
-DESCRIPTION="GNU libc C library"
-HOMEPAGE="https://www.gnu.org/software/libc/"
-
-if [[ ${PV} == *9999 ]]; then
-	inherit git-r3
-else
-	KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86"
-	SRC_URI="mirror://gnu/glibc/${P}.tar.xz"
-	SRC_URI+=" verify-sig? ( mirror://gnu/glibc/${P}.tar.xz.sig )"
-	SRC_URI+=" https://dev.gentoo.org/~${PATCH_DEV}/distfiles/${P}-patches-${PATCH_VER}.tar.xz"
-fi
-
-SRC_URI+=" multilib-bootstrap? ( https://dev.gentoo.org/~dilfridge/distfiles/gcc-multilib-bootstrap-${GCC_BOOTSTRAP_VER}.tar.xz )"
-SRC_URI+=" systemd? ( https://gitweb.gentoo.org/proj/toolchain/glibc-systemd.git/snapshot/glibc-systemd-${GLIBC_SYSTEMD_VER}.tar.gz )"
-
-LICENSE="LGPL-2.1+ BSD HPND ISC inner-net rc PCRE"
-SLOT="2.2"
-IUSE="audit caps cet clang compile-locales custom-cflags doc gd hash-sysv-compat headers-only +multiarch multilib multilib-bootstrap nscd perl profile selinux sframe +ssp stack-realign +static-libs suid systemd systemtap test vanilla"
-
-# Here's how the cross-compile logic breaks down ...
-#  CTARGET - machine that will target the binaries
-#  CHOST   - machine that will host the binaries
-#  CBUILD  - machine that will build the binaries
-# If CTARGET != CHOST, it means you want a libc for cross-compiling.
-# If CHOST != CBUILD, it means you want to cross-compile the libc.
-#  CBUILD = CHOST = CTARGET    - native build/install
-#  CBUILD != (CHOST = CTARGET) - cross-compile a native build
-#  (CBUILD = CHOST) != CTARGET - libc for cross-compiler
-#  CBUILD != CHOST != CTARGET  - cross-compile a libc for a cross-compiler
-# For install paths:
-#  CHOST = CTARGET  - install into /
-#  CHOST != CTARGET - install into /usr/CTARGET/
-#
-export CBUILD=${CBUILD:-${CHOST}}
-export CTARGET=${CTARGET:-${CHOST}}
-if [[ ${CTARGET} == ${CHOST} ]] ; then
-	if [[ ${CATEGORY} == cross-* ]] ; then
-		export CTARGET=${CATEGORY#cross-}
-	fi
-fi
-
-# Note [Disable automatic stripping]
-# Disabling automatic stripping for a few reasons:
-# - portage's attempt to strip breaks non-native binaries at least on
-#   arm: bug #697428
-# - portage's attempt to strip libpthread.so.0 breaks gdb thread
-#   enumeration: bug #697910. This is quite subtle:
-#   * gdb uses glibc's libthread_db-1.0.so to enumerate threads.
-#   * libthread_db-1.0.so needs access to libpthread.so.0 local symbols
-#     via 'ps_pglobal_lookup' symbol defined in gdb.
-#   * 'ps_pglobal_lookup' uses '.symtab' section table to resolve all
-#     known symbols in 'libpthread.so.0'. Specifically 'nptl_version'
-#     (unexported) is used to sanity check compatibility before enabling
-#     debugging.
-#     Also see https://sourceware.org/gdb/wiki/FAQ#GDB_does_not_see_any_threads_besides_the_one_in_which_crash_occurred.3B_or_SIGTRAP_kills_my_program_when_I_set_a_breakpoint
-#   * normal 'strip' command trims '.symtab'
-#   Thus our main goal here is to prevent 'libpthread.so.0' from
-#   losing it's '.symtab' entries.
-# - similarly, valgrind requires knowledge about symbols in ld.so:
-#	bug #920753
-# As Gentoo's strip does not allow us to pass less aggressive stripping
-# options and does not check the machine target we strip selectively.
-
-# We need a new-enough binutils/gcc to match upstream baseline.
-# Also we need to make sure our binutils/gcc supports TLS,
-# and that gcc already contains the hardened patches.
-# Lastly, let's avoid some openssh nastiness, bug 708224, as
-# convenience to our users.
-
-IDEPEND="
-	!compile-locales? ( sys-apps/locale-gen )
-"
-BDEPEND="
-	${PYTHON_DEPS}
-	>=app-misc/pax-utils-${MIN_PAX_UTILS_VER}
-	sys-devel/bison
-	compile-locales? ( sys-apps/locale-gen )
-	doc? (
-		dev-lang/perl
-		sys-apps/texinfo
-	)
-	sframe? ( >=sys-devel/binutils-2.45 )
-	test? (
-		dev-lang/perl
-		>=net-dns/libidn2-2.3.0
-		sys-apps/gawk[mpfr]
-	)
-	verify-sig? ( sec-keys/openpgp-keys-glibc )
-"
-COMMON_DEPEND="
-	gd? ( media-libs/gd:2= )
-	nscd? ( selinux? (
-		audit? ( sys-process/audit )
-		caps? ( sys-libs/libcap )
-	) )
-	suid? ( caps? ( sys-libs/libcap ) )
-	selinux? ( sys-libs/libselinux )
-	systemtap? ( dev-debug/systemtap )
-"
-DEPEND="${COMMON_DEPEND}
-"
-RDEPEND="${COMMON_DEPEND}
-	!<app-misc/pax-utils-${MIN_PAX_UTILS_VER}
-	!<sys-apps/systemd-${MIN_SYSTEMD_VER}
-	perl? ( dev-lang/perl )
-"
-
-RESTRICT="!test? ( test )"
-
-if [[ ${CATEGORY} == cross-* ]] ; then
-	BDEPEND+=" !headers-only? (
-		>=${CATEGORY}/binutils-2.27
-		>=${CATEGORY}/gcc-6.2
-	)"
-
-	case ${CATEGORY} in
-		*-linux*)
-			DEPEND+=" ${CATEGORY}/linux-headers"
-			;;
-		*-gnu)
-			DEPEND+=" ${CATEGORY}/gnumach[-headers-only]"
-			;;
-	esac
-else
-	BDEPEND+="
-		>=sys-devel/binutils-2.27
-		clang? ( || ( ( >=sys-devel/gcc-6.2 )
-			( >=sys-devel/gcc-6.2 >=llvm-core/clang-18 )
-			( >=llvm-core/clang-18 >=llvm-runtimes/libgcc-18 ) ) )
-		!clang? ( >=sys-devel/gcc-6.2 )
-	"
-	DEPEND+=" virtual/os-headers "
-	RDEPEND+="
-		>=net-dns/libidn2-2.3.0
-		vanilla? ( !sys-libs/timezone-data )
-	"
-	PDEPEND+=" !vanilla? ( sys-libs/timezone-data )"
-fi
-
-# Ignore tests whitelisted below
-GENTOO_GLIBC_XFAIL_TESTS="${GENTOO_GLIBC_XFAIL_TESTS:-yes}"
-
-# The following tests fail due to the Gentoo build system and are thus
-# executed but ignored:
-XFAIL_TEST_LIST=(
-	# buggy test, assumes /dev/ and /dev/null on a single filesystem
-	# 'mount --bind /dev/null /chroot/dev/null' breaks it.
-	# https://sourceware.org/PR25909
-	tst-support_descriptors
-
-	# The following tests fail only inside portage
-	# https://bugs.gentoo.org/831267
-	tst-system
-	tst-strerror
-	tst-strsignal
-
-	# Fails with certain PORTAGE_NICENESS/PORTAGE_SCHEDULING_POLICY
-	tst-sched1
-	tst-sched_setattr
-	tst-sched_setattr-thread
-
-	# Fails regularly, unreliable
-	tst-valgrind-smoke
-
-	# https://sourceware.org/bugzilla/show_bug.cgi?id=31877 (bug #927973)
-	tst-shstk-legacy-1g
-
-	# https://sourceware.org/bugzilla/show_bug.cgi?id=33239
-	test-double-compoundn
-	test-float-compoundn
-	test-float32-compoundn
-	test-float32x-compoundn
-	test-float64-compoundn
-
-	# Fails only in portage. Needs investigation.
-	tst-setvbuf2
-)
-
-XFAIL_NSPAWN_TEST_LIST=(
-	# These tests need to be adapted to handle EPERM/ENOSYS(?) properly
-	# upstream, as systemd-nspawn's default seccomp whitelist is too strict.
-	# https://sourceware.org/PR30603
-	test-errno-linux
-	tst-aarch64-pkey
-	tst-bz21269
-	tst-mlock2
-	tst-ntp_gettime
-	tst-ntp_gettime-time64
-	tst-ntp_gettimex
-	tst-ntp_gettimex-time64
-	tst-pkey
-	tst-process_mrelease
-	tst-adjtime
-	tst-adjtime-time64
-	tst-clock2
-	tst-clock2-time64
-
-	# These fail if --suppress-sync and/or low priority is set
-	tst-sync_file_range
-	test-errno
-)
-
-#
-# Small helper functions
-#
-
-dump_build_environment() {
-	einfo ==== glibc build environment ========================================================
-	local v
-	for v in ABI CBUILD CHOST CTARGET CBUILD_OPT CTARGET_OPT CC CXX CPP LD \
-		{AS,C,CPP,CXX,LD}FLAGS MAKEINFO NM AR AS STRIP RANLIB OBJCOPY \
-		STRINGS OBJDUMP READELF; do
-		einfo " $(printf '%15s' ${v}:)   ${!v}"
-	done
-	einfo =====================================================================================
-}
-
-is_crosscompile() {
-	[[ ${CHOST} != ${CTARGET} ]]
-}
-
-is_linux() {
-	[[ ${CTARGET} == *-linux-* ]]
-}
-
-is_hurd() {
-	# Let's hope this holds for a long time
-	[[ ${CTARGET} != *-linux-* ]]
-}
-
-just_headers() {
-	is_crosscompile && use headers-only
-}
-
-alt_prefix() {
-	is_crosscompile && echo /usr/${CTARGET}
-}
-
-# This prefix is applicable to CHOST when building against this
-# glibc. It is baked into the library at configure time.
-host_eprefix() {
-	is_crosscompile || echo "${EPREFIX}"
-}
-
-# This prefix is applicable to CBUILD when building against this
-# glibc. It determines the destination path at install time.
-build_eprefix() {
-	is_crosscompile && echo "${EPREFIX}"
-}
-
-alt_headers() {
-	echo $(alt_prefix)/usr/include
-}
-alt_libdir() {
-	echo $(alt_prefix)/$(get_libdir)
-}
-alt_usrlibdir() {
-	echo $(alt_prefix)/usr/$(get_libdir)
-}
-
-builddir() {
-	echo "${WORKDIR}/build-${ABI}-${CTARGET}-$1"
-}
-
-do_compile_test() {
-	local ret save_cflags=${CFLAGS}
-	CFLAGS+=" $1"
-	shift
-
-	pushd "${T}" >/dev/null
-
-	rm -f glibc-test*
-	printf '%b' "$*" > glibc-test.c
-
-	# We assume CC is already set up.
-	nonfatal emake glibc-test
-	ret=$?
-
-	popd >/dev/null
-
-	CFLAGS=${save_cflags}
-	return ${ret}
-}
-
-do_run_test() {
-	local ret
-
-	if [[ ${MERGE_TYPE} == "binary" ]] ; then
-		# ignore build failures when installing a binary package #324685
-		CC="${glibc__ORIG_CC}" CXX="${glibc__ORIG_CXX}" CPP="${glibc__ORIG_CPP}" \
-			CFLAGS="-O2" LDFLAGS="" do_compile_test "" "$@" 2>/dev/null || return 0
-	else
-		ebegin "Performing simple compile test for ABI=${ABI}"
-		if ! do_compile_test "" "$@" ; then
-			ewarn "Simple build failed ... assuming this is desired #324685"
-			eend 1
-			return 0
-		else
-			eend 0
-		fi
-	fi
-
-	pushd "${T}" >/dev/null
-
-	./glibc-test
-	ret=$?
-	rm -f glibc-test*
-
-	popd >/dev/null
-
-	return ${ret}
-}
-
-setup_target_flags() {
-	# This largely mucks with compiler flags.  None of which should matter
-	# when building up just the headers.
-	just_headers && return 0
-
-	case $(tc-arch) in
-		x86)
-			# -march needed for #185404 #199334
-			# TODO: When creating the first glibc cross-compile, this test will
-			# always fail as it does a full link which in turn requires glibc.
-			# Probably also applies when changing multilib profile settings (e.g.
-			# enabling x86 when the profile was amd64-only previously).
-			# We could change main to _start and pass -nostdlib here so that we
-			# only test the gcc code compilation.  Or we could do a compile and
-			# then look for the symbol via scanelf.
-			if ! do_compile_test "" 'void f(int i, void *p) {if (__sync_fetch_and_add(&i, 1)) f(i, p);}\nint main(){return 0;}\n'; then
-				local t=${CTARGET_OPT:-${CTARGET}}
-				t=${t%%-*}
-				filter-flags '-march=*'
-				export CFLAGS="-march=${t} ${CFLAGS}"
-				einfo "Auto adding -march=${t} to CFLAGS #185404"
-			fi
-			# For compatibility with older binaries at slight performance cost.
-			use stack-realign && export CFLAGS+=" -mstackrealign"
-		;;
-		amd64)
-			# -march needed for #185404 #199334
-			# TODO: See cross-compile issues listed above for x86.
-			if [[ ${ABI} == x86 ]]; then
-				if ! do_compile_test "${CFLAGS_x86}" 'void f(int i, void *p) {if (__sync_fetch_and_add(&i, 1)) f(i, p);}\nint main(){return 0;}\n'; then
-					local t=${CTARGET_OPT:-${CTARGET}}
-					t=${t%%-*}
-					# Normally the target is x86_64-xxx, so turn that into the -march that
-					# gcc actually accepts. #528708
-					[[ ${t} == "x86_64" ]] && t="x86-64"
-					filter-flags '-march=*'
-					# ugly, ugly, ugly.  ugly.
-					CFLAGS_x86=$(CFLAGS=${CFLAGS_x86}; filter-flags '-march=*'; echo "${CFLAGS}")
-					export CFLAGS_x86="${CFLAGS_x86} -march=${t}"
-					einfo "Auto adding -march=${t} to CFLAGS_x86 #185404 (ABI=${ABI})"
-				fi
-				# For compatibility with older binaries at slight performance cost.
-				use stack-realign && export CFLAGS_x86+=" -mstackrealign"
-			fi
-
-			if is_hurd ; then
-				# doesnt build with -march=native and probably other values, debugging required
-				filter-flags '-march=*'
-			fi
-		;;
-		mips)
-			# The mips abi cannot support the GNU style hashes. #233233
-			filter-ldflags -Wl,--hash-style=gnu -Wl,--hash-style=both
-		;;
-		ppc|ppc64)
-			# Many arch-specific implementations do not work on ppc with
-			# cache-block not equal to 128 bytes. This breaks memset:
-			#   https://sourceware.org/PR26522
-			#   https://bugs.gentoo.org/737996
-			# Use default -mcpu=. For ppc it means non-multiarch setup.
-			filter-flags '-mcpu=*'
-		;;
-		sparc)
-			# Both sparc and sparc64 can use -fcall-used-g6.  -g7 is bad, though.
-			filter-flags "-fcall-used-g7"
-			append-flags "-fcall-used-g6"
-
-			local cpu
-			case ${CTARGET} in
-			sparc64-*)
-				cpu="sparc64"
-				case $(get-flag mcpu) in
-				v9)
-					# We need to force at least v9a because the base build doesn't
-					# work with just v9.
-					# https://sourceware.org/bugzilla/show_bug.cgi?id=19477
-					append-flags "-Wa,-xarch=v9a"
-					;;
-				esac
-				;;
-			sparc-*)
-				case $(get-flag mcpu) in
-				v8|supersparc|hypersparc|leon|leon3)
-					cpu="sparcv8"
-					;;
-				*)
-					cpu="sparcv9"
-					;;
-				esac
-			;;
-			esac
-			[[ -n ${cpu} ]] && CTARGET_OPT="${cpu}-${CTARGET#*-}"
-		;;
-	esac
-}
-
-setup_flags() {
-	# Make sure host make.conf doesn't pollute us
-	if is_crosscompile || tc-is-cross-compiler ; then
-		CHOST=${CTARGET} strip-unsupported-flags
-	fi
-
-	# Store our CFLAGS because it's changed depending on which CTARGET
-	# we are building when pulling glibc on a multilib profile
-	CFLAGS_BASE=${CFLAGS_BASE-${CFLAGS}}
-	CFLAGS=${CFLAGS_BASE}
-	CXXFLAGS_BASE=${CXXFLAGS_BASE-${CXXFLAGS}}
-	CXXFLAGS=${CXXFLAGS_BASE}
-	ASFLAGS_BASE=${ASFLAGS_BASE-${ASFLAGS}}
-	ASFLAGS=${ASFLAGS_BASE}
-
-	# Allow users to explicitly avoid flag sanitization via
-	# USE=custom-cflags.
-	if ! use custom-cflags; then
-		# Over-zealous CFLAGS can often cause problems.  What may work for one
-		# person may not work for another.  To avoid a large influx of bugs
-		# relating to failed builds, we strip most CFLAGS out to ensure as few
-		# problems as possible.
-		strip-flags
-
-		# Allow -O2 and -O3, but nothing else for now.
-		# TODO: Test -Os, -Oz.
-		if ! is-flagq '-O@(2|3)' ; then
-			# Lock glibc at -O2. We want to be conservative here.
-			filter-flags '-O?'
-			append-flags -O2
-		fi
-	fi
-
-	strip-unsupported-flags
-	filter-lto
-	filter-flags -m32 -m64 '-mabi=*'
-
-	# glibc aborts if rpath is set by LDFLAGS
-	filter-ldflags '-Wl,-rpath=*'
-
-	# ld can't use -r & --relax at the same time, bug #788901
-	# https://sourceware.org/PR27837
-	filter-ldflags '-Wl,--relax'
-
-	# Flag added for cross-prefix, but causes ldconfig to segfault. Not needed
-	# anyway because glibc already handles this by itself.
-	filter-ldflags '-Wl,--dynamic-linker=*'
-
-	# Fails to link (bug #940709) in some cases but even if it manages to,
-	# subtle runtime breakage will occur because the linker scripts need
-	# adaptation. Mentioned in PR21557#c0.
-	filter-ldflags '-Wl,--gc-sections'
-
-	# some weird software relies on sysv hashes in glibc, bug 863863, bug 864100
-	# we have to do that here already so mips can filter it out again :P
-	if use hash-sysv-compat ; then
-		append-ldflags '-Wl,--hash-style=both'
-	fi
-
-	# clang warns about linker flags unused during compilation, but we don't
-	# want that to turn into errors!
-	# Let's turn the warning off entirely since it spams.
-	append-flags -Wno-unused-command-line-argument
-
-	# #492892
-	filter-flags -frecord-gcc-switches
-
-	# #898098
-	filter-flags -fno-builtin
-
-	# #798774
-	filter-flags -fno-semantic-interposition
-
-	# #829583
-	filter-lfs-flags
-
-	case ${CTARGET} in
-		*-linux*)
-			;;
-		*-gnu)
-			# -g3 confuses MIG which relies on preprocessed input
-			replace-flags -ggdb[3-9] -ggdb2
-			replace-flags -g3 -g
-			;;
-	esac
-
-	unset CBUILD_OPT CTARGET_OPT
-	if use multilib ; then
-		CTARGET_OPT=$(get_abi_CTARGET)
-		[[ -z ${CTARGET_OPT} ]] && CTARGET_OPT=$(get_abi_CHOST)
-	fi
-
-	setup_target_flags
-
-	if [[ -n ${CTARGET_OPT} && ${CBUILD} == ${CHOST} ]] && ! is_crosscompile; then
-		CBUILD_OPT=${CTARGET_OPT}
-	fi
-
-	# glibc's headers disallow -O0 and fail at build time:
-	#  include/libc-symbols.h:75:3: #error "glibc cannot be compiled without optimization"
-	# https://sourceware.org/glibc/wiki/FAQ#Why_do_I_get:.60.23error_.22glibc_cannot_be_compiled_without_optimization.22.27.2C_when_trying_to_compile_GNU_libc_with_GNU_CC.3F
-	replace-flags -O0 -O1
-
-	# Similar issues as with SSP. Can't inject yourself that early.
-	filter-flags '-fsanitize=*'
-
-	# See end of bug #830454; we handle this via USE=cet
-	filter-flags '-fcf-protection=*'
-
-	# When bootstrapping, we may have a situation where
-	# CET-enabled gcc from seed is used to build CET-disabled
-	# glibc. As such, gcc implicitly enables CET if no
-	# -fcf-protection flag is passed. For a typical package it
-	# should not be a problem, but for glibc it matters as it is
-	# dealing with CET in ld.so. So if CET is supposed to be
-	# disabled for glibc, be explicit about it.
-	if ! use cet; then
-		case ${ABI}-${CTARGET} in
-			amd64-x86_64-*|x32-x86_64-*-*-gnux32)
-				append-flags '-fcf-protection=none'
-				;;
-			arm64-aarch64*)
-				append-flags '-mbranch-protection=none'
-				;;
-		esac
-	fi
-}
-
-use_multiarch() {
-	# Allow user to disable runtime arch detection in multilib.
-	use multiarch || return 1
-	# Make sure binutils is new enough to support indirect functions,
-	# #336792. This funky sed supports gold and bfd linkers.
-	local bver nver
-	bver=$($(tc-getLD ${CTARGET}) -v | sed -n -r '1{s:[^0-9]*::;s:^([0-9.]*).*:\1:;p}')
-	case $(tc-arch ${CTARGET}) in
-	amd64|x86) nver="2.20" ;;
-	arm)       nver="2.22" ;;
-	hppa)      nver="2.23" ;;
-	ppc|ppc64) nver="2.20" ;;
-	# ifunc support was added in 2.23, but glibc also needs
-	# machinemode which is in 2.24.
-	s390)      nver="2.24" ;;
-	sparc)     nver="2.21" ;;
-	*)         return 1 ;;
-	esac
-	ver_test ${bver} -ge ${nver}
-}
-
-# Setup toolchain variables that had historically been defined in the
-# profiles for these archs.
-setup_env() {
-	# silly users
-	unset LD_RUN_PATH
-	unset LD_ASSUME_KERNEL
-
-	if is_crosscompile || tc-is-cross-compiler ; then
-		multilib_env ${CTARGET_OPT:-${CTARGET}}
-
-		if ! use multilib ; then
-			MULTILIB_ABIS=${DEFAULT_ABI}
-		else
-			MULTILIB_ABIS=${MULTILIB_ABIS:-${DEFAULT_ABI}}
-		fi
-
-		# If the user has CFLAGS_<CTARGET> in their make.conf, use that,
-		# and fall back on CFLAGS.
-		local VAR=CFLAGS_${CTARGET//[-.]/_}
-		CFLAGS=${!VAR-${CFLAGS}}
-		einfo " $(printf '%15s' 'Manual CFLAGS:')   ${CFLAGS}"
-	fi
-
-	setup_flags
-
-	export ABI=${ABI:-${DEFAULT_ABI:-default}}
-
-	if just_headers ; then
-		# Avoid mixing host's CC and target's CFLAGS_${ABI}:
-		# At this bootstrap stage we have only binutils for
-		# target but not compiler yet.
-		einfo "Skip CC ABI injection. We can't use (cross-)compiler yet."
-		return 0
-	fi
-
-	# glibc does not work with non-bfd (for various reasons):
-	# * gold (bug #269274)
-	# * mold (bug #860900)
-	tc-ld-force-bfd
-
-	if use doc ; then
-		export MAKEINFO=makeinfo
-	else
-		export MAKEINFO=/dev/null
-	fi
-
-	# Reset CC and CXX to the value at start of emerge
-	export CC=${glibc__ORIG_CC:-${CC:-$(tc-getCC ${CTARGET})}}
-	export CXX=${glibc__ORIG_CXX:-${CXX:-$(tc-getCXX ${CTARGET})}}
-	export CPP=${glibc__ORIG_CPP:-${CPP:-$(tc-getCPP ${CTARGET})}}
-
-	# and make sure glibc__ORIG_CC and glibc__ORIG_CXX is defined now.
-	export glibc__ORIG_CC=${CC}
-	export glibc__ORIG_CXX=${CXX}
-	export glibc__ORIG_CPP=${CPP}
-
-	if tc-is-clang && ! ( use clang || use custom-cflags ) && ! is_crosscompile ; then
-		export glibc__force_gcc=yes
-		# once this is toggled on, it needs to stay on, since with CPP manipulated
-		# tc-is-clang does not work correctly anymore...
-	fi
-
-	if [[ ${glibc__force_gcc} == "yes" ]] ; then
-		# If we are running in an otherwise clang/llvm environment, we need to
-		# recover the proper gcc and binutils settings here, at least until glibc
-		# is finally building with clang. So let's override everything that is
-		# set in the clang profiles.
-		# Want to shoot yourself into the foot? Set USE="clang" or USE="custom-cflags".
-		# Also, if you are crosscompiling, let's assume you know what you are doing.
-		# Hopefully.
-		# Last, we need the settings of the *build* environment, not of the
-		# target environment...
-
-		local current_binutils_path=$(env CHOST="${CBUILD}" ROOT="${BROOT}" binutils-config -B "${CTARGET}")
-		local current_gcc_path=$(env ROOT="${BROOT}" gcc-config -B)
-		einfo "Overriding clang configuration, since it won't work here"
-
-		export CC="${current_gcc_path}/${CTARGET}-gcc"
-		export CPP="${current_gcc_path}/${CTARGET}-cpp"
-		export CXX="${current_gcc_path}/${CTARGET}-g++"
-		export LD="${current_binutils_path}/ld.bfd"
-		export AR="${current_binutils_path}/ar"
-		export AS="${current_binutils_path}/as"
-		export NM="${current_binutils_path}/nm"
-		export STRIP="${current_binutils_path}/strip"
-		export RANLIB="${current_binutils_path}/ranlib"
-		export OBJCOPY="${current_binutils_path}/objcopy"
-		export STRINGS="${current_binutils_path}/strings"
-		export OBJDUMP="${current_binutils_path}/objdump"
-		export READELF="${current_binutils_path}/readelf"
-		export ADDR2LINE="${current_binutils_path}/addr2line"
-
-		# do we need to also do flags munging here? yes! at least...
-		filter-flags '-fuse-ld=*'
-		filter-flags '-D_FORTIFY_SOURCE=*'
-
-	else
-		# this is the "normal" case
-
-		# Always use tuple-prefixed toolchain. For non-native ABI glibc's configure
-		# can't detect them automatically due to ${CHOST} mismatch and fallbacks
-		# to unprefixed tools. Similar to multilib.eclass:multilib_toolchain_setup().
-		export CC="$(tc-getCC ${CTARGET})"
-		export CXX="$(tc-getCXX ${CTARGET})"
-		export CPP="$(tc-getCPP ${CTARGET})"
-		export NM="$(tc-getNM ${CTARGET})"
-		export READELF="$(tc-getREADELF ${CTARGET})"
-
-	fi
-
-	# We need to move CFLAGS with abi information into CC etc per glibc upstream
-	# requirement. Keep around the original clean value to avoid appending
-	# multiple ABIs on top of each other.
-	export glibc__GLIBC_CC=${CC}
-	export glibc__GLIBC_CXX=${CXX}
-	export glibc__GLIBC_CPP=${CPP}
-
-	export glibc__abi_CFLAGS="$(get_abi_CFLAGS)"
-
-	# CFLAGS can contain ABI-specific flags like -mfpu=neon, see bug #657760
-	# To build .S (assembly) files with the same ABI-specific flags
-	# upstream currently recommends adding CFLAGS to CC/CXX:
-	#    https://sourceware.org/PR23273
-	# Note: Passing CFLAGS via CPPFLAGS overrides glibc's arch-specific CFLAGS
-	# and breaks multiarch support. See 659030#c3 for an example.
-	# The glibc configure script doesn't properly use LDFLAGS all the time.
-	export CC="${glibc__GLIBC_CC} ${glibc__abi_CFLAGS} ${CFLAGS} ${LDFLAGS}"
-
-	# Some of the tests are written in C++, so we need to force our multlib abis in, bug 623548
-	export CXX="${glibc__GLIBC_CXX} ${glibc__abi_CFLAGS} ${CFLAGS}"
-
-	export CPP="${glibc__GLIBC_CPP} ${glibc__abi_CFLAGS} ${CFLAGS}"
-
-	if is_crosscompile; then
-		# Assume worst-case bootstrap: glibc is built for the first time
-		# with ${CTARGET}-g++ not available yet. We avoid
-		# building auxiliary programs that require C++: bug #683074
-		# It should not affect final result.
-		export libc_cv_cxx_link_ok=no
-		# The line above has the same effect. We set CXX explicitly
-		# to make build logs less confusing.
-		export CXX=
-	fi
-}
-
-foreach_abi() {
-	setup_env
-
-	local ret=0
-	local abilist=""
-	if use multilib ; then
-		abilist=$(get_install_abis)
-	else
-		abilist=${DEFAULT_ABI}
-	fi
-	local -x ABI
-	for ABI in ${abilist:-default} ; do
-		setup_env
-		einfo "Running $1 for ABI ${ABI}"
-		$1
-		: $(( ret |= $? ))
-	done
-	return ${ret}
-}
-
-glibc_banner() {
-	local b="Gentoo ${PVR}"
-	[[ -n ${PATCH_VER} ]] && ! use vanilla && b+=" (patchset ${PATCH_VER})"
-	echo "${b}"
-}
-
-# The following Kernel version handling functions are mostly copied from portage
-# source. It's better not to use linux-info.eclass here since a) it adds too
-# much magic, see bug 326693 for some of the arguments, and b) some of the
-# functions are just not provided.
-
-g_get_running_KV() {
-	uname -r
-	return $?
-}
-
-g_KV_major() {
-	[[ -z $1 ]] && return 1
-	local KV=$@
-	echo "${KV%%.*}"
-}
-
-g_KV_minor() {
-	[[ -z $1 ]] && return 1
-	local KV=$@
-	KV=${KV#*.}
-	echo "${KV%%.*}"
-}
-
-g_KV_micro() {
-	[[ -z $1 ]] && return 1
-	local KV=$@
-	KV=${KV#*.*.}
-	echo "${KV%%[^[:digit:]]*}"
-}
-
-g_KV_to_int() {
-	[[ -z $1 ]] && return 1
-	local KV_MAJOR=$(g_KV_major "$1")
-	local KV_MINOR=$(g_KV_minor "$1")
-	local KV_MICRO=$(g_KV_micro "$1")
-	local KV_int=$(( KV_MAJOR * 65536 + KV_MINOR * 256 + KV_MICRO ))
-
-	# We make version 2.2.0 the minimum version we will handle as
-	# a sanity check ... if its less, we fail ...
-	if [[ ${KV_int} -ge 131584 ]] ; then
-		echo "${KV_int}"
-		return 0
-	fi
-	return 1
-}
-
-g_int_to_KV() {
-	local version=$1 major minor micro
-	major=$((version / 65536))
-	minor=$(((version % 65536) / 256))
-	micro=$((version % 256))
-	echo ${major}.${minor}.${micro}
-}
-
-get_kheader_version() {
-	printf '#include <linux/version.h>\nLINUX_VERSION_CODE\n' | \
-	$(tc-getCPP ${CTARGET}) -I "${ESYSROOT}$(alt_headers)" - | \
-	tail -n 1
-}
-
-# We collect all sanity checks here. Consistency is not guranteed between
-# pkg_ and src_ phases, so we call this function both in pkg_pretend and in
-# src_unpack.
-sanity_prechecks() {
-	# Prevent native builds from downgrading
-	if [[ ${MERGE_TYPE} != "buildonly" ]] && \
-	   [[ -z ${ROOT} ]] && \
-	   [[ ${CBUILD} == ${CHOST} ]] && \
-	   [[ ${CHOST} == ${CTARGET} ]] ; then
-
-		# The high rev # is to allow people to downgrade between -r#
-		# versions. We want to block 2.20->2.19, but 2.20-r3->2.20-r2
-		# should be fine. Hopefully we never actually use a r# this
-		# high.
-		if has_version ">${CATEGORY}/${P}-r10000" ; then
-			eerror "Sanity check to keep you from breaking your system:"
-			eerror " Downgrading glibc is not supported and a sure way to destruction."
-			[[ ${I_ALLOW_TO_BREAK_MY_SYSTEM} = yes ]] || die "Aborting to save your system."
-		fi
-
-		if is_linux && ! do_run_test '#include <unistd.h>\n#include <sys/syscall.h>\nint main(){return syscall(1000)!=-1;}\n' ; then
-			eerror "Your old kernel is broken. You need to update it to a newer"
-			eerror "version as syscall(<bignum>) will break. See bug 279260."
-			[[ ${I_ALLOW_TO_BREAK_MY_SYSTEM} = yes ]] || die "Old and broken kernel."
-		fi
-	fi
-
-	if [[ ${CTARGET} == i386-* ]] ; then
-		eerror "i386 CHOSTs are no longer supported."
-		eerror "Chances are you don't actually want/need i386."
-		eerror "Please read https://www.gentoo.org/doc/en/change-chost.xml"
-		die "Please fix your CHOST"
-	fi
-
-	if [[ -e /proc/xen ]] && [[ $(tc-arch) == "x86" ]] && ! is-flag -mno-tls-direct-seg-refs ; then
-		ewarn "You are using Xen but don't have -mno-tls-direct-seg-refs in your CFLAGS."
-		ewarn "This will result in a 50% performance penalty when running with a 32bit"
-		ewarn "hypervisor, which is probably not what you want."
-	fi
-
-	# ABI-specific checks follow here. Hey, we have a lot more specific conditions that
-	# we test for...
-	if ! is_crosscompile && ! tc-is-cross-compiler ; then
-		if use amd64 && use multilib && [[ ${MERGE_TYPE} != "binary" ]] ; then
-			ebegin "Checking if the system can execute 32-bit binaries"
-			echo 'int main(){return 0;}' > "${T}/check-ia32-emulation.c"
-			local STAT
-			if ${CC-${CHOST}-gcc} ${CFLAGS_x86} "${T}/check-ia32-emulation.c" -o "${T}/check-ia32-emulation.elf32"; then
-				"${T}/check-ia32-emulation.elf32"
-				STAT=$?
-			else
-				# Don't fail here to allow single->multi ABI switch
-				# or recover from breakage like bug #646424
-				ewarn "Failed to compile the ABI test. Broken host glibc?"
-				STAT=0
-			fi
-			rm -f "${T}/check-ia32-emulation.elf32"
-			eend $STAT
-			if [[ $STAT -ne 0 ]]; then
-				eerror "Ensure that CONFIG_IA32_EMULATION is enabled in the kernel."
-				eerror "Seek support otherwise."
-				die "Unable to execute 32-bit binaries"
-			fi
-		fi
-
-	fi
-
-	# When we actually have to compile something...
-	if ! just_headers && [[ ${MERGE_TYPE} != "binary" ]] ; then
-		if [[ -d "${ESYSROOT}"/usr/lib/include ]] ; then
-			# bug #833620, bug #643302
-			eerror "Found ${ESYSROOT}/usr/lib/include directory!"
-			eerror "This is known to break glibc's build."
-			eerror "Please backup its contents then remove the directory."
-			die "Found directory (${ESYSROOT}/usr/lib/include) which will break build (bug #833620)!"
-		fi
-
-		if [[ ${CTARGET} == *-linux* ]] ; then
-			local run_kv build_kv want_kv
-
-			run_kv=$(g_get_running_KV)
-			build_kv=$(g_int_to_KV $(get_kheader_version))
-			want_kv=${MIN_KERN_VER}
-
-			if ! is_crosscompile && ! tc-is-cross-compiler ; then
-				# Building fails on an non-supporting kernel
-				ebegin "Checking running kernel version (${run_kv} >= ${want_kv})"
-				if ! [[ $(g_KV_to_int ${run_kv}) -ge $(g_KV_to_int ${want_kv}) ]] ; then
-					eend 1
-					echo
-					eerror "You need a kernel of at least ${want_kv}!"
-					die "Kernel version too low!"
-				fi
-				eend 0
-			fi
-
-			# Do not run this check for pkg_pretend, just pkg_setup and friends (if we ever get used there).
-			# It's plausible (seen it in the wild) that Portage will (correctly) schedule a linux-headers
-			# upgrade before glibc, but because pkg_pretend gets run before any packages are merged at all (not
-			# just glibc), the whole emerge gets aborted without a good reason. We probably don't
-			# need to run this check at all given we have a dependency on the right headers,
-			# but let's leave it as-is for now.
-			if [[ ${EBUILD_PHASE_FUNC} != pkg_pretend ]] ; then
-				ebegin "Checking linux-headers version (${build_kv} >= ${want_kv})"
-				if ! [[ $(g_KV_to_int ${build_kv}) -ge $(g_KV_to_int ${want_kv}) ]] ; then
-					eend 1
-					echo
-					eerror "You need linux-headers of at least ${want_kv}!"
-					die "linux-headers version too low!"
-				fi
-				eend 0
-			fi
-		fi
-	fi
-}
-
-upgrade_warning() {
-	is_crosscompile && return
-
-	if [[ ${MERGE_TYPE} != buildonly && -n ${REPLACING_VERSIONS} && -z ${ROOT} ]]; then
-		if ver_replacing -lt $(ver_cut 1-2 ${PV}); then
-			ewarn "After upgrading glibc, please restart all running processes."
-			ewarn "Be sure to include init (telinit u) or systemd (systemctl daemon-reexec)."
-			ewarn "Alternatively, reboot your system."
-			ewarn "(See bug #660556, bug #741116, bug #823756, etc)"
-		fi
-	fi
-}
-
-#
-# the phases
-#
-
-# pkg_pretend
-
-pkg_pretend() {
-	upgrade_warning
-}
-
-# pkg_setup
-
-pkg_setup() {
-	# see bug 682570
-	[[ -z ${BOOTSTRAP_RAP} ]] && python-any-r1_pkg_setup
-}
-
-# src_unpack
-
-src_unpack() {
-	setup_env
-
-	einfo "Checking general environment sanity."
-	sanity_prechecks
-
-	use multilib-bootstrap && unpack gcc-multilib-bootstrap-${GCC_BOOTSTRAP_VER}.tar.xz
-
-	if [[ ${PV} == *9999 ]] ; then
-		EGIT_REPO_URI="
-			https://anongit.gentoo.org/git/proj/toolchain/glibc-patches.git
-			https://github.com/gentoo/glibc-patches.git
-		"
-		EGIT_CHECKOUT_DIR=${WORKDIR}/patches-git
-		git-r3_src_unpack
-		mv patches-git/9999 patches || die
-		EGIT_REPO_URI="
-			https://sourceware.org/git/glibc.git
-			https://git.sr.ht/~sourceware/glibc
-			https://gitlab.com/x86-glibc/glibc.git
-		"
-		EGIT_CHECKOUT_DIR=${S}
-		[[ ${PV} == *.*.9999 ]] && EGIT_BRANCH=release/${PV%.*}/master
-		git-r3_src_unpack
-	else
-		if use verify-sig; then
-			verify-sig_verify_detached "${DISTDIR}/${P}.tar.xz" "${DISTDIR}/${P}.tar.xz.sig"
-		fi
-		unpack ${P}.tar.xz
-
-		cd "${WORKDIR}" || die
-		unpack ${P}-patches-${PATCH_VER}.tar.xz
-	fi
-
-	cd "${WORKDIR}" || die
-	use systemd && unpack glibc-systemd-${GLIBC_SYSTEMD_VER}.tar.gz
-}
-
-# src_prepare
-
-src_prepare() {
-	local patchsetname
-	if ! use vanilla ; then
-		if [[ ${PV} == 9999* ]] ; then
-			patchsetname="from git master"
-		else
-			patchsetname="${PV}-${PATCH_VER}"
-		fi
-		einfo "Applying Gentoo Glibc patchset ${patchsetname}"
-		eapply "${WORKDIR}"/patches
-		einfo "Done."
-
-		# Patches we should apply only for Hurd to be conservative
-		if is_hurd ; then
-			eapply "${FILESDIR}"/glibc-2.43-hurd-CLOCK_MONOTONIC.patch
-		fi
-	fi
-
-	case ${CTARGET} in
-		m68*-aligned-*)
-			einfo "Applying utmp format fix for m68k with -maligned-int"
-			eapply "${FILESDIR}/glibc-2.41-m68k-malign.patch"
-			;;
-		*)
-			;;
-	esac
-
-	default
-
-	gnuconfig_update
-
-	cd "${WORKDIR}" || die
-	find . -name configure -exec touch {} +
-
-	# Fix permissions on some of the scripts.
-	chmod u+x "${S}"/scripts/*.sh
-
-	cd "${S}" || die
-}
-
-# src_configure
-
-glibc_do_configure() {
-	dump_build_environment
-
-	local myconf=()
-
-	# Use '=strong' instead of '=all' to protect only functions
-	# worth protecting from stack smashes.
-	myconf+=( --enable-stack-protector=$(usex ssp strong no) )
-
-	# Keep a whitelist of targets supporting IFUNC. glibc's ./configure
-	# is not robust enough to detect proper support:
-	#    https://bugs.gentoo.org/641216
-	#    https://sourceware.org/PR22634#c0
-	case $(tc-arch ${CTARGET}) in
-		# Keep whitelist of targets where autodetection mostly works.
-		amd64|x86|sparc|ppc|ppc64|arm|arm64|s390|riscv|loong) ;;
-		# Blacklist everywhere else
-		*) myconf+=( libc_cv_ld_gnu_indirect_function=no ) ;;
-	esac
-
-	case ${ABI}-${CTARGET} in
-		amd64-x86_64-*|x32-x86_64-*-*-gnux32) myconf+=( $(use_enable cet) ) ;;
-		*) ;;
-	esac
-
-	case ${ABI}-${CTARGET} in
-		amd64-x86_64-*|arm64-aarch64-*) myconf+=( $(use_enable sframe) ) ;;
-		*) ;;
-	esac
-
-	[[ $(tc-is-softfloat) == "yes" ]] && myconf+=( --without-fp )
-
-	myconf+=( --enable-kernel=${MIN_KERN_VER} )
-
-	# Since SELinux support is only required for nscd, only enable it if:
-	# 1. USE selinux
-	# 2. only for the primary ABI on multilib systems
-	# 3. Not a crosscompile
-	if ! is_crosscompile && use selinux ; then
-		if use multilib ; then
-			if is_final_abi ; then
-				myconf+=( --with-selinux )
-			else
-				myconf+=( --without-selinux )
-			fi
-		else
-			myconf+=( --with-selinux )
-		fi
-	else
-		myconf+=( --without-selinux )
-	fi
-
-	# Force a few tests where we always know the answer but
-	# configure is incapable of finding it.
-	if is_crosscompile ; then
-		export \
-			libc_cv_c_cleanup=yes \
-			libc_cv_forced_unwind=yes
-	fi
-
-	myconf+=(
-		--disable-werror
-		--enable-bind-now
-		--enable-fortify-source
-		--build=${CBUILD_OPT:-${CBUILD}}
-		--host=${CTARGET_OPT:-${CTARGET}}
-		$(use_enable profile)
-		$(use_with gd)
-		--with-headers="${ESYSROOT}$(alt_headers)"
-		--prefix="$(host_eprefix)/usr"
-		--sysconfdir="$(host_eprefix)/etc"
-		--localstatedir="$(host_eprefix)/var"
-		--libdir='$(prefix)'/$(get_libdir)
-		--mandir='$(prefix)'/share/man
-		--infodir='$(prefix)'/share/info
-		--libexecdir='$(libdir)'/misc/glibc
-		--with-bugurl=https://bugs.gentoo.org/
-		--with-pkgversion="$(glibc_banner)"
-		$(use_multiarch || echo --disable-multi-arch)
-		$(use_enable nscd)
-
-		# /usr/bin/mtrace has a Perl shebang. Gentoo Prefix QA checks fail if
-		# Perl hasn't been installed inside the prefix yet and configure picks
-		# up a Perl from outside the prefix instead. configure will fail to
-		# execute Perl during configure if we're cross-compiling a prefix, but
-		# it will just disable mtrace in that case.
-		# Note: mtrace is needed by the test suite.
-		ac_cv_path_PERL="$(usex perl "${EPREFIX}"/usr/bin/perl $(usex test "${EPREFIX}"/usr/bin/perl $(usex doc "${EPREFIX}"/usr/bin/perl no)))"
-
-		# locale data is arch-independent
-		# https://bugs.gentoo.org/753740
-		libc_cv_complocaledir='${exec_prefix}/lib/locale'
-
-		# On aarch64 there is no way to override -mcpu=native, and if
-		# the current cpu does not support SVE configure fails.
-		# Let's boldly assume our toolchain can always build SVE instructions.
-		libc_cv_aarch64_sve_asm=yes
-
-		${EXTRA_ECONF}
-	)
-
-	# We rely on sys-libs/timezone-data for timezone tools normally.
-	myconf+=( $(use_enable vanilla timezone-tools) )
-
-	if is_crosscompile ; then
-		myconf+=( --disable-systemtap )
-	else
-		myconf+=( $(use_enable systemtap) )
-	fi
-
-	# These libs don't have configure flags.
-	ac_cv_lib_audit_audit_log_user_avc_message=$(usex audit || echo no)
-	ac_cv_lib_cap_cap_init=$(usex caps || echo no)
-
-	# There is no configure option for this and we need to export it
-	# since the glibc build will re-run configure on itself
-	export libc_cv_rootsbindir="$(host_eprefix)/sbin"
-	export libc_cv_slibdir="$(host_eprefix)/$(get_libdir)"
-
-	local builddir=$(builddir nptl)
-	mkdir -p "${builddir}"
-	cd "${builddir}"
-	set -- "${S}"/configure "${myconf[@]}"
-	echo "$@"
-	"$@" || die "failed to configure glibc"
-
-	# If we're trying to migrate between ABI sets, we need
-	# to lie and use a local copy of gcc.  Like if the system
-	# is built with MULTILIB_ABIS="amd64 x86" but we want to
-	# add x32 to it, gcc/glibc don't yet support x32.
-	#
-	if [[ -n ${GCC_BOOTSTRAP_VER} ]] && use multilib-bootstrap ; then
-		echo 'int main(void){}' > "${T}"/test.c || die
-		if ! $(tc-getCC ${CTARGET}) ${CFLAGS} ${LDFLAGS} "${T}"/test.c -Wl,-emain -lgcc 2>/dev/null ; then
-			sed -i -e '/^CC = /s:$: -B$(objdir)/../'"gcc-multilib-bootstrap-${GCC_BOOTSTRAP_VER}/${ABI}:" config.make || die
-		fi
-	fi
-}
-
-glibc_headers_configure() {
-	export ABI=default
-
-	local builddir=$(builddir "headers")
-	mkdir -p "${builddir}"
-	cd "${builddir}"
-
-	# if we don't have a compiler yet, we can't really test it now ...
-	# hopefully they don't affect header generation, so let's hope for
-	# the best here ...
-	local v vars=(
-		ac_cv_header_cpuid_h=yes
-		libc_cv_{386,390,alpha,arm,hppa,mips,{powerpc,sparc}{,32,64},sh,x86_64}_tls=yes
-		libc_cv_asm_cfi_directives=yes
-		libc_cv_broken_visibility_attribute=no
-		libc_cv_c_cleanup=yes
-		libc_cv_compiler_powerpc64le_binary128_ok=yes
-		libc_cv_forced_unwind=yes
-		libc_cv_gcc___thread=yes
-		libc_cv_mlong_double_128=yes
-		libc_cv_mlong_double_128ibm=yes
-		libc_cv_ppc_machine=yes
-		libc_cv_ppc_rel16=yes
-		libc_cv_predef_fortify_source=no
-		libc_cv_target_power8_ok=yes
-		libc_cv_visibility_attribute=yes
-		libc_cv_z_combreloc=yes
-		libc_cv_z_execstack=yes
-		libc_cv_z_initfirst=yes
-		libc_cv_z_nodelete=yes
-		libc_cv_z_nodlopen=yes
-		libc_cv_z_relro=yes
-		libc_mips_abi=${ABI}
-		libc_mips_float=$([[ $(tc-is-softfloat) == "yes" ]] && echo soft || echo hard)
-		# These libs don't have configure flags.
-		ac_cv_lib_audit_audit_log_user_avc_message=no
-		ac_cv_lib_cap_cap_init=no
-	)
-
-	einfo "Forcing cached settings:"
-	for v in "${vars[@]}" ; do
-		einfo " ${v}"
-		export ${v}
-	done
-
-	local headers_only_arch_CPPFLAGS=()
-
-	# Blow away some random CC settings that screw things up. #550192
-	if [[ -d ${S}/sysdeps/mips ]]; then
-		pushd "${S}"/sysdeps/mips >/dev/null
-		sed -i -e '/^CC +=/s:=.*:= -D_MIPS_SZPTR=32:' mips32/Makefile mips64/n32/Makefile || die
-		sed -i -e '/^CC +=/s:=.*:= -D_MIPS_SZPTR=64:' mips64/n64/Makefile || die
-
-		# Force the mips ABI to the default.  This is OK because the set of
-		# installed headers in this phase is the same between the 3 ABIs.
-		# If this ever changes, this hack will break, but that's unlikely
-		# as glibc discourages that behavior.
-		# https://crbug.com/647033
-		sed -i -e 's:abiflag=.*:abiflag=_ABIO32:' preconfigure || die
-
-		popd >/dev/null
-	fi
-
-	local myconf=()
-
-	case ${CTARGET} in
-	aarch64*)
-		# The configure checks fail during cross-build, so disable here
-		# for headers-only
-		myconf+=(
-			--disable-mathvec
-		) ;;
-	riscv*)
-		# RISC-V interrogates the compiler to determine which target to
-		# build.  If building the headers then we don't strictly need a
-		# RISC-V compiler, so the built-in definitions that are provided
-		# along with all RISC-V compiler might not exist.  This causes
-		# glibc's RISC-V preconfigure script to blow up.  Since we're just
-		# building the headers any value will actually work here, so just
-		# pick the standard one (rv64g/lp64d) to make the build scripts
-		# happy for now -- the headers are all the same anyway so it
-		# doesn't matter.
-		headers_only_arch_CPPFLAGS+=(
-			-D__riscv_xlen=64
-			-D__riscv_flen=64
-			-D__riscv_float_abi_double=1
-			-D__riscv_atomic=1
-		) ;;
-	esac
-
-	myconf+=(
-		--disable-sanity-checks
-		--enable-hacker-mode
-		--disable-werror
-		--enable-bind-now
-		--build=${CBUILD_OPT:-${CBUILD}}
-		--host=${CTARGET_OPT:-${CTARGET}}
-		--with-headers="${ESYSROOT}$(alt_headers)"
-		--prefix="$(host_eprefix)/usr"
-		${EXTRA_ECONF}
-	)
-
-	# Nothing is compiled here which would affect the headers for the target.
-	# So forcing CC/CFLAGS is sane.
-	local headers_only_CC=$(tc-getBUILD_CC)
-	local headers_only_CFLAGS="-O1 -pipe"
-	local headers_only_CPPFLAGS="-U_FORTIFY_SOURCE ${headers_only_arch_CPPFLAGS[*]}"
-	local headers_only_LDFLAGS=""
-	set -- "${S}"/configure "${myconf[@]}"
-	echo \
-		"CC=${headers_only_CC}" \
-		"CFLAGS=${headers_only_CFLAGS}" \
-		"CPPFLAGS=${headers_only_CPPFLAGS}" \
-		"LDFLAGS=${headers_only_LDFLAGS}" \
-		"$@"
-	CC=${headers_only_CC} \
-	CFLAGS=${headers_only_CFLAGS} \
-	CPPFLAGS=${headers_only_CPPFLAGS} \
-	LDFLAGS="" \
-	"$@" || die "failed to configure glibc"
-}
-
-do_src_configure() {
-	if just_headers ; then
-		glibc_headers_configure
-	else
-		glibc_do_configure nptl
-	fi
-}
-
-src_configure() {
-	foreach_abi do_src_configure
-}
-
-# src_compile
-
-do_src_compile() {
-	emake -C "$(builddir nptl)"
-}
-
-src_compile() {
-	if just_headers ; then
-		return
-	fi
-
-	foreach_abi do_src_compile
-}
-
-# src_test
-
-glibc_src_test() {
-	cd "$(builddir nptl)"
-
-	local myxfailparams=""
-	if [[ "${GENTOO_GLIBC_XFAIL_TESTS}" == "yes" ]] ; then
-		local virt=$(systemd-detect-virt 2>/dev/null)
-		if [[ ${virt} == systemd-nspawn ]] ; then
-			ewarn "Skipping extra tests because in systemd-nspawn container"
-			XFAIL_TEST_LIST+=( "${XFAIL_NSPAWN_TEST_LIST[@]}" )
-		fi
-		if [[ "$(nice)" == "19" ]] ; then
-			# Expects to be able to increase niceness, which it can't do if
-			# already at the highest nice value
-			XFAIL_TEST_LIST+=( "tst-nice" )
-		fi
-
-		for myt in ${XFAIL_TEST_LIST[@]} ; do
-			myxfailparams+="test-xfail-${myt}=yes "
-		done
-	fi
-
-	# sandbox does not understand unshare() and prevents
-	# writes to /proc/, which makes many tests fail
-
-	# we give the tests a bit more time to avoid spurious
-	# bug reports on slow arches
-
-	SANDBOX_ON=0 LD_PRELOAD= TIMEOUTFACTOR=16 nonfatal emake ${myxfailparams} check
-}
-
-src_test() {
-	if just_headers ; then
-		return
-	fi
-
-	# glibc_src_test uses nonfatal so that we can run tests for all ABIs
-	# and fail at the end instead.
-	foreach_abi glibc_src_test || die "tests failed"
-}
-
-# src_install
-
-run_locale_gen() {
-	local fatal=$1 prefix=$2
-	local user_config action config stderr noun ret
-	local -a hasversion_opts localegen_args
-
-	if [[ ${EBUILD_PHASE_FUNC} == src_install ]]; then
-		hasversion_opts=( -b )
-	fi
-
-	if has_version "${hasversion_opts[@]}" '>=sys-apps/locale-gen-3'; then
-		localegen_args=( --prefix "${prefix}" )
-	else
-		config="${prefix}/usr/share/i18n/SUPPORTED"
-		user_config="${prefix}/etc/locale.gen"
-		if [[ ${EBUILD_PHASE_FUNC} == src_install ]]; then
-			# For USE=compile-locales, all locales should be built.
-			mkdir -p -- "${prefix}/usr/lib/locale" || die
-		elif locale-gen --list --config "${user_config}" | read -r; then
-			config=${user_config}
-		fi
-		localegen_args=( --config "${config}" --destdir "${prefix}" )
-	fi
-
-	# bug 736794: we need to be careful with the parallelization... the
-	# number of processors saved in the environment of a binary package may
-	# differ strongly from the number of processes available during postinst
-	if [[ ${EMERGE_FROM} != binary ]]; then
-		localegen_args+=( --jobs "$(get_makeopts_jobs)" )
-	fi
-
-	printf 'Executing: locale-gen %s\n' "${localegen_args[*]@Q}" >&2
-	{ stderr=$(locale-gen "${localegen_args[@]}" 2>&1 >&3); } 3>&1
-	ret=$?
-	action="ewarn"
-	if (( ret == 0 )); then
-		noun="warning"
-	else
-		noun="error"
-		if (( fatal )); then
-			action="die"
-		fi
-	fi
-	# Convey warnings/errors so that they can be reseen upon emerge exiting.
-	if [[ ${stderr} ]]; then
-		ewarn "locale-gen(8) issued the following ${noun}s:"
-		while read -r; do
-			ewarn "$REPLY"
-		done <<<"${stderr}"
-	fi
-	if (( ret != 0 )); then
-		"${action}" "locale-gen(8) unexpectedly failed during the ${EBUILD_PHASE_FUNC} phase"
-	fi
-}
-
-glibc_do_src_install() {
-	local builddir=$(builddir nptl)
-	cd "${builddir}"
-
-	emake install_root="${D}/$(build_eprefix)$(alt_prefix)" install
-
-	# This version (2.26) provides some compatibility libraries for the NIS/NIS+ support
-	# which come without headers etc. Only needed for binary packages since the
-	# external net-libs/libnsl has increased soversion. Keep only versioned libraries.
-	find "${D}" -name "libnsl.a" -delete
-	find "${D}" -name "libnsl.so" -delete
-
-	# Normally upstream_pv is ${PV}. Live ebuilds are exception, there we need
-	# to infer upstream version:
-	# '#define VERSION "2.26.90"' -> '2.26.90'
-	local upstream_pv=$(sed -n -r 's/#define VERSION "(.*)"/\1/p' "${S}"/version.h)
-
-	# Avoid stripping binaries not targeted by ${CHOST}. Or else
-	# ${CHOST}-strip would break binaries build for ${CTARGET}.
-	is_crosscompile && dostrip -x /
-
-	# gdb thread introspection relies on local libpthreads symbols. stripping breaks it
-	# See Note [Disable automatic stripping]
-	dostrip -x $(alt_libdir)/libpthread-${upstream_pv}.so
-	# valgrind requires knowledge about ld.so symbols.
-	dostrip -x $(alt_libdir)/ld-*.so*
-
-	if [[ -e ${ED}/$(alt_usrlibdir)/libm-${upstream_pv}.a ]] ; then
-		# Move versioned .a file out of libdir to evade portage QA checks
-		# instead of using gen_usr_ldscript(). We fix ldscript as:
-		# "GROUP ( /usr/lib64/libm-<pv>.a ..." -> "GROUP ( /usr/lib64/glibc-<pv>/libm-<pv>.a ..."
-		sed -i "s@\(libm-${upstream_pv}.a\)@${P}/\1@" \
-			"${ED}"/$(alt_usrlibdir)/libm.a || die
-		dodir $(alt_usrlibdir)/${P}
-		mv "${ED}"/$(alt_usrlibdir)/libm-${upstream_pv}.a \
-			"${ED}"/$(alt_usrlibdir)/${P}/libm-${upstream_pv}.a || die
-	fi
-
-	# We configure toolchains for standalone prefix systems with a sysroot,
-	# which is prepended to paths in ld scripts, so strip the prefix from these.
-	# Before: GROUP ( /foo/lib64/libc.so.6 /foo/usr/lib64/libc_nonshared.a  AS_NEEDED ( /foo/lib64/ld-linux-x86-64.so.2 ) )
-	# After: GROUP ( /lib64/libc.so.6 /usr/lib64/libc_nonshared.a  AS_NEEDED ( /lib64/ld-linux-x86-64.so.2 ) )
-	if [[ -n $(host_eprefix) ]] ; then
-		local file
-		grep -lZIF "ld script" "${ED}/$(alt_usrlibdir)"/lib*.{a,so} 2>/dev/null | while read -rd '' file ; do
-			sed -i "s|$(host_eprefix)/|/|g" "${file}" || die
-		done
-	fi
-
-	# We'll take care of the cache ourselves
-	rm -f "${ED}"/etc/ld.so.cache
-
-	# Everything past this point just needs to be done once ...
-	is_final_abi || return 0
-
-	# Make sure the non-native interp can be found on multilib systems even
-	# if the main library set isn't installed into the right place.  Maybe
-	# we should query the active gcc for info instead of hardcoding it ?
-	local i ldso_abi ldso_name
-	if is_linux ; then
-		local ldso_abi_list=(
-			# x86
-			amd64   /lib64/ld-linux-x86-64.so.2
-			x32     /libx32/ld-linux-x32.so.2
-			x86     /lib/ld-linux.so.2
-			# mips
-			o32     /lib/ld.so.1
-			n32     /lib32/ld.so.1
-			n64     /lib64/ld.so.1
-			# powerpc
-			ppc     /lib/ld.so.1
-			# riscv
-			ilp32d  /lib/ld-linux-riscv32-ilp32d.so.1
-			ilp32   /lib/ld-linux-riscv32-ilp32.so.1
-			lp64d   /lib/ld-linux-riscv64-lp64d.so.1
-			lp64    /lib/ld-linux-riscv64-lp64.so.1
-			# s390
-			s390    /lib/ld.so.1
-			s390x   /lib/ld64.so.1
-			# sparc
-			sparc32 /lib/ld-linux.so.2
-			sparc64 /lib64/ld-linux.so.2
-		)
-		case $(tc-endian) in
-		little)
-			ldso_abi_list+=(
-				# arm
-				arm64   /lib/ld-linux-aarch64.so.1
-				# ELFv2 (glibc does not support ELFv1 on LE)
-				ppc64   /lib64/ld64.so.2
-			)
-			;;
-		big)
-			ldso_abi_list+=(
-				# arm
-				arm64   /lib/ld-linux-aarch64_be.so.1
-				# ELFv1 (glibc does not support ELFv2 on BE)
-				ppc64   /lib64/ld64.so.1
-			)
-			;;
-		esac
-	else
-	# we must be using hurd then
-		local ldso_abi_list=(
-			# x86
-			amd64   /lib64/ld-x86-64.so.1
-			x86     /lib/ld.so.1
-		)
-	fi
-	if [[ ${SYMLINK_LIB} == "yes" ]] && [[ ! -e ${ED}/$(alt_prefix)/lib ]] ; then
-		dosym $(get_abi_LIBDIR ${DEFAULT_ABI}) $(alt_prefix)/lib
-	fi
-	for (( i = 0; i < ${#ldso_abi_list[@]}; i += 2 )) ; do
-		ldso_abi=${ldso_abi_list[i]}
-		has ${ldso_abi} $(get_install_abis) || continue
-
-		ldso_name="$(alt_prefix)${ldso_abi_list[i+1]}"
-		if [[ ! -L ${ED}/${ldso_name} && ! -e ${ED}/${ldso_name} ]] ; then
-			dosym ../$(get_abi_LIBDIR ${ldso_abi})/${ldso_name##*/} ${ldso_name}
-		fi
-	done
-
-	if is_linux ; then
-		# In the LSB 5.0 definition, someone had the excellent idea to "standardize"
-		# the runtime loader name, see also https://xkcd.com/927/
-		# Normally, in Gentoo one should never come across executables that require this.
-		# However, binary commercial packages are known to adhere to weird practices.
-		# https://refspecs.linuxfoundation.org/LSB_5.0.0/LSB-Core-AMD64/LSB-Core-AMD64.html#BASELIB
-		local lsb_ldso_name native_ldso_name lsb_ldso_abi
-		local lsb_ldso_abi_list=(
-			# x86
-			amd64	ld-linux-x86-64.so.2	ld-lsb-x86-64.so.3
-		)
-		for (( i = 0; i < ${#lsb_ldso_abi_list[@]}; i += 3 )) ; do
-			lsb_ldso_abi=${lsb_ldso_abi_list[i]}
-			native_ldso_name=${lsb_ldso_abi_list[i+1]}
-			lsb_ldso_name=${lsb_ldso_abi_list[i+2]}
-			has ${lsb_ldso_abi} $(get_install_abis) || continue
-
-			if [[ ! -L ${ED}/$(get_abi_LIBDIR ${lsb_ldso_abi})/${lsb_ldso_name} && ! -e ${ED}/$(get_abi_LIBDIR ${lsb_ldso_abi})/${lsb_ldso_name} ]] ; then
-				dosym ${native_ldso_name} "$(alt_prefix)/$(get_abi_LIBDIR ${lsb_ldso_abi})/${lsb_ldso_name}"
-			fi
-		done
-	fi
-
-	# On Hurd, glibc and (unpatched) gcc tend to disagree about the proper location for
-	# the dynamic loader. Which is maximally stupid since this one information is hardcoded
-	# into every single binary, and even if we were to fix *our* gcc it could still prevent
-	# us from running binaries prepared anywhere else...
-
-	if is_hurd && has amd64 $(get_install_abis) ; then
-		# First, let's check for sanity
-		if [[ -f "${D}$(alt_prefix)/lib/ld-x86-64.so.1" ]] ; then
-			die "Somehow your amd64 hurd glibc installed /lib/ld-x86-64.so.1 ... this should not happen."
-		fi
-
-		# Then make a compatibility symlink.
-		dosym ../lib64/ld-x86-64.so.1 "$(alt_prefix)/lib/ld-x86-64.so.1"
-	fi
-
-	if is_hurd && has x86 $(get_install_abis) ; then
-		# First, let's check for sanity
-		if [[ -f "${D}$(alt_prefix)/$(get_abi_LIBDIR x86)/ld.so" ]] ; then
-			die "Somehow your x86 hurd glibc installed ld.so ... this should not happen."
-		fi
-
-		# Then make a compatibility symlink.
-		dosym ld.so.1 "$(alt_prefix)/$(get_abi_LIBDIR x86)/ld.so"
-	fi
-
-	# With devpts under Linux mounted properly, we do not need the pt_chown
-	# binary to be setuid.  This is because the default owners/perms will be
-	# exactly what we want.
-	if ! use suid ; then
-		find "${ED}" -name pt_chown -exec chmod -s {} +
-	fi
-
-	#################################################################
-	# EVERYTHING AFTER THIS POINT IS FOR NATIVE GLIBC INSTALLS ONLY #
-	#################################################################
-
-	# Make sure we install some symlink hacks so that when we build
-	# a 2nd stage cross-compiler, gcc finds the target system
-	# headers correctly.  See gcc/doc/gccinstall.info
-	if is_crosscompile ; then
-		# We need to make sure that /lib and /usr/lib always exists.
-		# gcc likes to use relative paths to get to its multilibs like
-		# /usr/lib/../lib64/.  So while we don't install any files into
-		# /usr/lib/, we do need it to exist.
-		keepdir $(alt_prefix)/lib
-		keepdir $(alt_prefix)/usr/lib
-
-		dosym usr/include $(alt_prefix)/sys-include
-		return 0
-	fi
-
-	# Files for Debian-style locale updating
-	dodir /usr/share/i18n
-	sed \
-		-e "/^#/d" \
-		-e "/SUPPORTED-LOCALES=/d" \
-		-e "s: \\\\::g" -e "s:/: :g" \
-		"${S}"/localedata/SUPPORTED > "${ED}"/usr/share/i18n/SUPPORTED \
-		|| die "generating /usr/share/i18n/SUPPORTED failed"
-
-	cd "${S}" || die
-
-	# Install misc network config files
-	insinto /etc
-	doins posix/gai.conf
-
-	if use systemd ; then
-		doins "${WORKDIR}/glibc-systemd-${GLIBC_SYSTEMD_VER}/gentoo-config/nsswitch.conf"
-	else
-		doins nss/nsswitch.conf
-	fi
-
-	# Gentoo-specific
-	newins "${FILESDIR}"/host.conf-1 host.conf
-
-	if use nscd ; then
-		doins nscd/nscd.conf
-
-		newinitd "$(prefixify_ro "${FILESDIR}"/nscd-1)" nscd
-
-		local nscd_args=(
-			-e "s:@PIDFILE@:$(strings "${ED}"/usr/sbin/nscd | grep nscd.pid):"
-		)
-
-		sed -i "${nscd_args[@]}" "${ED}"/etc/init.d/nscd
-
-		use systemd && systemd_dounit nscd/nscd.service
-		newtmpfiles nscd/nscd.tmpfiles nscd.conf
-	fi
-
-	echo 'LDPATH="include ld.so.conf.d/*.conf"' > "${T}"/00glibc
-	doenvd "${T}"/00glibc
-
-	for d in BUGS ChangeLog CONFORMANCE FAQ NEWS NOTES PROJECTS README* ; do
-		[[ -s ${d} ]] && dodoc ${d}
-	done
-	dodoc -r ChangeLog.old
-
-	# Prevent overwriting of the /etc/localtime symlink.  We'll handle the
-	# creation of the "factory" symlink in pkg_postinst().
-	rm -f "${ED}"/etc/localtime
-
-	# Generate all locales if this is a native build as locale generation
-	if use compile-locales && ! is_crosscompile; then
-		run_locale_gen 1 "${ED}"
-	fi
-}
-
-glibc_headers_install() {
-	local builddir=$(builddir "headers")
-	cd "${builddir}"
-	emake install_root="${D}/$(build_eprefix)$(alt_prefix)" install-headers
-
-	insinto $(alt_headers)/gnu
-	doins "${S}"/include/gnu/stubs.h
-
-	# Make sure we install the sys-include symlink so that when
-	# we build a 2nd stage cross-compiler, gcc finds the target
-	# system headers correctly.  See gcc/doc/gccinstall.info
-	dosym usr/include $(alt_prefix)/sys-include
-}
-
-src_install() {
-	if just_headers ; then
-		export ABI=default
-		glibc_headers_install
-		return
-	fi
-
-	foreach_abi glibc_do_src_install
-
-	if ! use static-libs ; then
-		einfo "Not installing static glibc libraries"
-		find "${ED}" -name "*.a" -and -not -name "*_nonshared.a" -delete
-	fi
-}
-
-# Simple test to make sure our new glibc isn't completely broken.
-# Make sure we don't test with statically built binaries since
-# they will fail.  Also, skip if this glibc is a cross compiler.
-#
-# If coreutils is built with USE=multicall, some of these files
-# will just be wrapper scripts, not actual ELFs we can test.
-glibc_sanity_check() {
-	cd / #228809
-
-	# We enter ${ED} so to avoid trouble if the path contains
-	# special characters; for instance if the path contains the
-	# colon character (:), then the linker will try to split it
-	# and look for the libraries in an unexpected place. This can
-	# lead to unsafe code execution if the generated prefix is
-	# within a world-writable directory.
-	# (e.g. /var/tmp/portage:${HOSTNAME})
-	pushd "${ED}"/$(get_libdir) >/dev/null
-
-	# first let's find the actual dynamic linker here
-	# symlinks may point to the wrong abi
-	local newldso=$(find . -maxdepth 1 -name 'ld*so.?' -type f -print -quit)
-
-	einfo Last-minute run tests with ${newldso} in /$(get_libdir) ...
-
-	local x striptest
-	for x in cal date env free ls true uname uptime ; do
-		x=$(type -p ${x})
-		[[ -z ${x} || ${x} != ${EPREFIX}/* ]] && continue
-		striptest=$(LC_ALL="C" file -L ${x} 2>/dev/null) || continue
-		case ${striptest} in
-		*"statically linked"*) continue;;
-		*"ASCII text"*) continue;;
-		esac
-		# We need to clear the locale settings as the upgrade might want
-		# incompatible locale data.  This test is not for verifying that.
-		LC_ALL=C \
-		${newldso} --library-path . ${x} > /dev/null \
-			|| die "simple run test (${x}) failed"
-	done
-
-	popd >/dev/null
-}
-
-pkg_preinst() {
-	# nothing to do if just installing headers
-	just_headers && return
-
-	einfo "Checking general environment sanity."
-	sanity_prechecks
-
-	# prepare /etc/ld.so.conf.d/ for files
-	mkdir -p "${EROOT}"/etc/ld.so.conf.d
-
-	# Default /etc/hosts.conf:multi to on for systems with small dbs.
-	if [[ $(wc -l < "${EROOT}"/etc/hosts) -lt 1000 ]] ; then
-		sed -i '/^multi off/s:off:on:' "${ED}"/etc/host.conf
-		einfo "Defaulting /etc/host.conf:multi to on"
-	fi
-
-	[[ -n ${ROOT} ]] && return 0
-	[[ -d ${ED}/$(get_libdir) ]] || return 0
-	[[ -z ${BOOTSTRAP_RAP} ]] && glibc_sanity_check
-
-	if [[ -L ${EROOT}/usr/lib/locale ]]; then
-		# Help portage migrate this to a directory
-		# https://bugs.gentoo.org/753740
-		rm "${EROOT}"/usr/lib/locale || die
-	fi
-
-	# Keep around libcrypt so that Perl doesn't break when merging libxcrypt
-	# (libxcrypt is the new provider for now of libcrypt.so.{1,2}).
-	# bug #802207
-	if has_version "${CATEGORY}/${PN}[crypt]" && ! has preserve-libs ${FEATURES}; then
-		PRESERVED_OLD_LIBCRYPT=1
-		cp -p "${EROOT}/$(get_libdir)/libcrypt$(get_libname 1)" \
-			"${T}/libcrypt$(get_libname 1)" || die
-	else
-		PRESERVED_OLD_LIBCRYPT=0
-	fi
-}
-
-glibc_refresh_ldconfig() {
-	if [[ ${MERGE_TYPE} == buildonly ]]; then
-		return
-	fi
-
-	# Version check could be added to avoid unnecessary work, but ldconfig
-	# should finish quickly enough to not matter.
-	ebegin "Refreshing ld.so.cache"
-	ldconfig -i
-	if ! eend $?; then
-		ewarn "Failed to refresh the ld.so.cache for you. Some programs may be broken"
-		ewarn "before you manually do so (ldconfig -i)."
-	fi
-}
-
-pkg_postinst() {
-	# nothing to do if just installing headers
-	just_headers && return
-
-	if ! tc-is-cross-compiler && [[ -x ${EROOT}/usr/sbin/iconvconfig ]] ; then
-		# Generate fastloading iconv module configuration file.
-		"${EROOT}"/usr/sbin/iconvconfig --prefix="${ROOT}/"
-	fi
-
-	if ! is_crosscompile && [[ -z ${ROOT} ]] ; then
-		# glibc-2.38+ on loong has ldconfig support added, but the ELF e_flags
-		# handling has changed as well, which means stale ldconfig auxiliary
-		# cache entries and failure to lookup libgcc_s / libstdc++ (breaking
-		# every C++ application) / libgomp etc., among other breakages.
-		#
-		# To fix this, simply refresh the ld.so.cache without using the
-		# auxiliary cache if we're natively installing on loong. This should
-		# be done relatively soon because we want to minimize the breakage
-		# window for the affected programs.
-		use loong && glibc_refresh_ldconfig
-
-		if ! use compile-locales; then
-			run_locale_gen 0 "${EROOT}"
-		fi
-
-		# If fixincludes was/is active for a particular GCC slot, we
-		# must refresh it. See bug #933282 and GCC's documentation:
-		# https://gcc.gnu.org/onlinedocs/gcc/Fixed-Headers.html
-		#
-		# TODO: Could this be done for cross? Some care would be needed
-		# to pass the right arguments.
-		while IFS= read -r -d $'\0' slot ; do
-			local mkheaders_path="${BROOT}"/usr/libexec/gcc/${CBUILD}/${slot##*/}/install-tools/mkheaders
-			local pthread_h="${BROOT}"/usr/lib/gcc/${CBUILD}/${slot##*/}/include-fixed/pthread.h
-			if [[ -x ${mkheaders_path} ]] ; then
-				ebegin "Refreshing fixincludes for ${CBUILD} with gcc-${slot##*/}"
-				${mkheaders_path} -v
-				eend $?
-			elif [[ -f ${pthread_h} ]] ; then
-				# fixincludes might have been enabled in the past for this
-				# GCC slot but not since we fixed toolchain.eclass to install
-				# mkheaders, so we need to manually delete pthread.h at least.
-				ebegin "Deleting stale fixincludes'd pthread.h for ${CBUILD} with gcc-${slot##*/}"
-				mv -v "${pthread_h}" "${pthread_h}.bak"
-				eend $?
-			fi
-		done < <(find "${BROOT}"/usr/libexec/gcc/${CBUILD}/ -mindepth 1 -maxdepth 1 -type d -print0)
-	fi
-
-	upgrade_warning
-
-	# Check for sanity of /etc/nsswitch.conf, take 2
-	if [[ -e ${EROOT}/etc/nsswitch.conf ]] && ! has_version sys-auth/libnss-nis ; then
-		local entry
-		for entry in passwd group shadow; do
-			if grep -E -q "^[ \t]*${entry}:.*nis" "${EROOT}"/etc/nsswitch.conf; then
-				ewarn ""
-				ewarn "Your ${EROOT}/etc/nsswitch.conf uses NIS. Support for that has been"
-				ewarn "removed from glibc and is now provided by the package"
-				ewarn "  sys-auth/libnss-nis"
-				ewarn "Install it now to keep your NIS setup working."
-				ewarn ""
-			fi
-		done
-	fi
-
-	if [[ ${PRESERVED_OLD_LIBCRYPT} -eq 1 ]] ; then
-		cp -p "${T}/libcrypt$(get_libname 1)" "${EROOT}/$(get_libdir)/libcrypt$(get_libname 1)" || die
-		preserve_old_lib_notify /$(get_libdir)/libcrypt$(get_libname 1)
-
-		elog "Please ignore a possible later error message about a file collision involving"
-		elog "${EROOT}/$(get_libdir)/libcrypt$(get_libname 1). We need to preserve this file for the moment to keep"
-		elog "the upgrade working, but it also needs to be overwritten when"
-		elog "sys-libs/libxcrypt is installed. See bug 802210 for more details."
-	fi
-}

diff --git a/sys-libs/glibc/glibc-2.43.ebuild b/sys-libs/glibc/glibc-2.43.ebuild
deleted file mode 100644
index 9b913086e6f4..000000000000
--- a/sys-libs/glibc/glibc-2.43.ebuild
+++ /dev/null
@@ -1,1899 +0,0 @@
-# Copyright 1999-2026 Gentoo Authors
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=8
-
-# Bumping notes: https://wiki.gentoo.org/wiki/Project:Toolchain/sys-libs/glibc
-# Please read & adapt the page as necessary if obsolete.
-
-PYTHON_COMPAT=( python3_{10..14} )
-TMPFILES_OPTIONAL=1
-
-EMULTILIB_PKG="true"
-
-# Gentoo patchset (ignored for live ebuilds)
-PATCH_VER=1
-PATCH_DEV=dilfridge
-
-# gcc mulitilib bootstrap files version
-GCC_BOOTSTRAP_VER=20201208
-
-# systemd integration version
-GLIBC_SYSTEMD_VER=20210729
-
-# Minimum kernel version that glibc requires
-MIN_KERN_VER="3.2.0"
-
-# Minimum pax-utils version needed (which contains any new syscall changes for
-# its seccomp filter!). Please double check this!
-MIN_PAX_UTILS_VER="1.3.3"
-
-# Minimum systemd version needed (which contains any new syscall changes for
-# its seccomp filter!). Please double check this!
-MIN_SYSTEMD_VER="254.9-r1"
-
-VERIFY_SIG_OPENPGP_KEY_PATH=/usr/share/openpgp-keys/glibc.asc
-
-inherit python-any-r1 prefix preserve-libs toolchain-funcs flag-o-matic gnuconfig \
-	multilib systemd multiprocessing tmpfiles eapi9-ver verify-sig
-
-DESCRIPTION="GNU libc C library"
-HOMEPAGE="https://www.gnu.org/software/libc/"
-
-if [[ ${PV} == *9999 ]]; then
-	inherit git-r3
-else
-	KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86"
-	SRC_URI="mirror://gnu/glibc/${P}.tar.xz"
-	SRC_URI+=" verify-sig? ( mirror://gnu/glibc/${P}.tar.xz.sig )"
-	SRC_URI+=" https://dev.gentoo.org/~${PATCH_DEV}/distfiles/${P}-patches-${PATCH_VER}.tar.xz"
-fi
-
-SRC_URI+=" multilib-bootstrap? ( https://dev.gentoo.org/~dilfridge/distfiles/gcc-multilib-bootstrap-${GCC_BOOTSTRAP_VER}.tar.xz )"
-SRC_URI+=" systemd? ( https://gitweb.gentoo.org/proj/toolchain/glibc-systemd.git/snapshot/glibc-systemd-${GLIBC_SYSTEMD_VER}.tar.gz )"
-
-LICENSE="LGPL-2.1+ BSD HPND ISC inner-net rc PCRE"
-SLOT="2.2"
-IUSE="audit caps cet clang compile-locales custom-cflags doc gd hash-sysv-compat headers-only +multiarch multilib multilib-bootstrap nscd perl profile selinux sframe +ssp stack-realign +static-libs suid systemd systemtap test vanilla"
-
-# Here's how the cross-compile logic breaks down ...
-#  CTARGET - machine that will target the binaries
-#  CHOST   - machine that will host the binaries
-#  CBUILD  - machine that will build the binaries
-# If CTARGET != CHOST, it means you want a libc for cross-compiling.
-# If CHOST != CBUILD, it means you want to cross-compile the libc.
-#  CBUILD = CHOST = CTARGET    - native build/install
-#  CBUILD != (CHOST = CTARGET) - cross-compile a native build
-#  (CBUILD = CHOST) != CTARGET - libc for cross-compiler
-#  CBUILD != CHOST != CTARGET  - cross-compile a libc for a cross-compiler
-# For install paths:
-#  CHOST = CTARGET  - install into /
-#  CHOST != CTARGET - install into /usr/CTARGET/
-#
-export CBUILD=${CBUILD:-${CHOST}}
-export CTARGET=${CTARGET:-${CHOST}}
-if [[ ${CTARGET} == ${CHOST} ]] ; then
-	if [[ ${CATEGORY} == cross-* ]] ; then
-		export CTARGET=${CATEGORY#cross-}
-	fi
-fi
-
-# Note [Disable automatic stripping]
-# Disabling automatic stripping for a few reasons:
-# - portage's attempt to strip breaks non-native binaries at least on
-#   arm: bug #697428
-# - portage's attempt to strip libpthread.so.0 breaks gdb thread
-#   enumeration: bug #697910. This is quite subtle:
-#   * gdb uses glibc's libthread_db-1.0.so to enumerate threads.
-#   * libthread_db-1.0.so needs access to libpthread.so.0 local symbols
-#     via 'ps_pglobal_lookup' symbol defined in gdb.
-#   * 'ps_pglobal_lookup' uses '.symtab' section table to resolve all
-#     known symbols in 'libpthread.so.0'. Specifically 'nptl_version'
-#     (unexported) is used to sanity check compatibility before enabling
-#     debugging.
-#     Also see https://sourceware.org/gdb/wiki/FAQ#GDB_does_not_see_any_threads_besides_the_one_in_which_crash_occurred.3B_or_SIGTRAP_kills_my_program_when_I_set_a_breakpoint
-#   * normal 'strip' command trims '.symtab'
-#   Thus our main goal here is to prevent 'libpthread.so.0' from
-#   losing it's '.symtab' entries.
-# - similarly, valgrind requires knowledge about symbols in ld.so:
-#	bug #920753
-# As Gentoo's strip does not allow us to pass less aggressive stripping
-# options and does not check the machine target we strip selectively.
-
-# We need a new-enough binutils/gcc to match upstream baseline.
-# Also we need to make sure our binutils/gcc supports TLS,
-# and that gcc already contains the hardened patches.
-# Lastly, let's avoid some openssh nastiness, bug 708224, as
-# convenience to our users.
-
-IDEPEND="
-	!compile-locales? ( sys-apps/locale-gen )
-"
-BDEPEND="
-	${PYTHON_DEPS}
-	>=app-misc/pax-utils-${MIN_PAX_UTILS_VER}
-	sys-devel/bison
-	compile-locales? ( sys-apps/locale-gen )
-	doc? (
-		dev-lang/perl
-		sys-apps/texinfo
-	)
-	sframe? ( >=sys-devel/binutils-2.45 )
-	test? (
-		dev-lang/perl
-		>=net-dns/libidn2-2.3.0
-		sys-apps/gawk[mpfr]
-	)
-	verify-sig? ( sec-keys/openpgp-keys-glibc )
-"
-COMMON_DEPEND="
-	gd? ( media-libs/gd:2= )
-	nscd? ( selinux? (
-		audit? ( sys-process/audit )
-		caps? ( sys-libs/libcap )
-	) )
-	suid? ( caps? ( sys-libs/libcap ) )
-	selinux? ( sys-libs/libselinux )
-	systemtap? ( dev-debug/systemtap )
-"
-DEPEND="${COMMON_DEPEND}
-"
-RDEPEND="${COMMON_DEPEND}
-	!<app-misc/pax-utils-${MIN_PAX_UTILS_VER}
-	!<sys-apps/systemd-${MIN_SYSTEMD_VER}
-	perl? ( dev-lang/perl )
-"
-
-RESTRICT="!test? ( test )"
-
-if [[ ${CATEGORY} == cross-* ]] ; then
-	BDEPEND+=" !headers-only? (
-		>=${CATEGORY}/binutils-2.27
-		>=${CATEGORY}/gcc-6.2
-	)"
-
-	case ${CATEGORY} in
-		*-linux*)
-			DEPEND+=" ${CATEGORY}/linux-headers"
-			;;
-		*-gnu)
-			DEPEND+=" ${CATEGORY}/gnumach[-headers-only]"
-			;;
-	esac
-else
-	BDEPEND+="
-		>=sys-devel/binutils-2.27
-		clang? ( || ( ( >=sys-devel/gcc-6.2 )
-			( >=sys-devel/gcc-6.2 >=llvm-core/clang-18 )
-			( >=llvm-core/clang-18 >=llvm-runtimes/libgcc-18 ) ) )
-		!clang? ( >=sys-devel/gcc-6.2 )
-	"
-	DEPEND+=" virtual/os-headers "
-	RDEPEND+="
-		>=net-dns/libidn2-2.3.0
-		vanilla? ( !sys-libs/timezone-data )
-	"
-	PDEPEND+=" !vanilla? ( sys-libs/timezone-data )"
-fi
-
-# Ignore tests whitelisted below
-GENTOO_GLIBC_XFAIL_TESTS="${GENTOO_GLIBC_XFAIL_TESTS:-yes}"
-
-# The following tests fail due to the Gentoo build system and are thus
-# executed but ignored:
-XFAIL_TEST_LIST=(
-	# buggy test, assumes /dev/ and /dev/null on a single filesystem
-	# 'mount --bind /dev/null /chroot/dev/null' breaks it.
-	# https://sourceware.org/PR25909
-	tst-support_descriptors
-
-	# The following tests fail only inside portage
-	# https://bugs.gentoo.org/831267
-	tst-system
-	tst-strerror
-	tst-strsignal
-
-	# Fails with certain PORTAGE_NICENESS/PORTAGE_SCHEDULING_POLICY
-	tst-sched1
-	tst-sched_setattr
-	tst-sched_setattr-thread
-
-	# Fails regularly, unreliable
-	tst-valgrind-smoke
-
-	# https://sourceware.org/bugzilla/show_bug.cgi?id=31877 (bug #927973)
-	tst-shstk-legacy-1g
-
-	# https://sourceware.org/bugzilla/show_bug.cgi?id=33239
-	test-double-compoundn
-	test-float-compoundn
-	test-float32-compoundn
-	test-float32x-compoundn
-	test-float64-compoundn
-
-	# Fails only in portage. Needs investigation.
-	tst-setvbuf2
-)
-
-XFAIL_NSPAWN_TEST_LIST=(
-	# These tests need to be adapted to handle EPERM/ENOSYS(?) properly
-	# upstream, as systemd-nspawn's default seccomp whitelist is too strict.
-	# https://sourceware.org/PR30603
-	test-errno-linux
-	tst-aarch64-pkey
-	tst-bz21269
-	tst-mlock2
-	tst-ntp_gettime
-	tst-ntp_gettime-time64
-	tst-ntp_gettimex
-	tst-ntp_gettimex-time64
-	tst-pkey
-	tst-process_mrelease
-	tst-adjtime
-	tst-adjtime-time64
-	tst-clock2
-	tst-clock2-time64
-
-	# These fail if --suppress-sync and/or low priority is set
-	tst-sync_file_range
-	test-errno
-)
-
-#
-# Small helper functions
-#
-
-dump_build_environment() {
-	einfo ==== glibc build environment ========================================================
-	local v
-	for v in ABI CBUILD CHOST CTARGET CBUILD_OPT CTARGET_OPT CC CXX CPP LD \
-		{AS,C,CPP,CXX,LD}FLAGS MAKEINFO NM AR AS STRIP RANLIB OBJCOPY \
-		STRINGS OBJDUMP READELF; do
-		einfo " $(printf '%15s' ${v}:)   ${!v}"
-	done
-	einfo =====================================================================================
-}
-
-is_crosscompile() {
-	[[ ${CHOST} != ${CTARGET} ]]
-}
-
-is_linux() {
-	[[ ${CTARGET} == *-linux-* ]]
-}
-
-is_hurd() {
-	# Let's hope this holds for a long time
-	[[ ${CTARGET} != *-linux-* ]]
-}
-
-just_headers() {
-	is_crosscompile && use headers-only
-}
-
-alt_prefix() {
-	is_crosscompile && echo /usr/${CTARGET}
-}
-
-# This prefix is applicable to CHOST when building against this
-# glibc. It is baked into the library at configure time.
-host_eprefix() {
-	is_crosscompile || echo "${EPREFIX}"
-}
-
-# This prefix is applicable to CBUILD when building against this
-# glibc. It determines the destination path at install time.
-build_eprefix() {
-	is_crosscompile && echo "${EPREFIX}"
-}
-
-alt_headers() {
-	echo $(alt_prefix)/usr/include
-}
-alt_libdir() {
-	echo $(alt_prefix)/$(get_libdir)
-}
-alt_usrlibdir() {
-	echo $(alt_prefix)/usr/$(get_libdir)
-}
-
-builddir() {
-	echo "${WORKDIR}/build-${ABI}-${CTARGET}-$1"
-}
-
-do_compile_test() {
-	local ret save_cflags=${CFLAGS}
-	CFLAGS+=" $1"
-	shift
-
-	pushd "${T}" >/dev/null
-
-	rm -f glibc-test*
-	printf '%b' "$*" > glibc-test.c
-
-	# We assume CC is already set up.
-	nonfatal emake glibc-test
-	ret=$?
-
-	popd >/dev/null
-
-	CFLAGS=${save_cflags}
-	return ${ret}
-}
-
-do_run_test() {
-	local ret
-
-	if [[ ${MERGE_TYPE} == "binary" ]] ; then
-		# ignore build failures when installing a binary package #324685
-		CC="${glibc__ORIG_CC}" CXX="${glibc__ORIG_CXX}" CPP="${glibc__ORIG_CPP}" \
-			CFLAGS="-O2" LDFLAGS="" do_compile_test "" "$@" 2>/dev/null || return 0
-	else
-		ebegin "Performing simple compile test for ABI=${ABI}"
-		if ! do_compile_test "" "$@" ; then
-			ewarn "Simple build failed ... assuming this is desired #324685"
-			eend 1
-			return 0
-		else
-			eend 0
-		fi
-	fi
-
-	pushd "${T}" >/dev/null
-
-	./glibc-test
-	ret=$?
-	rm -f glibc-test*
-
-	popd >/dev/null
-
-	return ${ret}
-}
-
-setup_target_flags() {
-	# This largely mucks with compiler flags.  None of which should matter
-	# when building up just the headers.
-	just_headers && return 0
-
-	case $(tc-arch) in
-		x86)
-			# -march needed for #185404 #199334
-			# TODO: When creating the first glibc cross-compile, this test will
-			# always fail as it does a full link which in turn requires glibc.
-			# Probably also applies when changing multilib profile settings (e.g.
-			# enabling x86 when the profile was amd64-only previously).
-			# We could change main to _start and pass -nostdlib here so that we
-			# only test the gcc code compilation.  Or we could do a compile and
-			# then look for the symbol via scanelf.
-			if ! do_compile_test "" 'void f(int i, void *p) {if (__sync_fetch_and_add(&i, 1)) f(i, p);}\nint main(){return 0;}\n'; then
-				local t=${CTARGET_OPT:-${CTARGET}}
-				t=${t%%-*}
-				filter-flags '-march=*'
-				export CFLAGS="-march=${t} ${CFLAGS}"
-				einfo "Auto adding -march=${t} to CFLAGS #185404"
-			fi
-			# For compatibility with older binaries at slight performance cost.
-			use stack-realign && export CFLAGS+=" -mstackrealign"
-		;;
-		amd64)
-			# -march needed for #185404 #199334
-			# TODO: See cross-compile issues listed above for x86.
-			if [[ ${ABI} == x86 ]]; then
-				if ! do_compile_test "${CFLAGS_x86}" 'void f(int i, void *p) {if (__sync_fetch_and_add(&i, 1)) f(i, p);}\nint main(){return 0;}\n'; then
-					local t=${CTARGET_OPT:-${CTARGET}}
-					t=${t%%-*}
-					# Normally the target is x86_64-xxx, so turn that into the -march that
-					# gcc actually accepts. #528708
-					[[ ${t} == "x86_64" ]] && t="x86-64"
-					filter-flags '-march=*'
-					# ugly, ugly, ugly.  ugly.
-					CFLAGS_x86=$(CFLAGS=${CFLAGS_x86}; filter-flags '-march=*'; echo "${CFLAGS}")
-					export CFLAGS_x86="${CFLAGS_x86} -march=${t}"
-					einfo "Auto adding -march=${t} to CFLAGS_x86 #185404 (ABI=${ABI})"
-				fi
-				# For compatibility with older binaries at slight performance cost.
-				use stack-realign && export CFLAGS_x86+=" -mstackrealign"
-			fi
-
-			if is_hurd ; then
-				# doesnt build with -march=native and probably other values, debugging required
-				filter-flags '-march=*'
-			fi
-		;;
-		mips)
-			# The mips abi cannot support the GNU style hashes. #233233
-			filter-ldflags -Wl,--hash-style=gnu -Wl,--hash-style=both
-		;;
-		ppc|ppc64)
-			# Many arch-specific implementations do not work on ppc with
-			# cache-block not equal to 128 bytes. This breaks memset:
-			#   https://sourceware.org/PR26522
-			#   https://bugs.gentoo.org/737996
-			# Use default -mcpu=. For ppc it means non-multiarch setup.
-			filter-flags '-mcpu=*'
-		;;
-		sparc)
-			# Both sparc and sparc64 can use -fcall-used-g6.  -g7 is bad, though.
-			filter-flags "-fcall-used-g7"
-			append-flags "-fcall-used-g6"
-
-			local cpu
-			case ${CTARGET} in
-			sparc64-*)
-				cpu="sparc64"
-				case $(get-flag mcpu) in
-				v9)
-					# We need to force at least v9a because the base build doesn't
-					# work with just v9.
-					# https://sourceware.org/bugzilla/show_bug.cgi?id=19477
-					append-flags "-Wa,-xarch=v9a"
-					;;
-				esac
-				;;
-			sparc-*)
-				case $(get-flag mcpu) in
-				v8|supersparc|hypersparc|leon|leon3)
-					cpu="sparcv8"
-					;;
-				*)
-					cpu="sparcv9"
-					;;
-				esac
-			;;
-			esac
-			[[ -n ${cpu} ]] && CTARGET_OPT="${cpu}-${CTARGET#*-}"
-		;;
-	esac
-}
-
-setup_flags() {
-	# Make sure host make.conf doesn't pollute us
-	if is_crosscompile || tc-is-cross-compiler ; then
-		CHOST=${CTARGET} strip-unsupported-flags
-	fi
-
-	# Store our CFLAGS because it's changed depending on which CTARGET
-	# we are building when pulling glibc on a multilib profile
-	CFLAGS_BASE=${CFLAGS_BASE-${CFLAGS}}
-	CFLAGS=${CFLAGS_BASE}
-	CXXFLAGS_BASE=${CXXFLAGS_BASE-${CXXFLAGS}}
-	CXXFLAGS=${CXXFLAGS_BASE}
-	ASFLAGS_BASE=${ASFLAGS_BASE-${ASFLAGS}}
-	ASFLAGS=${ASFLAGS_BASE}
-
-	# Allow users to explicitly avoid flag sanitization via
-	# USE=custom-cflags.
-	if ! use custom-cflags; then
-		# Over-zealous CFLAGS can often cause problems.  What may work for one
-		# person may not work for another.  To avoid a large influx of bugs
-		# relating to failed builds, we strip most CFLAGS out to ensure as few
-		# problems as possible.
-		strip-flags
-
-		# Allow -O2 and -O3, but nothing else for now.
-		# TODO: Test -Os, -Oz.
-		if ! is-flagq '-O@(2|3)' ; then
-			# Lock glibc at -O2. We want to be conservative here.
-			filter-flags '-O?'
-			append-flags -O2
-		fi
-	fi
-
-	strip-unsupported-flags
-	filter-lto
-	filter-flags -m32 -m64 '-mabi=*'
-
-	# glibc aborts if rpath is set by LDFLAGS
-	filter-ldflags '-Wl,-rpath=*'
-
-	# ld can't use -r & --relax at the same time, bug #788901
-	# https://sourceware.org/PR27837
-	filter-ldflags '-Wl,--relax'
-
-	# Flag added for cross-prefix, but causes ldconfig to segfault. Not needed
-	# anyway because glibc already handles this by itself.
-	filter-ldflags '-Wl,--dynamic-linker=*'
-
-	# Fails to link (bug #940709) in some cases but even if it manages to,
-	# subtle runtime breakage will occur because the linker scripts need
-	# adaptation. Mentioned in PR21557#c0.
-	filter-ldflags '-Wl,--gc-sections'
-
-	# some weird software relies on sysv hashes in glibc, bug 863863, bug 864100
-	# we have to do that here already so mips can filter it out again :P
-	if use hash-sysv-compat ; then
-		append-ldflags '-Wl,--hash-style=both'
-	fi
-
-	# clang warns about linker flags unused during compilation, but we don't
-	# want that to turn into errors!
-	# Let's turn the warning off entirely since it spams.
-	append-flags -Wno-unused-command-line-argument
-
-	# #492892
-	filter-flags -frecord-gcc-switches
-
-	# #898098
-	filter-flags -fno-builtin
-
-	# #798774
-	filter-flags -fno-semantic-interposition
-
-	# #829583
-	filter-lfs-flags
-
-	case ${CTARGET} in
-		*-linux*)
-			;;
-		*-gnu)
-			# -g3 confuses MIG which relies on preprocessed input
-			replace-flags -ggdb[3-9] -ggdb2
-			replace-flags -g3 -g
-			;;
-	esac
-
-	unset CBUILD_OPT CTARGET_OPT
-	if use multilib ; then
-		CTARGET_OPT=$(get_abi_CTARGET)
-		[[ -z ${CTARGET_OPT} ]] && CTARGET_OPT=$(get_abi_CHOST)
-	fi
-
-	setup_target_flags
-
-	if [[ -n ${CTARGET_OPT} && ${CBUILD} == ${CHOST} ]] && ! is_crosscompile; then
-		CBUILD_OPT=${CTARGET_OPT}
-	fi
-
-	# glibc's headers disallow -O0 and fail at build time:
-	#  include/libc-symbols.h:75:3: #error "glibc cannot be compiled without optimization"
-	# https://sourceware.org/glibc/wiki/FAQ#Why_do_I_get:.60.23error_.22glibc_cannot_be_compiled_without_optimization.22.27.2C_when_trying_to_compile_GNU_libc_with_GNU_CC.3F
-	replace-flags -O0 -O1
-
-	# Similar issues as with SSP. Can't inject yourself that early.
-	filter-flags '-fsanitize=*'
-
-	# See end of bug #830454; we handle this via USE=cet
-	filter-flags '-fcf-protection=*'
-
-	# When bootstrapping, we may have a situation where
-	# CET-enabled gcc from seed is used to build CET-disabled
-	# glibc. As such, gcc implicitly enables CET if no
-	# -fcf-protection flag is passed. For a typical package it
-	# should not be a problem, but for glibc it matters as it is
-	# dealing with CET in ld.so. So if CET is supposed to be
-	# disabled for glibc, be explicit about it.
-	if ! use cet; then
-		case ${ABI}-${CTARGET} in
-			amd64-x86_64-*|x32-x86_64-*-*-gnux32)
-				append-flags '-fcf-protection=none'
-				;;
-			arm64-aarch64*)
-				append-flags '-mbranch-protection=none'
-				;;
-		esac
-	fi
-}
-
-use_multiarch() {
-	# Allow user to disable runtime arch detection in multilib.
-	use multiarch || return 1
-	# Make sure binutils is new enough to support indirect functions,
-	# #336792. This funky sed supports gold and bfd linkers.
-	local bver nver
-	bver=$($(tc-getLD ${CTARGET}) -v | sed -n -r '1{s:[^0-9]*::;s:^([0-9.]*).*:\1:;p}')
-	case $(tc-arch ${CTARGET}) in
-	amd64|x86) nver="2.20" ;;
-	arm)       nver="2.22" ;;
-	hppa)      nver="2.23" ;;
-	ppc|ppc64) nver="2.20" ;;
-	# ifunc support was added in 2.23, but glibc also needs
-	# machinemode which is in 2.24.
-	s390)      nver="2.24" ;;
-	sparc)     nver="2.21" ;;
-	*)         return 1 ;;
-	esac
-	ver_test ${bver} -ge ${nver}
-}
-
-# Setup toolchain variables that had historically been defined in the
-# profiles for these archs.
-setup_env() {
-	# silly users
-	unset LD_RUN_PATH
-	unset LD_ASSUME_KERNEL
-
-	if is_crosscompile || tc-is-cross-compiler ; then
-		multilib_env ${CTARGET_OPT:-${CTARGET}}
-
-		if ! use multilib ; then
-			MULTILIB_ABIS=${DEFAULT_ABI}
-		else
-			MULTILIB_ABIS=${MULTILIB_ABIS:-${DEFAULT_ABI}}
-		fi
-
-		# If the user has CFLAGS_<CTARGET> in their make.conf, use that,
-		# and fall back on CFLAGS.
-		local VAR=CFLAGS_${CTARGET//[-.]/_}
-		CFLAGS=${!VAR-${CFLAGS}}
-		einfo " $(printf '%15s' 'Manual CFLAGS:')   ${CFLAGS}"
-	fi
-
-	setup_flags
-
-	export ABI=${ABI:-${DEFAULT_ABI:-default}}
-
-	if just_headers ; then
-		# Avoid mixing host's CC and target's CFLAGS_${ABI}:
-		# At this bootstrap stage we have only binutils for
-		# target but not compiler yet.
-		einfo "Skip CC ABI injection. We can't use (cross-)compiler yet."
-		return 0
-	fi
-
-	# glibc does not work with non-bfd (for various reasons):
-	# * gold (bug #269274)
-	# * mold (bug #860900)
-	tc-ld-force-bfd
-
-	if use doc ; then
-		export MAKEINFO=makeinfo
-	else
-		export MAKEINFO=/dev/null
-	fi
-
-	# Reset CC and CXX to the value at start of emerge
-	export CC=${glibc__ORIG_CC:-${CC:-$(tc-getCC ${CTARGET})}}
-	export CXX=${glibc__ORIG_CXX:-${CXX:-$(tc-getCXX ${CTARGET})}}
-	export CPP=${glibc__ORIG_CPP:-${CPP:-$(tc-getCPP ${CTARGET})}}
-
-	# and make sure glibc__ORIG_CC and glibc__ORIG_CXX is defined now.
-	export glibc__ORIG_CC=${CC}
-	export glibc__ORIG_CXX=${CXX}
-	export glibc__ORIG_CPP=${CPP}
-
-	if tc-is-clang && ! ( use clang || use custom-cflags ) && ! is_crosscompile ; then
-		export glibc__force_gcc=yes
-		# once this is toggled on, it needs to stay on, since with CPP manipulated
-		# tc-is-clang does not work correctly anymore...
-	fi
-
-	if [[ ${glibc__force_gcc} == "yes" ]] ; then
-		# If we are running in an otherwise clang/llvm environment, we need to
-		# recover the proper gcc and binutils settings here, at least until glibc
-		# is finally building with clang. So let's override everything that is
-		# set in the clang profiles.
-		# Want to shoot yourself into the foot? Set USE="clang" or USE="custom-cflags".
-		# Also, if you are crosscompiling, let's assume you know what you are doing.
-		# Hopefully.
-		# Last, we need the settings of the *build* environment, not of the
-		# target environment...
-
-		local current_binutils_path=$(env CHOST="${CBUILD}" ROOT="${BROOT}" binutils-config -B "${CTARGET}")
-		local current_gcc_path=$(env ROOT="${BROOT}" gcc-config -B)
-		einfo "Overriding clang configuration, since it won't work here"
-
-		export CC="${current_gcc_path}/${CTARGET}-gcc"
-		export CPP="${current_gcc_path}/${CTARGET}-cpp"
-		export CXX="${current_gcc_path}/${CTARGET}-g++"
-		export LD="${current_binutils_path}/ld.bfd"
-		export AR="${current_binutils_path}/ar"
-		export AS="${current_binutils_path}/as"
-		export NM="${current_binutils_path}/nm"
-		export STRIP="${current_binutils_path}/strip"
-		export RANLIB="${current_binutils_path}/ranlib"
-		export OBJCOPY="${current_binutils_path}/objcopy"
-		export STRINGS="${current_binutils_path}/strings"
-		export OBJDUMP="${current_binutils_path}/objdump"
-		export READELF="${current_binutils_path}/readelf"
-		export ADDR2LINE="${current_binutils_path}/addr2line"
-
-		# do we need to also do flags munging here? yes! at least...
-		filter-flags '-fuse-ld=*'
-		filter-flags '-D_FORTIFY_SOURCE=*'
-
-	else
-		# this is the "normal" case
-
-		# Always use tuple-prefixed toolchain. For non-native ABI glibc's configure
-		# can't detect them automatically due to ${CHOST} mismatch and fallbacks
-		# to unprefixed tools. Similar to multilib.eclass:multilib_toolchain_setup().
-		export CC="$(tc-getCC ${CTARGET})"
-		export CXX="$(tc-getCXX ${CTARGET})"
-		export CPP="$(tc-getCPP ${CTARGET})"
-		export NM="$(tc-getNM ${CTARGET})"
-		export READELF="$(tc-getREADELF ${CTARGET})"
-
-	fi
-
-	# We need to move CFLAGS with abi information into CC etc per glibc upstream
-	# requirement. Keep around the original clean value to avoid appending
-	# multiple ABIs on top of each other.
-	export glibc__GLIBC_CC=${CC}
-	export glibc__GLIBC_CXX=${CXX}
-	export glibc__GLIBC_CPP=${CPP}
-
-	export glibc__abi_CFLAGS="$(get_abi_CFLAGS)"
-
-	# CFLAGS can contain ABI-specific flags like -mfpu=neon, see bug #657760
-	# To build .S (assembly) files with the same ABI-specific flags
-	# upstream currently recommends adding CFLAGS to CC/CXX:
-	#    https://sourceware.org/PR23273
-	# Note: Passing CFLAGS via CPPFLAGS overrides glibc's arch-specific CFLAGS
-	# and breaks multiarch support. See 659030#c3 for an example.
-	# The glibc configure script doesn't properly use LDFLAGS all the time.
-	export CC="${glibc__GLIBC_CC} ${glibc__abi_CFLAGS} ${CFLAGS} ${LDFLAGS}"
-
-	# Some of the tests are written in C++, so we need to force our multlib abis in, bug 623548
-	export CXX="${glibc__GLIBC_CXX} ${glibc__abi_CFLAGS} ${CFLAGS}"
-
-	export CPP="${glibc__GLIBC_CPP} ${glibc__abi_CFLAGS} ${CFLAGS}"
-
-	if is_crosscompile; then
-		# Assume worst-case bootstrap: glibc is built for the first time
-		# with ${CTARGET}-g++ not available yet. We avoid
-		# building auxiliary programs that require C++: bug #683074
-		# It should not affect final result.
-		export libc_cv_cxx_link_ok=no
-		# The line above has the same effect. We set CXX explicitly
-		# to make build logs less confusing.
-		export CXX=
-	fi
-}
-
-foreach_abi() {
-	setup_env
-
-	local ret=0
-	local abilist=""
-	if use multilib ; then
-		abilist=$(get_install_abis)
-	else
-		abilist=${DEFAULT_ABI}
-	fi
-	local -x ABI
-	for ABI in ${abilist:-default} ; do
-		setup_env
-		einfo "Running $1 for ABI ${ABI}"
-		$1
-		: $(( ret |= $? ))
-	done
-	return ${ret}
-}
-
-glibc_banner() {
-	local b="Gentoo ${PVR}"
-	[[ -n ${PATCH_VER} ]] && ! use vanilla && b+=" (patchset ${PATCH_VER})"
-	echo "${b}"
-}
-
-# The following Kernel version handling functions are mostly copied from portage
-# source. It's better not to use linux-info.eclass here since a) it adds too
-# much magic, see bug 326693 for some of the arguments, and b) some of the
-# functions are just not provided.
-
-g_get_running_KV() {
-	uname -r
-	return $?
-}
-
-g_KV_major() {
-	[[ -z $1 ]] && return 1
-	local KV=$@
-	echo "${KV%%.*}"
-}
-
-g_KV_minor() {
-	[[ -z $1 ]] && return 1
-	local KV=$@
-	KV=${KV#*.}
-	echo "${KV%%.*}"
-}
-
-g_KV_micro() {
-	[[ -z $1 ]] && return 1
-	local KV=$@
-	KV=${KV#*.*.}
-	echo "${KV%%[^[:digit:]]*}"
-}
-
-g_KV_to_int() {
-	[[ -z $1 ]] && return 1
-	local KV_MAJOR=$(g_KV_major "$1")
-	local KV_MINOR=$(g_KV_minor "$1")
-	local KV_MICRO=$(g_KV_micro "$1")
-	local KV_int=$(( KV_MAJOR * 65536 + KV_MINOR * 256 + KV_MICRO ))
-
-	# We make version 2.2.0 the minimum version we will handle as
-	# a sanity check ... if its less, we fail ...
-	if [[ ${KV_int} -ge 131584 ]] ; then
-		echo "${KV_int}"
-		return 0
-	fi
-	return 1
-}
-
-g_int_to_KV() {
-	local version=$1 major minor micro
-	major=$((version / 65536))
-	minor=$(((version % 65536) / 256))
-	micro=$((version % 256))
-	echo ${major}.${minor}.${micro}
-}
-
-get_kheader_version() {
-	printf '#include <linux/version.h>\nLINUX_VERSION_CODE\n' | \
-	$(tc-getCPP ${CTARGET}) -I "${ESYSROOT}$(alt_headers)" - | \
-	tail -n 1
-}
-
-# We collect all sanity checks here. Consistency is not guranteed between
-# pkg_ and src_ phases, so we call this function both in pkg_pretend and in
-# src_unpack.
-sanity_prechecks() {
-	# Prevent native builds from downgrading
-	if [[ ${MERGE_TYPE} != "buildonly" ]] && \
-	   [[ -z ${ROOT} ]] && \
-	   [[ ${CBUILD} == ${CHOST} ]] && \
-	   [[ ${CHOST} == ${CTARGET} ]] ; then
-
-		# The high rev # is to allow people to downgrade between -r#
-		# versions. We want to block 2.20->2.19, but 2.20-r3->2.20-r2
-		# should be fine. Hopefully we never actually use a r# this
-		# high.
-		if has_version ">${CATEGORY}/${P}-r10000" ; then
-			eerror "Sanity check to keep you from breaking your system:"
-			eerror " Downgrading glibc is not supported and a sure way to destruction."
-			[[ ${I_ALLOW_TO_BREAK_MY_SYSTEM} = yes ]] || die "Aborting to save your system."
-		fi
-
-		if ! do_run_test '#include <unistd.h>\n#include <sys/syscall.h>\nint main(){return syscall(1000)!=-1;}\n' ; then
-			eerror "Your old kernel is broken. You need to update it to a newer"
-			eerror "version as syscall(<bignum>) will break. See bug 279260."
-			[[ ${I_ALLOW_TO_BREAK_MY_SYSTEM} = yes ]] || die "Old and broken kernel."
-		fi
-	fi
-
-	if [[ ${CTARGET} == i386-* ]] ; then
-		eerror "i386 CHOSTs are no longer supported."
-		eerror "Chances are you don't actually want/need i386."
-		eerror "Please read https://www.gentoo.org/doc/en/change-chost.xml"
-		die "Please fix your CHOST"
-	fi
-
-	if [[ -e /proc/xen ]] && [[ $(tc-arch) == "x86" ]] && ! is-flag -mno-tls-direct-seg-refs ; then
-		ewarn "You are using Xen but don't have -mno-tls-direct-seg-refs in your CFLAGS."
-		ewarn "This will result in a 50% performance penalty when running with a 32bit"
-		ewarn "hypervisor, which is probably not what you want."
-	fi
-
-	# ABI-specific checks follow here. Hey, we have a lot more specific conditions that
-	# we test for...
-	if ! is_crosscompile && ! tc-is-cross-compiler ; then
-		if use amd64 && use multilib && [[ ${MERGE_TYPE} != "binary" ]] ; then
-			ebegin "Checking if the system can execute 32-bit binaries"
-			echo 'int main(){return 0;}' > "${T}/check-ia32-emulation.c"
-			local STAT
-			if ${CC-${CHOST}-gcc} ${CFLAGS_x86} "${T}/check-ia32-emulation.c" -o "${T}/check-ia32-emulation.elf32"; then
-				"${T}/check-ia32-emulation.elf32"
-				STAT=$?
-			else
-				# Don't fail here to allow single->multi ABI switch
-				# or recover from breakage like bug #646424
-				ewarn "Failed to compile the ABI test. Broken host glibc?"
-				STAT=0
-			fi
-			rm -f "${T}/check-ia32-emulation.elf32"
-			eend $STAT
-			if [[ $STAT -ne 0 ]]; then
-				eerror "Ensure that CONFIG_IA32_EMULATION is enabled in the kernel."
-				eerror "Seek support otherwise."
-				die "Unable to execute 32-bit binaries"
-			fi
-		fi
-
-	fi
-
-	# When we actually have to compile something...
-	if ! just_headers && [[ ${MERGE_TYPE} != "binary" ]] ; then
-		if [[ -d "${ESYSROOT}"/usr/lib/include ]] ; then
-			# bug #833620, bug #643302
-			eerror "Found ${ESYSROOT}/usr/lib/include directory!"
-			eerror "This is known to break glibc's build."
-			eerror "Please backup its contents then remove the directory."
-			die "Found directory (${ESYSROOT}/usr/lib/include) which will break build (bug #833620)!"
-		fi
-
-		if [[ ${CTARGET} == *-linux* ]] ; then
-			local run_kv build_kv want_kv
-
-			run_kv=$(g_get_running_KV)
-			build_kv=$(g_int_to_KV $(get_kheader_version))
-			want_kv=${MIN_KERN_VER}
-
-			if ! is_crosscompile && ! tc-is-cross-compiler ; then
-				# Building fails on an non-supporting kernel
-				ebegin "Checking running kernel version (${run_kv} >= ${want_kv})"
-				if ! [[ $(g_KV_to_int ${run_kv}) -ge $(g_KV_to_int ${want_kv}) ]] ; then
-					eend 1
-					echo
-					eerror "You need a kernel of at least ${want_kv}!"
-					die "Kernel version too low!"
-				fi
-				eend 0
-			fi
-
-			# Do not run this check for pkg_pretend, just pkg_setup and friends (if we ever get used there).
-			# It's plausible (seen it in the wild) that Portage will (correctly) schedule a linux-headers
-			# upgrade before glibc, but because pkg_pretend gets run before any packages are merged at all (not
-			# just glibc), the whole emerge gets aborted without a good reason. We probably don't
-			# need to run this check at all given we have a dependency on the right headers,
-			# but let's leave it as-is for now.
-			if [[ ${EBUILD_PHASE_FUNC} != pkg_pretend ]] ; then
-				ebegin "Checking linux-headers version (${build_kv} >= ${want_kv})"
-				if ! [[ $(g_KV_to_int ${build_kv}) -ge $(g_KV_to_int ${want_kv}) ]] ; then
-					eend 1
-					echo
-					eerror "You need linux-headers of at least ${want_kv}!"
-					die "linux-headers version too low!"
-				fi
-				eend 0
-			fi
-		fi
-	fi
-}
-
-upgrade_warning() {
-	is_crosscompile && return
-
-	if [[ ${MERGE_TYPE} != buildonly && -n ${REPLACING_VERSIONS} && -z ${ROOT} ]]; then
-		if ver_replacing -lt $(ver_cut 1-2 ${PV}); then
-			ewarn "After upgrading glibc, please restart all running processes."
-			ewarn "Be sure to include init (telinit u) or systemd (systemctl daemon-reexec)."
-			ewarn "Alternatively, reboot your system."
-			ewarn "(See bug #660556, bug #741116, bug #823756, etc)"
-		fi
-	fi
-}
-
-#
-# the phases
-#
-
-# pkg_pretend
-
-pkg_pretend() {
-	upgrade_warning
-}
-
-# pkg_setup
-
-pkg_setup() {
-	# see bug 682570
-	[[ -z ${BOOTSTRAP_RAP} ]] && python-any-r1_pkg_setup
-}
-
-# src_unpack
-
-src_unpack() {
-	setup_env
-
-	einfo "Checking general environment sanity."
-	sanity_prechecks
-
-	use multilib-bootstrap && unpack gcc-multilib-bootstrap-${GCC_BOOTSTRAP_VER}.tar.xz
-
-	if [[ ${PV} == *9999 ]] ; then
-		EGIT_REPO_URI="
-			https://anongit.gentoo.org/git/proj/toolchain/glibc-patches.git
-			https://github.com/gentoo/glibc-patches.git
-		"
-		EGIT_CHECKOUT_DIR=${WORKDIR}/patches-git
-		git-r3_src_unpack
-		mv patches-git/9999 patches || die
-		EGIT_REPO_URI="
-			https://sourceware.org/git/glibc.git
-			https://git.sr.ht/~sourceware/glibc
-			https://gitlab.com/x86-glibc/glibc.git
-		"
-		EGIT_CHECKOUT_DIR=${S}
-		[[ ${PV} == *.*.9999 ]] && EGIT_BRANCH=release/${PV%.*}/master
-		git-r3_src_unpack
-	else
-		if use verify-sig; then
-			verify-sig_verify_detached "${DISTDIR}/${P}.tar.xz" "${DISTDIR}/${P}.tar.xz.sig"
-		fi
-		unpack ${P}.tar.xz
-
-		cd "${WORKDIR}" || die
-		unpack ${P}-patches-${PATCH_VER}.tar.xz
-	fi
-
-	cd "${WORKDIR}" || die
-	use systemd && unpack glibc-systemd-${GLIBC_SYSTEMD_VER}.tar.gz
-}
-
-# src_prepare
-
-src_prepare() {
-	local patchsetname
-	if ! use vanilla ; then
-		if [[ ${PV} == 9999* ]] ; then
-			patchsetname="from git master"
-		else
-			patchsetname="${PV}-${PATCH_VER}"
-		fi
-		einfo "Applying Gentoo Glibc patchset ${patchsetname}"
-		eapply "${WORKDIR}"/patches
-		einfo "Done."
-
-		# Patches we should apply only for Hurd to be conservative
-		if is_hurd ; then
-			eapply "${FILESDIR}"/glibc-2.43-hurd-link-helpers.patch
-			eapply "${FILESDIR}"/glibc-2.43-hurd-CLOCK_MONOTONIC.patch
-			eapply "${FILESDIR}"/glibc-2.43-hurd-ldconfig.patch
-		fi
-	fi
-
-	case ${CTARGET} in
-		m68*-aligned-*)
-			einfo "Applying utmp format fix for m68k with -maligned-int"
-			eapply "${FILESDIR}/glibc-2.41-m68k-malign.patch"
-			;;
-		*)
-			;;
-	esac
-
-	default
-
-	gnuconfig_update
-
-	cd "${WORKDIR}" || die
-	find . -name configure -exec touch {} +
-
-	# Fix permissions on some of the scripts.
-	chmod u+x "${S}"/scripts/*.sh
-
-	cd "${S}" || die
-}
-
-# src_configure
-
-glibc_do_configure() {
-	dump_build_environment
-
-	local myconf=()
-
-	# Use '=strong' instead of '=all' to protect only functions
-	# worth protecting from stack smashes.
-	myconf+=( --enable-stack-protector=$(usex ssp strong no) )
-
-	# Keep a whitelist of targets supporting IFUNC. glibc's ./configure
-	# is not robust enough to detect proper support:
-	#    https://bugs.gentoo.org/641216
-	#    https://sourceware.org/PR22634#c0
-	case $(tc-arch ${CTARGET}) in
-		# Keep whitelist of targets where autodetection mostly works.
-		amd64|x86|sparc|ppc|ppc64|arm|arm64|s390|riscv|loong) ;;
-		# Blacklist everywhere else
-		*) myconf+=( libc_cv_ld_gnu_indirect_function=no ) ;;
-	esac
-
-	case ${ABI}-${CTARGET} in
-		amd64-x86_64-*|x32-x86_64-*-*-gnux32) myconf+=( $(use_enable cet) ) ;;
-		*) ;;
-	esac
-
-	case ${ABI}-${CTARGET} in
-		amd64-x86_64-*|arm64-aarch64-*) myconf+=( $(use_enable sframe) ) ;;
-		*) ;;
-	esac
-
-	[[ $(tc-is-softfloat) == "yes" ]] && myconf+=( --without-fp )
-
-	myconf+=( --enable-kernel=${MIN_KERN_VER} )
-
-	# Since SELinux support is only required for nscd, only enable it if:
-	# 1. USE selinux
-	# 2. only for the primary ABI on multilib systems
-	# 3. Not a crosscompile
-	if ! is_crosscompile && use selinux ; then
-		if use multilib ; then
-			if is_final_abi ; then
-				myconf+=( --with-selinux )
-			else
-				myconf+=( --without-selinux )
-			fi
-		else
-			myconf+=( --with-selinux )
-		fi
-	else
-		myconf+=( --without-selinux )
-	fi
-
-	# Force a few tests where we always know the answer but
-	# configure is incapable of finding it.
-	if is_crosscompile ; then
-		export \
-			libc_cv_c_cleanup=yes \
-			libc_cv_forced_unwind=yes
-	fi
-
-	myconf+=(
-		--disable-werror
-		--enable-bind-now
-		--enable-fortify-source
-		--build=${CBUILD_OPT:-${CBUILD}}
-		--host=${CTARGET_OPT:-${CTARGET}}
-		$(use_enable profile)
-		$(use_with gd)
-		--with-headers="${ESYSROOT}$(alt_headers)"
-		--prefix="$(host_eprefix)/usr"
-		--sysconfdir="$(host_eprefix)/etc"
-		--localstatedir="$(host_eprefix)/var"
-		--libdir='$(prefix)'/$(get_libdir)
-		--mandir='$(prefix)'/share/man
-		--infodir='$(prefix)'/share/info
-		--libexecdir='$(libdir)'/misc/glibc
-		--with-bugurl=https://bugs.gentoo.org/
-		--with-pkgversion="$(glibc_banner)"
-		$(use_multiarch || echo --disable-multi-arch)
-		$(use_enable nscd)
-
-		# /usr/bin/mtrace has a Perl shebang. Gentoo Prefix QA checks fail if
-		# Perl hasn't been installed inside the prefix yet and configure picks
-		# up a Perl from outside the prefix instead. configure will fail to
-		# execute Perl during configure if we're cross-compiling a prefix, but
-		# it will just disable mtrace in that case.
-		# Note: mtrace is needed by the test suite.
-		ac_cv_path_PERL="$(usex perl "${EPREFIX}"/usr/bin/perl $(usex test "${EPREFIX}"/usr/bin/perl $(usex doc "${EPREFIX}"/usr/bin/perl no)))"
-
-		# locale data is arch-independent
-		# https://bugs.gentoo.org/753740
-		libc_cv_complocaledir='${exec_prefix}/lib/locale'
-
-		# On aarch64 there is no way to override -mcpu=native, and if
-		# the current cpu does not support SVE configure fails.
-		# Let's boldly assume our toolchain can always build SVE instructions.
-		libc_cv_aarch64_sve_asm=yes
-
-		${EXTRA_ECONF}
-	)
-
-	# We rely on sys-libs/timezone-data for timezone tools normally.
-	myconf+=( $(use_enable vanilla timezone-tools) )
-
-	if is_crosscompile ; then
-		myconf+=( --disable-systemtap )
-	else
-		myconf+=( $(use_enable systemtap) )
-	fi
-
-	# These libs don't have configure flags.
-	ac_cv_lib_audit_audit_log_user_avc_message=$(usex audit || echo no)
-	ac_cv_lib_cap_cap_init=$(usex caps || echo no)
-
-	# There is no configure option for this and we need to export it
-	# since the glibc build will re-run configure on itself
-	export libc_cv_rootsbindir="$(host_eprefix)/sbin"
-	export libc_cv_slibdir="$(host_eprefix)/$(get_libdir)"
-
-	local builddir=$(builddir nptl)
-	mkdir -p "${builddir}"
-	cd "${builddir}"
-	set -- "${S}"/configure "${myconf[@]}"
-	echo "$@"
-	"$@" || die "failed to configure glibc"
-
-	# If we're trying to migrate between ABI sets, we need
-	# to lie and use a local copy of gcc.  Like if the system
-	# is built with MULTILIB_ABIS="amd64 x86" but we want to
-	# add x32 to it, gcc/glibc don't yet support x32.
-	#
-	if [[ -n ${GCC_BOOTSTRAP_VER} ]] && use multilib-bootstrap ; then
-		echo 'int main(void){}' > "${T}"/test.c || die
-		if ! $(tc-getCC ${CTARGET}) ${CFLAGS} ${LDFLAGS} "${T}"/test.c -Wl,-emain -lgcc 2>/dev/null ; then
-			sed -i -e '/^CC = /s:$: -B$(objdir)/../'"gcc-multilib-bootstrap-${GCC_BOOTSTRAP_VER}/${ABI}:" config.make || die
-		fi
-	fi
-}
-
-glibc_headers_configure() {
-	export ABI=default
-
-	local builddir=$(builddir "headers")
-	mkdir -p "${builddir}"
-	cd "${builddir}"
-
-	# if we don't have a compiler yet, we can't really test it now ...
-	# hopefully they don't affect header generation, so let's hope for
-	# the best here ...
-	local v vars=(
-		ac_cv_header_cpuid_h=yes
-		libc_cv_{386,390,alpha,arm,hppa,mips,{powerpc,sparc}{,32,64},sh,x86_64}_tls=yes
-		libc_cv_asm_cfi_directives=yes
-		libc_cv_broken_visibility_attribute=no
-		libc_cv_c_cleanup=yes
-		libc_cv_compiler_powerpc64le_binary128_ok=yes
-		libc_cv_forced_unwind=yes
-		libc_cv_gcc___thread=yes
-		libc_cv_mlong_double_128=yes
-		libc_cv_mlong_double_128ibm=yes
-		libc_cv_ppc_machine=yes
-		libc_cv_ppc_rel16=yes
-		libc_cv_predef_fortify_source=no
-		libc_cv_target_power8_ok=yes
-		libc_cv_visibility_attribute=yes
-		libc_cv_z_combreloc=yes
-		libc_cv_z_execstack=yes
-		libc_cv_z_initfirst=yes
-		libc_cv_z_nodelete=yes
-		libc_cv_z_nodlopen=yes
-		libc_cv_z_relro=yes
-		libc_mips_abi=${ABI}
-		libc_mips_float=$([[ $(tc-is-softfloat) == "yes" ]] && echo soft || echo hard)
-		# These libs don't have configure flags.
-		ac_cv_lib_audit_audit_log_user_avc_message=no
-		ac_cv_lib_cap_cap_init=no
-	)
-
-	einfo "Forcing cached settings:"
-	for v in "${vars[@]}" ; do
-		einfo " ${v}"
-		export ${v}
-	done
-
-	local headers_only_arch_CPPFLAGS=()
-
-	# Blow away some random CC settings that screw things up. #550192
-	if [[ -d ${S}/sysdeps/mips ]]; then
-		pushd "${S}"/sysdeps/mips >/dev/null
-		sed -i -e '/^CC +=/s:=.*:= -D_MIPS_SZPTR=32:' mips32/Makefile mips64/n32/Makefile || die
-		sed -i -e '/^CC +=/s:=.*:= -D_MIPS_SZPTR=64:' mips64/n64/Makefile || die
-
-		# Force the mips ABI to the default.  This is OK because the set of
-		# installed headers in this phase is the same between the 3 ABIs.
-		# If this ever changes, this hack will break, but that's unlikely
-		# as glibc discourages that behavior.
-		# https://crbug.com/647033
-		sed -i -e 's:abiflag=.*:abiflag=_ABIO32:' preconfigure || die
-
-		popd >/dev/null
-	fi
-
-	local myconf=()
-
-	case ${CTARGET} in
-	aarch64*)
-		# The configure checks fail during cross-build, so disable here
-		# for headers-only
-		myconf+=(
-			--disable-mathvec
-		) ;;
-	riscv*)
-		# RISC-V interrogates the compiler to determine which target to
-		# build.  If building the headers then we don't strictly need a
-		# RISC-V compiler, so the built-in definitions that are provided
-		# along with all RISC-V compiler might not exist.  This causes
-		# glibc's RISC-V preconfigure script to blow up.  Since we're just
-		# building the headers any value will actually work here, so just
-		# pick the standard one (rv64g/lp64d) to make the build scripts
-		# happy for now -- the headers are all the same anyway so it
-		# doesn't matter.
-		headers_only_arch_CPPFLAGS+=(
-			-D__riscv_xlen=64
-			-D__riscv_flen=64
-			-D__riscv_float_abi_double=1
-			-D__riscv_atomic=1
-		) ;;
-	esac
-
-	myconf+=(
-		--disable-sanity-checks
-		--enable-hacker-mode
-		--disable-werror
-		--enable-bind-now
-		--build=${CBUILD_OPT:-${CBUILD}}
-		--host=${CTARGET_OPT:-${CTARGET}}
-		--with-headers="${ESYSROOT}$(alt_headers)"
-		--prefix="$(host_eprefix)/usr"
-		${EXTRA_ECONF}
-	)
-
-	# Nothing is compiled here which would affect the headers for the target.
-	# So forcing CC/CFLAGS is sane.
-	local headers_only_CC=$(tc-getBUILD_CC)
-	local headers_only_CFLAGS="-O1 -pipe"
-	local headers_only_CPPFLAGS="-U_FORTIFY_SOURCE ${headers_only_arch_CPPFLAGS[*]}"
-	local headers_only_LDFLAGS=""
-	set -- "${S}"/configure "${myconf[@]}"
-	echo \
-		"CC=${headers_only_CC}" \
-		"CFLAGS=${headers_only_CFLAGS}" \
-		"CPPFLAGS=${headers_only_CPPFLAGS}" \
-		"LDFLAGS=${headers_only_LDFLAGS}" \
-		"$@"
-	CC=${headers_only_CC} \
-	CFLAGS=${headers_only_CFLAGS} \
-	CPPFLAGS=${headers_only_CPPFLAGS} \
-	LDFLAGS="" \
-	"$@" || die "failed to configure glibc"
-}
-
-do_src_configure() {
-	if just_headers ; then
-		glibc_headers_configure
-	else
-		glibc_do_configure nptl
-	fi
-}
-
-src_configure() {
-	foreach_abi do_src_configure
-}
-
-# src_compile
-
-do_src_compile() {
-	emake -C "$(builddir nptl)"
-}
-
-src_compile() {
-	if just_headers ; then
-		return
-	fi
-
-	foreach_abi do_src_compile
-}
-
-# src_test
-
-glibc_src_test() {
-	cd "$(builddir nptl)"
-
-	local myxfailparams=""
-	if [[ "${GENTOO_GLIBC_XFAIL_TESTS}" == "yes" ]] ; then
-		local virt=$(systemd-detect-virt 2>/dev/null)
-		if [[ ${virt} == systemd-nspawn ]] ; then
-			ewarn "Skipping extra tests because in systemd-nspawn container"
-			XFAIL_TEST_LIST+=( "${XFAIL_NSPAWN_TEST_LIST[@]}" )
-		fi
-		if [[ "$(nice)" == "19" ]] ; then
-			# Expects to be able to increase niceness, which it can't do if
-			# already at the highest nice value
-			XFAIL_TEST_LIST+=( "tst-nice" )
-		fi
-
-		for myt in ${XFAIL_TEST_LIST[@]} ; do
-			myxfailparams+="test-xfail-${myt}=yes "
-		done
-	fi
-
-	# sandbox does not understand unshare() and prevents
-	# writes to /proc/, which makes many tests fail
-
-	# we give the tests a bit more time to avoid spurious
-	# bug reports on slow arches
-
-	SANDBOX_ON=0 LD_PRELOAD= TIMEOUTFACTOR=16 nonfatal emake ${myxfailparams} check
-}
-
-src_test() {
-	if just_headers ; then
-		return
-	fi
-
-	# glibc_src_test uses nonfatal so that we can run tests for all ABIs
-	# and fail at the end instead.
-	foreach_abi glibc_src_test || die "tests failed"
-}
-
-# src_install
-
-run_locale_gen() {
-	local fatal=$1 prefix=$2
-	local user_config action config stderr noun ret
-	local -a hasversion_opts localegen_args
-
-	if [[ ${EBUILD_PHASE_FUNC} == src_install ]]; then
-		hasversion_opts=( -b )
-	fi
-
-	if has_version "${hasversion_opts[@]}" '>=sys-apps/locale-gen-3'; then
-		localegen_args=( --prefix "${prefix}" )
-	else
-		config="${prefix}/usr/share/i18n/SUPPORTED"
-		user_config="${prefix}/etc/locale.gen"
-		if [[ ${EBUILD_PHASE_FUNC} == src_install ]]; then
-			# For USE=compile-locales, all locales should be built.
-			mkdir -p -- "${prefix}/usr/lib/locale" || die
-		elif locale-gen --list --config "${user_config}" | read -r; then
-			config=${user_config}
-		fi
-		localegen_args=( --config "${config}" --destdir "${prefix}" )
-	fi
-
-	# bug 736794: we need to be careful with the parallelization... the
-	# number of processors saved in the environment of a binary package may
-	# differ strongly from the number of processes available during postinst
-	if [[ ${EMERGE_FROM} != binary ]]; then
-		localegen_args+=( --jobs "$(get_makeopts_jobs)" )
-	fi
-
-	printf 'Executing: locale-gen %s\n' "${localegen_args[*]@Q}" >&2
-	{ stderr=$(locale-gen "${localegen_args[@]}" 2>&1 >&3); } 3>&1
-	ret=$?
-	action="ewarn"
-	if (( ret == 0 )); then
-		noun="warning"
-	else
-		noun="error"
-		if (( fatal )); then
-			action="die"
-		fi
-	fi
-	# Convey warnings/errors so that they can be reseen upon emerge exiting.
-	if [[ ${stderr} ]]; then
-		ewarn "locale-gen(8) issued the following ${noun}s:"
-		while read -r; do
-			ewarn "$REPLY"
-		done <<<"${stderr}"
-	fi
-	if (( ret != 0 )); then
-		"${action}" "locale-gen(8) unexpectedly failed during the ${EBUILD_PHASE_FUNC} phase"
-	fi
-}
-
-glibc_do_src_install() {
-	local builddir=$(builddir nptl)
-	cd "${builddir}"
-
-	emake install_root="${D}/$(build_eprefix)$(alt_prefix)" install
-
-	# This version (2.26) provides some compatibility libraries for the NIS/NIS+ support
-	# which come without headers etc. Only needed for binary packages since the
-	# external net-libs/libnsl has increased soversion. Keep only versioned libraries.
-	find "${D}" -name "libnsl.a" -delete
-	find "${D}" -name "libnsl.so" -delete
-
-	# Normally upstream_pv is ${PV}. Live ebuilds are exception, there we need
-	# to infer upstream version:
-	# '#define VERSION "2.26.90"' -> '2.26.90'
-	local upstream_pv=$(sed -n -r 's/#define VERSION "(.*)"/\1/p' "${S}"/version.h)
-
-	# Avoid stripping binaries not targeted by ${CHOST}. Or else
-	# ${CHOST}-strip would break binaries build for ${CTARGET}.
-	is_crosscompile && dostrip -x /
-
-	# gdb thread introspection relies on local libpthreads symbols. stripping breaks it
-	# See Note [Disable automatic stripping]
-	dostrip -x $(alt_libdir)/libpthread-${upstream_pv}.so
-	# valgrind requires knowledge about ld.so symbols.
-	dostrip -x $(alt_libdir)/ld-*.so*
-
-	if [[ -e ${ED}/$(alt_usrlibdir)/libm-${upstream_pv}.a ]] ; then
-		# Move versioned .a file out of libdir to evade portage QA checks
-		# instead of using gen_usr_ldscript(). We fix ldscript as:
-		# "GROUP ( /usr/lib64/libm-<pv>.a ..." -> "GROUP ( /usr/lib64/glibc-<pv>/libm-<pv>.a ..."
-		sed -i "s@\(libm-${upstream_pv}.a\)@${P}/\1@" \
-			"${ED}"/$(alt_usrlibdir)/libm.a || die
-		dodir $(alt_usrlibdir)/${P}
-		mv "${ED}"/$(alt_usrlibdir)/libm-${upstream_pv}.a \
-			"${ED}"/$(alt_usrlibdir)/${P}/libm-${upstream_pv}.a || die
-	fi
-
-	# We configure toolchains for standalone prefix systems with a sysroot,
-	# which is prepended to paths in ld scripts, so strip the prefix from these.
-	# Before: GROUP ( /foo/lib64/libc.so.6 /foo/usr/lib64/libc_nonshared.a  AS_NEEDED ( /foo/lib64/ld-linux-x86-64.so.2 ) )
-	# After: GROUP ( /lib64/libc.so.6 /usr/lib64/libc_nonshared.a  AS_NEEDED ( /lib64/ld-linux-x86-64.so.2 ) )
-	if [[ -n $(host_eprefix) ]] ; then
-		local file
-		grep -lZIF "ld script" "${ED}/$(alt_usrlibdir)"/lib*.{a,so} 2>/dev/null | while read -rd '' file ; do
-			sed -i "s|$(host_eprefix)/|/|g" "${file}" || die
-		done
-	fi
-
-	# We'll take care of the cache ourselves
-	rm -f "${ED}"/etc/ld.so.cache
-
-	# Everything past this point just needs to be done once ...
-	is_final_abi || return 0
-
-	# Make sure the non-native interp can be found on multilib systems even
-	# if the main library set isn't installed into the right place.  Maybe
-	# we should query the active gcc for info instead of hardcoding it ?
-	local i ldso_abi ldso_name
-	if is_linux ; then
-		local ldso_abi_list=(
-			# x86
-			amd64   /lib64/ld-linux-x86-64.so.2
-			x32     /libx32/ld-linux-x32.so.2
-			x86     /lib/ld-linux.so.2
-			# mips
-			o32     /lib/ld.so.1
-			n32     /lib32/ld.so.1
-			n64     /lib64/ld.so.1
-			# powerpc
-			ppc     /lib/ld.so.1
-			# riscv
-			ilp32d  /lib/ld-linux-riscv32-ilp32d.so.1
-			ilp32   /lib/ld-linux-riscv32-ilp32.so.1
-			lp64d   /lib/ld-linux-riscv64-lp64d.so.1
-			lp64    /lib/ld-linux-riscv64-lp64.so.1
-			# s390
-			s390    /lib/ld.so.1
-			s390x   /lib/ld64.so.1
-			# sparc
-			sparc32 /lib/ld-linux.so.2
-			sparc64 /lib64/ld-linux.so.2
-		)
-		case $(tc-endian) in
-		little)
-			ldso_abi_list+=(
-				# arm
-				arm64   /lib/ld-linux-aarch64.so.1
-				# ELFv2 (glibc does not support ELFv1 on LE)
-				ppc64   /lib64/ld64.so.2
-			)
-			;;
-		big)
-			ldso_abi_list+=(
-				# arm
-				arm64   /lib/ld-linux-aarch64_be.so.1
-				# ELFv1 (glibc does not support ELFv2 on BE)
-				ppc64   /lib64/ld64.so.1
-			)
-			;;
-		esac
-	else
-	# we must be using hurd then
-		local ldso_abi_list=(
-			# x86
-			amd64   /lib64/ld-x86-64.so.1
-			x86     /lib/ld.so.1
-		)
-	fi
-	if [[ ${SYMLINK_LIB} == "yes" ]] && [[ ! -e ${ED}/$(alt_prefix)/lib ]] ; then
-		dosym $(get_abi_LIBDIR ${DEFAULT_ABI}) $(alt_prefix)/lib
-	fi
-	for (( i = 0; i < ${#ldso_abi_list[@]}; i += 2 )) ; do
-		ldso_abi=${ldso_abi_list[i]}
-		has ${ldso_abi} $(get_install_abis) || continue
-
-		ldso_name="$(alt_prefix)${ldso_abi_list[i+1]}"
-		if [[ ! -L ${ED}/${ldso_name} && ! -e ${ED}/${ldso_name} ]] ; then
-			dosym ../$(get_abi_LIBDIR ${ldso_abi})/${ldso_name##*/} ${ldso_name}
-		fi
-	done
-
-	if is_linux ; then
-		# In the LSB 5.0 definition, someone had the excellent idea to "standardize"
-		# the runtime loader name, see also https://xkcd.com/927/
-		# Normally, in Gentoo one should never come across executables that require this.
-		# However, binary commercial packages are known to adhere to weird practices.
-		# https://refspecs.linuxfoundation.org/LSB_5.0.0/LSB-Core-AMD64/LSB-Core-AMD64.html#BASELIB
-		local lsb_ldso_name native_ldso_name lsb_ldso_abi
-		local lsb_ldso_abi_list=(
-			# x86
-			amd64	ld-linux-x86-64.so.2	ld-lsb-x86-64.so.3
-		)
-		for (( i = 0; i < ${#lsb_ldso_abi_list[@]}; i += 3 )) ; do
-			lsb_ldso_abi=${lsb_ldso_abi_list[i]}
-			native_ldso_name=${lsb_ldso_abi_list[i+1]}
-			lsb_ldso_name=${lsb_ldso_abi_list[i+2]}
-			has ${lsb_ldso_abi} $(get_install_abis) || continue
-
-			if [[ ! -L ${ED}/$(get_abi_LIBDIR ${lsb_ldso_abi})/${lsb_ldso_name} && ! -e ${ED}/$(get_abi_LIBDIR ${lsb_ldso_abi})/${lsb_ldso_name} ]] ; then
-				dosym ${native_ldso_name} "$(alt_prefix)/$(get_abi_LIBDIR ${lsb_ldso_abi})/${lsb_ldso_name}"
-			fi
-		done
-	fi
-
-	# On Hurd, glibc and (unpatched) gcc tend to disagree about the proper location for
-	# the dynamic loader. Which is maximally stupid since this one information is hardcoded
-	# into every single binary, and even if we were to fix *our* gcc it could still prevent
-	# us from running binaries prepared anywhere else...
-
-	if is_hurd && has amd64 $(get_install_abis) ; then
-		# First, let's check for sanity
-		if [[ -f "$(alt_prefix)/lib/ld-x86-64.so.1" ]] ; then
-			die "Somehow your amd64 hurd glibc installed /lib/ld-x86-64.so.1 ... this should not happen."
-		fi
-
-		# Then make a compatibility symlink.
-		dosym ../lib64/ld-x86-64.so.1 "$(alt_prefix)/lib/ld-x86-64.so.1"
-	fi
-
-	if is_hurd && has x86 $(get_install_abis) ; then
-		# First, let's check for sanity
-		if [[ -f "$(alt_prefix)/$(get_abi_LIBDIR x86)/ld.so" ]] ; then
-			die "Somehow your x86 hurd glibc installed ld.so ... this should not happen."
-		fi
-
-		# Then make a compatibility symlink.
-		dosym ld.so.1 "$(alt_prefix)/$(get_abi_LIBDIR x86)/ld.so"
-	fi
-
-	# With devpts under Linux mounted properly, we do not need the pt_chown
-	# binary to be setuid.  This is because the default owners/perms will be
-	# exactly what we want.
-	if ! use suid ; then
-		find "${ED}" -name pt_chown -exec chmod -s {} +
-	fi
-
-	#################################################################
-	# EVERYTHING AFTER THIS POINT IS FOR NATIVE GLIBC INSTALLS ONLY #
-	#################################################################
-
-	# Make sure we install some symlink hacks so that when we build
-	# a 2nd stage cross-compiler, gcc finds the target system
-	# headers correctly.  See gcc/doc/gccinstall.info
-	if is_crosscompile ; then
-		# We need to make sure that /lib and /usr/lib always exists.
-		# gcc likes to use relative paths to get to its multilibs like
-		# /usr/lib/../lib64/.  So while we don't install any files into
-		# /usr/lib/, we do need it to exist.
-		keepdir $(alt_prefix)/lib
-		keepdir $(alt_prefix)/usr/lib
-
-		dosym usr/include $(alt_prefix)/sys-include
-		return 0
-	fi
-
-	# Files for Debian-style locale updating
-	dodir /usr/share/i18n
-	sed \
-		-e "/^#/d" \
-		-e "/SUPPORTED-LOCALES=/d" \
-		-e "s: \\\\::g" -e "s:/: :g" \
-		"${S}"/localedata/SUPPORTED > "${ED}"/usr/share/i18n/SUPPORTED \
-		|| die "generating /usr/share/i18n/SUPPORTED failed"
-
-	cd "${S}" || die
-
-	# Install misc network config files
-	insinto /etc
-	doins posix/gai.conf
-
-	if use systemd ; then
-		doins "${WORKDIR}/glibc-systemd-${GLIBC_SYSTEMD_VER}/gentoo-config/nsswitch.conf"
-	else
-		doins nss/nsswitch.conf
-	fi
-
-	# Gentoo-specific
-	newins "${FILESDIR}"/host.conf-1 host.conf
-
-	if use nscd ; then
-		doins nscd/nscd.conf
-
-		newinitd "$(prefixify_ro "${FILESDIR}"/nscd-1)" nscd
-
-		local nscd_args=(
-			-e "s:@PIDFILE@:$(strings "${ED}"/usr/sbin/nscd | grep nscd.pid):"
-		)
-
-		sed -i "${nscd_args[@]}" "${ED}"/etc/init.d/nscd
-
-		use systemd && systemd_dounit nscd/nscd.service
-		newtmpfiles nscd/nscd.tmpfiles nscd.conf
-	fi
-
-	echo 'LDPATH="include ld.so.conf.d/*.conf"' > "${T}"/00glibc
-	doenvd "${T}"/00glibc
-
-	for d in BUGS ChangeLog CONFORMANCE FAQ NEWS NOTES PROJECTS README* ; do
-		[[ -s ${d} ]] && dodoc ${d}
-	done
-	dodoc -r ChangeLog.old
-
-	# Prevent overwriting of the /etc/localtime symlink.  We'll handle the
-	# creation of the "factory" symlink in pkg_postinst().
-	rm -f "${ED}"/etc/localtime
-
-	# Generate all locales if this is a native build as locale generation
-	if use compile-locales && ! is_crosscompile; then
-		run_locale_gen 1 "${ED}"
-	fi
-}
-
-glibc_headers_install() {
-	local builddir=$(builddir "headers")
-	cd "${builddir}"
-	emake install_root="${D}/$(build_eprefix)$(alt_prefix)" install-headers
-
-	insinto $(alt_headers)/gnu
-	doins "${S}"/include/gnu/stubs.h
-
-	# Make sure we install the sys-include symlink so that when
-	# we build a 2nd stage cross-compiler, gcc finds the target
-	# system headers correctly.  See gcc/doc/gccinstall.info
-	dosym usr/include $(alt_prefix)/sys-include
-}
-
-src_install() {
-	if just_headers ; then
-		export ABI=default
-		glibc_headers_install
-		return
-	fi
-
-	foreach_abi glibc_do_src_install
-
-	if ! use static-libs ; then
-		einfo "Not installing static glibc libraries"
-		find "${ED}" -name "*.a" -and -not -name "*_nonshared.a" -delete
-	fi
-}
-
-# Simple test to make sure our new glibc isn't completely broken.
-# Make sure we don't test with statically built binaries since
-# they will fail.  Also, skip if this glibc is a cross compiler.
-#
-# If coreutils is built with USE=multicall, some of these files
-# will just be wrapper scripts, not actual ELFs we can test.
-glibc_sanity_check() {
-	cd / #228809
-
-	# We enter ${ED} so to avoid trouble if the path contains
-	# special characters; for instance if the path contains the
-	# colon character (:), then the linker will try to split it
-	# and look for the libraries in an unexpected place. This can
-	# lead to unsafe code execution if the generated prefix is
-	# within a world-writable directory.
-	# (e.g. /var/tmp/portage:${HOSTNAME})
-	pushd "${ED}"/$(get_libdir) >/dev/null
-
-	# first let's find the actual dynamic linker here
-	# symlinks may point to the wrong abi
-	local newldso=$(find . -maxdepth 1 -name 'ld*so.?' -type f -print -quit)
-
-	einfo Last-minute run tests with ${newldso} in /$(get_libdir) ...
-
-	local x striptest
-	for x in cal date env free ls true uname uptime ; do
-		x=$(type -p ${x})
-		[[ -z ${x} || ${x} != ${EPREFIX}/* ]] && continue
-		striptest=$(LC_ALL="C" file -L ${x} 2>/dev/null) || continue
-		case ${striptest} in
-		*"statically linked"*) continue;;
-		*"ASCII text"*) continue;;
-		esac
-		# We need to clear the locale settings as the upgrade might want
-		# incompatible locale data.  This test is not for verifying that.
-		LC_ALL=C \
-		${newldso} --library-path . ${x} > /dev/null \
-			|| die "simple run test (${x}) failed"
-	done
-
-	popd >/dev/null
-}
-
-pkg_preinst() {
-	# nothing to do if just installing headers
-	just_headers && return
-
-	einfo "Checking general environment sanity."
-	sanity_prechecks
-
-	# prepare /etc/ld.so.conf.d/ for files
-	mkdir -p "${EROOT}"/etc/ld.so.conf.d
-
-	# Default /etc/hosts.conf:multi to on for systems with small dbs.
-	if [[ $(wc -l < "${EROOT}"/etc/hosts) -lt 1000 ]] ; then
-		sed -i '/^multi off/s:off:on:' "${ED}"/etc/host.conf
-		einfo "Defaulting /etc/host.conf:multi to on"
-	fi
-
-	[[ -n ${ROOT} ]] && return 0
-	[[ -d ${ED}/$(get_libdir) ]] || return 0
-	[[ -z ${BOOTSTRAP_RAP} ]] && glibc_sanity_check
-
-	if [[ -L ${EROOT}/usr/lib/locale ]]; then
-		# Help portage migrate this to a directory
-		# https://bugs.gentoo.org/753740
-		rm "${EROOT}"/usr/lib/locale || die
-	fi
-
-	# Keep around libcrypt so that Perl doesn't break when merging libxcrypt
-	# (libxcrypt is the new provider for now of libcrypt.so.{1,2}).
-	# bug #802207
-	if has_version "${CATEGORY}/${PN}[crypt]" && ! has preserve-libs ${FEATURES}; then
-		PRESERVED_OLD_LIBCRYPT=1
-		cp -p "${EROOT}/$(get_libdir)/libcrypt$(get_libname 1)" \
-			"${T}/libcrypt$(get_libname 1)" || die
-	else
-		PRESERVED_OLD_LIBCRYPT=0
-	fi
-}
-
-glibc_refresh_ldconfig() {
-	if [[ ${MERGE_TYPE} == buildonly ]]; then
-		return
-	fi
-
-	# Version check could be added to avoid unnecessary work, but ldconfig
-	# should finish quickly enough to not matter.
-	ebegin "Refreshing ld.so.cache"
-	ldconfig -i
-	if ! eend $?; then
-		ewarn "Failed to refresh the ld.so.cache for you. Some programs may be broken"
-		ewarn "before you manually do so (ldconfig -i)."
-	fi
-}
-
-pkg_postinst() {
-	# nothing to do if just installing headers
-	just_headers && return
-
-	if ! tc-is-cross-compiler && [[ -x ${EROOT}/usr/sbin/iconvconfig ]] ; then
-		# Generate fastloading iconv module configuration file.
-		"${EROOT}"/usr/sbin/iconvconfig --prefix="${ROOT}/"
-	fi
-
-	if ! is_crosscompile && [[ -z ${ROOT} ]] ; then
-		# glibc-2.38+ on loong has ldconfig support added, but the ELF e_flags
-		# handling has changed as well, which means stale ldconfig auxiliary
-		# cache entries and failure to lookup libgcc_s / libstdc++ (breaking
-		# every C++ application) / libgomp etc., among other breakages.
-		#
-		# To fix this, simply refresh the ld.so.cache without using the
-		# auxiliary cache if we're natively installing on loong. This should
-		# be done relatively soon because we want to minimize the breakage
-		# window for the affected programs.
-		use loong && glibc_refresh_ldconfig
-
-		if ! use compile-locales; then
-			run_locale_gen 0 "${EROOT}"
-		fi
-
-		# If fixincludes was/is active for a particular GCC slot, we
-		# must refresh it. See bug #933282 and GCC's documentation:
-		# https://gcc.gnu.org/onlinedocs/gcc/Fixed-Headers.html
-		#
-		# TODO: Could this be done for cross? Some care would be needed
-		# to pass the right arguments.
-		while IFS= read -r -d $'\0' slot ; do
-			local mkheaders_path="${BROOT}"/usr/libexec/gcc/${CBUILD}/${slot##*/}/install-tools/mkheaders
-			local pthread_h="${BROOT}"/usr/lib/gcc/${CBUILD}/${slot##*/}/include-fixed/pthread.h
-			if [[ -x ${mkheaders_path} ]] ; then
-				ebegin "Refreshing fixincludes for ${CBUILD} with gcc-${slot##*/}"
-				${mkheaders_path} -v
-				eend $?
-			elif [[ -f ${pthread_h} ]] ; then
-				# fixincludes might have been enabled in the past for this
-				# GCC slot but not since we fixed toolchain.eclass to install
-				# mkheaders, so we need to manually delete pthread.h at least.
-				ebegin "Deleting stale fixincludes'd pthread.h for ${CBUILD} with gcc-${slot##*/}"
-				mv -v "${pthread_h}" "${pthread_h}.bak"
-				eend $?
-			fi
-		done < <(find "${BROOT}"/usr/libexec/gcc/${CBUILD}/ -mindepth 1 -maxdepth 1 -type d -print0)
-	fi
-
-	upgrade_warning
-
-	# Check for sanity of /etc/nsswitch.conf, take 2
-	if [[ -e ${EROOT}/etc/nsswitch.conf ]] && ! has_version sys-auth/libnss-nis ; then
-		local entry
-		for entry in passwd group shadow; do
-			if grep -E -q "^[ \t]*${entry}:.*nis" "${EROOT}"/etc/nsswitch.conf; then
-				ewarn ""
-				ewarn "Your ${EROOT}/etc/nsswitch.conf uses NIS. Support for that has been"
-				ewarn "removed from glibc and is now provided by the package"
-				ewarn "  sys-auth/libnss-nis"
-				ewarn "Install it now to keep your NIS setup working."
-				ewarn ""
-			fi
-		done
-	fi
-
-	if [[ ${PRESERVED_OLD_LIBCRYPT} -eq 1 ]] ; then
-		cp -p "${T}/libcrypt$(get_libname 1)" "${EROOT}/$(get_libdir)/libcrypt$(get_libname 1)" || die
-		preserve_old_lib_notify /$(get_libdir)/libcrypt$(get_libname 1)
-
-		elog "Please ignore a possible later error message about a file collision involving"
-		elog "${EROOT}/$(get_libdir)/libcrypt$(get_libname 1). We need to preserve this file for the moment to keep"
-		elog "the upgrade working, but it also needs to be overwritten when"
-		elog "sys-libs/libxcrypt is installed. See bug 802210 for more details."
-	fi
-}
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.