]> sourceware.org Git - glibc.git/commitdiff
Fix i686 build with GCC 9.
authorJoseph Myers <joseph@codesourcery.com>
Mon, 12 Nov 2018 18:47:05 +0000 (18:47 +0000)
committerJoseph Myers <joseph@codesourcery.com>
Mon, 12 Nov 2018 18:47:05 +0000 (18:47 +0000)
This patch fixes the glibc build for i686 with current mainline GCC,
where there are warnings about inconsistent attributes for aliases in
certain files defining libm IFUNCs.

In three of the files, the aliases were defined in terms of internal
symbols such as __sinf, and copied attributes from file-local
declarations of those functions which lacked the nothrow attribute.
Since the nothrow attribute is present on the declarations from
<math.h> (which include declarations of those __-prefixed functions),
the natural fix was to include <math.h> in those files, replacing the
local declarations.

In the other three files, a more complicated __hidden_ver1 call was
involved in the warnings.  <math.h> has not been included at this
point and, furthermore, it is included indirectly only later in the
source file after macros have been defined to remap a function name
therein.  So there isn't an obvious declaration from which to copy the
attribute and it seems simplest and safest just to add __THROW to the
hidden_ver1 calls.

Tested for i686 (build-many-glibcs.py compilers build for
x86_64-linux-gnu with GCC mainline; full testsuite run with GCC 7).

* sysdeps/i386/i686/fpu/multiarch/e_expf.c [SHARED]: Use __THROW
with __hidden_ver1 call.
* sysdeps/i386/i686/fpu/multiarch/e_log2f.c [SHARED]: Likewise.
* sysdeps/i386/i686/fpu/multiarch/e_logf.c [SHARED]: Likewise.
* sysdeps/i386/i686/fpu/multiarch/s_cosf.c: Include <math.h>.
(__cosf): Do not declare here.
* sysdeps/i386/i686/fpu/multiarch/s_sincosf.c: Include <math.h>.
(__sincosf): Do not declare here.
* sysdeps/i386/i686/fpu/multiarch/s_sinf.c: Include <math.h>.
(__sinf): Do not declare here.

ChangeLog
sysdeps/i386/i686/fpu/multiarch/e_expf.c
sysdeps/i386/i686/fpu/multiarch/e_log2f.c
sysdeps/i386/i686/fpu/multiarch/e_logf.c
sysdeps/i386/i686/fpu/multiarch/s_cosf.c
sysdeps/i386/i686/fpu/multiarch/s_sincosf.c
sysdeps/i386/i686/fpu/multiarch/s_sinf.c

index c85af69b14a6ac6a01979ebde5d986d7a696f10d..fd9ba11e6f18f50f6926bad356b476810d8e40b1 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,16 @@
 2018-11-12  Joseph Myers  <joseph@codesourcery.com>
 
+       * sysdeps/i386/i686/fpu/multiarch/e_expf.c [SHARED]: Use __THROW
+       with __hidden_ver1 call.
+       * sysdeps/i386/i686/fpu/multiarch/e_log2f.c [SHARED]: Likewise.
+       * sysdeps/i386/i686/fpu/multiarch/e_logf.c [SHARED]: Likewise.
+       * sysdeps/i386/i686/fpu/multiarch/s_cosf.c: Include <math.h>.
+       (__cosf): Do not declare here.
+       * sysdeps/i386/i686/fpu/multiarch/s_sincosf.c: Include <math.h>.
+       (__sincosf): Do not declare here.
+       * sysdeps/i386/i686/fpu/multiarch/s_sinf.c: Include <math.h>.
+       (__sinf): Do not declare here.
+
        * sysdeps/ia64/fpu/sfp-machine.h (__LITTLE_ENDIAN): Remove.
        (__BIG_ENDIAN): Likewise.
        (__BYTE_ORDER): Likewise.
index 1f7c35701ba68f7eaf3c5d1e3cb8615aa5898be9..d11ca309a749453a847e3b0bc7bdc7f165534549 100644 (file)
@@ -26,7 +26,7 @@ libc_ifunc_redirected (__redirect_expf, __expf, IFUNC_SELECTOR ());
 #include <libm-alias-float.h>
 #ifdef SHARED
 __hidden_ver1 (__expf_ia32, __GI___expf, __redirect_expf)
-  __attribute__ ((visibility ("hidden")));
+  __attribute__ ((visibility ("hidden"))) __THROW;
 
 # include <shlib-compat.h>
 versioned_symbol (libm, __expf, expf, GLIBC_2_27);
index 3dacaa609e8325eb2c174f5f85944da37a6aae6b..9c115366045a5cd0acd0b6dc2baa4cc464c21922 100644 (file)
@@ -26,7 +26,7 @@ libc_ifunc_redirected (__redirect_log2f, __log2f, IFUNC_SELECTOR ());
 #include <libm-alias-float.h>
 #ifdef SHARED
 __hidden_ver1 (__log2f_ia32, __GI___log2f, __redirect_log2f)
-  __attribute__ ((visibility ("hidden")));
+  __attribute__ ((visibility ("hidden"))) __THROW;
 
 # include <shlib-compat.h>
 versioned_symbol (libm, __log2f, log2f, GLIBC_2_27);
index 1ce90e2e054c855f230dcf2f806951890fc93681..070e8b7175055e2faf70c0f92340ae7bd2d60c51 100644 (file)
@@ -26,7 +26,7 @@ libc_ifunc_redirected (__redirect_logf, __logf, IFUNC_SELECTOR ());
 #include <libm-alias-float.h>
 #ifdef SHARED
 __hidden_ver1 (__logf_ia32, __GI___logf, __redirect_logf)
-  __attribute__ ((visibility ("hidden")));
+  __attribute__ ((visibility ("hidden"))) __THROW;
 
 # include <shlib-compat.h>
 versioned_symbol (libm, __logf, logf, GLIBC_2_27);
index a4556a478d16974a273f94bd6a3d125209bee1b1..52951186cce2920e1f01888136e78f9711ca6d75 100644 (file)
 
 #include <init-arch.h>
 #include <libm-alias-float.h>
+#include <math.h>
 
 extern float __cosf_sse2 (float);
 extern float __cosf_ia32 (float);
-float __cosf (float);
 
 libm_ifunc (__cosf, HAS_CPU_FEATURE (SSE2) ? __cosf_sse2 : __cosf_ia32);
 libm_alias_float (__cos, cos);
index 5f21f5c0eda20fd1e7f5ffb43301e41624f2110f..164c97ba7b1b6e63b60c4cfb98262ff52a3d1a47 100644 (file)
 
 #include <init-arch.h>
 #include <libm-alias-float.h>
+#include <math.h>
 
 extern void __sincosf_sse2 (float, float *, float *);
 extern void __sincosf_ia32 (float, float *, float *);
-void __sincosf (float, float *, float *);
 
 libm_ifunc (__sincosf,
            HAS_CPU_FEATURE (SSE2) ? __sincosf_sse2 : __sincosf_ia32);
index 80a7ffaa1e36b4923cb3c74324744c83998140c8..c69976b2ec01f2cb8590a921adc17d070fd9e5f4 100644 (file)
 
 #include <init-arch.h>
 #include <libm-alias-float.h>
+#include <math.h>
 
 extern float __sinf_sse2 (float);
 extern float __sinf_ia32 (float);
-float __sinf (float);
 
 libm_ifunc (__sinf, HAS_CPU_FEATURE (SSE2) ? __sinf_sse2 : __sinf_ia32);
 libm_alias_float (__sin, sin);
This page took 0.07191 seconds and 5 git commands to generate.