diff options
author | Joseph Myers <joseph@codesourcery.com> | 2015-11-20 22:49:59 +0000 |
---|---|---|
committer | Joseph Myers <joseph@codesourcery.com> | 2015-11-20 22:49:59 +0000 |
commit | d709042a6e5ab3c360280faad6f9538a34dc8eea (patch) | |
tree | 0ae5aa2833076a22ae056d840a75ea83cd77aac1 /sysdeps | |
parent | 8c873bf0190740ac1102e13ff7aeb6c08048abfd (diff) | |
download | glibc-d709042a6e5ab3c360280faad6f9538a34dc8eea.zip glibc-d709042a6e5ab3c360280faad6f9538a34dc8eea.tar.gz glibc-d709042a6e5ab3c360280faad6f9538a34dc8eea.tar.bz2 |
Fix lgamma setting signgam for ISO C (bug 15421).
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.
Diffstat (limited to 'sysdeps')
36 files changed, 225 insertions, 62 deletions
diff --git a/sysdeps/ia64/fpu/lgamma-compat.h b/sysdeps/ia64/fpu/lgamma-compat.h new file mode 100644 index 0000000..f974839 --- /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 2006d3e..6deffad 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 cd0b4f6..d8e86a6 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 e388529..5c73f33 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 ef801c5..0000000 --- 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 0000000..f268e65 --- /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 0000000..f60b3d7 --- /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 9de7ec8..0000000 --- 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 ee207d6..9af3a75 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 d1fd77a..055b0b2 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 ead20e1..2123113 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 80838d3..611dfe1 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 be96e95..e65e230 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 3304e6e..9b7f40a 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 e049a67..78b542e 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 39eafb8..6d4cc72 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 be96e95..e65e230 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 48ce23e..2d31935 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 15193f2..149fd4f 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 b285c9b..e599e82 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 ff42af1..164ba55 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 dae4f5e..ad02eff 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 e18a51a..5d2f263 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 90bfd19..8b5edb5 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 df3457a..ee06683 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 ee01f69..6c7fc9b 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 e14605b..039ed5c 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 b5abd13..66c625d 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 6fabd47..93b8471 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 2a5f5c7..d50ef4a 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 80784c9..b56add3 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 df50da5..18b8d00 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 df50da5..18b8d00 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 df50da5..18b8d00 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 a2cb742..b911aff 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 4d37717..168c0d8 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 |