diff options
| -rw-r--r-- | ChangeLog | 48 | ||||
| -rw-r--r-- | csu/version.c | 2 | ||||
| -rw-r--r-- | iconv/gconv.c | 2 | ||||
| -rw-r--r-- | iconv/gconv.h | 4 | ||||
| -rw-r--r-- | iconv/gconv_builtin.h | 22 | ||||
| -rw-r--r-- | iconv/gconv_conf.c | 23 | ||||
| -rw-r--r-- | iconv/gconv_db.c | 8 | ||||
| -rw-r--r-- | iconv/gconv_dl.c | 4 | ||||
| -rw-r--r-- | iconv/gconv_int.h | 6 | ||||
| -rw-r--r-- | iconv/gconv_simple.c | 35 | ||||
| -rw-r--r-- | iconv/gconv_trans.c | 42 | ||||
| -rw-r--r-- | iconv/loop.c | 4 | ||||
| -rw-r--r-- | iconv/skeleton.c | 11 | ||||
| -rw-r--r-- | iconvdata/gconv-modules | 16 | ||||
| -rw-r--r-- | iconvdata/iso646.c | 2 | ||||
| -rw-r--r-- | include/set-hooks.h | 3 | ||||
| -rw-r--r-- | include/unistd.h | 5 | ||||
| -rw-r--r-- | string/bits/string2.h | 4 | ||||
| -rw-r--r-- | sysdeps/generic/initfini.c | 5 | ||||
| -rw-r--r-- | sysdeps/generic/libc-start.c | 11 | ||||
| -rw-r--r-- | sysdeps/i386/i486/bits/string.h | 18 | ||||
| -rw-r--r-- | sysdeps/unix/sysv/linux/dl-osinfo.h | 2 | ||||
| -rw-r--r-- | sysdeps/unix/sysv/linux/init-first.c | 6 |
23 files changed, 183 insertions, 100 deletions
@@ -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 diff --git a/csu/version.c b/csu/version.c index 05c53b8474..dc5e65a016 100644 --- a/csu/version.c +++ b/csu/version.c @@ -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) { diff --git a/iconv/gconv.c b/iconv/gconv.c index 0b7b917b6a..88d76056c8 100644 --- a/iconv/gconv.c +++ b/iconv/gconv.c @@ -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> diff --git a/iconv/gconv.h b/iconv/gconv.h index c2fdf83a25..03574d859e 100644 --- a/iconv/gconv.h +++ b/iconv/gconv.h @@ -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; diff --git a/iconv/gconv_builtin.h b/iconv/gconv_builtin.h index e6c7b5fac3..246bb95ae7 100644 --- a/iconv/gconv_builtin.h +++ b/iconv/gconv_builtin.h @@ -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/") diff --git a/iconv/gconv_conf.c b/iconv/gconv_conf.c index 57c832d6a9..a9b458130a 100644 --- a/iconv/gconv_conf.c +++ b/iconv/gconv_conf.c @@ -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); diff --git a/iconv/gconv_db.c b/iconv/gconv_db.c index dd51670af1..d003981d3e 100644 --- a/iconv/gconv_db.c +++ b/iconv/gconv_db.c @@ -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); diff --git a/iconv/gconv_dl.c b/iconv/gconv_dl.c index 114619ec11..720ae4836b 100644 --- a/iconv/gconv_dl.c +++ b/iconv/gconv_dl.c @@ -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); } diff --git a/iconv/gconv_int.h b/iconv/gconv_int.h index ad2d6e7d4a..0c7a422e2e 100644 --- a/iconv/gconv_int.h +++ b/iconv/gconv_int.h @@ -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; }; diff --git a/iconv/gconv_simple.c b/iconv/gconv_simple.c index 70c43c8fe8..ab9f46a9b3 100644 --- a/iconv/gconv_simple.c +++ b/iconv/gconv_simple.c @@ -29,6 +29,15 @@ #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); \ diff --git a/iconv/gconv_trans.c b/iconv/gconv_trans.c index 4a42a35afd..919d438abe 100644 --- a/iconv/gconv_trans.c +++ b/iconv/gconv_trans.c @@ -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); } |
