Update.
authorUlrich Drepper <drepper@redhat.com>
Mon, 20 Nov 2000 09:16:41 +0000 (09:16 +0000)
committerUlrich Drepper <drepper@redhat.com>
Mon, 20 Nov 2000 09:16:41 +0000 (09:16 +0000)
2000-11-20  Ulrich Drepper  <drepper@redhat.com>

* csu/gmon-start.c: Always have prototype for __gmon_start.
* csu/version.c: Add prototypes for __libc_print_version and
__libc_main.
* iconv/gconv.c: Include gconv_int.h and gconv.h.
* iconv/gconv.h (struct __gconv_step): Remove const from __from_name
and __to_name.
* iconv/gconv_builtin.h: Add ASCII module definitions.
* iconv/gconv_conf.c (__gconv_path_elem): Remove const.
(add_module): Add cast to avoid warning.  Rework construction of
strings for new module.
* iconv/gconv_db.c (__gconv_alias_compare): Make s1 and s2 const.
(derivation_compare): Likewise.
* iconv/gconv_dl.c (do_release_shlib): Remove const from nodep.
(__gconv_release_shlib): Cast do_release_shlib as parameter for twalk.
* iconv/gconv_int.h (__gconv_path_elem): Remove const.
(struct gconv_alias): Remove const from fromname and toname.
* iconv/gconv_simple.c: Include gconv_builtin.h to get prototypes
for loop functions.
(internal_ucs4_loop): Use correct const-ness.
(ucs4_internal_loop): Likewise.
(internal_ucs4le_loop): Likewise.
(ucs4le_internal_loop_single): Likewise.
* iconv/gconv_trans.c (__gconv_transliterate): Make from_idx, from_tbl,
to_idx, to_tbl, winbuf, winbufend const.  Change casts in
assignments appropriately.
(struct known_trans): Remove const from fname.
(trans_compare): Make s1 and s2 const.
* iconv/loop.c (LOOPFC): Make outend parameter const.  Add cast to
avoid warning.
* iconv/skeleton.c: Remove cast in calls of loop functions.
* iconvdata/gconv-modules: Remove US-ASCII definitions.
* iconvdata/iso646.c: Remove US_ASCII support.
* include/set-hooks.h (DEFINE_HOOK): Also generate prototype.
* include/unistd.h: Add __libc_check_standard_fds prototype.
* string/bits/string2.h (__mempcpy_args): Add const to casts.
* sysdeps/generic/initfini.c: Add prototypes for dummy, _init, and
_fini.
* sysdeps/generic/libc-start.c: Add prototype for __libc_start_main.
* sysdeps/i386/i486/bits/string.h (strcmp): Add const to casts.
* sysdeps/unix/sysv/linux/dl-osinfo.h (dl_fatal): Add cast to avoid
warning.
* sysdeps/unix/sysv/linux/init-first.c: Add prototypes for
__libc_init_first and _dl_start.

* sysdeps/unix/sysv/linux/mips/clone.S: Fix comments.

23 files changed:
ChangeLog
csu/version.c
iconv/gconv.c
iconv/gconv.h
iconv/gconv_builtin.h
iconv/gconv_conf.c
iconv/gconv_db.c
iconv/gconv_dl.c
iconv/gconv_int.h
iconv/gconv_simple.c
iconv/gconv_trans.c
iconv/loop.c
iconv/skeleton.c
iconvdata/gconv-modules
iconvdata/iso646.c
include/set-hooks.h
include/unistd.h
string/bits/string2.h
sysdeps/generic/initfini.c
sysdeps/generic/libc-start.c
sysdeps/i386/i486/bits/string.h
sysdeps/unix/sysv/linux/dl-osinfo.h
sysdeps/unix/sysv/linux/init-first.c

