diff options
65 files changed, 721 insertions, 204 deletions
diff --git a/ChangeLog b/ChangeLog index 4e12f20963..51818799ea 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,128 @@ +2015-11-20 Joseph Myers <joseph@codesourcery.com> + + [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-11-20 Adhemerval Zanella <adhemerval.zanella@linaro.org> [BZ #16364] diff --git a/NEWS b/NEWS index 4c00e1474c..df8ad62a82 100644 --- a/NEWS +++ b/NEWS @@ -42,6 +42,12 @@ Version 2.23 * Optimized string, wcsmbs and memory functions for IBM z13. Implemented by Stefan Liebler. +* Newly linked programs that define a variable called signgam will no longer + have it set by the lgamma, lgammaf and lgammal functions. Programs that + require signgam to be set by those functions must ensure that they use the + variable provided by the GNU C Library and declared in <math.h>, without + defining their own copy. + * The minimum GCC version that can be used to build this version of the GNU C Library is GCC 4.7. Older GCC versions, and non-GNU compilers, can still be used to compile programs using the GNU C Library. diff --git a/conform/linknamespace.pl b/conform/linknamespace.pl index 94ebfd469b..d4b3142a07 100644 --- a/conform/linknamespace.pl +++ b/conform/linknamespace.pl @@ -40,8 +40,6 @@ close (STDSYMS) || die ("close $stdsyms_file: $!\n"); # The following whitelisted symbols are also allowed for now. # -# * Bug 15421: lgamma wrongly sets signgam for ISO C. -# # * Bug 17576: stdin, stdout, stderr only reserved with external # linkage when stdio.h included (and possibly not then), not # generally. @@ -52,7 +50,7 @@ close (STDSYMS) || die ("close $stdsyms_file: $!\n"); # * False positive: matherr only used conditionally. matherrf/matherrl are used # by IA64 too for the same reason. # -@whitelist = qw(signgam stdin stdout stderr re_syntax_options matherr matherrf +@whitelist = qw(stdin stdout stderr re_syntax_options matherr matherrf matherrl); foreach my $sym (@whitelist) { $stdsyms{$sym} = 1; diff --git a/include/math.h b/include/math.h index b28c4412e2..ba7bba018a 100644 --- a/include/math.h +++ b/include/math.h @@ -6,6 +6,8 @@ /* Now define the internal interfaces. */ extern int __matherr (struct exception *__exc); +extern int __signgam; + # if IS_IN (libc) || IS_IN (libm) hidden_proto (__finite) hidden_proto (__isinf) diff --git a/math/Makefile b/math/Makefile index 06412f3980..0ff3baa19e 100644 --- a/math/Makefile +++ b/math/Makefile @@ -62,7 +62,8 @@ libm-calls = e_acos e_acosh e_asin e_atan2 e_atanh e_cosh e_exp e_fmod \ s_casinh s_cacosh s_catanh s_csqrt s_cpow s_cproj s_clog10 \ s_fma s_lrint s_llrint s_lround s_llround e_exp10 w_log2 \ s_issignaling $(calls:s_%=m_%) x2y2m1 k_casinh \ - gamma_product k_standard lgamma_neg lgamma_product + gamma_product k_standard lgamma_neg lgamma_product \ + w_lgamma_compat dbl-only-routines := branred doasin dosincos halfulp mpa mpatan2 \ mpatan mpexp mplog mpsqrt mptan sincos32 slowexp \ @@ -110,8 +111,13 @@ tests = test-matherr test-fenv atest-exp atest-sincos atest-exp2 basic-test \ test-fenv-tls test-fenv-preserve test-fenv-return test-fenvinline \ test-nearbyint-except test-fenv-clear test-signgam-finite \ test-signgam-finite-c99 test-signgam-finite-c11 \ - test-nearbyint-except-2 $(tests-static) -tests-static = test-fpucw-static test-fpucw-ieee-static + test-nearbyint-except-2 test-signgam-uchar test-signgam-uchar-init \ + test-signgam-uint test-signgam-uint-init test-signgam-ullong \ + test-signgam-ullong-init $(tests-static) +tests-static = test-fpucw-static test-fpucw-ieee-static \ + test-signgam-uchar-static test-signgam-uchar-init-static \ + test-signgam-uint-static test-signgam-uint-init-static \ + test-signgam-ullong-static test-signgam-ullong-init-static # We do the `long double' tests only if this data type is available and # distinct from `double'. test-longdouble-yes = test-ldouble test-ildoubl test-ldouble-finite @@ -200,6 +206,18 @@ CPPFLAGS-test-ildoubl.c = -U__LIBC_INTERNAL_MATH_INLINES \ CFLAGS-test-signgam-finite.c = -ffinite-math-only CFLAGS-test-signgam-finite-c99.c = -ffinite-math-only -std=c99 CFLAGS-test-signgam-finite-c11.c = -ffinite-math-only -std=c11 +CFLAGS-test-signgam-uchar.c = -std=c99 +CFLAGS-test-signgam-uchar-init.c = -std=c99 +CFLAGS-test-signgam-uchar-static.c = -std=c99 +CFLAGS-test-signgam-uchar-init-static.c = -std=c99 +CFLAGS-test-signgam-uint.c = -std=c99 +CFLAGS-test-signgam-uint-init.c = -std=c99 +CFLAGS-test-signgam-uint-static.c = -std=c99 +CFLAGS-test-signgam-uint-init-static.c = -std=c99 +CFLAGS-test-signgam-ullong.c = -std=c99 +CFLAGS-test-signgam-ullong-init.c = -std=c99 +CFLAGS-test-signgam-ullong-static.c = -std=c99 +CFLAGS-test-signgam-ullong-init-static.c = -std=c99 # The -lieee module sets the _LIB_VERSION_ switch to IEEE mode # for error handling in the -lm functions. diff --git a/math/Versions b/math/Versions index 551abec020..e6a597cf23 100644 --- a/math/Versions +++ b/math/Versions @@ -203,4 +203,11 @@ libm { GLIBC_2.18 { __issignaling; __issignalingf; __issignalingl; } + GLIBC_2.23 { + # The __signgam name must be exported for the signgam weak alias + # to work. New symbol versions of lgamma* that set __signgam are + # needed to preserve compatibility with old binaries that have a + # dynamic symbol for signgam but not __signgam. + lgamma; lgammaf; lgammal; __signgam; + } } diff --git a/math/lgamma-compat.h b/math/lgamma-compat.h new file mode 100644 index 0000000000..1393f0e1f5 --- /dev/null +++ b/math/lgamma-compat.h @@ -0,0 +1,73 @@ +/* ABI compatibility for lgamma functions. + Copyright (C) 2015 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, see + <http://www.gnu.org/licenses/>. */ + +#ifndef LGAMMA_COMPAT_H +#define LGAMMA_COMPAT_H 1 + +#include <shlib-compat.h> + +/* XSI POSIX requires lgamma to set signgam, but ISO C does not permit + this. Namespace issues can be avoided if the functions set + __signgam and signgam is a weak alias, but this only works if both + signgam and __signgam were exported from the glibc version the + program was linked against. Before glibc 2.23, lgamma functions + set signgam which was not a weak alias for __signgam, so old + binaries have dynamic symbols for signgam only and the versions of + lgamma used for old binaries must set both signgam and __signgam. + Those versions also do a check of _LIB_VERSION != _ISOC_ to match + old glibc. + + Users of this file define USE_AS_COMPAT to 0 when building the main + version of lgamma, 1 when building the compatibility version. */ + +#define LGAMMA_OLD_VER GLIBC_2_0 +#define LGAMMA_NEW_VER GLIBC_2_23 +#define HAVE_LGAMMA_COMPAT SHLIB_COMPAT (libm, LGAMMA_OLD_VER, LGAMMA_NEW_VER) + +/* Whether to build this version at all. */ +#define BUILD_LGAMMA (HAVE_LGAMMA_COMPAT || !USE_AS_COMPAT) + +/* The name to use for this version. */ +#if USE_AS_COMPAT +# define LGFUNC(FUNC) FUNC ## _compat +#else +# define LGFUNC(FUNC) FUNC +#endif + +/* If there is a compatibility version, gamma (not an ISO C function, + so never a problem for it to set signgam) points directly to it + rather than having separate versions. */ +#define GAMMA_ALIAS (USE_AS_COMPAT ? HAVE_LGAMMA_COMPAT : !HAVE_LGAMMA_COMPAT) + +/* How to call the underlying lgamma_r function. */ +#define CALL_LGAMMA(TYPE, FUNC, ARG) \ + ({ \ + TYPE lgamma_tmp; \ + int local_signgam; \ + if (USE_AS_COMPAT) \ + { \ + lgamma_tmp = FUNC ((ARG), &local_signgam); \ + if (_LIB_VERSION != _ISOC_) \ + signgam = __signgam = local_signgam; \ + } \ + else \ + lgamma_tmp = FUNC ((ARG), &__signgam); \ + lgamma_tmp; \ + }) + +#endif /* lgamma-compat.h. */ diff --git a/math/test-signgam-main.c b/math/test-signgam-main.c new file mode 100644 index 0000000000..6aed7f4f01 --- /dev/null +++ b/math/test-signgam-main.c @@ -0,0 +1,71 @@ +/* Test lgamma functions do not set signgam for ISO C. + Copyright (C) 2015 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, see + <http://www.gnu.org/licenses/>. */ + +#undef _LIBC +#undef _GNU_SOURCE +#define _ISOMAC + +#include <math.h> +#include <stdio.h> + +#define INITVAL ((TYPE) -1 / 3) + +#if DO_INIT +TYPE signgam = INITVAL; +#else +TYPE signgam; +#endif + +#define RUN_TESTS(FUNC, TYPE) \ + do \ + { \ + volatile TYPE a, b, c __attribute__ ((unused)); \ + a = 0.5; \ + b = -0.5; \ + signgam = INITVAL; \ + c = FUNC (a); \ + if (signgam == INITVAL) \ + puts ("PASS: " #FUNC " (0.5) setting signgam"); \ + else \ + { \ + puts ("FAIL: " #FUNC " (0.5) setting signgam"); \ + result = 1; \ + } \ + signgam = INITVAL; \ + c = FUNC (b); \ + if (signgam == INITVAL) \ + puts ("PASS: " #FUNC " (-0.5) setting signgam"); \ + else \ + { \ + puts ("FAIL: " #FUNC " (-0.5) setting signgam"); \ + result = 1; \ + } \ + } \ + while (0) + +int +main (void) +{ + int result = 0; + RUN_TESTS (lgammaf, float); + RUN_TESTS (lgamma, double); +#ifndef NO_LONG_DOUBLE + RUN_TESTS (lgammal, long double); +#endif + return result; +} diff --git a/math/test-signgam-uchar-init-static.c b/math/test-signgam-uchar-init-static.c new file mode 100644 index 0000000000..43ac5026b6 --- /dev/null +++ b/math/test-signgam-uchar-init-static.c @@ -0,0 +1 @@ +#include "test-signgam-uchar-init.c" diff --git a/math/test-signgam-uchar-init.c b/math/test-signgam-uchar-init.c new file mode 100644 index 0000000000..4eea51e5ae --- /dev/null +++ b/math/test-signgam-uchar-init.c @@ -0,0 +1,3 @@ +#define TYPE unsigned char +#define DO_INIT 1 +#include "test-signgam-main.c" diff --git a/math/test-signgam-uchar-static.c b/math/test-signgam-uchar-static.c new file mode 100644 index 0000000000..a1e655dfb7 --- /dev/null +++ b/math/test-signgam-uchar-static.c @@ -0,0 +1 @@ +#include "test-signgam-uchar.c" diff --git a/math/test-signgam-uchar.c b/math/test-signgam-uchar.c new file mode 100644 index 0000000000..b613fd2ea1 --- /dev/null +++ b/math/test-signgam-uchar.c @@ -0,0 +1,3 @@ +#define TYPE unsigned char +#define DO_INIT 0 +#include "test-signgam-main.c" diff --git a/math/test-signgam-uint-init-static.c b/math/test-signgam-uint-init-static.c new file mode 100644 index 0000000000..1afb205ed2 --- /dev/null +++ b/math/test-signgam-uint-init-static.c @@ -0,0 +1 @@ +#include "test-signgam-uint-init.c" diff --git a/math/test-signgam-uint-init.c b/math/test-signgam-uint-init.c new file mode 100644 index 0000000000..e3d064fbb8 --- /dev/null +++ b/math/test-signgam-uint-init.c @@ -0,0 +1,3 @@ +#define TYPE unsigned int +#define DO_INIT 1 +#include "test-signgam-main.c" diff --git a/math/test-signgam-uint-static.c b/math/test-signgam-uint-static.c new file mode 100644 index 0000000000..0aa0c24a75 --- /dev/null +++ b/math/test-signgam-uint-static.c @@ -0,0 +1 @@ +#include "test-signgam-uint.c" diff --git a/math/test-signgam-uint.c b/math/test-signgam-uint.c new file mode 100644 index 0000000000..4ab783f111 --- /dev/null +++ b/math/test-signgam-uint.c @@ -0,0 +1,3 @@ +#define TYPE unsigned int +#define DO_INIT 0 +#include "test-signgam-main.c" diff --git a/math/test-signgam-ullong-init-static.c b/math/test-signgam-ullong-init-static.c new file mode 100644 index 0000000000..84e0a195fb --- /dev/null +++ b/math/test-signgam-ullong-init-static.c @@ -0,0 +1 @@ +#include "test-signgam-ullong-init.c" diff --git a/math/test-signgam-ullong-init.c b/math/test-signgam-ullong-init.c new file mode 100644 index 0000000000..f32957f879 --- /dev/null +++ b/math/test-signgam-ullong-init.c @@ -0,0 +1,3 @@ +#define TYPE unsigned long long int +#define DO_INIT 1 +#include "test-signgam-main.c" diff --git a/math/test-signgam-ullong-static.c b/math/test-signgam-ullong-static.c new file mode 100644 index 0000000000..13e43854be --- /dev/null +++ b/math/test-signgam-ullong-static.c @@ -0,0 +1 @@ +#include "test-signgam-ullong.c" diff --git a/math/test-signgam-ullong.c b/math/test-signgam-ullong.c new file mode 100644 index 0000000000..5d4f27e8a3 --- /dev/null +++ b/math/test-signgam-ullong.c @@ -0,0 +1,3 @@ +#define TYPE unsigned long long int +#define DO_INIT 0 +#include "test-signgam-main.c" diff --git a/math/w_lgamma.c b/math/w_lgamma.c index a82b5e397c..8bb33e0472 100644 --- a/math/w_lgamma.c +++ b/math/w_lgamma.c @@ -1,49 +1,2 @@ -/* @(#)w_lgamma.c 5.1 93/09/24 */ -/* - * ==================================================== - * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved. - * - * Developed at SunPro, a Sun Microsystems, Inc. business. - * Permission to use, copy, modify, and distribute this - * software is freely granted, provided that this notice - * is preserved. - * ==================================================== - */ - -/* double lgamma(double x) - * Return the logarithm of the Gamma function of x. - * - * Method: call __ieee754_lgamma_r - */ - -#include <math.h> -#include <math_private.h> - -double -__lgamma(double x) -{ - int local_signgam = 0; - double y = __ieee754_lgamma_r(x, - _LIB_VERSION != _ISOC_ - /* ISO C99 does not define the - global variable. */ - ? &signgam - : &local_signgam); - if(__builtin_expect(!isfinite(y), 0) - && isfinite(x) && _LIB_VERSION != _IEEE_) - return __kernel_standard(x, x, - __floor(x)==x&&x<=0.0 - ? 15 /* lgamma pole */ - : 14); /* lgamma overflow */ - - return y; -} -weak_alias (__lgamma, lgamma) -strong_alias (__lgamma, __gamma) -weak_alias (__gamma, gamma) -#ifdef NO_LONG_DOUBLE -strong_alias (__lgamma, __lgammal) -weak_alias (__lgamma, lgammal) -strong_alias (__gamma, __gammal) -weak_alias (__gamma, gammal) -#endif +#define USE_AS_COMPAT 0 +#include <w_lgamma_main.c> diff --git a/math/w_lgamma_compat.c b/math/w_lgamma_compat.c new file mode 100644 index 0000000000..30510a5eee --- /dev/null +++ b/math/w_lgamma_compat.c @@ -0,0 +1,2 @@ +#define USE_AS_COMPAT 1 +#include <w_lgamma_main.c> diff --git a/math/w_lgamma_compatf.c b/math/w_lgamma_compatf.c new file mode 100644 index 0000000000..e59586fe8a --- /dev/null +++ b/math/w_lgamma_compatf.c @@ -0,0 +1,2 @@ +#define USE_AS_COMPAT 1 +#include <w_lgammaf_main.c> diff --git a/math/w_lgamma_compatl.c b/math/w_lgamma_compatl.c new file mode 100644 index 0000000000..55ca3640b3 --- /dev/null +++ b/math/w_lgamma_compatl.c @@ -0,0 +1,2 @@ +#define USE_AS_COMPAT 1 +#include <w_lgammal_main.c> diff --git a/math/w_lgamma_main.c b/math/w_lgamma_main.c new file mode 100644 index 0000000000..cdea331f1a --- /dev/null +++ b/math/w_lgamma_main.c @@ -0,0 +1,59 @@ +/* @(#)w_lgamma.c 5.1 93/09/24 */ +/* + * ==================================================== + * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved. + * + * Developed at SunPro, a Sun Microsystems, Inc. business. + * Permission to use, copy, modify, and distribute this + * software is freely granted, provided that this notice + * is preserved. + * ==================================================== + */ + +/* double lgamma(double x) + * Return the logarithm of the Gamma function of x. + * + * Method: call __ieee754_lgamma_r + */ + +#include <math.h> +#include <math_private.h> + +#include <lgamma-compat.h> + +#if BUILD_LGAMMA +double +LGFUNC (__lgamma) (double x) +{ + double y = CALL_LGAMMA (double, __ieee754_lgamma_r, x); + if(__builtin_expect(!isfinite(y), 0) + && isfinite(x) && _LIB_VERSION != _IEEE_) + return __kernel_standard(x, x, + __floor(x)==x&&x<=0.0 + ? 15 /* lgamma pole */ + : 14); /* lgamma overflow */ + + return y; +} +# if USE_AS_COMPAT +compat_symbol (libm, __lgamma_compat, lgamma, LGAMMA_OLD_VER); +# ifdef NO_LONG_DOUBLE +strong_alias (__lgamma_compat, __lgammal_compat) +compat_symbol (libm, __lgammal_compat, lgammal, LGAMMA_OLD_VER); +# endif +# else +versioned_symbol (libm, __lgamma, lgamma, LGAMMA_NEW_VER); +# ifdef NO_LONG_DOUBLE +strong_alias (__lgamma, __lgammal) +versioned_symbol (libm, __lgammal, lgammal, LGAMMA_NEW_VER); +# endif +# endif +# if GAMMA_ALIAS +strong_alias (LGFUNC (__lgamma), __gamma) +weak_alias (__gamma, gamma) +# ifdef NO_LONG_DOUBLE +strong_alias (__gamma, __gammal) +weak_alias (__gamma, gammal) +# endif +# endif +#endif diff --git a/math/w_lgammaf.c b/math/w_lgammaf.c index dac69dd32a..5fc402260c 100644 --- a/math/w_lgammaf.c +++ b/math/w_lgammaf.c @@ -1,40 +1,2 @@ -/* w_lgammaf.c -- float version of w_lgamma.c. - * Conversion to float by Ian Lance Taylor, Cygnus Support, ian@cygnus.com. - */ - -/* - * ==================================================== - * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved. - * - * Developed at SunPro, a Sun Microsystems, Inc. business. - * Permission to use, copy, modify, and distribute this - * software is freely granted, provided that this notice - * is preserved. - * ==================================================== - */ - -#include <math.h> -#include <math_private.h> - -float -__lgammaf(float x) -{ - int local_signgam = 0; - float y = __ieee754_lgammaf_r(x, - _LIB_VERSION != _ISOC_ - /* ISO C99 does not define the - global variable. */ - ? &signgam - : &local_signgam); - if(__builtin_expect(!isfinite(y), 0) - && isfinite(x) && _LIB_VERSION != _IEEE_) - return __kernel_standard_f(x, x, - __floorf(x)==x&&x<=0.0f - ? 115 /* lgamma pole */ - : 114); /* lgamma overflow */ - - return y; -} -weak_alias (__lgammaf, lgammaf) -strong_alias (__lgammaf, __gammaf) -weak_alias (__gammaf, gammaf) +#define USE_AS_COMPAT 0 +#include <w_lgammaf_main.c> diff --git a/math/w_lgammaf_main.c b/math/w_lgammaf_main.c new file mode 100644 index 0000000000..ba7ff0e573 --- /dev/null +++ b/math/w_lgammaf_main.c @@ -0,0 +1,44 @@ +/* w_lgammaf.c -- float version of w_lgamma.c. + * Conversion to float by Ian Lance Taylor, Cygnus Support, ian@cygnus.com. + */ + +/* + * ==================================================== + * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved. + * + * Developed at SunPro, a Sun Microsystems, Inc. business. + * Permission to use, copy, modify, and distribute this + * software is freely granted, provided that this notice + * is preserved. + * ==================================================== + */ + +#include <math.h> +#include <math_private.h> + +#include <lgamma-compat.h> + +#if BUILD_LGAMMA +float +LGFUNC (__lgammaf) (float x) +{ + float y = CALL_LGAMMA (float, __ieee754_lgammaf_r, x); + if(__builtin_expect(!isfinite(y), 0) + && isfinite(x) && _LIB_VERSION != _IEEE_) + return __kernel_standard_f(x, x, + __floorf(x)==x&&x<=0.0f + ? 115 /* lgamma pole */ + : 114); /* lgamma overflow */ + + return y; +} +# if USE_AS_COMPAT +compat_symbol (libm, __lgammaf_compat, lgammaf, LGAMMA_OLD_VER); +# else +versioned_symbol (libm, __lgammaf, lgammaf, LGAMMA_NEW_VER); +# endif +# if GAMMA_ALIAS +strong_alias (LGFUNC (__lgammaf), __gammaf) +weak_alias (__gammaf, gammaf) +# endif +#endif diff --git a/math/w_lgammal.c b/math/w_lgammal.c index 8abe6a018f..78dd9c5808 100644 --- a/math/w_lgammal.c +++ b/math/w_lgammal.c @@ -1,47 +1,2 @@ -/* w_lgammal.c -- long double version of w_lgamma.c. - * Conversion to long double by Ulrich Drepper, - * Cygnus Support, drepper@cygnus.com. - */ - -/* - * ==================================================== - * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved. - * - * Developed at SunPro, a Sun Microsystems, Inc. business. - * Permission to use, copy, modify, and distribute this - * software is freely granted, provided that this notice - * is preserved. - * ==================================================== - */ - -/* long double lgammal(long double x) - * Return the logarithm of the Gamma function of x. - * - * Method: call __ieee754_lgammal_r - */ - -#include <math.h> -#include <math_private.h> - -long double -__lgammal(long double x) -{ - int local_signgam = 0; - long double y = __ieee754_lgammal_r(x, - _LIB_VERSION != _ISOC_ - /* ISO C99 does not define the - global variable. */ - ? &signgam - : &local_signgam); - if(__builtin_expect(!isfinite(y), 0) - && isfinite(x) && _LIB_VERSION != _IEEE_) - return __kernel_standard_l(x, x, - __floorl(x)==x&&x<=0.0L - ? 215 /* lgamma pole */ - : 214); /* lgamma overflow */ - - return y; -} -weak_alias (__lgammal, lgammal) -strong_alias (__lgammal, __gammal) -weak_alias (__gammal, gammal) +#define USE_AS_COMPAT 0 +#include <w_lgammal_main.c> diff --git a/math/w_lgammal_main.c b/math/w_lgammal_main.c new file mode 100644 index 0000000000..c3c41f6fff --- /dev/null +++ b/math/w_lgammal_main.c @@ -0,0 +1,51 @@ +/* w_lgammal.c -- long double version of w_lgamma.c. + * Conversion to long double by Ulrich Drepper, + * Cygnus Support, drepper@cygnus.com. + */ + +/* + * ==================================================== + * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved. + * + * Developed at SunPro, a Sun Microsystems, Inc. business. + * Permission to use, copy, modify, and distribute this + * software is freely granted, provided that this notice + * is preserved. + * ==================================================== + */ + +/* long double lgammal(long double x) + * Return the logarithm of the Gamma function of x. + * + * Method: call __ieee754_lgammal_r + */ + +#include <math.h> +#include <math_private.h> + +#include <lgamma-compat.h> + +#if BUILD_LGAMMA +long double +LGFUNC (__lgammal) (long double x) +{ + long double y = CALL_LGAMMA (long double, __ieee754_lgammal_r, x); + if(__builtin_expect(!isfinite(y), 0) + && isfinite(x) && _LIB_VERSION != _IEEE_) + return __kernel_standard_l(x, x, + __floorl(x)==x&&x<=0.0L + ? 215 /* lgamma pole */ + : 214); /* lgamma overflow */ + + return y; +} +# if USE_AS_COMPAT +compat_symbol (libm, __lgammal_compat, lgammal, LGAMMA_OLD_VER); +# else +versioned_symbol (libm, __lgammal, lgammal, LGAMMA_NEW_VER); +# endif +# if GAMMA_ALIAS +strong_alias (LGFUNC (__lgammal), __gammal) +weak_alias (__gammal, gammal) +# endif +#endif diff --git a/sysdeps/ia64/fpu/lgamma-compat.h b/sysdeps/ia64/fpu/lgamma-compat.h new file mode 100644 index 0000000000..f9748393b7 --- /dev/null +++ b/sysdeps/ia64/fpu/lgamma-compat.h @@ -0,0 +1,42 @@ +/* ABI compatibility for lgamma functions. ia64 version. + Copyright (C) 2015 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, see + <http://www.gnu.org/licenses/>. */ + +#ifndef IA64_LGAMMA_COMPAT_H +#define IA64_LGAMMA_COMPAT_H 1 + +#include <math/lgamma-compat.h> + +#undef LGFUNC +#if USE_AS_COMPAT +# define LGFUNC(FUNC) __ ## FUNC ## _compat +#else +# define LGFUNC(FUNC) __ieee754_ ## FUNC +#endif + +#undef CALL_LGAMMA +#define CALL_LGAMMA(TYPE, FUNC, ARG) \ + ({ \ + TYPE lgamma_tmp; \ + extern int __signgam, signgam; \ + lgamma_tmp = FUNC ((ARG), &__signgam, sizeof (__signgam)); \ + if (USE_AS_COMPAT) \ + signgam = __signgam; \ + lgamma_tmp; \ + }) + +#endif /* lgamma-compat.h. */ diff --git a/sysdeps/ia64/fpu/w_lgamma.c b/sysdeps/ia64/fpu/w_lgamma_main.c index 2006d3e806..6deffad987 100644 --- a/sysdeps/ia64/fpu/w_lgamma.c +++ b/sysdeps/ia64/fpu/w_lgamma_main.c @@ -53,28 +53,21 @@ #include "libm_support.h" +#include <lgamma-compat.h> extern double __libm_lgamma(double /*x*/, int* /*signgam*/, int /*signgamsz*/); -double __ieee754_lgamma(double x) +double LGFUNC (lgamma) (double x) { -#ifdef __POSIX__ - extern int signgam; -#else - int signgam; -#endif - return __libm_lgamma(x, &signgam, sizeof(signgam)); + return CALL_LGAMMA (double, __libm_lgamma, x); } -weak_alias (__ieee754_lgamma, lgamma) - -double __ieee754_gamma(double x) -{ -#ifdef __POSIX__ - extern int signgam; +#if USE_AS_COMPAT +compat_symbol (libm, __lgammaf_compat, lgammaf, LGAMMA_OLD_VER); #else - int signgam; +versioned_symbol (libm, __ieee754_lgammaf, lgammaf, LGAMMA_NEW_VER); +#endif +#if GAMMA_ALIAS +strong_alias (LGFUNC (lgammaf), __ieee754_gammaf) +weak_alias (__ieee754_gammaf, gammaf) #endif - return __libm_lgamma(x, &signgam, sizeof(signgam)); -} -weak_alias (__ieee754_gamma, gamma) diff --git a/sysdeps/ia64/fpu/w_lgammaf.c b/sysdeps/ia64/fpu/w_lgammaf_main.c index cd0b4f6666..d8e86a6f25 100644 --- a/sysdeps/ia64/fpu/w_lgammaf.c +++ b/sysdeps/ia64/fpu/w_lgammaf_main.c @@ -53,28 +53,21 @@ #include "libm_support.h" +#include <lgamma-compat.h> extern float __libm_lgammaf(float /*x*/, int* /*signgam*/, int /*signgamsz*/); -float __ieee754_lgammaf(float x) +float LGFUNC (lgammaf) (float x) { -#ifdef __POSIX__ - extern int signgam; -#else - int signgam; -#endif - return __libm_lgammaf(x, &signgam, sizeof(signgam)); + return CALL_LGAMMA (float, __libm_lgammaf, x); } -weak_alias (__ieee754_lgammaf, lgammaf) - -float __ieee754_gammaf(float x) -{ -#ifdef __POSIX__ - extern int signgam; +#if USE_AS_COMPAT +compat_symbol (libm, __lgammaf_compat, lgammaf, LGAMMA_OLD_VER); #else - int signgam; +versioned_symbol (libm, __ieee754_lgammaf, lgammaf, LGAMMA_NEW_VER); #endif - return __libm_lgammaf(x, &signgam, sizeof(signgam)); -} +#if GAMMA_ALIAS +strong_alias (LGFUNC (lgammaf), __ieee754_gammaf) weak_alias (__ieee754_gammaf, gammaf) +#endif diff --git a/sysdeps/ia64/fpu/w_lgammal.c b/sysdeps/ia64/fpu/w_lgammal_main.c index e3885296eb..5c73f33430 100644 --- a/sysdeps/ia64/fpu/w_lgammal.c +++ b/sysdeps/ia64/fpu/w_lgammal_main.c @@ -55,25 +55,18 @@ extern double __libm_lgammal(long double /*x*/, int* /*signgam*/, int /*signgamsz*/); +#include <lgamma-compat.h> -long double __ieee754_lgammal(long double x) +long double LGFUNC (lgammal) (long double x) { -#ifdef __POSIX__ - extern int signgam; -#else - int signgam; -#endif - return __libm_lgammal(x, &signgam, sizeof(signgam)); + return CALL_LGAMMA (long double, __libm_lgammal, x); } -weak_alias (__ieee754_lgammal, lgammal) - -long double __ieee754_gammal(long double x) -{ -#ifdef __POSIX__ - extern int signgam; +#if USE_AS_COMPAT +compat_symbol (libm, __lgammal_compat, lgammal, LGAMMA_OLD_VER); #else - int signgam; +versioned_symbol (libm, __ieee754_lgammal, lgammal, LGAMMA_NEW_VER); #endif - return __libm_lgammal(x, &signgam, sizeof(signgam)); -} +#if GAMMA_ALIAS +strong_alias (LGFUNC (lgammal), __ieee754_gammal) weak_alias (__ieee754_gammal, gammal) +#endif diff --git a/sysdeps/ieee754/ldbl-opt/w_lgamma.c b/sysdeps/ieee754/ldbl-opt/w_lgamma.c deleted file mode 100644 index ef801c5505..0000000000 --- a/sysdeps/ieee754/ldbl-opt/w_lgamma.c +++ /dev/null @@ -1,6 +0,0 @@ -#include <math_ldbl_opt.h> -#include <math/w_lgamma.c> -#if LONG_DOUBLE_COMPAT(libm, GLIBC_2_0) -compat_symbol (libm, __lgamma, lgammal, GLIBC_2_0); -compat_symbol (libm, __gamma, gammal, GLIBC_2_0); -#endif diff --git a/sysdeps/ieee754/ldbl-opt/w_lgamma_compat.c b/sysdeps/ieee754/ldbl-opt/w_lgamma_compat.c new file mode 100644 index 0000000000..f268e65a88 --- /dev/null +++ b/sysdeps/ieee754/ldbl-opt/w_lgamma_compat.c @@ -0,0 +1,7 @@ +#include <math_ldbl_opt.h> +#include <math/w_lgamma_compat.c> +#if LONG_DOUBLE_COMPAT(libm, GLIBC_2_0) +strong_alias (__lgamma_compat, __lgammal_dbl_compat) +compat_symbol (libm, __lgammal_dbl_compat, lgammal, GLIBC_2_0); +compat_symbol (libm, __gamma, gammal, GLIBC_2_0); +#endif diff --git a/sysdeps/ieee754/ldbl-opt/w_lgamma_compatl.c b/sysdeps/ieee754/ldbl-opt/w_lgamma_compatl.c new file mode 100644 index 0000000000..f60b3d7bcf --- /dev/null +++ b/sysdeps/ieee754/ldbl-opt/w_lgamma_compatl.c @@ -0,0 +1,11 @@ +#include <math_ldbl_opt.h> +#undef weak_alias +#define weak_alias(n,a) +#define USE_AS_COMPAT 1 +#include <math/lgamma-compat.h> +#undef LGAMMA_OLD_VER +#define LGAMMA_OLD_VER LONG_DOUBLE_COMPAT_VERSION +#include <math/w_lgamma_compatl.c> +#if GAMMA_ALIAS +long_double_symbol (libm, __gammal, gammal); +#endif diff --git a/sysdeps/ieee754/ldbl-opt/w_lgammal.c b/sysdeps/ieee754/ldbl-opt/w_lgammal.c deleted file mode 100644 index 9de7ec8f7f..0000000000 --- a/sysdeps/ieee754/ldbl-opt/w_lgammal.c +++ /dev/null @@ -1,6 +0,0 @@ -#include <math_ldbl_opt.h> -#undef weak_alias -#define weak_alias(n,a) -#include <math/w_lgammal.c> -long_double_symbol (libm, __lgammal, lgammal); -long_double_symbol (libm, __gammal, gammal); diff --git a/sysdeps/ieee754/s_signgam.c b/sysdeps/ieee754/s_signgam.c index ee207d6505..9af3a75f1e 100644 --- a/sysdeps/ieee754/s_signgam.c +++ b/sysdeps/ieee754/s_signgam.c @@ -1,3 +1,4 @@ #include <math.h> #include <math_private.h> -int signgam; +int __signgam = 0; +weak_alias (__signgam, signgam) diff --git a/sysdeps/nacl/libm.abilist b/sysdeps/nacl/libm.abilist index d1fd77ab7f..055b0b25ba 100644 --- a/sysdeps/nacl/libm.abilist +++ b/sysdeps/nacl/libm.abilist @@ -367,3 +367,8 @@ GLIBC_2.22 y1l F GLIBC_2.22 yn F GLIBC_2.22 ynf F GLIBC_2.22 ynl F +GLIBC_2.23 GLIBC_2.23 A +GLIBC_2.23 __signgam D 0x4 +GLIBC_2.23 lgamma F +GLIBC_2.23 lgammaf F +GLIBC_2.23 lgammal F diff --git a/sysdeps/unix/sysv/linux/aarch64/libm.abilist b/sysdeps/unix/sysv/linux/aarch64/libm.abilist index ead20e1c6d..2123113e25 100644 --- a/sysdeps/unix/sysv/linux/aarch64/libm.abilist +++ b/sysdeps/unix/sysv/linux/aarch64/libm.abilist @@ -398,3 +398,8 @@ GLIBC_2.18 GLIBC_2.18 A GLIBC_2.18 __issignaling F GLIBC_2.18 __issignalingf F GLIBC_2.18 __issignalingl F +GLIBC_2.23 GLIBC_2.23 A +GLIBC_2.23 __signgam D 0x4 +GLIBC_2.23 lgamma F +GLIBC_2.23 lgammaf F +GLIBC_2.23 lgammal F diff --git a/sysdeps/unix/sysv/linux/alpha/libm.abilist b/sysdeps/unix/sysv/linux/alpha/libm.abilist index 80838d3196..611dfe1aa5 100644 --- a/sysdeps/unix/sysv/linux/alpha/libm.abilist +++ b/sysdeps/unix/sysv/linux/alpha/libm.abilist @@ -408,6 +408,11 @@ GLIBC_2.2 feraiseexcept F GLIBC_2.2 fesetenv F GLIBC_2.2 fesetexceptflag F GLIBC_2.2 feupdateenv F +GLIBC_2.23 GLIBC_2.23 A +GLIBC_2.23 __signgam D 0x4 +GLIBC_2.23 lgamma F +GLIBC_2.23 lgammaf F +GLIBC_2.23 lgammal F GLIBC_2.3.4 GLIBC_2.3.4 A GLIBC_2.3.4 __c1_cabsf F GLIBC_2.3.4 __c1_cacosf F diff --git a/sysdeps/unix/sysv/linux/arm/libm.abilist b/sysdeps/unix/sysv/linux/arm/libm.abilist index be96e9594b..e65e2309cd 100644 --- a/sysdeps/unix/sysv/linux/arm/libm.abilist +++ b/sysdeps/unix/sysv/linux/arm/libm.abilist @@ -56,6 +56,11 @@ GLIBC_2.15 __ynf_finite F GLIBC_2.18 GLIBC_2.18 A GLIBC_2.18 __issignaling F GLIBC_2.18 __issignalingf F +GLIBC_2.23 GLIBC_2.23 A +GLIBC_2.23 __signgam D 0x4 +GLIBC_2.23 lgamma F +GLIBC_2.23 lgammaf F +GLIBC_2.23 lgammal F GLIBC_2.4 GLIBC_2.4 A GLIBC_2.4 _LIB_VERSION D 0x4 GLIBC_2.4 __clog10 F diff --git a/sysdeps/unix/sysv/linux/hppa/libm.abilist b/sysdeps/unix/sysv/linux/hppa/libm.abilist index 3304e6ec8c..9b7f40a4c9 100644 --- a/sysdeps/unix/sysv/linux/hppa/libm.abilist +++ b/sysdeps/unix/sysv/linux/hppa/libm.abilist @@ -368,5 +368,10 @@ GLIBC_2.2 y1l F GLIBC_2.2 yn F GLIBC_2.2 ynf F GLIBC_2.2 ynl F +GLIBC_2.23 GLIBC_2.23 A +GLIBC_2.23 __signgam D 0x4 +GLIBC_2.23 lgamma F +GLIBC_2.23 lgammaf F +GLIBC_2.23 lgammal F GLIBC_2.4 GLIBC_2.4 A GLIBC_2.4 exp2l F diff --git a/sysdeps/unix/sysv/linux/i386/libm.abilist b/sysdeps/unix/sysv/linux/i386/libm.abilist index e049a678cd..78b542e935 100644 --- a/sysdeps/unix/sysv/linux/i386/libm.abilist +++ b/sysdeps/unix/sysv/linux/i386/libm.abilist @@ -410,4 +410,9 @@ GLIBC_2.2 feraiseexcept F GLIBC_2.2 fesetenv F GLIBC_2.2 fesetexceptflag F GLIBC_2.2 feupdateenv F +GLIBC_2.23 GLIBC_2.23 A +GLIBC_2.23 __signgam D 0x4 +GLIBC_2.23 lgamma F +GLIBC_2.23 lgammaf F +GLIBC_2.23 lgammal F GLIBC_2.4 GLIBC_2.4 A diff --git a/sysdeps/unix/sysv/linux/ia64/libm.abilist b/sysdeps/unix/sysv/linux/ia64/libm.abilist index 39eafb8ab0..6d4cc72e0e 100644 --- a/sysdeps/unix/sysv/linux/ia64/libm.abilist +++ b/sysdeps/unix/sysv/linux/ia64/libm.abilist @@ -339,4 +339,9 @@ GLIBC_2.2 ynl F GLIBC_2.2.3 GLIBC_2.2.3 A GLIBC_2.2.3 matherrf F GLIBC_2.2.3 matherrl F +GLIBC_2.23 GLIBC_2.23 A +GLIBC_2.23 __signgam D 0x4 +GLIBC_2.23 lgamma F +GLIBC_2.23 lgammaf F +GLIBC_2.23 lgammal F GLIBC_2.4 GLIBC_2.4 A diff --git a/sysdeps/unix/sysv/linux/m68k/coldfire/libm.abilist b/sysdeps/unix/sysv/linux/m68k/coldfire/libm.abilist index be96e9594b..e65e2309cd 100644 --- a/sysdeps/unix/sysv/linux/m68k/coldfire/libm.abilist +++ b/sysdeps/unix/sysv/linux/m68k/coldfire/libm.abilist @@ -56,6 +56,11 @@ GLIBC_2.15 __ynf_finite F GLIBC_2.18 GLIBC_2.18 A GLIBC_2.18 __issignaling F GLIBC_2.18 __issignalingf F +GLIBC_2.23 GLIBC_2.23 A +GLIBC_2.23 __signgam D 0x4 +GLIBC_2.23 lgamma F +GLIBC_2.23 lgammaf F +GLIBC_2.23 lgammal F GLIBC_2.4 GLIBC_2.4 A GLIBC_2.4 _LIB_VERSION D 0x4 GLIBC_2.4 __clog10 F diff --git a/sysdeps/unix/sysv/linux/m68k/m680x0/libm.abilist b/sysdeps/unix/sysv/linux/m68k/m680x0/libm.abilist index 48ce23e978..2d31935916 100644 --- a/sysdeps/unix/sysv/linux/m68k/m680x0/libm.abilist +++ b/sysdeps/unix/sysv/linux/m68k/m680x0/libm.abilist @@ -408,4 +408,9 @@ GLIBC_2.2 feraiseexcept F GLIBC_2.2 fesetenv F GLIBC_2.2 fesetexceptflag F GLIBC_2.2 feupdateenv F +GLIBC_2.23 GLIBC_2.23 A +GLIBC_2.23 __signgam D 0x4 +GLIBC_2.23 lgamma F +GLIBC_2.23 lgammaf F +GLIBC_2.23 lgammal F GLIBC_2.4 GLIBC_2.4 A diff --git a/sysdeps/unix/sysv/linux/microblaze/libm.abilist b/sysdeps/unix/sysv/linux/microblaze/libm.abilist index 15193f2039..149fd4f2be 100644 --- a/sysdeps/unix/sysv/linux/microblaze/libm.abilist +++ b/sysdeps/unix/sysv/linux/microblaze/libm.abilist @@ -367,3 +367,8 @@ GLIBC_2.18 y1l F GLIBC_2.18 yn F GLIBC_2.18 ynf F GLIBC_2.18 ynl F +GLIBC_2.23 GLIBC_2.23 A +GLIBC_2.23 __signgam D 0x4 +GLIBC_2.23 lgamma F +GLIBC_2.23 lgammaf F +GLIBC_2.23 lgammal F diff --git a/sysdeps/unix/sysv/linux/mips/mips32/libm.abilist b/sysdeps/unix/sysv/linux/mips/mips32/libm.abilist index b285c9b733..e599e82d6e 100644 --- a/sysdeps/unix/sysv/linux/mips/mips32/libm.abilist +++ b/sysdeps/unix/sysv/linux/mips/mips32/libm.abilist @@ -369,6 +369,11 @@ GLIBC_2.2 tgammal F GLIBC_2.2 trunc F GLIBC_2.2 truncf F GLIBC_2.2 truncl F +GLIBC_2.23 GLIBC_2.23 A +GLIBC_2.23 __signgam D 0x4 +GLIBC_2.23 lgamma F +GLIBC_2.23 lgammaf F +GLIBC_2.23 lgammal F GLIBC_2.4 GLIBC_2.4 A GLIBC_2.4 exp2l F _gp_disp _gp_disp A diff --git a/sysdeps/unix/sysv/linux/mips/mips64/libm.abilist b/sysdeps/unix/sysv/linux/mips/mips64/libm.abilist index ff42af1f9e..164ba55263 100644 --- a/sysdeps/unix/sysv/linux/mips/mips64/libm.abilist +++ b/sysdeps/unix/sysv/linux/mips/mips64/libm.abilist @@ -400,4 +400,9 @@ GLIBC_2.2 tgammal F GLIBC_2.2 trunc F GLIBC_2.2 truncf F GLIBC_2.2 truncl F +GLIBC_2.23 GLIBC_2.23 A +GLIBC_2.23 __signgam D 0x4 +GLIBC_2.23 lgamma F +GLIBC_2.23 lgammaf F +GLIBC_2.23 lgammal F GLIBC_2.4 GLIBC_2.4 A diff --git a/sysdeps/unix/sysv/linux/nios2/libm.abilist b/sysdeps/unix/sysv/linux/nios2/libm.abilist index dae4f5e4bd..ad02eff997 100644 --- a/sysdeps/unix/sysv/linux/nios2/libm.abilist +++ b/sysdeps/unix/sysv/linux/nios2/libm.abilist @@ -367,3 +367,8 @@ GLIBC_2.21 y1l F GLIBC_2.21 yn F GLIBC_2.21 ynf F GLIBC_2.21 ynl F +GLIBC_2.23 GLIBC_2.23 A +GLIBC_2.23 __signgam D 0x4 +GLIBC_2.23 lgamma F +GLIBC_2.23 lgammaf F +GLIBC_2.23 lgammal F diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libm.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libm.abilist index e18a51a5b7..5d2f263645 100644 --- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libm.abilist +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libm.abilist @@ -409,6 +409,11 @@ GLIBC_2.2 feraiseexcept F GLIBC_2.2 fesetenv F GLIBC_2.2 fesetexceptflag F GLIBC_2.2 feupdateenv F +GLIBC_2.23 GLIBC_2.23 A +GLIBC_2.23 __signgam D 0x4 +GLIBC_2.23 lgamma F +GLIBC_2.23 lgammaf F +GLIBC_2.23 lgammal F GLIBC_2.4 GLIBC_2.4 A GLIBC_2.4 __clog10l F GLIBC_2.4 __finitel F diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libm.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libm.abilist index 90bfd19e7d..8b5edb52a0 100644 --- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libm.abilist +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libm.abilist @@ -408,6 +408,11 @@ GLIBC_2.2 feraiseexcept F GLIBC_2.2 fesetenv F GLIBC_2.2 fesetexceptflag F GLIBC_2.2 feupdateenv F +GLIBC_2.23 GLIBC_2.23 A +GLIBC_2.23 __signgam D 0x4 +GLIBC_2.23 lgamma F +GLIBC_2.23 lgammaf F +GLIBC_2.23 lgammal F GLIBC_2.4 GLIBC_2.4 A GLIBC_2.4 __clog10l F GLIBC_2.4 __finitel F diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/libm-le.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/libm-le.abilist index df3457a70b..ee066837af 100644 --- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/libm-le.abilist +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/libm-le.abilist @@ -403,3 +403,8 @@ GLIBC_2.18 GLIBC_2.18 A GLIBC_2.18 __issignaling F GLIBC_2.18 __issignalingf F GLIBC_2.18 __issignalingl F +GLIBC_2.23 GLIBC_2.23 A +GLIBC_2.23 __signgam D 0x4 +GLIBC_2.23 lgamma F +GLIBC_2.23 lgammaf F +GLIBC_2.23 lgammal F diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/libm.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/libm.abilist index ee01f69a12..6c7fc9b4fc 100644 --- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/libm.abilist +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/libm.abilist @@ -84,6 +84,11 @@ GLIBC_2.18 GLIBC_2.18 A GLIBC_2.18 __issignaling F GLIBC_2.18 __issignalingf F GLIBC_2.18 __issignalingl F +GLIBC_2.23 GLIBC_2.23 A +GLIBC_2.23 __signgam D 0x4 +GLIBC_2.23 lgamma F +GLIBC_2.23 lgammaf F +GLIBC_2.23 lgammal F GLIBC_2.3 GLIBC_2.3 A GLIBC_2.3 _LIB_VERSION D 0x4 GLIBC_2.3 __clog10 F diff --git a/sysdeps/unix/sysv/linux/s390/s390-32/libm.abilist b/sysdeps/unix/sysv/linux/s390/s390-32/libm.abilist index e14605bbe7..039ed5c521 100644 --- a/sysdeps/unix/sysv/linux/s390/s390-32/libm.abilist +++ b/sysdeps/unix/sysv/linux/s390/s390-32/libm.abilist @@ -398,6 +398,11 @@ GLIBC_2.2 GLIBC_2.2 A GLIBC_2.2 fedisableexcept F GLIBC_2.2 feenableexcept F GLIBC_2.2 fegetexcept F +GLIBC_2.23 GLIBC_2.23 A +GLIBC_2.23 __signgam D 0x4 +GLIBC_2.23 lgamma F +GLIBC_2.23 lgammaf F +GLIBC_2.23 lgammal F GLIBC_2.4 GLIBC_2.4 A GLIBC_2.4 __clog10l F GLIBC_2.4 __finitel F diff --git a/sysdeps/unix/sysv/linux/s390/s390-64/libm.abilist b/sysdeps/unix/sysv/linux/s390/s390-64/libm.abilist index b5abd132f9..66c625daeb 100644 --- a/sysdeps/unix/sysv/linux/s390/s390-64/libm.abilist +++ b/sysdeps/unix/sysv/linux/s390/s390-64/libm.abilist @@ -396,6 +396,11 @@ GLIBC_2.2 y1l F GLIBC_2.2 yn F GLIBC_2.2 ynf F GLIBC_2.2 ynl F +GLIBC_2.23 GLIBC_2.23 A +GLIBC_2.23 __signgam D 0x4 +GLIBC_2.23 lgamma F +GLIBC_2.23 lgammaf F +GLIBC_2.23 lgammal F GLIBC_2.4 GLIBC_2.4 A GLIBC_2.4 __clog10l F GLIBC_2.4 __finitel F diff --git a/sysdeps/unix/sysv/linux/sh/libm.abilist b/sysdeps/unix/sysv/linux/sh/libm.abilist index 6fabd47dbb..93b84713d8 100644 --- a/sysdeps/unix/sysv/linux/sh/libm.abilist +++ b/sysdeps/unix/sysv/linux/sh/libm.abilist @@ -368,5 +368,10 @@ GLIBC_2.2 y1l F GLIBC_2.2 yn F GLIBC_2.2 ynf F GLIBC_2.2 ynl F +GLIBC_2.23 GLIBC_2.23 A +GLIBC_2.23 __signgam D 0x4 +GLIBC_2.23 lgamma F +GLIBC_2.23 lgammaf F +GLIBC_2.23 lgammal F GLIBC_2.4 GLIBC_2.4 A GLIBC_2.4 exp2l F diff --git a/sysdeps/unix/sysv/linux/sparc/sparc32/libm.abilist b/sysdeps/unix/sysv/linux/sparc/sparc32/libm.abilist index 2a5f5c7c91..d50ef4a920 100644 --- a/sysdeps/unix/sysv/linux/sparc/sparc32/libm.abilist +++ b/sysdeps/unix/sysv/linux/sparc/sparc32/libm.abilist @@ -400,6 +400,11 @@ GLIBC_2.2 feraiseexcept F GLIBC_2.2 fesetenv F GLIBC_2.2 fesetexceptflag F GLIBC_2.2 feupdateenv F +GLIBC_2.23 GLIBC_2.23 A +GLIBC_2.23 __signgam D 0x4 +GLIBC_2.23 lgamma F +GLIBC_2.23 lgammaf F +GLIBC_2.23 lgammal F GLIBC_2.4 GLIBC_2.4 A GLIBC_2.4 __clog10l F GLIBC_2.4 __finitel F diff --git a/sysdeps/unix/sysv/linux/sparc/sparc64/libm.abilist b/sysdeps/unix/sysv/linux/sparc/sparc64/libm.abilist index 80784c941a..b56add357b 100644 --- a/sysdeps/unix/sysv/linux/sparc/sparc64/libm.abilist +++ b/sysdeps/unix/sysv/linux/sparc/sparc64/libm.abilist @@ -399,4 +399,9 @@ GLIBC_2.2 y1l F GLIBC_2.2 yn F GLIBC_2.2 ynf F GLIBC_2.2 ynl F +GLIBC_2.23 GLIBC_2.23 A +GLIBC_2.23 __signgam D 0x4 +GLIBC_2.23 lgamma F +GLIBC_2.23 lgammaf F +GLIBC_2.23 lgammal F GLIBC_2.4 GLIBC_2.4 A diff --git a/sysdeps/unix/sysv/linux/tile/tilegx/tilegx32/libm.abilist b/sysdeps/unix/sysv/linux/tile/tilegx/tilegx32/libm.abilist index df50da5464..18b8d00bec 100644 --- a/sysdeps/unix/sysv/linux/tile/tilegx/tilegx32/libm.abilist +++ b/sysdeps/unix/sysv/linux/tile/tilegx/tilegx32/libm.abilist @@ -368,3 +368,8 @@ GLIBC_2.15 __ynf_finite F GLIBC_2.18 GLIBC_2.18 A GLIBC_2.18 __issignaling F GLIBC_2.18 __issignalingf F +GLIBC_2.23 GLIBC_2.23 A +GLIBC_2.23 __signgam D 0x4 +GLIBC_2.23 lgamma F +GLIBC_2.23 lgammaf F +GLIBC_2.23 lgammal F diff --git a/sysdeps/unix/sysv/linux/tile/tilegx/tilegx64/libm.abilist b/sysdeps/unix/sysv/linux/tile/tilegx/tilegx64/libm.abilist index df50da5464..18b8d00bec 100644 --- a/sysdeps/unix/sysv/linux/tile/tilegx/tilegx64/libm.abilist +++ b/sysdeps/unix/sysv/linux/tile/tilegx/tilegx64/libm.abilist @@ -368,3 +368,8 @@ GLIBC_2.15 __ynf_finite F GLIBC_2.18 GLIBC_2.18 A GLIBC_2.18 __issignaling F GLIBC_2.18 __issignalingf F +GLIBC_2.23 GLIBC_2.23 A +GLIBC_2.23 __signgam D 0x4 +GLIBC_2.23 lgamma F +GLIBC_2.23 lgammaf F +GLIBC_2.23 lgammal F diff --git a/sysdeps/unix/sysv/linux/tile/tilepro/libm.abilist b/sysdeps/unix/sysv/linux/tile/tilepro/libm.abilist index df50da5464..18b8d00bec 100644 --- a/sysdeps/unix/sysv/linux/tile/tilepro/libm.abilist +++ b/sysdeps/unix/sysv/linux/tile/tilepro/libm.abilist @@ -368,3 +368,8 @@ GLIBC_2.15 __ynf_finite F GLIBC_2.18 GLIBC_2.18 A GLIBC_2.18 __issignaling F GLIBC_2.18 __issignalingf F +GLIBC_2.23 GLIBC_2.23 A +GLIBC_2.23 __signgam D 0x4 +GLIBC_2.23 lgamma F +GLIBC_2.23 lgammaf F +GLIBC_2.23 lgammal F diff --git a/sysdeps/unix/sysv/linux/x86_64/64/libm.abilist b/sysdeps/unix/sysv/linux/x86_64/64/libm.abilist index a2cb7421f4..b911aff114 100644 --- a/sysdeps/unix/sysv/linux/x86_64/64/libm.abilist +++ b/sysdeps/unix/sysv/linux/x86_64/64/libm.abilist @@ -399,4 +399,9 @@ GLIBC_2.2.5 y1l F GLIBC_2.2.5 yn F GLIBC_2.2.5 ynf F GLIBC_2.2.5 ynl F +GLIBC_2.23 GLIBC_2.23 A +GLIBC_2.23 __signgam D 0x4 +GLIBC_2.23 lgamma F +GLIBC_2.23 lgammaf F +GLIBC_2.23 lgammal F GLIBC_2.4 GLIBC_2.4 A diff --git a/sysdeps/unix/sysv/linux/x86_64/x32/libm.abilist b/sysdeps/unix/sysv/linux/x86_64/x32/libm.abilist index 4d37717671..168c0d87cf 100644 --- a/sysdeps/unix/sysv/linux/x86_64/x32/libm.abilist +++ b/sysdeps/unix/sysv/linux/x86_64/x32/libm.abilist @@ -398,3 +398,8 @@ GLIBC_2.18 GLIBC_2.18 A GLIBC_2.18 __issignaling F GLIBC_2.18 __issignalingf F GLIBC_2.18 __issignalingl F +GLIBC_2.23 GLIBC_2.23 A +GLIBC_2.23 __signgam D 0x4 +GLIBC_2.23 lgamma F +GLIBC_2.23 lgammaf F +GLIBC_2.23 lgammal F |