powerpc: Fix __wcschr static build
authorAdhemerval Zanella <azanella@linux.vnet.ibm.com>
Wed, 25 Feb 2015 19:22:10 +0000 (16:22 -0300)
committerAdhemerval Zanella <adhemerval.zanella@linaro.com>
Wed, 15 Apr 2015 19:01:48 +0000 (16:01 -0300)
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.

ChangeLog
sysdeps/i386/i686/multiarch/wcschr-c.c
sysdeps/powerpc/powerpc32/power4/multiarch/wcschr-ppc32.c
wcsmbs/wcschr.c

index dddb0ae..8f7c176 100644 (file)
--- 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.
index 786c132..38d41d0 100644 (file)
@@ -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>
index df586a6..3b2ab3a 100644 (file)
 #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>
index a287283..77624be 100644 (file)
 
 #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