Skip to content
Snippets Groups Projects
  • Jakub Jelinek's avatar
    fdce86c9
    libquadmath: Restore linking against -lm on most targets [PR112963] · fdce86c9
    Jakub Jelinek authored
    The r14-4825 change added AC_CHECK_LIBM to libquadmath configure.ac and
    replaced unconditional linking with -lm with linking with $(LIBM)
    determined by that.
    Unfortunately that broke bare metal targets because AC_CHECK_LIBM attempts
    to link against -lm and this was after (unconditional) GCC_NO_EXECUTABLES.
    Then r14-4863 partially reverted that change (no longer AC_CHECK_LIBM),
    but didn't revert the Makefile.am change of -lm to $(LIBM), which had
    the effect that libquadmath is not linked against -lm on any arch.
    That is a serious problem though e.g. on Linux, because libquadmath calls
    a few libm entrypoints and e.g. on powerpc64le the underlinking can cause
    crashes in IFUNC resolvers of libm.
    Instead of adding further reversion of the r14-4825 commit and use -lm
    unconditionally again, this patch adds an AC_CHECK_LIBM like substitutions
    with the *-ncr-sysv4.3* target handling removed (I think we don't support
    such targets, especially not in libquadmath) and with the default case
    replaced by simple using -lm.  That is something in between using -lm
    unconditionally and what AC_CHECK_LIBM does if it would work on bare metal
    - we know from GCC 13 and earlier that we can link -lm on all targets
    libquadmath is built for, and just white list a couple of targets which
    we know don't have separate -lm and don't want to link against that
    (like Darwin, Cygwin, ...).
    
    2023-12-12  Jakub Jelinek  <jakub@redhat.com>
    
    	PR libquadmath/112963
    	* configure.ac (LIBM): Readd AC_CHECK_LIBM-like check without doing
    	AC_CHECK_LIB in it.
    	* configure: Regenerated.
    	* Makefile.in: Regenerated.
    fdce86c9
    History
    libquadmath: Restore linking against -lm on most targets [PR112963]
    Jakub Jelinek authored
    The r14-4825 change added AC_CHECK_LIBM to libquadmath configure.ac and
    replaced unconditional linking with -lm with linking with $(LIBM)
    determined by that.
    Unfortunately that broke bare metal targets because AC_CHECK_LIBM attempts
    to link against -lm and this was after (unconditional) GCC_NO_EXECUTABLES.
    Then r14-4863 partially reverted that change (no longer AC_CHECK_LIBM),
    but didn't revert the Makefile.am change of -lm to $(LIBM), which had
    the effect that libquadmath is not linked against -lm on any arch.
    That is a serious problem though e.g. on Linux, because libquadmath calls
    a few libm entrypoints and e.g. on powerpc64le the underlinking can cause
    crashes in IFUNC resolvers of libm.
    Instead of adding further reversion of the r14-4825 commit and use -lm
    unconditionally again, this patch adds an AC_CHECK_LIBM like substitutions
    with the *-ncr-sysv4.3* target handling removed (I think we don't support
    such targets, especially not in libquadmath) and with the default case
    replaced by simple using -lm.  That is something in between using -lm
    unconditionally and what AC_CHECK_LIBM does if it would work on bare metal
    - we know from GCC 13 and earlier that we can link -lm on all targets
    libquadmath is built for, and just white list a couple of targets which
    we know don't have separate -lm and don't want to link against that
    (like Darwin, Cygwin, ...).
    
    2023-12-12  Jakub Jelinek  <jakub@redhat.com>
    
    	PR libquadmath/112963
    	* configure.ac (LIBM): Readd AC_CHECK_LIBM-like check without doing
    	AC_CHECK_LIB in it.
    	* configure: Regenerated.
    	* Makefile.in: Regenerated.