index e780eda..5389040 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,6 +1,52 @@
+2000-11-20  Ulrich Drepper  <drepper@redhat.com>
+
+       * csu/gmon-start.c: Always have prototype for __gmon_start.
+       * csu/version.c: Add prototypes for __libc_print_version and
+       __libc_main.
+       * iconv/gconv.c: Include gconv_int.h and gconv.h.
+       * iconv/gconv.h (struct __gconv_step): Remove const from __from_name
+       and __to_name.
+       * iconv/gconv_builtin.h: Add ASCII module definitions.
+       * iconv/gconv_conf.c (__gconv_path_elem): Remove const.
+       (add_module): Add cast to avoid warning.  Rework construction of
+       strings for new module.
+       * iconv/gconv_db.c (__gconv_alias_compare): Make s1 and s2 const.
+       (derivation_compare): Likewise.
+       * iconv/gconv_dl.c (do_release_shlib): Remove const from nodep.
+       (__gconv_release_shlib): Cast do_release_shlib as parameter for twalk.
+       * iconv/gconv_int.h (__gconv_path_elem): Remove const.
+       (struct gconv_alias): Remove const from fromname and toname.
+       * iconv/gconv_simple.c: Include gconv_builtin.h to get prototypes
+       for loop functions.
+       (internal_ucs4_loop): Use correct const-ness.
+       (ucs4_internal_loop): Likewise.
+       (internal_ucs4le_loop): Likewise.
+       (ucs4le_internal_loop_single): Likewise.
+       * iconv/gconv_trans.c (__gconv_transliterate): Make from_idx, from_tbl,
+       to_idx, to_tbl, winbuf, winbufend const.  Change casts in
+       assignments appropriately.
+       (struct known_trans): Remove const from fname.
+       (trans_compare): Make s1 and s2 const.
+       * iconv/loop.c (LOOPFC): Make outend parameter const.  Add cast to
+       avoid warning.
+       * iconv/skeleton.c: Remove cast in calls of loop functions.
+       * iconvdata/gconv-modules: Remove US-ASCII definitions.
+       * iconvdata/iso646.c: Remove US_ASCII support.
+       * include/set-hooks.h (DEFINE_HOOK): Also generate prototype.
+       * include/unistd.h: Add __libc_check_standard_fds prototype.
+       * string/bits/string2.h (__mempcpy_args): Add const to casts.
+       * sysdeps/generic/initfini.c: Add prototypes for dummy, _init, and
+       _fini.
+       * sysdeps/generic/libc-start.c: Add prototype for __libc_start_main.
+       * sysdeps/i386/i486/bits/string.h (strcmp): Add const to casts.
+       * sysdeps/unix/sysv/linux/dl-osinfo.h (dl_fatal): Add cast to avoid
+       warning.
+       * sysdeps/unix/sysv/linux/init-first.c: Add prototypes for
+       __libc_init_first and _dl_start.
+
 2000-11-20  Hiroyuki Machida  <machida@sm.sony.co.jp>
 
-       * sysdeps/unix/sysv/linux/mips/clone.S:  Fix comments.
+       * sysdeps/unix/sysv/linux/mips/clone.S: Fix comments.
 
        * sysdeps/unix/sysv/linux/mips/kernel_stat.h (kernel_stat): Expand
        time_t to 'long int' not, 'unsigned int'.  Use 'long int' for
index 05c53b8..dc5e65a 100644 (file)
@@ -34,6 +34,7 @@ Compiled by GNU CC version "__VERSION__".\n"
 
 #include <unistd.h>
 
