sys-libs/glibc: Sync with Gentoo

It's from Gentoo commit ac01ba596c4e68d266e6fc1c0e3ecb6b110154df.

Signed-off-by: Flatcar Buildbot <buildbot@flatcar-linux.org>
This commit is contained in:
Flatcar Buildbot 2026-03-23 07:37:49 +00:00 committed by Krzesimir Nowak
parent cc8b103e8c
commit cba8c8fbe4
4 changed files with 363 additions and 175 deletions

View File

@ -0,0 +1,34 @@
https://salsa.debian.org/glibc-team/glibc/-/raw/sid/debian/patches/hurd-i386/tg-mach-hurd-link.diff
From: Samuel Thibault <samuel.thibault@ens-lyon.org>
Subject: [PATCH] Add -lmachuser -lhurduser to libc.so on GNU/Hurd.
http://lists.gnu.org/archive/html/bug-hurd/2011-03/msg00112.html
2011-03-29 Samuel Thibault <samuel.thibault@ens-lyon.org>
* Makerules ($(inst_libdir)/libc.so): Add -lmachuser -lhurduser to
libc.so on GNU/Hurd.
It's still unclear what we want to aim for.
---
Makerules | 3 +++
1 file changed, 3 insertions(+)
diff --git a/Makerules b/Makerules
index 53eabfaba8..b0f5e1b3a0 100644
--- a/Makerules
+++ b/Makerules
@@ -1066,6 +1066,9 @@ $(inst_libdir)/libc.so: $(common-objpfx)format.lds \
'$(libdir)/$(patsubst %,$(libtype.oS),$(libprefix)$(libc-name))'\
' AS_NEEDED (' $(rtlddir)/$(rtld-installed-name) ') )' \
) > $@.new
+ifeq ($(patsubst gnu%,,$(config-os)),)
+ echo 'INPUT ( AS_NEEDED ( -lmachuser -lhurduser ) )' >> $@.new
+endif
mv -f $@.new $@
endif
--
tg: (7bb5f8a836..) t/mach-hurd-link (depends on: baseline)

View File

@ -246,6 +246,15 @@ 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
}
@ -1454,47 +1463,56 @@ glibc_do_src_install() {
# 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
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
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
)
;;
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
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
)
;;
esac
fi
if [[ ${SYMLINK_LIB} == "yes" ]] && [[ ! -e ${ED}/$(alt_prefix)/lib ]] ; then
dosym $(get_abi_LIBDIR ${DEFAULT_ABI}) $(alt_prefix)/lib
fi
@ -1508,26 +1526,42 @@ glibc_do_src_install() {
fi
done
# 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 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}"
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
if is_hurd && has x86 $(get_install_abis) ; then
# On ix86, glibc and (unpatched) gcc disagree about the proper location for the dynamic loader.
# Which is maximally stupid since this one information is hardcoded into every single
# binary...
# First, let's check for sanity
if [[ -f "$(alt_prefix)/$(get_abi_LIBDIR x86)/ld.so" ]] ; then
die "Somehow your hurd glibc installed a literal ld.so ... this should not happen."
fi
done
# 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

View File

@ -151,7 +151,15 @@ if [[ ${CATEGORY} == cross-* ]] ; then
>=${CATEGORY}/binutils-2.27
>=${CATEGORY}/gcc-6.2
)"
[[ ${CATEGORY} == *-linux* ]] && DEPEND+=" ${CATEGORY}/linux-headers"
case ${CATEGORY} in
*-linux*)
DEPEND+=" ${CATEGORY}/linux-headers"
;;
*-gnu)
DEPEND+=" ${CATEGORY}/gnumach[-headers-only]"
;;
esac
else
BDEPEND+="
>=sys-devel/binutils-2.27
@ -249,6 +257,15 @@ 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
}
@ -499,6 +516,16 @@ setup_flags() {
# #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)
@ -992,6 +1019,9 @@ src_prepare() {
einfo "Applying Gentoo Glibc patchset ${patchsetname}"
eapply "${WORKDIR}"/patches
einfo "Done."
# TODO: Put into our patchset
eapply "${FILESDIR}"/glibc-2.43-hurd-link-helpers.patch
fi
case ${CTARGET} in
@ -1097,7 +1127,6 @@ glibc_do_configure() {
--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
@ -1123,6 +1152,12 @@ glibc_do_configure() {
# 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)
@ -1457,47 +1492,56 @@ glibc_do_src_install() {
# 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
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
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
)
;;
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
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
)
;;
esac
fi
if [[ ${SYMLINK_LIB} == "yes" ]] && [[ ! -e ${ED}/$(alt_prefix)/lib ]] ; then
dosym $(get_abi_LIBDIR ${DEFAULT_ABI}) $(alt_prefix)/lib
fi
@ -1511,26 +1555,42 @@ glibc_do_src_install() {
fi
done
# 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 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}"
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
if is_hurd && has x86 $(get_install_abis) ; then
# On ix86, glibc and (unpatched) gcc disagree about the proper location for the dynamic loader.
# Which is maximally stupid since this one information is hardcoded into every single
# binary...
# First, let's check for sanity
if [[ -f "$(alt_prefix)/$(get_abi_LIBDIR x86)/ld.so" ]] ; then
die "Somehow your hurd glibc installed a literal ld.so ... this should not happen."
fi
done
# 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

View File

@ -151,7 +151,15 @@ if [[ ${CATEGORY} == cross-* ]] ; then
>=${CATEGORY}/binutils-2.27
>=${CATEGORY}/gcc-6.2
)"
[[ ${CATEGORY} == *-linux* ]] && DEPEND+=" ${CATEGORY}/linux-headers"
case ${CATEGORY} in
*-linux*)
DEPEND+=" ${CATEGORY}/linux-headers"
;;
*-gnu)
DEPEND+=" ${CATEGORY}/gnumach[-headers-only]"
;;
esac
else
BDEPEND+="
>=sys-devel/binutils-2.27
@ -249,6 +257,15 @@ 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
}
@ -499,6 +516,16 @@ setup_flags() {
# #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)
@ -992,6 +1019,9 @@ src_prepare() {
einfo "Applying Gentoo Glibc patchset ${patchsetname}"
eapply "${WORKDIR}"/patches
einfo "Done."
# TODO: Put into our patchset
eapply "${FILESDIR}"/glibc-2.43-hurd-link-helpers.patch
fi
case ${CTARGET} in
@ -1097,7 +1127,6 @@ glibc_do_configure() {
--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
@ -1123,6 +1152,12 @@ glibc_do_configure() {
# 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)
@ -1457,47 +1492,56 @@ glibc_do_src_install() {
# 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
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
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
)
;;
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
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
)
;;
esac
fi
if [[ ${SYMLINK_LIB} == "yes" ]] && [[ ! -e ${ED}/$(alt_prefix)/lib ]] ; then
dosym $(get_abi_LIBDIR ${DEFAULT_ABI}) $(alt_prefix)/lib
fi
@ -1511,26 +1555,42 @@ glibc_do_src_install() {
fi
done
# 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 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}"
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
if is_hurd && has x86 $(get_install_abis) ; then
# On ix86, glibc and (unpatched) gcc disagree about the proper location for the dynamic loader.
# Which is maximally stupid since this one information is hardcoded into every single
# binary...
# First, let's check for sanity
if [[ -f "$(alt_prefix)/$(get_abi_LIBDIR x86)/ld.so" ]] ; then
die "Somehow your hurd glibc installed a literal ld.so ... this should not happen."
fi
done
# 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