* include/libc-symbols.h (__hidden_proto): Remove bogus declaration
authorRoland McGrath <roland@gnu.org>
Thu, 17 Mar 2005 21:06:39 +0000 (21:06 +0000)
committerRoland McGrath <roland@gnu.org>
Thu, 17 Mar 2005 21:06:39 +0000 (21:06 +0000)
of internal.
(__hidden_def1, __hidden_dot_def1): Remove.
(__hidden_def2, __hidden_def3): Remove.
(__hidden_ver1): New.
(hidden_ver, hidden_def, hidden_weak): Use it.
(hidden_data_ver, hidden_data_ver, hidden_data_weak): Use non-data
version of the macro.

* include/wchar.h (__wcscoll): Remove.
* wcsmbs/wcscoll.c: Define wcscoll directly instead of via __wcscoll.
* string/strcoll.c: Don't issue libc_hidden_def STRCOLL redefined.

ChangeLog
include/libc-symbols.h
include/wchar.h
string/strcoll.c
wcsmbs/wcscoll.c

index d6f8b8f..5e254b2 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -2,6 +2,21 @@
 
        * nscd/aicache.c (addhstaiX): Tweak type to avoid warning.
 
+2005-03-16  Richard Henderson  <rth@redhat.com>
+
+       * include/libc-symbols.h (__hidden_proto): Remove bogus declaration
+       of internal.
+       (__hidden_def1, __hidden_dot_def1): Remove.
+       (__hidden_def2, __hidden_def3): Remove.
+       (__hidden_ver1): New.
+       (hidden_ver, hidden_def, hidden_weak): Use it.
+       (hidden_data_ver, hidden_data_ver, hidden_data_weak): Use non-data
+       version of the macro.
+
+       * include/wchar.h (__wcscoll): Remove.
+       * wcsmbs/wcscoll.c: Define wcscoll directly instead of via __wcscoll.
+       * string/strcoll.c: Don't issue libc_hidden_def STRCOLL redefined.
+
 2005-03-16  Daniel Jacobowitz  <dan@codesourcery.com>
 
        * elf/elf.h: Define MIPS TLS relocations.
