commit: b6558b4251e9dacfb8a866716820e43a7dc5d0fe
Author: Sergei Trofimovich <slyfox <AT> gentoo <DOT> org>
AuthorDate: Tue Jun 9 07:23:10 2020 +0000
Commit: Sergei Trofimovich <slyfox <AT> gentoo <DOT> org>
CommitDate: Tue Jun 9 07:24:07 2020 +0000
URL: https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=b6558b42
sys-libs/glibc: always use NM and READELF for default ABI
sys-devel/binutils-config[-native-symlinks] exposed a bug of
not using 'readelf' / 'nm' if used ABI is not default.
Breakage mahifested as ./configure failure for glibc[static-pie]
for non-default ABIs.
The fix uses NM and READELF from default ABI (specified by CTARGET).
While at it set CC in early compile test checks.
Package-Manager: Portage-2.3.100, Repoman-2.3.22
Signed-off-by: Sergei Trofimovich <slyfox <AT> gentoo.org>
sys-libs/glibc/glibc-2.31-r4.ebuild | 13 +++++++++++--
sys-libs/glibc/glibc-9999.ebuild | 13 +++++++++++--
2 files changed, 22 insertions(+), 4 deletions(-)
diff --git a/sys-libs/glibc/glibc-2.31-r4.ebuild
b/sys-libs/glibc/glibc-2.31-r4.ebuild
index 24d169cae7a..487ca85ae40 100644
--- a/sys-libs/glibc/glibc-2.31-r4.ebuild
+++ b/sys-libs/glibc/glibc-2.31-r4.ebuild
@@ -230,7 +230,8 @@ do_compile_test() {
rm -f glibc-test*
printf '%b' "$*" > glibc-test.c
- nonfatal emake glibc-test
+ # Most of the time CC is already set, but not in early sanity checks.
+ nonfatal emake glibc-test CC="${CC-$(tc-getCC ${CTARGET})}"
ret=$?
popd >/dev/null
@@ -790,7 +791,7 @@ glibc_do_configure() {
fi
local v
- for v in ABI CBUILD CHOST CTARGET CBUILD_OPT CTARGET_OPT CC CXX LD
{AS,C,CPP,CXX,LD}FLAGS MAKEINFO ; do
+ for v in ABI CBUILD CHOST CTARGET CBUILD_OPT CTARGET_OPT CC CXX LD
{AS,C,CPP,CXX,LD}FLAGS MAKEINFO NM READELF; do
einfo " $(printf '%15s' ${v}:) ${!v}"
done
@@ -819,6 +820,14 @@ glibc_do_configure() {
fi
einfo " $(printf '%15s' 'Manual CXX:') ${CXX}"
+ # 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})"
+ einfo " $(printf '%15s' 'Manual NM:') ${NM}"
+ einfo " $(printf '%15s' 'Manual READELF:') ${READELF}"
+
echo
local myconf=()
diff --git a/sys-libs/glibc/glibc-9999.ebuild b/sys-libs/glibc/glibc-9999.ebuild
index 2355e5bce34..236e15c0792 100644
--- a/sys-libs/glibc/glibc-9999.ebuild
+++ b/sys-libs/glibc/glibc-9999.ebuild
@@ -225,7 +225,8 @@ do_compile_test() {
rm -f glibc-test*
printf '%b' "$*" > glibc-test.c
- nonfatal emake glibc-test
+ # Most of the time CC is already set, but not in early sanity checks.
+ nonfatal emake glibc-test CC="${CC-$(tc-getCC ${CTARGET})}"
ret=$?
popd >/dev/null
@@ -798,7 +799,7 @@ glibc_do_configure() {
fi
local v
- for v in ABI CBUILD CHOST CTARGET CBUILD_OPT CTARGET_OPT CC CXX LD
{AS,C,CPP,CXX,LD}FLAGS MAKEINFO ; do
+ for v in ABI CBUILD CHOST CTARGET CBUILD_OPT CTARGET_OPT CC CXX LD
{AS,C,CPP,CXX,LD}FLAGS MAKEINFO NM READELF; do
einfo " $(printf '%15s' ${v}:) ${!v}"
done
@@ -827,6 +828,14 @@ glibc_do_configure() {
fi
einfo " $(printf '%15s' 'Manual CXX:') ${CXX}"
+ # 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})"
+ einfo " $(printf '%15s' 'Manual NM:') ${NM}"
+ einfo " $(printf '%15s' 'Manual READELF:') ${READELF}"
+
echo
local myconf=()