From: Felix Janda <felix.ja...@posteo.de>

Since binutils-2.23.51.0.9+ defaults to hash-style=gnu, use
a __gentoo_check_ldflags__ symbol instead. The check is now
enabled by adding "-Wl,--defsym=__gentoo_check_ldflags__=0"
to LDFLAGS. The symbol will be automatically removed when
the binary is stripped.

Bug: https://bugs.gentoo.org/455232
Closes: https://github.com/gentoo/portage/pull/220
---
 bin/install-qa-check.d/10ignored-flags | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

diff --git a/bin/install-qa-check.d/10ignored-flags 
b/bin/install-qa-check.d/10ignored-flags
index 7aa9eb695..28aec6787 100644
--- a/bin/install-qa-check.d/10ignored-flags
+++ b/bin/install-qa-check.d/10ignored-flags
@@ -64,9 +64,10 @@ ignored_flag_check() {
        fi
 
        # Check for files built without respecting LDFLAGS
-       if [[ "${LDFLAGS}" == *,--hash-style=gnu* ]] && \
+       if [[ "${LDFLAGS}" == *,--defsym=__gentoo_check_ldflags__* ]] && \
                ! has binchecks ${RESTRICT} ; then
-               f=$(scanelf -qyRF '#k%p' -k .hash "${ED}")
+               f=$(LC_ALL=C comm -3 <(scanelf -qyRF '#k%p' -k .dynsym "${ED}" 
| LC_ALL=C sort) \
+                       <(scanelf -qyRF '#s%p' -s __gentoo_check_ldflags__ 
"${ED}" | LC_ALL=C sort))
                if [[ -n ${f} ]] ; then
                        echo "${f}" > "${T}"/scanelf-ignored-LDFLAGS.log
                        if [ "${QA_STRICT_FLAGS_IGNORED-unset}" = unset ] ; then
-- 
2.13.5


Reply via email to