diff options
author | Adhemerval Zanella <azanella@linux.vnet.ibm.com> | 2015-02-25 16:22:10 -0300 |
---|---|---|
committer | Adhemerval Zanella <adhemerval.zanella@linaro.com> | 2015-04-15 16:01:48 -0300 |
commit | fb78612a963cfe1299b33b1c60a0c24a206276c3 (patch) | |
tree | 00f5737b3f31ddc237f52ac9c00bccdd8674af4d | |
parent | a8b6a3a6c1be265750c33766ba1f4151ae29749d (diff) | |
download | glibc-fb78612a963cfe1299b33b1c60a0c24a206276c3.tar.gz glibc-fb78612a963cfe1299b33b1c60a0c24a206276c3.tar.xz glibc-fb78612a963cfe1299b33b1c60a0c24a206276c3.zip |
powerpc: Fix __wcschr static build
This patch fix the static build for strftime, which uses __wcschr. Current powerpc32 implementation defines the __wcschr be an alias to __wcschr_ppc32 and current implementation misses the correct alias for static build. It also changes the default wcschr.c logic so a IFUNC implementation should just define WCSCHR and undefine the required alias/internal definitions.
-rw-r--r-- | ChangeLog | 10 | ||||
-rw-r--r-- | sysdeps/i386/i686/multiarch/wcschr-c.c | 10 | ||||
-rw-r--r-- | sysdeps/powerpc/powerpc32/power4/multiarch/wcschr-ppc32.c | 18 | ||||
-rw-r--r-- | wcsmbs/wcschr.c | 17 |
4 files changed, 37 insertions, 18 deletions
diff --git a/ChangeLog b/ChangeLog index dddb0ae07d..8f7c17603c 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,13 @@ +2015-04-15 Adhemerval Zanella <adhemerval.zanella@linaro.org> + + * wcsmbs/wcschr.c [WCSCHR] (wcschr): Define as __wcschr. Remove + conditionals for weak_alias and libc_hidden_weak. + * sysdeps/i386/i686/multiarch/wcschr-c.c [libc]: Undefine + libc_hidden_weak and weak_alias. + * sysdeps/powerpc/powerpc32/power4/multiarch/wcschr-ppc32.c [libc]: + Undefine libc_hidden_weak. Define libc_hidden_def for SHARED builds + and weak_alias for static one. + 2015-04-15 David S. Miller <davem@davemloft.net> * sysdeps/sparc/fpu/libm-test-ulps: Regenerate from scratch. diff --git a/sysdeps/i386/i686/multiarch/wcschr-c.c b/sysdeps/i386/i686/multiarch/wcschr-c.c index 786c132fcd..38d41d04de 100644 --- a/sysdeps/i386/i686/multiarch/wcschr-c.c +++ b/sysdeps/i386/i686/multiarch/wcschr-c.c @@ -1,6 +1,12 @@ #include <wchar.h> #if IS_IN (libc) +# undef libc_hidden_weak +# define libc_hidden_weak(name) + +# undef weak_alias +# define weak_alias(name,alias) + # ifdef SHARED # undef libc_hidden_def # define libc_hidden_def(name) \ @@ -8,9 +14,9 @@ strong_alias (__wcschr_ia32, __wcschr_ia32_1); \ __hidden_ver1 (__wcschr_ia32_1, __GI___wcschr, __wcschr_ia32_1); # endif -# define WCSCHR __wcschr_ia32 #endif extern __typeof (wcschr) __wcschr_ia32; -#include "wcsmbs/wcschr.c" +#define WCSCHR __wcschr_ia32 +#include <wcsmbs/wcschr.c> diff --git a/sysdeps/powerpc/powerpc32/power4/multiarch/wcschr-ppc32.c b/sysdeps/powerpc/powerpc32/power4/multiarch/wcschr-ppc32.c index df586a61f2..3b2ab3a2d3 100644 --- a/sysdeps/powerpc/powerpc32/power4/multiarch/wcschr-ppc32.c +++ b/sysdeps/powerpc/powerpc32/power4/multiarch/wcschr-ppc32.c @@ -18,16 +18,26 @@ #include <wchar.h> #if IS_IN (libc) +# undef libc_hidden_weak +# define libc_hidden_weak(name) + +# undef weak_alias +# undef libc_hidden_def + # ifdef SHARED -# undef libc_hidden_def -# define libc_hidden_def(name) \ +# define libc_hidden_def(name) \ __hidden_ver1 (__wcschr_ppc, __GI_wcschr, __wcschr_ppc); \ strong_alias (__wcschr_ppc, __wcschr_ppc_1); \ __hidden_ver1 (__wcschr_ppc_1, __GI___wcschr, __wcschr_ppc_1); -# endif -# define WCSCHR __wcschr_ppc +# define weak_alias(name,alias) +# else +# define weak_alias(name, alias) \ + _weak_alias(__wcschr_ppc, __wcschr) +# define libc_hidden_def(name) +# endif /* SHARED */ #endif extern __typeof (wcschr) __wcschr_ppc; +#define WCSCHR __wcschr_ppc #include <wcsmbs/wcschr.c> diff --git a/wcsmbs/wcschr.c b/wcsmbs/wcschr.c index a287283411..77624be36b 100644 --- a/wcsmbs/wcschr.c +++ b/wcsmbs/wcschr.c @@ -17,17 +17,13 @@ #include <wchar.h> -/* Find the first occurrence of WC in WCS. */ -#ifdef WCSCHR -# define wcschr WCSCHR -#else -# define wcschr __wcschr +#ifndef WCSCHR +# define WCSCHR __wcschr #endif +/* Find the first occurrence of WC in WCS. */ wchar_t * -wcschr (wcs, wc) - const wchar_t *wcs; - const wchar_t wc; +WCSCHR (const wchar_t *wcs, const wchar_t wc) { do if (*wcs == wc) @@ -36,9 +32,6 @@ wcschr (wcs, wc) return NULL; } -libc_hidden_def (wcschr) -#ifndef WCSCHR -# undef wcschr +libc_hidden_def (__wcschr) weak_alias (__wcschr, wcschr) libc_hidden_weak (wcschr) -#endif |