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=()

Reply via email to