index f3526ca..cdbc4ef 100644 (file)
@@ -583,78 +583,23 @@ for linking")
 #  define hidden_proto(name, attrs...) \
   __hidden_proto (name, __GI_##name, ##attrs)
 #  define __hidden_proto(name, internal, attrs...) \
-  extern __typeof (name) internal; \
   extern __typeof (name) name __asm__ (__hidden_asmname (#internal)) \
   __hidden_proto_hiddenattr (attrs);
 #  define __hidden_asmname(name) \
   __hidden_asmname1 (__USER_LABEL_PREFIX__, name)
 #  define __hidden_asmname1(prefix, name) __hidden_asmname2(prefix, name)
 #  define __hidden_asmname2(prefix, name) #prefix name
-#  ifdef HAVE_ASM_SET_DIRECTIVE
-#   define __hidden_def1(original, alias)                      \
-  ASM_GLOBAL_DIRECTIVE C_SYMBOL_NAME (alias) ASM_LINE_SEP      \
-  .set C_SYMBOL_NAME (alias), C_SYMBOL_NAME (original)
-#   ifdef HAVE_ASM_GLOBAL_DOT_NAME
-#     define __hidden_dot_def1(original, alias)         ASM_LINE_SEP   \
-  ASM_GLOBAL_DIRECTIVE C_SYMBOL_DOT_NAME (alias) ASM_LINE_SEP  \
-  .set C_SYMBOL_DOT_NAME (alias), C_SYMBOL_DOT_NAME (original)
-#   else
-#     define __hidden_dot_def1(original, alias)
-#   endif
-#  else
-#   define __hidden_def1(original, alias)                      \
-  ASM_GLOBAL_DIRECTIVE C_SYMBOL_NAME (alias) ASM_LINE_SEP      \
-  C_SYMBOL_NAME (alias) = C_SYMBOL_NAME (original)
-#   ifdef HAVE_ASM_GLOBAL_DOT_NAME
-#    define __hidden_dot_def1(original, alias) ASM_LINE_SEP    \
-  ASM_GLOBAL_DIRECTIVE C_SYMBOL_DOT_NAME (alias) ASM_LINE_SEP  \
-  C_SYMBOL_DOT_NAME (alias) = C_SYMBOL_DOT_NAME (original)
-#   else
-#    define __hidden_dot_def1(original, alias)
-#   endif
-#  endif
-#  define __hidden_def2(...) #__VA_ARGS__
-#  define __hidden_def3(...) __hidden_def2 (__VA_ARGS__)
-#  define hidden_def(name)                                     \
-  __asm__ (__hidden_def3 (__hidden_def1 (__GI_##name, name) \
-  __hidden_dot_def1 (__GI_##name, name)));
-#  define hidden_data_def(name)                                        \
-  __asm__ (__hidden_def3 (__hidden_def1 (__GI_##name, name)));
-#  define hidden_ver(local, name)                              \
-  __asm__ (__hidden_def3 (__hidden_def1 (local, __GI_##name) \
-  __hidden_dot_def1 (local, __GI_##name)));
-#  define hidden_data_ver(local, name)                         \
-  __asm__ (__hidden_def3 (__hidden_def1 (local, __GI_##name)));
-#  ifdef HAVE_WEAK_SYMBOLS
-#   ifdef HAVE_ASM_WEAKEXT_DIRECTIVE
-#    define __hidden_weak1(original, alias)                    \
-  .weakext C_SYMBOL_NAME (alias), C_SYMBOL_NAME (original)
-#    ifdef HAVE_ASM_GLOBAL_DOT_NAME
-#     define __hidden_dot_weak1(original, alias)       ASM_LINE_SEP    \
-  .weakext C_SYMBOL_DOT_NAME (alias), C_SYMBOL_DOT_NAME (original)
-#    else
-#     define __hidden_dot_weak1(original, alias)
-#    endif
-#   else /* ! HAVE_ASM_WEAKEXT_DIRECTIVE */
-#    define __hidden_weak1(original, alias)                    \
-  .weak C_SYMBOL_NAME (alias) ASM_LINE_SEP                     \
-  C_SYMBOL_NAME (alias) = C_SYMBOL_NAME (original)
-#    ifdef HAVE_ASM_GLOBAL_DOT_NAME
-#     define __hidden_dot_weak1(original, alias)       ASM_LINE_SEP    \
-  .weak C_SYMBOL_DOT_NAME (alias) ASM_LINE_SEP \
-  C_SYMBOL_DOT_NAME (alias) = C_SYMBOL_DOT_NAME (original)
-#    else
-#     define __hidden_dot_weak1(original, alias)
-#    endif
-#   endif
-#   define hidden_weak(name)                                   \
-  __asm__ (__hidden_def3 (__hidden_weak1 (__GI_##name, name) \
-  __hidden_dot_weak1 (__GI_##name, name)));
-#   define hidden_data_weak(name)                                      \
-  __asm__ (__hidden_def3 (__hidden_weak1 (__GI_##name, name)));
-#  else
-#   define hidden_weak(name) hidden_def (name)
-#  endif
+#  define __hidden_ver1(local, internal, name) \
+  extern __typeof (name) __EI_##name __asm__(__hidden_asmname (#internal)); \
+  extern __typeof (name) __EI_##name \
+       __attribute__((alias (__hidden_asmname (#local))))
+#  define hidden_ver(local, name)      __hidden_ver1(local, __GI_##name, name);
+#  define hidden_data_ver(local, name) hidden_ver(local, name)
+#  define hidden_def(name)             __hidden_ver1(__GI_##name, name, name);
+#  define hidden_data_def(name)                hidden_def(name)
+#  define hidden_weak(name) \
+       __hidden_ver1(__GI_##name, name, name) __attribute__((weak));
+#  define hidden_data_weak(name)       hidden_weak(name)
 # else
 /* For assembly, we need to do the opposite of what we do in C:
    in assembly gcc __REDIRECT stuff is not in place, so functions
index 73bd4a8..0f91114 100644 (file)
@@ -56,7 +56,6 @@ extern int __wcscasecmp (__const wchar_t *__s1, __const wchar_t *__s2)
 extern int __wcsncasecmp (__const wchar_t *__s1, __const wchar_t *__s2,
                          size_t __n)
      __attribute_pure__;
-extern int __wcscoll (__const wchar_t *__s1, __const wchar_t *__s2);
 extern size_t __wcslen (__const wchar_t *__s) __attribute_pure__;
 extern size_t __wcsnlen (__const wchar_t *__s, size_t __maxlen)
      __attribute_pure__;
index 8a73cae..8e8fdc7 100644 (file)
@@ -23,6 +23,7 @@
 # define STRING_TYPE char
 # define STRCOLL strcoll
 # define STRCOLL_L __strcoll_l
+# define USE_HIDDEN_DEF
 #endif
 
 #include "../locale/localeinfo.h"
@@ -35,6 +36,7 @@ STRCOLL (s1, s2)
 {
   return STRCOLL_L (s1, s2, _NL_CURRENT_LOCALE);
 }
-#if !defined WIDE_CHAR_VERSION
-libc_hidden_def (strcoll)
+
+#ifdef USE_HIDDEN_DEF
+libc_hidden_def (STRCOLL)
 #endif
index ed6db06..ae3d48c 100644 (file)
 
 #define STRING_TYPE wchar_t
 #define USTRING_TYPE wint_t
-#define STRCOLL __wcscoll
+#define STRCOLL wcscoll
 #define STRCOLL_L __wcscoll_l
 
 #include "../string/strcoll.c"
 
 #ifndef USE_IN_EXTENDED_LOCALE_MODEL
-weak_alias (__wcscoll, wcscoll)
 libc_hidden_weak (wcscoll)
 #endif