Age | Commit message (Collapse) | Author | |
---|---|---|---|
2017-10-02 | fix gamma symbol for static linking and new targets | Szabolcs Nagy | |
The lgamma compat code is no longer built for !LIBM_SVID_COMPAT targets, but the legacy gamma, gammaf and gammal symbols should be still defined, so make them aliases to the non-compat lgamma code. * math/w_lgamma.c: New file. * math/w_lgammaf.c: New file. * math/w_lgammal.c: New file. | |||
2017-02-08 | Move w_lgamma to libm-compat-calls-auto | Gabriel F. T. Gomes | |
This patch adds the suffix "_compat2" to the wrappers for lgamma, which use _LIB_VERSION / matherr / __kernel_standard functionality. The suffix "_compat2" is used because the suffix "_compat" is already used. Tested for powerpc64le, s390, and x86_64. * math/Makefile (libm-calls): Move w_lgammaF... (libm-compat-calls-auto): Here. * math/w_lgamma.c: Add suffix "_compat2" to filename. * math/w_lgammaf.c: Likewise. * math/w_lgammal.c: Likewise. * math/w_lgamma_compat2.c: New file, copied from above. * math/w_lgammaf_compat2.c: Likewise. * math/w_lgammal_compat2.c: Likewise. | |||
2015-11-20 | Fix lgamma setting signgam for ISO C (bug 15421). | Joseph Myers | |
The lgamma (and likewise lgammaf, lgammal) function wrongly sets the signgam variable even when building for strict ISO C conformance (-std=c99 / -std=c11), although the user may define such a variable and it's only in the implementation namespace for POSIX with XSI extensions enabled. Following discussions starting at <https://sourceware.org/ml/libc-alpha/2013-04/msg00767.html> and <https://sourceware.org/ml/libc-alpha/2015-10/msg00844.html>, it seems that the safest approach for fixing this particular issue is for signgam to become a weak alias for a newly exported symbol __signgam, with the library functions only setting __signgam, at which point static linker magic will preserve the alias for newly linked binaries that refer to the library's signgam rather than defining their own, while breaking the alias for programs that define their own signgam, with new symbol versions for lgamma functions and with compat symbols for existing binaries that set both signgam and __signgam. This patch implements that approach for the fix. signgam is made into a weak alias. The four symbols __signgam, lgamma, lgammaf, lgammal get new symbol versions at version GLIBC_2.23, with the existing versions of lgamma, lgammaf and lgammal becoming compat symbols. When the compat versions are built, gamma, gammaf and gammal are aliases for the compat versions (i.e. always set signgam); this is OK as they are not ISO C functions, and avoids adding new symbol versions for them unnecessarily. When the compat versions are not built (i.e. for static linking and for future glibc ports), gamma, gammaf and gammal are aliases for the new versions that set __signgam. The ldbl-opt versions are updated accordingly. The lgamma wrappers are adjusted so that the same source files, included from different files with different definitions of USE_AS_COMPAT, can build either the new versions or the compat versions. Similar changes are made to the ia64 versions (untested). Tests are added that the lgamma functions do not interfere with a user variable called signgam for ISO C, with various choices for the size of that variable, whether it is initialized, and for static and dynamic linking. The conformtest whitelist entry is removed as well. Tested for x86_64, x86, mips64 and powerpc, including looking at objdump --dynamic-syms output to make sure the expected sets of symbols were aliases. Also spot-tested that a binary built with old glibc works properly (i.e. gets signgam set) when run with new glibc. [BZ #15421] * sysdeps/ieee754/s_signgam.c (signgam): Rename to __signgam, initialize with 0 and define as weak alias of __signgam. * include/math.h [!_ISOMAC] (__signgam): Declare. * math/Makefile (libm-calls): Add w_lgamma_compat. (tests): Add test-signgam-uchar, test-signgam-uchar-init, test-signgam-uint, test-signgam-uint-init, test-signgam-ullong and test-signgam-ullong-init. (tests-static): Add test-signgam-uchar-static, test-signgam-uchar-init-static, test-signgam-uint-static, test-signgam-uint-init-static, test-signgam-ullong-static and test-signgam-ullong-init-static. (CFLAGS-test-signgam-uchar.c): New variable. (CFLAGS-test-signgam-uchar-init.c): Likewise. (CFLAGS-test-signgam-uchar-static.c): Likewise. (CFLAGS-test-signgam-uchar-init-static.c): Likewise. (CFLAGS-test-signgam-uint.c): Likewise. (CFLAGS-test-signgam-uint-init.c): Likewise. (CFLAGS-test-signgam-uint-static.c): Likewise. (CFLAGS-test-signgam-uint-init-static.c): Likewise. (CFLAGS-test-signgam-ullong.c): Likewise. (CFLAGS-test-signgam-ullong-init.c): Likewise. (CFLAGS-test-signgam-ullong-static.c): Likewise. (CFLAGS-test-signgam-ullong-init-static.c): Likewise. * math/Versions (libm): Add GLIBC_2.23. * math/lgamma-compat.h: New file. * math/test-signgam-main.c: Likewise. * math/test-signgam-uchar-init-static.c: Likewise. * math/test-signgam-uchar-init.c: Likewise. * math/test-signgam-uchar-static.c: Likewise. * math/test-signgam-uchar.c: Likewise. * math/test-signgam-uint-init-static.c: Likewise. * math/test-signgam-uint-init.c: Likewise. * math/test-signgam-uint-static.c: Likewise. * math/test-signgam-uint.c: Likewise. * math/test-signgam-ullong-init-static.c: Likewise. * math/test-signgam-ullong-init.c: Likewise. * math/test-signgam-ullong-static.c: Likewise. * math/test-signgam-ullong.c: Likewise. * math/w_lgamma.c: Rename to w_lgamma_main.c and replace by wrapper of w_lgamma_main.c. * math/w_lgamma_compat.c: New file. * math/w_lgamma_compatf.c: Likewise. * math/w_lgamma_compatl.c: Likewise. * math/w_lgamma_main.c: New file. Based on w_lgamma.c. Include <lgamma-compat.h>. Condition contents on [BUILD_LGAMMA]. Support defining compatibility symbols. (__lgamma): Change to LGFUNC (__lgamma). Use CALL_LGAMMA. * math/w_lgammaf.c: Rename to w_lgammaf_main.c and replace by wrapper of w_lgammaf_main.c. * math/w_lgammaf_main.c: New file. Based on w_lgammaf.c. Include <lgamma-compat.h>. Condition contents on [BUILD_LGAMMA]. Support defining compatibility symbols. (__lgammaf): Change to LGFUNC (__lgammaf). Use CALL_LGAMMA. * math/w_lgammal.c: Rename to w_lgammal_main.c and replace by wrapper of w_lgammal_main.c. * math/w_lgammal_main.c: New file. Based on w_lgammal.c. Include <lgamma-compat.h>. Condition contents on [BUILD_LGAMMA]. Support defining compatibility symbols. (__lgammal): Change to LGFUNC (__lgammal). Use CALL_LGAMMA. * sysdeps/ia64/fpu/lgamma-compat.h: New file. * sysdeps/ia64/fpu/w_lgamma.c: Move to .... * sysdeps/ia64/fpu/w_lgamma_main.c: ...here. Include <lgamma-compat.h>. (__ieee754_lgamma): Change to LGFUNC (lgamma). Use CALL_LGAMMA. (__ieee754_gamma): Define as alias. * sysdeps/ia64/fpu/w_lgammaf.c: Move to .... * sysdeps/ia64/fpu/w_lgammaf_main.c: ...here. Include <lgamma-compat.h>. (__ieee754_lgammaf): Change to LGFUNC (lgammaf). Use CALL_LGAMMA. (__ieee754_gammaf): Define as alias. * sysdeps/ia64/fpu/w_lgammal.c: Move to .... * sysdeps/ia64/fpu/w_lgammal_main.c: ...here. Include <lgamma-compat.h>. (__ieee754_lgammal): Change to LGFUNC (lgammal). Use CALL_LGAMMA. (__ieee754_gammal): Define as alias. * sysdeps/ieee754/ldbl-opt/w_lgamma.c: Move to .... * sysdeps/ieee754/ldbl-opt/w_lgamma_compat.c: ...here. Include <math/w_lgamma_compat.c>. [LONG_DOUBLE_COMPAT(libm, GLIBC_2_0)] (__lgammal_dbl_compat): Define as alias of __lgamma_compat and use in defining lgammal. * sysdeps/ieee754/ldbl-opt/w_lgammal.c: Move to .... * sysdeps/ieee754/ldbl-opt/w_lgamma_compatl.c: ...here. Include <math/lgamma-compat.h> and <math/w_lgamma_compatl.c>. (USE_AS_COMPAT): New macro. (LGAMMA_OLD_VER): Undefine and redefine. (lgammal): Do not define here. (gammal): Only define here if [GAMMA_ALIAS]. * conform/linknamespace.pl (@whitelist): Remove signgam. * sysdeps/nacl/libm.abilist: Update. * sysdeps/unix/sysv/linux/aarch64/libm.abilist: Likewise. * sysdeps/unix/sysv/linux/alpha/libm.abilist: Likewise. * sysdeps/unix/sysv/linux/arm/libm.abilist: Likewise. * sysdeps/unix/sysv/linux/hppa/libm.abilist: Likewise. * sysdeps/unix/sysv/linux/i386/libm.abilist: Likewise. * sysdeps/unix/sysv/linux/ia64/libm.abilist: Likewise. * sysdeps/unix/sysv/linux/m68k/coldfire/libm.abilist: Likewise. * sysdeps/unix/sysv/linux/m68k/m680x0/libm.abilist: Likewise. * sysdeps/unix/sysv/linux/microblaze/libm.abilist: Likewise. * sysdeps/unix/sysv/linux/mips/mips32/libm.abilist: Likewise. * sysdeps/unix/sysv/linux/mips/mips64/libm.abilist: Likewise. * sysdeps/unix/sysv/linux/nios2/libm.abilist: Likewise. * sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libm.abilist: Likewise. * sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libm.abilist: Likewise. * sysdeps/unix/sysv/linux/powerpc/powerpc64/libm-le.abilist: Likewise. * sysdeps/unix/sysv/linux/powerpc/powerpc64/libm.abilist: Likewise. * sysdeps/unix/sysv/linux/s390/s390-32/libm.abilist: Likewise. * sysdeps/unix/sysv/linux/s390/s390-64/libm.abilist: Likewise. * sysdeps/unix/sysv/linux/sh/libm.abilist: Likewise. * sysdeps/unix/sysv/linux/sparc/sparc32/libm.abilist: Likewise. * sysdeps/unix/sysv/linux/sparc/sparc64/libm.abilist: Likewise. * sysdeps/unix/sysv/linux/tile/tilegx/tilegx32/libm.abilist: Likewise. * sysdeps/unix/sysv/linux/tile/tilegx/tilegx64/libm.abilist: Likewise. * sysdeps/unix/sysv/linux/tile/tilepro/libm.abilist: Likewise. * sysdeps/unix/sysv/linux/x86_64/64/libm.abilist: Likewise. * sysdeps/unix/sysv/linux/x86_64/x32/libm.abilist: Likewise. | |||
2015-06-03 | This patch renames all uses of __isinf*, __isnan*, __finite* and __signbit* ↵ | Wilco Dijkstra | |
to use standard C99 macros. This has no effect on generated code. | |||
2011-10-12 | Optimize libm | Ulrich Drepper | |
libm is now somewhat integrated with gcc's -ffinite-math-only option and lots of the wrapper functions have been optimized. | |||
2011-10-08 | Use private math_private.h in files in math/ | Ulrich Drepper | |
2005-12-14 | Moved to csu/errno-loc.c. | Ulrich Drepper | |
2004-12-22 | (CFLAGS-tst-align.c): Add -mpreferred-stack-boundary=4. | Ulrich Drepper | |
2007-07-12 | 2.5-18.1 | Jakub Jelinek | |
2001-02-17 | Update. | Ulrich Drepper | |
* math/w_acos.c: Move to ... * sysdeps/generic/w_acos.c: ...here. New file. * math/w_acosf.c: Move to ... * sysdeps/generic/w_acosf.c: ...here. New file. * math/w_acosh.c: Move to ... * sysdeps/generic/w_acosh.c: ...here. New file. * math/w_acoshf.c: Move to ... * sysdeps/generic/w_acoshf.c: ...here. New file. * math/w_acoshl.c: Move to ... * sysdeps/generic/w_acoshl.c: ...here. New file. * math/w_acosl.c: Move to ... * sysdeps/generic/w_acosl.c: ...here. New file. * math/w_asin.c: Move to ... * sysdeps/generic/w_asin.c: ...here. New file. * math/w_asinf.c: Move to ... * sysdeps/generic/w_asinf.c: ...here. New file. * math/w_asinl.c: Move to ... * sysdeps/generic/w_asinl.c: ...here. New file. * math/w_atan2.c: Move to ... * sysdeps/generic/w_atan2.c: ...here. New file. * math/w_atan2f.c: Move to ... * sysdeps/generic/w_atan2f.c: ...here. New file. * math/w_atan2l.c: Move to ... * sysdeps/generic/w_atan2l.c: ...here. New file. * math/w_atanh.c: Move to ... * sysdeps/generic/w_atanh.c: ...here. New file. * math/w_atanhf.c: Move to ... * sysdeps/generic/w_atanhf.c: ...here. New file. * math/w_atanhl.c: Move to ... * sysdeps/generic/w_atanhl.c: ...here. New file. * math/w_cosh.c: Move to ... * sysdeps/generic/w_cosh.c: ...here. New file. * math/w_coshf.c: Move to ... * sysdeps/generic/w_coshf.c: ...here. New file. * math/w_coshl.c: Move to ... * sysdeps/generic/w_coshl.c: ...here. New file. * math/w_drem.c: Move to ... * sysdeps/generic/w_drem.c: ...here. New file. * math/w_dremf.c: Move to ... * sysdeps/generic/w_dremf.c: ...here. New file. * math/w_dreml.c: Move to ... * sysdeps/generic/w_dreml.c: ...here. New file. * math/w_exp10.c: Move to ... * sysdeps/generic/w_exp10.c: ...here. New file. * math/w_exp10f.c: Move to ... * sysdeps/generic/w_exp10f.c: ...here. New file. * math/w_exp10l.c: Move to ... * sysdeps/generic/w_exp10l.c: ...here. New file. * math/w_exp2.c: Move to ... * sysdeps/generic/w_exp2.c: ...here. New file. * math/w_exp2f.c: Move to ... * sysdeps/generic/w_exp2f.c: ...here. New file. * math/w_exp2l.c: Move to ... * sysdeps/generic/w_exp2l.c: ...here. New file. * math/w_fmod.c: Move to ... * sysdeps/generic/w_fmod.c: ...here. New file. * math/w_fmodf.c: Move to ... * sysdeps/generic/w_fmodf.c: ...here. New file. * math/w_fmodl.c: Move to ... * sysdeps/generic/w_fmodl.c: ...here. New file. * math/w_hypot.c: Move to ... * sysdeps/generic/w_hypot.c: ...here. New file. * math/w_hypotf.c: Move to ... * sysdeps/generic/w_hypotf.c: ...here. New file. * math/w_hypotl.c: Move to ... * sysdeps/generic/w_hypotl.c: ...here. New file. * math/w_j0.c: Move to ... * sysdeps/generic/w_j0.c: ...here. New file. * math/w_j0f.c: Move to ... * sysdeps/generic/w_j0f.c: ...here. New file. * math/w_j0l.c: Move to ... * sysdeps/generic/w_j0l.c: ...here. New file. * math/w_j1.c: Move to ... * sysdeps/generic/w_j1.c: ...here. New file. * math/w_j1f.c: Move to ... * sysdeps/generic/w_j1f.c: ...here. New file. * math/w_j1l.c: Move to ... * sysdeps/generic/w_j1l.c: ...here. New file. * math/w_jn.c: Move to ... * sysdeps/generic/w_jn.c: ...here. New file. * math/w_jnf.c: Move to ... * sysdeps/generic/w_jnf.c: ...here. New file. * math/w_jnl.c: Move to ... * sysdeps/generic/w_jnl.c: ...here. New file. * math/w_lgamma.c: Move to ... * sysdeps/generic/w_lgamma.c: ...here. New file. * math/w_lgammaf.c: Move to ... * sysdeps/generic/w_lgammaf.c: ...here. New file. * math/w_lgammaf_r.c: Move to ... * sysdeps/generic/w_lgammaf_r.c: ...here. New file. * math/w_lgammal.c: Move to ... * sysdeps/generic/w_lgammal.c: ...here. New file. * math/w_lgammal_r.c: Move to ... * sysdeps/generic/w_lgammal_r.c: ...here. New file. * math/w_lgamma_r.c: Move to ... * sysdeps/generic/w_lgamma_r.c: ...here. New file. * math/w_log10.c: Move to ... * sysdeps/generic/w_log10.c: ...here. New file. * math/w_log10f.c: Move to ... * sysdeps/generic/w_log10f.c: ...here. New file. * math/w_log10l.c: Move to ... * sysdeps/generic/w_log10l.c: ...here. New file. * math/w_log.c: Move to ... * sysdeps/generic/w_log.c: ...here. New file. * math/w_logf.c: Move to ... * sysdeps/generic/w_logf.c: ...here. New file. * math/w_logl.c: Move to ... * sysdeps/generic/w_logl.c: ...here. New file. * math/w_pow.c: Move to ... * sysdeps/generic/w_pow.c: ...here. New file. * math/w_powf.c: Move to ... * sysdeps/generic/w_powf.c: ...here. New file. * math/w_powl.c: Move to ... * sysdeps/generic/w_powl.c: ...here. New file. * math/w_remainder.c: Move to ... * sysdeps/generic/w_remainder.c: ...here. New file. * math/w_remainderf.c: Move to ... * sysdeps/generic/w_remainderf.c: ...here. New file. * math/w_remainderl.c: Move to ... * sysdeps/generic/w_remainderl.c: ...here. New file. * math/w_scalb.c: Move to ... * sysdeps/generic/w_scalb.c: ...here. New file. * math/w_scalbf.c: Move to ... * sysdeps/generic/w_scalbf.c: ...here. New file. * math/w_scalbl.c: Move to ... * sysdeps/generic/w_scalbl.c: ...here. New file. * math/w_sinh.c: Move to ... * sysdeps/generic/w_sinh.c: ...here. New file. * math/w_sinhf.c: Move to ... * sysdeps/generic/w_sinhf.c: ...here. New file. * math/w_sinhl.c: Move to ... * sysdeps/generic/w_sinhl.c: ...here. New file. * math/w_sqrtl.c: Move to ... * sysdeps/generic/w_sqrtl.c: ...here. New file. * math/w_tgamma.c: Move to ... * sysdeps/generic/w_tgamma.c: ...here. New file. * math/w_tgammaf.c: Move to ... * sysdeps/generic/w_tgammaf.c: ...here. New file. * math/w_tgammal.c: Move to ... * sysdeps/generic/w_tgammal.c: ...here. New file. | |||
1999-10-31 | Update. | Ulrich Drepper | |
1999-10-31 Ulrich Drepper <drepper@cygnus.com> * includes/features.h: Replace __USE_ISOC9X by __USE_ISOC99 and also recognize _ISOC99_SOURCE. * libio/stdio.h: Likewise. * math/math.h: Likewise. * math/bits/mathcalls.h: Likewise. * math/stdio.h: Likewise. * stdlib/stdlib.h: Likewise. * sysdeps/alpha/fpu/bits/mathdef.h: Likewise. * sysdeps/alpha/fpu/bits/mathinline.h: Likewise. * sysdeps/arm/bits/huge_val.h: Likewise. * sysdeps/generic/bits/mathdef.h: Likewise. * sysdeps/i386/bits/huge_val.h: Likewise. * sysdeps/i386/fpu/bits/mathdef.h: Likewise. * sysdeps/i386/fpu/bits/mathinline.h: Likewise. * sysdeps/ieee754/bits/huge_val.h: Likewise. * sysdeps/m68k/bits/huge_val.h: Likewise. * sysdeps/m68k/fpu/bits/mathdef.h: Likewise. * sysdeps/m68k/fpu/bits/mathinline.h: Likewise. * sysdeps/powerpc/bits/mathdef.h: Likewise. * sysdeps/powerpc/bits/mathinline.h: Likewise. * sysdeps/sparc/fpu/bits/mathdef.h: Likewise. * sysdeps/sparc/fpu/bits/mathinline.h: Likewise. * sysdeps/sparc/sparc32/fpu/bits/huge_val.h: Likewise. * wcsmbs/wchar.h: Likewise. * sysdeps/powerpc/bits/mathdef.h: Moved to... * sysdeps/powerpc/fpu/bits/mathdef.h: ...here. * sysdeps/powerpc/bits/mathinline.h: Moved to... * sysdeps/powerpc/fpu/bits/mathinline.h: ...here. 1999-10-31 Andreas Jaeger <aj@suse.de> * manual/math.texi (Errors in Math Functions): Correct TeX code. 1999-10-31 Andreas Jaeger <aj@suse.de> * math/libm-test.inc: Change comments to use ISO C99 instead of ISO C9x. * math/w_lgamma.c: Likewise. * math/w_lgammaf.c: Likewise. * math/w_lgammal.c: Likewise. * math/test-fenv.c: Likewise. * sysdeps/ieee754/ldbl-96/printf_fphex.c: Likewise. * sysdeps/ieee754/ldbl-128/printf_fphex.c: Likewise. * sysdeps/generic/printf_fphex.c: Likewise. 1999-10-31 Andreas Jaeger <aj@suse.de> * manual/arith.texi (Parsing of Floats): Remove C from ISO C comment. * manual/math.texi: Change ISO C9x to ISO C99. * manual/startup.texi: Likewise. * manual/stdio.texi: Likewise. 1999-10-31 Andreas Jaeger <aj@suse.de> * manual/arith.texi: Change ISO C9x to ISO C99. * manual/time.texi (Low-Level Time String Parsing): Likewise. | |||
1999-07-14 | Update. | Ulrich Drepper | |