+extern void __libc_print_version (void);
 void
 __libc_print_version (void)
 {
@@ -58,6 +59,7 @@ weak_alias (__gnu_get_libc_version, gnu_get_libc_version)
 /* This function is the entry point for the shared object.
    Running the library as a program will get here.  */
 
+extern void __libc_main (void) __attribute__ ((noreturn));
 void
 __libc_main (void)
 {
index 0b7b917..88d7605 100644 (file)
@@ -20,7 +20,7 @@
    Boston, MA 02111-1307, USA.  */
 
 #include <assert.h>
-#include <gconv.h>
+#include <gconv_int.h>
 #include <sys/param.h>
 #include <dlfcn.h>
 #include <stddef.h>
index c2fdf83..03574d8 100644 (file)
@@ -115,8 +115,8 @@ struct __gconv_step
 
   int __counter;
 
-  __const char *__from_name;
-  __const char *__to_name;
+  char *__from_name;
+  char *__to_name;
 
   __gconv_fct __fct;
   __gconv_init_fct __init_fct;
index e6c7b5f..246bb95 100644 (file)
@@ -76,6 +76,28 @@ BUILTIN_TRANSFORMATION ("INTERNAL", "ISO-10646/UCS2/", 1, "=INTERNAL->ucs2",
                        4, 4, 2, 2)
 
 
+BUILTIN_ALIAS ("ANSI_X3.4//", "ANSI_X3.4-1968//")
+BUILTIN_ALIAS ("ISO-IR-6//", "ANSI_X3.4-1968//")
+BUILTIN_ALIAS ("ANSI_X3.4-1986//", "ANSI_X3.4-1968//")
+BUILTIN_ALIAS ("ISO_646.IRV:1991//", "ANSI_X3.4-1968//")
+BUILTIN_ALIAS ("ASCII//", "ANSI_X3.4-1968//")
+BUILTIN_ALIAS ("ISO646-US//", "ANSI_X3.4-1968//")
+BUILTIN_ALIAS ("US-ASCII//", "ANSI_X3.4-1968//")
+BUILTIN_ALIAS ("US//", "ANSI_X3.4-1968//")
+BUILTIN_ALIAS ("IBM367//", "ANSI_X3.4-1968//")
+BUILTIN_ALIAS ("CP367//", "ANSI_X3.4-1968//")
+BUILTIN_ALIAS ("CSASCII//", "ANSI_X3.4-1968//")
+BUILTIN_ALIAS ("OSF00010020//", "ANSI_X3.4-1968//")
+
+BUILTIN_TRANSFORMATION ("ANSI_X3.4-1968//", "INTERNAL", 1, "=ascii->INTERNAL",
+                       __gconv_transform_ascii_internal, NULL, NULL,
+                       4, 4, 1, 1)
+
+BUILTIN_TRANSFORMATION ("INTERNAL", "ANSI_X3.4-1968//", 1, "=INTERNAL->ascii",
+                       __gconv_transform_internal_ascii, NULL, NULL,
+                       4, 4, 1, 1)
+
+
 #if BYTE_ORDER == BIG_ENDIAN
 BUILTIN_ALIAS ("UNICODEBIG//", "ISO-10646/UCS2/")
 BUILTIN_ALIAS ("UCS-2BE//", "ISO-10646/UCS2/")
index 57c832d..a9b4581 100644 (file)
@@ -23,6 +23,7 @@
 #include <errno.h>
 #include <limits.h>
 #include <search.h>
+#include <stddef.h>
 #include <stdio.h>
 #include <stdlib.h>
 #include <string.h>
@@ -38,7 +39,7 @@ static const char default_gconv_path[] = GCONV_PATH;
 
 /* The path elements, as determined by the __gconv_get_path function.
    All path elements end in a slash.  */
-const struct path_elem *__gconv_path_elem;
+struct path_elem *__gconv_path_elem;
 /* Maximum length of a single path element in __gconv_path_elem.  */
 size_t __gconv_max_path_elem_len;
 
@@ -283,7 +284,7 @@ add_module (char *rp, const char *directory, size_t dir_len, void **modules,
 
   /* See whether we must add the ending.  */
   need_ext = 0;
-  if (wp - module < sizeof (gconv_module_ext)
+  if (wp - module < (ptrdiff_t) sizeof (gconv_module_ext)
       || memcmp (wp - sizeof (gconv_module_ext), gconv_module_ext,
                 sizeof (gconv_module_ext)) != 0)
     /* We must add the module extension.  */
@@ -304,23 +305,19 @@ add_module (char *rp, const char *directory, size_t dir_len, void **modules,
     {
       char *tmp;
 
-      new_module->from_string = memcpy ((char *) new_module
-                                       + sizeof (struct gconv_module),
-                                       from, to - from);
+      new_module->from_string = tmp = (char *) (new_module + 1);
+      tmp = __mempcpy (tmp, from, to - from);
 
-      new_module->to_string = memcpy ((char *) new_module->from_string
-                                     + (to - from), to, module - to);
+      new_module->to_string = tmp;
+      tmp = __mempcpy (tmp, to, module - to);
 
       new_module->cost_hi = cost_hi;
       new_module->cost_lo = modcounter;
 
-      new_module->module_name = (char *) new_module->to_string + (module - to);
+      new_module->module_name = tmp;
 
-      if (dir_len == 0)
-       tmp = (char *) new_module->module_name;
-      else
-       tmp = __mempcpy ((char *) new_module->module_name,
-                        directory, dir_len);
+      if (dir_len != 0)
+       tmp = __mempcpy (tmp, directory, dir_len);
 
       tmp = __mempcpy (tmp, module, wp - module);
 
index dd51670..d003981 100644 (file)
@@ -44,8 +44,8 @@ __libc_lock_define_initialized (static, lock)
 int
 __gconv_alias_compare (const void *p1, const void *p2)
 {
-  struct gconv_alias *s1 = (struct gconv_alias *) p1;
-  struct gconv_alias *s2 = (struct gconv_alias *) p2;
+  const struct gconv_alias *s1 = (const struct gconv_alias *) p1;
+  const struct gconv_alias *s2 = (const struct gconv_alias *) p2;
   return strcmp (s1->fromname, s2->fromname);
 }
 
@@ -90,8 +90,8 @@ struct known_derivation
 static int
 derivation_compare (const void *p1, const void *p2)
 {
-  struct known_derivation *s1 = (struct known_derivation *) p1;
-  struct known_derivation *s2 = (struct known_derivation *) p2;
+  const struct known_derivation *s1 = (const struct known_derivation *) p1;
+  const struct known_derivation *s2 = (const struct known_derivation *) p2;
   int result;
 
   result = strcmp (s1->from, s2->from);
index 114619e..720ae48 100644 (file)
@@ -149,7 +149,7 @@ __gconv_find_shlib (const char *name)
 static struct __gconv_loaded_object *release_handle;
 
 static void
-do_release_shlib (const void *nodep, VISIT value, int level)
+do_release_shlib (void *nodep, VISIT value, int level)
 {
   struct __gconv_loaded_object *obj = *(struct __gconv_loaded_object **) nodep;
 
@@ -184,7 +184,7 @@ __gconv_release_shlib (struct __gconv_loaded_object *handle)
   /* Process all entries.  Please note that we also visit entries
      with release counts <= 0.  This way we can finally unload them
      if necessary.  */
-  __twalk (loaded, do_release_shlib);
+  __twalk (loaded, (__action_fn_t) do_release_shlib);
 }
 
 
index ad2d6e7..0c7a422 100644 (file)
@@ -33,7 +33,7 @@ struct path_elem
 };
 
 /* Variable with search path for `gconv' implementation.  */
-extern const struct path_elem *__gconv_path_elem;
+extern struct path_elem *__gconv_path_elem;
 /* Maximum length of a single path element.  */
 extern size_t __gconv_max_path_elem_len;
 
@@ -41,8 +41,8 @@ extern size_t __gconv_max_path_elem_len;
 /* Structure for alias definition.  Simply to strings.  */
 struct gconv_alias
 {
-  const char *fromname;
-  const char *toname;
+  char *fromname;
+  char *toname;
 };
 
 
index 70c43c8..ab9f46a 100644 (file)
 #include <wchar.h>
 #include <sys/param.h>
 
+#define BUILTIN_ALIAS(s1, s2) /* nothing */
+#define BUILTIN_TRANSFORMATION(From, To, Cost, Name, Fct, Init, End, MinF, \
+                              MaxF, MinT, MaxT) \
+  extern int Fct (struct __gconv_step *, struct __gconv_step_data *,         \
+                 __const unsigned char **, __const unsigned char *,          \
+                 unsigned char **, size_t *, int, int);
+#include "gconv_builtin.h"
+
+
 #ifndef EILSEQ
 # define EILSEQ EINVAL
 #endif
@@ -66,7 +75,7 @@ internal_ucs4_loop (struct __gconv_step *step,
   size_t cnt;
 
   for (cnt = 0; cnt < n_convert; ++cnt, inptr += 4)
-    *((uint32_t *) outptr)++ = bswap_32 (*(uint32_t *) inptr);
+    *((uint32_t *) outptr)++ = bswap_32 (*(const uint32_t *) inptr);
 
   *inptrp = inptr;
   *outptrp = outptr;
@@ -215,9 +224,9 @@ ucs4_internal_loop (struct __gconv_step *step,
       uint32_t inval;
 
 #if __BYTE_ORDER == __LITTLE_ENDIAN
-      inval = bswap_32 (*(uint32_t *) inptr);
+      inval = bswap_32 (*(const uint32_t *) inptr);
 #else
-      inval = *(uint32_t *) inptr;
+      inval = *(const uint32_t *) inptr;
 #endif
 
       if (__builtin_expect (inval, 0) > 0x7fffffff)
@@ -420,7 +429,7 @@ internal_ucs4le_loop (struct __gconv_step *step,
   size_t cnt;
 
   for (cnt = 0; cnt < n_convert; ++cnt, inptr += 4)
-    *((uint32_t *) outptr)++ = bswap_32 (*(uint32_t *) inptr);
+    *((uint32_t *) outptr)++ = bswap_32 (*(const uint32_t *) inptr);
 
   *inptrp = inptr;
   *outptrp = outptr;
@@ -566,9 +575,9 @@ ucs4le_internal_loop (struct __gconv_step *step,
       uint32_t inval;
 
 #if __BYTE_ORDER == __BIG_ENDIAN
-      inval = bswap_32 (*(uint32_t *) inptr);
+      inval = bswap_32 (*(const uint32_t *) inptr);
 #else
-      inval = *(uint32_t *) inptr;
+      inval = *(const uint32_t *) inptr;
 #endif
 
       if (__builtin_expect (inval, 0) > 0x7fffffff)
@@ -796,13 +805,13 @@ ucs4le_internal_loop_single (struct __gconv_step *step,
 #define LOOPFCT                        FROM_LOOP
 #define BODY \
   {                                                                          \
-    if (__builtin_expect (*((uint32_t *) inptr), 0) > 0x7f)                  \
+    if (__builtin_expect (*((const uint32_t *) inptr), 0) > 0x7f)            \
       {                                                                              \
        STANDARD_ERR_HANDLER (4);                                             \
       }                                                                              \
     else                                                                     \
       /* It's an one byte sequence.  */                                              \
-      *outptr++ = *((uint32_t *) inptr)++;                                   \
+      *outptr++ = *((const uint32_t *) inptr)++;                             \
   }
 #define LOOP_NEED_FLAGS
 #include <iconv/loop.c>
@@ -827,7 +836,7 @@ ucs4le_internal_loop_single (struct __gconv_step *step,
 #define LOOPFCT                        FROM_LOOP
 #define BODY \
   {                                                                          \
-    uint32_t wc = *((uint32_t *) inptr);                                     \
+    uint32_t wc = *((const uint32_t *) inptr);                               \
                                                                              \
     /* Since we control every character we read this cannot happen.  */              \
     assert (wc <= 0x7fffffff);                                               \
@@ -1146,7 +1155,7 @@ ucs4le_internal_loop_single (struct __gconv_step *step,
 #define LOOPFCT                        FROM_LOOP
 #define BODY \
   {                                                                          \
-    uint16_t u1 = *((uint16_t *) inptr);                                     \
+    uint16_t u1 = *((const uint16_t *) inptr);                               \
                                                                              \
     if (__builtin_expect (u1 >= 0xd800 && u1 < 0xe000, 0))                   \
       {                                                                              \
@@ -1186,7 +1195,7 @@ ucs4le_internal_loop_single (struct __gconv_step *step,
 #define LOOPFCT                        FROM_LOOP
 #define BODY \
   {                                                                          \
-    uint32_t val = *((uint32_t *) inptr);                                    \
+    uint32_t val = *((const uint32_t *) inptr);                                      \
                                                                              \
     if (__builtin_expect (val, 0) >= 0x10000)                                \
       {                                                                              \
@@ -1236,7 +1245,7 @@ ucs4le_internal_loop_single (struct __gconv_step *step,
 #define LOOPFCT                        FROM_LOOP
 #define BODY \
   {                                                                          \
-    uint16_t u1 = bswap_16 (*((uint16_t *) inptr));                          \
+    uint16_t u1 = bswap_16 (*((const uint16_t *) inptr));                    \
                                                                              \
     if (__builtin_expect (u1 >= 0xd800 && u1 < 0xe000, 0))                   \
       {                                                                              \
@@ -1276,7 +1285,7 @@ ucs4le_internal_loop_single (struct __gconv_step *step,
 #define LOOPFCT                        FROM_LOOP
 #define BODY \
   {                                                                          \
-    uint32_t val = *((uint32_t *) inptr);                                    \
+    uint32_t val = *((const uint32_t *) inptr);                                      \
     if (__builtin_expect (val, 0) >= 0x10000)                                \
       {                                                                              \
        STANDARD_ERR_HANDLER (4);                                             \
index 4a42a35..919d438 100644 (file)
@@ -41,18 +41,18 @@ __gconv_transliterate (struct __gconv_step *step,
 {
   /* Find out about the locale's transliteration.  */
   uint_fast32_t size;
-  uint32_t *from_idx;
-  uint32_t *from_tbl;
-  uint32_t *to_idx;
-  uint32_t *to_tbl;
-  uint32_t *winbuf;
-  uint32_t *winbufend;
+  const uint32_t *from_idx;
+  const uint32_t *from_tbl;
+  const uint32_t *to_idx;
+  const uint32_t *to_tbl;
+  const uint32_t *winbuf;
+  const uint32_t *winbufend;
   uint_fast32_t low;
   uint_fast32_t high;
 
   /* The input buffer.  There are actually 4-byte values.  */
-  winbuf = (uint32_t *) *inbufp;
-  winbufend = (uint32_t *) inbufend;
+  winbuf = (const uint32_t *) *inbufp;
+  winbufend = (const uint32_t *) inbufend;
 
   /* If there is no transliteration information in the locale don't do
      anything and return the error.  */
@@ -61,10 +61,14 @@ __gconv_transliterate (struct __gconv_step *step,
     goto no_rules;
 
   /* Get the rest of the values.  */
-  from_idx = (uint32_t *) _NL_CURRENT (LC_CTYPE, _NL_CTYPE_TRANSLIT_FROM_IDX);
-  from_tbl = (uint32_t *) _NL_CURRENT (LC_CTYPE, _NL_CTYPE_TRANSLIT_FROM_TBL);
-  to_idx = (uint32_t *) _NL_CURRENT (LC_CTYPE, _NL_CTYPE_TRANSLIT_TO_IDX);
-  to_tbl = (uint32_t *) _NL_CURRENT (LC_CTYPE, _NL_CTYPE_TRANSLIT_TO_TBL);
+  from_idx =
+    (const uint32_t *) _NL_CURRENT (LC_CTYPE, _NL_CTYPE_TRANSLIT_FROM_IDX);
+  from_tbl =
+    (const uint32_t *) _NL_CURRENT (LC_CTYPE, _NL_CTYPE_TRANSLIT_FROM_TBL);
+  to_idx =
+    (const uint32_t *) _NL_CURRENT (LC_CTYPE, _NL_CTYPE_TRANSLIT_TO_IDX);
+  to_tbl =
+    (const uint32_t *) _NL_CURRENT (LC_CTYPE, _NL_CTYPE_TRANSLIT_TO_TBL);
 
   /* Test whether there is enough input.  */
   if (winbuf + 1 > winbufend)
@@ -156,9 +160,9 @@ __gconv_transliterate (struct __gconv_step *step,
   if (_NL_CURRENT_WORD (LC_CTYPE, _NL_CTYPE_TRANSLIT_IGNORE_LEN) != 0)
     {
       int n = _NL_CURRENT_WORD (LC_CTYPE, _NL_CTYPE_TRANSLIT_IGNORE_LEN);
-      uint32_t *ranges = (uint32_t *) _NL_CURRENT (LC_CTYPE,
-                                                  _NL_CTYPE_TRANSLIT_IGNORE);
-      uint32_t wc = *(uint32_t *) (*inbufp);
+      const uint32_t *ranges =
+       (const uint32_t *) _NL_CURRENT (LC_CTYPE, _NL_CTYPE_TRANSLIT_IGNORE);
+      const uint32_t wc = *(const uint32_t *) (*inbufp);
       int i;
 
       /* Test whether there is enough input.  */
@@ -184,7 +188,7 @@ __gconv_transliterate (struct __gconv_step *step,
   /* One last chance: use the default replacement.  */
   if (_NL_CURRENT_WORD (LC_CTYPE, _NL_CTYPE_TRANSLIT_DEFAULT_MISSING_LEN) != 0)
     {
-      uint32_t *default_missing = (uint32_t *)
+      const uint32_t *default_missing = (const uint32_t *)
        _NL_CURRENT (LC_CTYPE, _NL_CTYPE_TRANSLIT_DEFAULT_MISSING);
       const unsigned char *toinptr = (const unsigned char *) default_missing;
       uint32_t len = _NL_CURRENT_WORD (LC_CTYPE,
@@ -230,7 +234,7 @@ struct known_trans
   /* This structure must remain the first member.  */
   struct trans_struct info;
 
-  const char *fname;
+  char *fname;
   void *handle;
   int open_count;
 };
@@ -247,8 +251,8 @@ __libc_lock_define_initialized (static, lock);
 static int
 trans_compare (const void *p1, const void *p2)
 {
-  struct known_trans *s1 = (struct known_trans *) p1;
-  struct known_trans *s2 = (struct known_trans *) p2;
+  const struct known_trans *s1 = (const struct known_trans *) p1;
+  const struct known_trans *s2 = (const struct known_trans *) p2;
 
   return strcmp (s1->info.name, s2->info.name);
 }
index 3a2779e..7b5ef00 100644 (file)
@@ -217,7 +217,7 @@ static inline int
 FCTNAME (LOOPFCT) (struct __gconv_step *step,
                   struct __gconv_step_data *step_data,
                   const unsigned char **inptrp, const unsigned char *inend,
-                  unsigned char **outptrp, unsigned char *outend,
+                  unsigned char **outptrp, const unsigned char *outend,
                   size_t *irreversible EXTRA_LOOP_DECLS)
 {
 #ifdef LOOP_NEED_STATE
@@ -326,7 +326,7 @@ SINGLE(LOOPFCT) (struct __gconv_step *step,
   UNPACK_BYTES
 #else
   /* Add the bytes from the state to the input buffer.  */
-  for (inlen = 0; inlen < (state->__count & 7); ++ inlen)
+  for (inlen = 0; inlen < (size_t) (state->__count & 7); ++inlen)
     bytebuf[inlen] = state->__value.__wchb[inlen];
 #endif
 
index 43d5d9e..58f3812 100644 (file)
@@ -502,15 +502,13 @@ FUNCTION_NAME (struct __gconv_step *step, struct __gconv_step_data *data,
                          if (FROM_DIRECTION)
                            /* Run the conversion loop.  */
                            nstatus = FROM_LOOP (step, data, inptrp, inend,
-                                                &outbuf,
-                                                (unsigned char *) outerr,
+                                                &outbuf, outerr,
                                                 lirreversiblep
                                                 EXTRA_LOOP_ARGS);
                          else
                            /* Run the conversion loop.  */
                            nstatus = TO_LOOP (step, data, inptrp, inend,
-                                              &outbuf,
-                                              (unsigned char *) outerr,
+                                              &outbuf, outerr,
                                               lirreversiblep
                                               EXTRA_LOOP_ARGS);
                        }
@@ -524,15 +522,14 @@ FUNCTION_NAME (struct __gconv_step *step, struct __gconv_step_data *data,
                            nstatus = GEN_unaligned (FROM_LOOP) (step, data,
                                                                 inptrp, inend,
                                                                 &outbuf,
-                                                                (unsigned char *) outerr,
+                                                                outerr,
                                                                 lirreversiblep
                                                                 EXTRA_LOOP_ARGS);
                          else
                            /* Run the conversion loop.  */
                            nstatus = GEN_unaligned (TO_LOOP) (step, data,
                                                               inptrp, inend,
-                                                              &outbuf,
-                                                              (unsigned char *) outerr,
+                                                              &outbuf, outerr,
                                                               lirreversiblep
                                                               EXTRA_LOOP_ARGS);
                        }
index 0aa334c..021dd78 100644 (file)
 #  alias:      alias name which is not really recognized.
 #  name:       the real name of the character set
 
-#      from                    to                      module          cost
-alias  ANSI_X3.4//             ANSI_X3.4-1968//
-alias  ISO-IR-6//              ANSI_X3.4-1968//
-alias  ANSI_X3.4-1986//        ANSI_X3.4-1968//
-alias  ISO_646.IRV:1991//      ANSI_X3.4-1968//
-alias  ASCII//                 ANSI_X3.4-1968//
-alias  ISO646-US//             ANSI_X3.4-1968//
-alias  US-ASCII//              ANSI_X3.4-1968//
-alias  US//                    ANSI_X3.4-1968//
-alias  IBM367//                ANSI_X3.4-1968//
-alias  CP367//                 ANSI_X3.4-1968//
-alias  CSASCII//               ANSI_X3.4-1968//
-alias  OSF00010020//           ANSI_X3.4-1968//
-module ANSI_X3.4-1968//        INTERNAL                ISO646          2
-module INTERNAL                ANSI_X3.4-1968//        ISO646          2
-
 alias  ISO-IR-4//              BS_4730//
 alias  ISO646-GB//             BS_4730//
 alias  GB//                    BS_4730//
index d26ed5e..4cfd98c 100644 (file)
@@ -62,7 +62,6 @@ enum direction
 enum variant
 {
   illegal_var,
-  US,          /* ANSI_X3.4-1968 */
   GB,          /* BS_4730 */
   CA,          /* CSA_Z243.4-1985-1 */
   CA2,         /* CSA_Z243.4-1985-2 */
@@ -90,7 +89,6 @@ enum variant
 
 static const char *names[] =
 {
-  [US] = "ANSI_X3.4-1968//",
   [GB] = "BS_4730//",
   [CA] = "CSA_Z243.4-1985-1//",
   [CA2] = "CSA_Z243.4-1985-2//",
index 709f4c0..6dfd61c 100644 (file)
@@ -52,7 +52,8 @@ do {                                                  \
    which calls each function on the hook in turn, with ARGS.  */
 
 # define DEFINE_HOOK_RUNNER(name, runner, proto, args) \
-DEFINE_HOOK (name, proto); void runner proto { RUN_HOOK (name, args); }
+DEFINE_HOOK (name, proto); \
+extern void runner proto; void runner proto { RUN_HOOK (name, args); }
 
 #else
 
index 04b4739..cd51117 100644 (file)
@@ -98,4 +98,9 @@ extern void *__sbrk (intptr_t __delta);
    environment variables that normally affect them.  */
 extern int __libc_enable_secure;
 
+
+/* Various internal function.  */
+extern void __libc_check_standard_fds (void);
+
+
 #endif
index 2cff87b..32a1746 100644 (file)
@@ -208,8 +208,8 @@ __STRING2_COPY_TYPE (8);
 
 #  if _STRING_ARCH_unaligned
 #   define __mempcpy_args(src) \
-     ((char *) (src))[0], ((char *) (src))[2], ((char *) (src))[4],          \
-     ((char *) (src))[6],                                                    \
+     ((__const char *) (src))[0], ((__const char *) (src))[2],               \
+     ((__const char *) (src))[4], ((__const char *) (src))[6],               \
      __extension__ __STRING2_SMALL_GET16 (src, 0),                           \
      __extension__ __STRING2_SMALL_GET16 (src, 4),                           \
      __extension__ __STRING2_SMALL_GET32 (src, 0),                           \
index 836d606..60dcdc0 100644 (file)
@@ -50,6 +50,7 @@ asm ("\n/*@HEADER_ENDS*/");
 
 /* To determine whether we need .end and .align: */
 asm ("\n/*@TESTS_BEGIN*/");
+extern void dummy (void (*foo) (void));
 void
 dummy (void (*foo) (void))
 {
@@ -68,10 +69,11 @@ call_gmon_start(void)
   void (*gmon_start) (void) = __gmon_start__;
 
   if (gmon_start)
-    gmon_start ();  
+    gmon_start ();
 }
 
 SECTION (".init");
+extern void _init (void);
 void
 _init (void)
 {
@@ -97,6 +99,7 @@ asm ("\n/*@_init_EPILOG_ENDS*/");
 asm ("\n/*@_fini_PROLOG_BEGINS*/");
 
 SECTION (".fini");
+extern void _fini (void);
 void
 _fini (void)
 {
index a95ce56..c4b8bc6 100644 (file)
@@ -33,8 +33,15 @@ extern void *__libc_stack_end;
 extern void __pthread_initialize_minimal (void) __attribute__ ((weak));
 #endif
 
-/* Prototype for local function.  */
-extern void __libc_check_standard_fds (void);
+
+extern int BP_SYM (__libc_start_main) (int (*main) (int, char **, char **),
+                                      int argc,
+                                      char *__unbounded *__unbounded ubp_av,
+                                      void (*init) (void),
+                                      void (*fini) (void),
+                                      void (*rtld_fini) (void),
+                                      void *__unbounded stack_end)
+     __attribute__ ((noreturn));
 
 int
 /* GKM FIXME: GCC: this should get __BP_ prefix by virtue of the
index 532dcc1..1a33630 100644 (file)
@@ -1057,18 +1057,20 @@ __strncat_g (char *__dest, __const char __src[], size_t __n)
                  : (__builtin_constant_p (s1) && sizeof ((s1)[0]) == 1       \
                     && sizeof ((s2)[0]) == 1 && strlen (s1) < 4              \
                     ? (__builtin_constant_p (s2) && sizeof ((s2)[0]) == 1    \
-                       ? __strcmp_cc ((unsigned char *) (s1),                \
-                                      (unsigned char *) (s2), strlen (s1))   \
-                       : __strcmp_cg ((unsigned char *) (s1),                \
-                                      (unsigned char *) (s2), strlen (s1)))  \
+                       ? __strcmp_cc ((__const unsigned char *) (s1),        \
+                                      (__const unsigned char *) (s2),        \
+                                      strlen (s1))                           \
+                       : __strcmp_cg ((__const unsigned char *) (s1),        \
+                                      (__const unsigned char *) (s2),        \
+                                      strlen (s1)))                          \
                     : (__builtin_constant_p (s2) && sizeof ((s1)[0]) == 1    \
                        && sizeof ((s2)[0]) == 1 && strlen (s2) < 4           \
                        ? (__builtin_constant_p (s1)                          \
-                          ? __strcmp_cc ((unsigned char *) (s1),             \
-                                         (unsigned char *) (s2),             \
+                          ? __strcmp_cc ((__const unsigned char *) (s1),     \
+                                         (__const unsigned char *) (s2),     \
                                          strlen (s2))                        \
-                          : __strcmp_gc ((unsigned char *) (s1),             \
-                                         (unsigned char *) (s2),             \
+                          : __strcmp_gc ((__const unsigned char *) (s1),     \
+                                         (__const unsigned char *) (s2),     \
                                          strlen (s2)))                       \
                        : __strcmp_gg (s1, s2)))))
 
index 1834da8..1a94d17 100644 (file)
@@ -71,7 +71,7 @@ dl_fatal (const char *str)
                 make sure the library can actually work.  */                 \
              FATAL ("FATAL: cannot determine library version\n");            \
            __close (fd);                                                     \
-           buf[MIN (reslen, sizeof (bufmem) - 1)] = '\0';                    \
+           buf[MIN (reslen, (ssize_t) sizeof (bufmem) - 1)] = '\0';          \
          }                                                                   \
        else                                                                  \
           buf = uts.release;                                                 \
index 101523f..0e5b4a2 100644 (file)
@@ -108,12 +108,16 @@ init (int argc, char **argv, char **envp)
 
 strong_alias (init, _init);
 
+extern void __libc_init_first (void);
+
 void
 __libc_init_first (void)
 {
 }
 
 #else
+extern void __libc_init_first (int argc, char **argv, char **envp);
+
 void
 __libc_init_first (int argc, char **argv, char **envp)
 {
@@ -127,6 +131,8 @@ __libc_init_first (int argc, char **argv, char **envp)
    in ld.so causes disaster, because the _init definition above will
    cause ld.so to gain an init function, which is not a cool thing. */
 
+extern void _dl_start (void) __attribute__ ((noreturn));
+
 void
 _dl_start (void)
 {