From 22bb992d51903bc8cd5f67a207d00e3a6aa8e1a9 Mon Sep 17 00:00:00 2001 From: Jakub Jelinek Date: Wed, 2 Sep 2009 19:43:04 -0700 Subject: [PATCH] Fix strstr/strcasestr/fma/fmaf on x86_64. --- ChangeLog | 11 +++++++++++ sysdeps/x86_64/multiarch/s_fma.c | 4 ++-- sysdeps/x86_64/multiarch/s_fmaf.c | 4 ++-- sysdeps/x86_64/multiarch/strcasestr-c.c | 3 ++- sysdeps/x86_64/multiarch/strstr-c.c | 3 ++- 5 files changed, 19 insertions(+), 6 deletions(-) diff --git a/ChangeLog b/ChangeLog index 0812312f3f..ef087c7944 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,14 @@ +2009-09-02 Jakub Jelinek + + * sysdeps/x86_64/multiarch/strstr-c.c (__strstr_sse42, __strstr_sse2): + Add attribute_hidden. + * sysdeps/x86_64/multiarch/strcasestr-c.c (__strcasestr_sse42, + __strcasestr_sse2): Likewise. + * sysdeps/x86_64/multiarch/s_fma.c (__fma_sse2): Add attribute_hidden. + (__fma_fma): Make static. + * sysdeps/x86_64/multiarch/s_fmaf.c (__fmaf_sse2): Add attribute_hidden. + (__fmaf_fma): Make static. + 2009-08-31 Andreas Schwab * libio/wfileops.c (_IO_wfile_seekoff): Remove dead code and diff --git a/sysdeps/x86_64/multiarch/s_fma.c b/sysdeps/x86_64/multiarch/s_fma.c index 40601e9a68..cfecf9b41d 100644 --- a/sysdeps/x86_64/multiarch/s_fma.c +++ b/sysdeps/x86_64/multiarch/s_fma.c @@ -24,10 +24,10 @@ #ifdef HAVE_AVX_SUPPORT -extern double __fma_sse2 (double x, double y, double z); +extern double __fma_sse2 (double x, double y, double z) attribute_hidden; -double +static double __fma_fma (double x, double y, double z) { asm ("vfmadd213sd %3, %2, %0" : "=x" (x) : "0" (x), "x" (y), "xm" (z)); diff --git a/sysdeps/x86_64/multiarch/s_fmaf.c b/sysdeps/x86_64/multiarch/s_fmaf.c index f3d37f8f4a..de1c4b6f41 100644 --- a/sysdeps/x86_64/multiarch/s_fmaf.c +++ b/sysdeps/x86_64/multiarch/s_fmaf.c @@ -23,10 +23,10 @@ #ifdef HAVE_AVX_SUPPORT -extern float __fmaf_sse2 (float x, float y, float z); +extern float __fmaf_sse2 (float x, float y, float z) attribute_hidden; -float +static float __fmaf_fma (float x, float y, float z) { asm ("vfmadd213ss %3, %2, %0" : "=x" (x) : "0" (x), "x" (y), "xm" (z)); diff --git a/sysdeps/x86_64/multiarch/strcasestr-c.c b/sysdeps/x86_64/multiarch/strcasestr-c.c index e6879531bc..3cb5557b67 100644 --- a/sysdeps/x86_64/multiarch/strcasestr-c.c +++ b/sysdeps/x86_64/multiarch/strcasestr-c.c @@ -7,7 +7,8 @@ #include "string/strcasestr.c" -extern char *__strcasestr_sse42 (const char *, const char *); +extern char *__strcasestr_sse42 (const char *, const char *) attribute_hidden; +extern __typeof (__strcasestr_sse2) __strcasestr_sse2 attribute_hidden; #if 1 libc_ifunc (__strcasestr, diff --git a/sysdeps/x86_64/multiarch/strstr-c.c b/sysdeps/x86_64/multiarch/strstr-c.c index cff99b71ef..d593089a87 100644 --- a/sysdeps/x86_64/multiarch/strstr-c.c +++ b/sysdeps/x86_64/multiarch/strstr-c.c @@ -7,6 +7,7 @@ #include "string/strstr.c" -extern char *__strstr_sse42 (const char *, const char *); +extern char *__strstr_sse42 (const char *, const char *) attribute_hidden; +extern __typeof (__strstr_sse2) __strstr_sse2 attribute_hidden; libc_ifunc (strstr, HAS_SSE4_2 ? __strstr_sse42 : __strstr_sse2);