diff options
author | H.J. Lu <hjl.tools@gmail.com> | 2024-12-05 08:05:04 +0800 |
---|---|---|
committer | H.J. Lu <hjl.tools@gmail.com> | 2024-12-12 16:17:54 +0800 |
commit | 6bc301672bfbde618d4ec02e51e6e2cbadd4ac1e (patch) | |
tree | 2096ea0fbdc112af437303ca794ec851df5135e3 /math | |
parent | 950891b5e7a5307272da3e632832ac9da4c9eeec (diff) | |
download | glibc-6bc301672bfbde618d4ec02e51e6e2cbadd4ac1e.zip glibc-6bc301672bfbde618d4ec02e51e6e2cbadd4ac1e.tar.gz glibc-6bc301672bfbde618d4ec02e51e6e2cbadd4ac1e.tar.bz2 |
math: Remove __XXX math functions from installed math.h [BZ #32418]
Since libm doesn't export __XXX math functions, don't declare them in
the installed math.h by adding <bits/mathcalls-macros.h> to declare
__XXX math functions internally for glibc build. This fixes BZ #32418.
Signed-off-by: H.J. Lu <hjl.tools@gmail.com>
Reviewed-by: Sam James <sam@gentoo.org>
Diffstat (limited to 'math')
-rw-r--r-- | math/Makefile | 1 | ||||
-rw-r--r-- | math/bits/mathcalls-macros.h | 48 | ||||
-rw-r--r-- | math/math.h | 37 |
3 files changed, 50 insertions, 36 deletions
diff --git a/math/Makefile b/math/Makefile index 6f0d210..56cb5d1 100644 --- a/math/Makefile +++ b/math/Makefile @@ -35,6 +35,7 @@ headers := \ bits/long-double.h \ bits/math-vector.h \ bits/mathcalls-helper-functions.h \ + bits/mathcalls-macros.h \ bits/mathcalls-narrow.h \ bits/mathcalls.h \ bits/mathdef.h \ diff --git a/math/bits/mathcalls-macros.h b/math/bits/mathcalls-macros.h new file mode 100644 index 0000000..56d6d4d --- /dev/null +++ b/math/bits/mathcalls-macros.h @@ -0,0 +1,48 @@ +/* Macros for math function declarations. + Copyright (C) 2024 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 + <https://www.gnu.org/licenses/>. */ + +#define __SIMD_DECL(function) __CONCAT (__DECL_SIMD_, function) + +#define __MATHCALL_VEC(function, suffix, args) \ + __SIMD_DECL (__MATH_PRECNAME (function, suffix)) \ + __MATHCALL (function, suffix, args) + +#define __MATHDECL_VEC(type, function,suffix, args) \ + __SIMD_DECL (__MATH_PRECNAME (function, suffix)) \ + __MATHDECL(type, function,suffix, args) + +#define __MATHCALL(function,suffix, args) \ + __MATHDECL (_Mdouble_,function,suffix, args) +#define __MATHDECL(type, function,suffix, args) \ + __MATHDECL_1(type, function,suffix, args); \ + __MATHDECL_1(type, __CONCAT(__,function),suffix, args) +#define __MATHCALLX(function,suffix, args, attrib) \ + __MATHDECLX (_Mdouble_,function,suffix, args, attrib) +#define __MATHDECLX(type, function,suffix, args, attrib) \ + __MATHDECL_1(type, function,suffix, args) __attribute__ (attrib); +#define __MATHDECL_1_IMPL(type, function, suffix, args) \ + extern type __MATH_PRECNAME(function,suffix) args __THROW +#define __MATHDECL_1(type, function, suffix, args) \ + __MATHDECL_1_IMPL(type, function, suffix, args) +/* Ignore the alias by default. The alias is only useful with + redirections. */ +#define __MATHDECL_ALIAS(type, function, suffix, args, alias) \ + __MATHDECL_1(type, function, suffix, args) + +#define __MATHREDIR(type, function, suffix, args, to) \ + extern type __REDIRECT_NTH (__MATH_PRECNAME (function, suffix), args, to) diff --git a/math/math.h b/math/math.h index 1e300c4..599ca3a 100644 --- a/math/math.h +++ b/math/math.h @@ -268,42 +268,7 @@ enum }; #endif -/* The file <bits/mathcalls.h> contains the prototypes for all the - actual math functions. These macros are used for those prototypes, - so we can easily declare each function as both `name' and `__name', - and can declare the float versions `namef' and `__namef'. */ - -#define __SIMD_DECL(function) __CONCAT (__DECL_SIMD_, function) - -#define __MATHCALL_VEC(function, suffix, args) \ - __SIMD_DECL (__MATH_PRECNAME (function, suffix)) \ - __MATHCALL (function, suffix, args) - -#define __MATHDECL_VEC(type, function,suffix, args) \ - __SIMD_DECL (__MATH_PRECNAME (function, suffix)) \ - __MATHDECL(type, function,suffix, args) - -#define __MATHCALL(function,suffix, args) \ - __MATHDECL (_Mdouble_,function,suffix, args) -#define __MATHDECL(type, function,suffix, args) \ - __MATHDECL_1(type, function,suffix, args); \ - __MATHDECL_1(type, __CONCAT(__,function),suffix, args) -#define __MATHCALLX(function,suffix, args, attrib) \ - __MATHDECLX (_Mdouble_,function,suffix, args, attrib) -#define __MATHDECLX(type, function,suffix, args, attrib) \ - __MATHDECL_1(type, function,suffix, args) __attribute__ (attrib); \ - __MATHDECL_1(type, __CONCAT(__,function),suffix, args) __attribute__ (attrib) -#define __MATHDECL_1_IMPL(type, function, suffix, args) \ - extern type __MATH_PRECNAME(function,suffix) args __THROW -#define __MATHDECL_1(type, function, suffix, args) \ - __MATHDECL_1_IMPL(type, function, suffix, args) -/* Ignore the alias by default. The alias is only useful with - redirections. */ -#define __MATHDECL_ALIAS(type, function, suffix, args, alias) \ - __MATHDECL_1(type, function, suffix, args) - -#define __MATHREDIR(type, function, suffix, args, to) \ - extern type __REDIRECT_NTH (__MATH_PRECNAME (function, suffix), args, to) +#include <bits/mathcalls-macros.h> #define _Mdouble_ double #define __MATH_PRECNAME(name,r) __CONCAT(name,r) |