Update.
authorUlrich Drepper <drepper@redhat.com>
Thu, 31 Dec 1998 18:19:19 +0000 (18:19 +0000)
committerUlrich Drepper <drepper@redhat.com>
Thu, 31 Dec 1998 18:19:19 +0000 (18:19 +0000)
1998-12-31  Ulrich Drepper  <drepper@cygnus.com>

* iconvdata/Makefile: Use rpath $ORIGIN for modules which use any of
the conversion libraries.

* include/features.h: Mention latest extensions in _POSIX_C_SOURCE
description.

* libio/genops.c (list_all_lock): New variable.
(_IO_un_link, _IO_link_in): Acquire lock before modifying _IO_list_all.
[PR libc/911].

* sysdeps/i386/i686/strtok.s: Add missing cld.

* sysdeps/i386/i686/mempcpy.S: New file.

1998-12-30  Geoff Keating  <geoffk@ozemail.com.au>

Suppress parentheses warnings:
* sysdeps/unix/sysv/linux/powerpc/dl-sysdep.c
(DL_FIND_ARG_COMPONENTS): here,
* sysdeps/powerpc/dl-machine.c: here,
* sysdeps/powerpc/fclrexcpt.c (feclearexcept): here,
* sysdeps/powerpc/fesetround.c (fesetround): here,
* sysdeps/powerpc/feupdateenv.c (feupdateenv): here,
* sysdeps/powerpc/fraiseexcpt.c (feraiseexcept): here,
* sysdeps/powerpc/fsetexcptflg.c (fesetexceptflag): here,
* sysdeps/powerpc/s_rint.c (__rint): here,
* sysdeps/powerpc/s_rintf.c (__rintf): here,
* sysdeps/powerpc/w_sqrt.c (__sqrt): here,
* sysdeps/powerpc/w_sqrtf.c (__sqrtf): and here.

1998-12-30  Geoff Keating  <geoffk@ozemail.com.au>

* wcsmbs/wcstold.c [__NO_LONG_DOUBLE_MATH]: Include wchar.h.
* wcsmbs/wcstold_l.c [__NO_LONG_DOUBLE_MATH]: Likewise.  Also define
appropropriate prototypes, correct procedure names.

1998-12-30  Geoff Keating  <geoffk@ozemail.com.au>

* sysdeps/generic/crypt-entry.c: Prototype __crypt_r, suppress
warning.
(__crypt_r): Add __restrict.
* sysdeps/generic/crypt.h: Remove internal routine.  Add __restrict.

1998-12-31  Ulrich Drepper  <drepper@cygnus.com>

* stdlib/longlong.h: Add missing #else in SPARC definitions.

1998-12-30  Andreas Jaeger  <aj@arthur.rhein-neckar.de>

Patches by Ralf Baechle <ralf@gnu.org>:
* sysdeps/unix/sysv/linux/mips/sgidefs.h: Removed.
* sysdeps/unix/sysv/linux/mips/sys/asm.h:  Removed.
* sysdeps/unix/sysv/linux/mips/sys/regdef.h:  Removed.
* sysdeps/unix/sysv/linux/mips/sys/fpregdef.h:  Removed.
* sysdeps/unix/sysv/linux/mips/regdef.h:  Removed.
* sysdeps/unix/sysv/linux/mips/fpregdef.h: Removed.

* sysdeps/unix/sysv/linux/mips/Makefile: Remove delete files.
* sysdeps/unix/sysv/linux/mips/Dist: Remove deleted files.

* sysdeps/mips/sys/fpregdef.h: New files, enhanced versions of deleted
linux specific files.
* sysdeps/mips/sys/asm.h: Likewise.
* sysdeps/mips/sgidefs.h: Likewise.
* sysdeps/mips/fpregdef.h: Likewise.
* sysdeps/mips/regdef.h: Likewise.

* sysdeps/mips/Makefile: Add new headers.
* sysdeps/mips/Dist: Add new files.

* sysdeps/mips/fpu_control.h (_FPU_DEFAULT): Change value.

1998-12-28  Andreas Schwab  <schwab@issan.cs.uni-dortmund.de>

* iconvdata/Makefile: Remove variable assignments and rules that
are now auto-generated.  Include $(objpfx)iconv-rules instead.
Btw, that removes a few typos.
(charmaps): New variable.
($(objpfx)iconv-rules): New target.
(gen-8bit-modules): Renamed from sed-generated-headers, remove .h
suffixes.
(gen-8bit-gap-modules): Renamed from awk-generated-headers, remove
.h suffixes.
(gen-special-modules): New variable.
(generated-modules): New variable.
(headers): Use it.
(before-compile): Likewise.
(generated): Likewise, and add iconv-rules.
* iconvdata/euc-cn.c: Renamed from euccn.c.
* iconvdata/euc-jp.c: Renamed from eucjp.c.
* iconvdata/euc-kr.c: Renamed from euckr.c.
* iconvdata/euc-tw.c: Renamed from euctw.c.
* iconvdata/iso_6937.c: Renamed from iso6937.c.
* iconvdata/iso_6937-2.c: Renamed from iso6937-2.c.
* iconvdata/t.61.c: Renamed from t61.c.
* iconvdata/Makefile (distribute): Adjusted for those renames.
Remove $(objpfx) from names.

1998-12-28  Andreas Schwab  <schwab@issan.cs.uni-dortmund.de>

* sysdeps/generic/hp-timing.h: Fix comment.
* sysdeps/generic/dl-hash.h: Likewise.
* sysdeps/i386/i686/hp-timing.h: Likewise.

1998-12-28  Andreas Schwab  <schwab@issan.cs.uni-dortmund.de>

* posix/fnmatch.c (fnmatch): Always pass unsigned char values to
FOLD macro.

1998-12-28  Andreas Schwab  <schwab@issan.cs.uni-dortmund.de>

* nss/db-Makefile ($(VAR_DB)/shadow.db): Fix last change.

1998-12-29  Andreas Jaeger  <aj@arthur.rhein-neckar.de>

* sysdeps/unix/sysv/linux/mips/bits/sigaction.h: Sync with
current Linux 2.1.132 kernel sources.

1998-12-28  Andreas Jaeger  <aj@arthur.rhein-neckar.de>

Patches by Ralf Baechle <ralf@gnu.org> for Linux/MIPS:
* sysdeps/unix/sysv/linux/mips/syscalls.list: Add ipc, change
pread/pwrite and llseek calls.

* sysdeps/unix/sysv/linux/mips/sysdep.S: New file.

1998-12-29  Wolfram Gloger  <wmglo@dent.med.uni-muenchen.de>

* malloc/thread-m.h [_LIBC] : Fix for NO_THREADS case.

53 files changed:
ChangeLog
iconvdata/Makefile
iconvdata/euc-cn.c [moved from iconvdata/euccn.c with 100% similarity]
iconvdata/euc-jp.c [moved from iconvdata/eucjp.c with 100% similarity]
iconvdata/euc-kr.c [moved from iconvdata/euckr.c with 100% similarity]
iconvdata/euc-tw.c [moved from iconvdata/euctw.c with 100% similarity]
iconvdata/iso_6937-2.c [moved from iconvdata/iso6937-2.c with 100% similarity]
iconvdata/iso_6937.c [moved from iconvdata/iso6937.c with 100% similarity]
iconvdata/t.61.c [moved from iconvdata/t61.c with 100% similarity]
include/features.h
libio/genops.c
linuxthreads/ChangeLog
linuxthreads/sysdeps/pthread/bits/stdio-lock.h
malloc/thread-m.h
manual/examples/rprintf.c
nss/db-Makefile
posix/fnmatch.c
stdlib/longlong.h
sysdeps/generic/crypt-entry.c
sysdeps/generic/crypt.h
sysdeps/generic/dl-hash.h
sysdeps/generic/hp-timing.h
sysdeps/i386/i686/hp-timing.h
sysdeps/i386/i686/mempcpy.S [moved from sysdeps/unix/sysv/linux/mips/sys/regdef.h with 58% similarity]
sysdeps/i386/i686/strtok.S
sysdeps/mips/Dist
sysdeps/mips/Makefile
sysdeps/mips/fpregdef.h [moved from sysdeps/unix/sysv/linux/mips/sys/fpregdef.h with 77% similarity]
sysdeps/mips/fpu_control.h
sysdeps/mips/regdef.h [moved from sysdeps/unix/sysv/linux/mips/sys/asm.h with 76% similarity]
sysdeps/mips/sgidefs.h [new file with mode: 0644]
sysdeps/mips/sys/asm.h [new file with mode: 0644]
sysdeps/mips/sys/fpregdef.h [new file with mode: 0644]
sysdeps/powerpc/dl-machine.c
sysdeps/powerpc/fclrexcpt.c
sysdeps/powerpc/fesetround.c
sysdeps/powerpc/feupdateenv.c
sysdeps/powerpc/fraiseexcpt.c
sysdeps/powerpc/fsetexcptflg.c
sysdeps/powerpc/s_rint.c
sysdeps/powerpc/s_rintf.c
sysdeps/powerpc/w_sqrt.c
sysdeps/powerpc/w_sqrtf.c
sysdeps/unix/sysv/linux/mips/Dist
sysdeps/unix/sysv/linux/mips/Makefile
sysdeps/unix/sysv/linux/mips/bits/sigaction.h
sysdeps/unix/sysv/linux/mips/fpregdef.h [deleted file]
sysdeps/unix/sysv/linux/mips/regdef.h [deleted file]
sysdeps/unix/sysv/linux/mips/syscalls.list
sysdeps/unix/sysv/linux/mips/sysdep.S [moved from sysdeps/unix/sysv/linux/mips/sgidefs.h with 59% similarity]
sysdeps/unix/sysv/linux/powerpc/dl-sysdep.c
wcsmbs/wcstold.c
wcsmbs/wcstold_l.c

index 07a58c3..f32769a 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,135 @@
+1998-12-31  Ulrich Drepper  <drepper@cygnus.com>
+
+       * iconvdata/Makefile: Use rpath $ORIGIN for modules which use any of
+       the conversion libraries.
+
+       * include/features.h: Mention latest extensions in _POSIX_C_SOURCE
+       description.
+
+       * libio/genops.c (list_all_lock): New variable.
+       (_IO_un_link, _IO_link_in): Acquire lock before modifying _IO_list_all.
+       [PR libc/911].
+
+       * sysdeps/i386/i686/strtok.s: Add missing cld.
+
+       * sysdeps/i386/i686/mempcpy.S: New file.
+
+1998-12-30  Geoff Keating  <geoffk@ozemail.com.au>
+
+       Suppress parentheses warnings:
+       * sysdeps/unix/sysv/linux/powerpc/dl-sysdep.c
+       (DL_FIND_ARG_COMPONENTS): here,
+       * sysdeps/powerpc/dl-machine.c: here,
+       * sysdeps/powerpc/fclrexcpt.c (feclearexcept): here,
+       * sysdeps/powerpc/fesetround.c (fesetround): here,
+       * sysdeps/powerpc/feupdateenv.c (feupdateenv): here,
+       * sysdeps/powerpc/fraiseexcpt.c (feraiseexcept): here,
+       * sysdeps/powerpc/fsetexcptflg.c (fesetexceptflag): here,
+       * sysdeps/powerpc/s_rint.c (__rint): here,
+       * sysdeps/powerpc/s_rintf.c (__rintf): here,
+       * sysdeps/powerpc/w_sqrt.c (__sqrt): here,
+       * sysdeps/powerpc/w_sqrtf.c (__sqrtf): and here.
+
+1998-12-30  Geoff Keating  <geoffk@ozemail.com.au>
+
+       * wcsmbs/wcstold.c [__NO_LONG_DOUBLE_MATH]: Include wchar.h.
+       * wcsmbs/wcstold_l.c [__NO_LONG_DOUBLE_MATH]: Likewise.  Also define
+       appropropriate prototypes, correct procedure names.
+
+1998-12-30  Geoff Keating  <geoffk@ozemail.com.au>
+
+       * sysdeps/generic/crypt-entry.c: Prototype __crypt_r, suppress
+       warning.
+       (__crypt_r): Add __restrict.
+       * sysdeps/generic/crypt.h: Remove internal routine.  Add __restrict.
+
+1998-12-31  Ulrich Drepper  <drepper@cygnus.com>
+
+       * stdlib/longlong.h: Add missing #else in SPARC definitions.
+
+1998-12-30  Andreas Jaeger  <aj@arthur.rhein-neckar.de>
+
+       Patches by Ralf Baechle <ralf@gnu.org>:
+       * sysdeps/unix/sysv/linux/mips/sgidefs.h: Removed.
+       * sysdeps/unix/sysv/linux/mips/sys/asm.h:  Removed.
+       * sysdeps/unix/sysv/linux/mips/sys/regdef.h:  Removed.
+       * sysdeps/unix/sysv/linux/mips/sys/fpregdef.h:  Removed.
+       * sysdeps/unix/sysv/linux/mips/regdef.h:  Removed.
+       * sysdeps/unix/sysv/linux/mips/fpregdef.h: Removed.
+
+       * sysdeps/unix/sysv/linux/mips/Makefile: Remove delete files.
+       * sysdeps/unix/sysv/linux/mips/Dist: Remove deleted files.
+
+       * sysdeps/mips/sys/fpregdef.h: New files, enhanced versions of deleted
+       linux specific files.
+       * sysdeps/mips/sys/asm.h: Likewise.
+       * sysdeps/mips/sgidefs.h: Likewise.
+       * sysdeps/mips/fpregdef.h: Likewise.
+       * sysdeps/mips/regdef.h: Likewise.
+
+       * sysdeps/mips/Makefile: Add new headers.
+       * sysdeps/mips/Dist: Add new files.
+
+       * sysdeps/mips/fpu_control.h (_FPU_DEFAULT): Change value.
+
+1998-12-28  Andreas Schwab  <schwab@issan.cs.uni-dortmund.de>
+
+       * iconvdata/Makefile: Remove variable assignments and rules that
+       are now auto-generated.  Include $(objpfx)iconv-rules instead.
+       Btw, that removes a few typos.
+       (charmaps): New variable.
+       ($(objpfx)iconv-rules): New target.
+       (gen-8bit-modules): Renamed from sed-generated-headers, remove .h
+       suffixes.
+       (gen-8bit-gap-modules): Renamed from awk-generated-headers, remove
+       .h suffixes.
+       (gen-special-modules): New variable.
+       (generated-modules): New variable.
+       (headers): Use it.
+       (before-compile): Likewise.
+       (generated): Likewise, and add iconv-rules.
+       * iconvdata/euc-cn.c: Renamed from euccn.c.
+       * iconvdata/euc-jp.c: Renamed from eucjp.c.
+       * iconvdata/euc-kr.c: Renamed from euckr.c.
+       * iconvdata/euc-tw.c: Renamed from euctw.c.
+       * iconvdata/iso_6937.c: Renamed from iso6937.c.
+       * iconvdata/iso_6937-2.c: Renamed from iso6937-2.c.
+       * iconvdata/t.61.c: Renamed from t61.c.
+       * iconvdata/Makefile (distribute): Adjusted for those renames.
+       Remove $(objpfx) from names.
+
+1998-12-28  Andreas Schwab  <schwab@issan.cs.uni-dortmund.de>
+
+       * sysdeps/generic/hp-timing.h: Fix comment.
+       * sysdeps/generic/dl-hash.h: Likewise.
+       * sysdeps/i386/i686/hp-timing.h: Likewise.
+
+1998-12-28  Andreas Schwab  <schwab@issan.cs.uni-dortmund.de>
+
+       * posix/fnmatch.c (fnmatch): Always pass unsigned char values to
+       FOLD macro.
+
+1998-12-28  Andreas Schwab  <schwab@issan.cs.uni-dortmund.de>
+
+       * nss/db-Makefile ($(VAR_DB)/shadow.db): Fix last change.
+
+1998-12-29  Andreas Jaeger  <aj@arthur.rhein-neckar.de>
+
+       * sysdeps/unix/sysv/linux/mips/bits/sigaction.h: Sync with
+       current Linux 2.1.132 kernel sources.
+
+1998-12-28  Andreas Jaeger  <aj@arthur.rhein-neckar.de>
+
+       Patches by Ralf Baechle <ralf@gnu.org> for Linux/MIPS:
+       * sysdeps/unix/sysv/linux/mips/syscalls.list: Add ipc, change
+       pread/pwrite and llseek calls.
+
+       * sysdeps/unix/sysv/linux/mips/sysdep.S: New file.
+
+1998-12-29  Wolfram Gloger  <wmglo@dent.med.uni-muenchen.de>
+
+       * malloc/thread-m.h [_LIBC] : Fix for NO_THREADS case.
+
 1998-12-28  Ulrich Drepper  <drepper@cygnus.com>
 
        * version.h (VERSION): Bump to 2.0.109.
index 0271a41..37fdfd1 100644 (file)
@@ -49,159 +49,28 @@ modules.so := $(addsuffix .so, $(modules))
 
 include ../Makeconfig
 
-ISO8859-1-routines := iso8859-1
-ISO8859-2-routines := iso8859-2
-ISO8859-3-routines := iso8859-3
-ISO8859-4-routines := iso8859-4
-ISO8859-5-routines := iso8859-5
-ISO8859-6-routines := iso8859-6
-ISO8859-7-routines := iso8859-7
-ISO8859-8-routines := iso8859-8
-ISO8859-9-routines := iso8859-9
-ISO8859-10-routines := iso8859-10
-ISO8859-11-routines := iso8859-11
-ISO8859-13-routines := iso8859-13
-ISO8859-14-routines := iso8859-14
-ISO8859-15-routines := iso8859-15
-ISO646-routines := iso646
-T.61-routines := t61
-ISO_6937-routines := iso6937
-SJIS-routines := sjis
-KOI-8-routines := koi-8
-KOI8-R-routines := koi8-r
-LATIN-GREEK-routines := latin-greek
-LATIN-GREEK-1-routines := latin-greek-1
-HP-ROMAN8-routines := hp-roman8
-EBCDIC-AT-DE-routines := ebcdic-at-de
-EBCDIC-AT-DE-A-routines := ebcdic-at-de-a
-EBCDIC-CA-FR-routines := ebcdic-ca-fr
-EBCDIC-DK-NO-routines := ebcdic-dk-no
-EBCDIC-DK-NO-A-routines := ebcdic-dk-no-a
-EBCDIC-ES-routines := ebcdic-es
-EBCDIC-ES-A-routines := ebcdic-es-a
-EBCDIC-ES-S-routines := ebcdic-es-s
-EBCDIC-FI-SE-routines := ebcdic-fi-se
-EBCDIC-FI-SE-A-routines := ebcdic-fi-se-a
-EBCDIC-FR-routines := ebcdic-fr
-EBCDIC-IS-FRISS-routines := ebcdic-is-friss
-EBCDIC-IT-routines := ebcdic-it
-EBCDIC-PT-routines := ebcdic-pt
-EBCDIC-UK-routines := ebcdic-uk
-EBCDIC-US-routines := ebcdic-us
-IBM037-routines := ibm037
-IBM038-routines := ibm038
-IBM256-routines := ibm256
-IBM273-routines := ibm273
-IBM274-routines := ibm274
-IBM275-routines := ibm275
-IBM277-routines := ibm277
-IBM278-routines := ibm278
-IBM280-routines := ibm280
-IBM281-routines := ibm281
-IBM284-routines := ibm284
-IBM285-routines := ibm285
-IBM290-routines := ibm290
-IBM297-routines := ibm297
-IBM420-routines := ibm420
-IBM423-routines := ibm423
-IBM424-routines := ibm424
-IBM437-routines := ibm437
-IBM500-routines := ibm500
-IBM850-routines := ibm850
-IBM851-routines := ibm851
-IBM852-routines := ibm852
-IBM855-routines := ibm855
-IBM857-routines := ibm857
-IBM860-routines := ibm860
-IBM861-routines := ibm861
-IBM862-routines := ibm862
-IBM863-routines := ibm863
-IBM864-routines := ibm864
-IBM865-routines := ibm865
-IBM866-routines := ibm866
-IBM868-routines := ibm868
-IBM869-routines := ibm869
-IBM870-routines := ibm870
-IBM871-routines := ibm871
-IBM875-routines := ibm875
-IBM880-routines := ibm880
-IBM891-routines := ibm891
-IBM903-routines := ibm903
-IBM904-routines := ibm904
-IBM905-routines := ibm905
-IBM918-routines := ibm918
-IBM1004-routines := ibm1004
-IBM1026-routines := ibm1026
-IBM1047-routines := ibm1047
-CP737-routines := cp737
-CP775-routines := cp775
-CP874-routines := cp874
-CP1250-routines := cp1250
-CP1251-routines := cp1251
-CP1252-routines := cp1252
-CP1253-routines := cp1253
-CP1254-routines := cp1254
-CP1255-routines := cp1255
-CP1256-routines := cp1256
-CP1257-routines := cp1257
-CP1258-routines := cp1258
-EUC-KR-routines := euckr
-JOHAB-routines := johab
-UHC-routines := uhc
-BIG5-routines := big5
-EUC-JP-routines := eucjp
-EUC-CN-routines := euccn
-EUC-TW-routines := euctw
-ISO-2022-JP-routines := iso-2022-jp
-ISO-2022-KR-routines := iso-2022-kr
-MACINTOSH-routines := macintosh
-IEC_P27-1-routines := iec_p27-1
-BALTIC-routines := baltic
-ASMO_449-routines := asmo_449
-ANSI_X3.110-routines := ansi_x3.110
-CSN_369103-routines := csn_369103
-CWI-routines := cwi
-DEC-MCS-routines := dec-mcs
-ECMA-CYRILLIC-routines := ecma-cyrillic
-GOST_19768-74-routines := gost_19768-74
-GREEK-CCITT-routines := greek-ccitt
-GREEK7-routines := greek7
-GREEK7-OLD-routines := greek7-old
-INIS-routines := inis
-INIS-8-routines := inis
-INIS-CYRILLIC-routines := inis
-ISO_6937-2-routines := iso6937-2
-ISO_2033-routines := iso_2033
-ISO_5427-routines := iso_5427
-ISO_5427-EXT-routines := iso_5427-ext
-ISO_5428-routines := iso_5428
-ISO_10367-BOX-routines := iso_10367-box
-MAC-IS-routines := mac-is
-MAC-UK-routines := mac-uk
-NATS-DANO-routines := nats-dano
-NATS-SEFI-routines := nats-dano
 libJIS-routines := jis0201 jis0208 jis0212
 libKSC-routines := ksc5601
 libGB-routines := gb2312
 libCNS-routines := cns11643l1 cns11643
 
-LDFLAGS-EUC-KR.so = -Wl,-rpath,$(gconvdir)
+LDFLAGS-EUC-KR.so = -Wl,-rpath,'$$ORIGIN'
 $(objpfx)EUC-KR.so: $(objpfx)libKSC.so
-LDFLAGS-JOHAB.so = -Wl,-rpath,$(gconvdir)
+LDFLAGS-JOHAB.so = -Wl,-rpath,'$$ORIGIN'
 $(objpfx)JOHAB.so: $(objpfx)libKSC.so
-LDFLAGS-UHC.so = -Wl,-rpath,$(gconvdir)
+LDFLAGS-UHC.so = -Wl,-rpath,'$$ORIGIN'
 $(objpfx)UHC.so: $(objpfx)libKSC.so
-LDFLAGS-EUC-JP.so = -Wl,-rpath,$(gconvdir)
+LDFLAGS-EUC-JP.so = -Wl,-rpath,'$$ORIGIN'
 $(objpfx)EUC-JP.so: $(objpfx)libJIS.so
-LDFLAGS-EUC-CN.so = -Wl,-rpath,$(gconvdir)
+LDFLAGS-EUC-CN.so = -Wl,-rpath,'$$ORIGIN'
 $(objpfx)EUC-CN.so: $(objpfx)libGB.so
-LDFLAGS-EUC-TW.so = -Wl,-rpath,$(gconvdir)
+LDFLAGS-EUC-TW.so = -Wl,-rpath,'$$ORIGIN'
 $(objpfx)EUC-TW.so: $(objpfx)libCNS.so
 
-LDFLAGS-ISO-2022-JP.so = -Wl,-rpath,$(gconvdir)
+LDFLAGS-ISO-2022-JP.so = -Wl,-rpath,'$$ORIGIN'
 $(objpfx)ISO-2022-JP.so: $(objpfx)libJIS.so $(objpfx)libGB.so \
                         $(objpfx)libCNS.so $(objpfx)libKSC.so
-LDFLAGS-ISO-2022-KR.so = -Wl,-rpath,$(gconvdir)
+LDFLAGS-ISO-2022-KR.so = -Wl,-rpath,'$$ORIGIN'
 $(objpfx)ISO-2022-KR.so: $(objpfx)libKSC.so
 
 LDFLAGS-libJIS.so = -Wl,-soname,$(@F)
@@ -209,38 +78,39 @@ LDFLAGS-libKSC.so = -Wl,-soname,$(@F)
 LDFLAGS-libGB.so = -Wl,-soname,$(@F)
 LDFLAGS-libCNS.so = -Wl,-soname,$(@F)
 
-distribute := 8bit-generic.c 8bit-gap.c gap.awk gaptab.awk gconv-modules    \
+distribute := gconv-modules extra-module.mk gap.awk gaptab.awk             \
+             gen-8bit.sh gen-8bit-gap.sh gen-8bit-gap-1.sh                 \
+             TESTS $(wildcard testdata/*) run-iconv-test.sh                \
+             8bit-generic.c 8bit-gap.c                                     \
+             ansi_x3.110.c asmo_449.c baltic.c big5.c cp737.c cp737.h      \
+             cp775.c cp775.h cp874.c cp874.h cns11643.c cns11643.h         \
+             cns11643l1.c cns11643l1.h cp1250.c cp1251.c cp1252.c cp1253.c \
+             cp1254.c cp1255.c cp1256.c cp1257.c cp1258.c cp1258.h         \
+             csn_369103.c cwi.c dec-mcs.c ebcdic-at-de.c ebcdic-at-de-a.c  \
+             ebcdic-ca-fr.c ebcdic-dk-no.c ebcdic-dk-no-a.c ebcdic-es.c    \
+             ebcdic-es-a.c ebcdic-es-s.c ebcdic-fr.c ebcdic-fi-se.c        \
+             ebcdic-fi-se-a.c ebcdic-is-friss.c ebcdic-it.c ebcdic-pt.c    \
+             ebcdic-uk.c ebcdic-us.c ecma-cyrillic.c euc-cn.c euc-jp.c     \
+             euc-kr.c euc-tw.c gb2312.c gb2312.h gost_19768-74.c           \
+             greek-ccitt.c greek7.c greek7-old.c hp-roman8.c ibm037.c      \
+             ibm038.c ibm256.c ibm273.c ibm274.c ibm275.c ibm277.c         \
+             ibm278.c ibm280.c ibm281.c ibm284.c ibm285.c ibm290.c         \
+             ibm297.c ibm420.c ibm423.c ibm424.c ibm437.c ibm500.c         \
+             ibm850.c ibm851.c ibm852.c ibm855.c ibm857.c ibm860.c         \
+             ibm861.c ibm862.c ibm863.c ibm864.c ibm865.c ibm866.c         \
+             ibm868.c ibm869.c ibm870.c ibm871.c ibm875.c ibm880.c         \
+             ibm891.c ibm903.c ibm904.c ibm905.c ibm918.c ibm1004.c        \
+             ibm1026.c ibm1047.c iec_p27-1.c inis.c inis-8.c               \
+             inis-cyrillic.c iso-2022-jp.c iso-2022-kr.c iso646.c          \
              iso8859-1.c iso8859-2.c iso8859-3.c iso8859-4.c iso8859-5.c   \
              iso8859-6.c iso8859-7.c iso8859-8.c iso8859-9.c iso8859-10.c  \
              iso8859-11.c iso8859-11.h iso8859-13.c iso8859-14.c           \
-             iso8859-15.c                                                  \
-             t61.c iso6937.c sjis.c jis0201.h jis0208.h jis0212.h          \
-             koi-8.c koi8-r.c hp-roman8.c latin-greek.c latin-greek-1.c    \
-             ebcdic-at-de.c ebcdic-at-de-a.c ebcdic-ca-fr.c jis0201.c      \
-             jis0208.c jis0212.c extra-module.mk euckr.c johab.c uhc.c     \
-             ksc5601.c ksc5601.h iso646.c big5.c eucjp.c gb2312.c gb2312.h \
-             euccn.c euctw.c cns11643l1.c cns11643l1.h cns11643.h          \
-             cns11643.c run-iconv-test.sh TESTS $(wildcard testdata/*)     \
-             ebcdic-dk-no.c ebcdic-dk-no-a.c ebcdic-es.c ebcdic-es-a.c     \
-             ebcdic-es-s.c ebcdic-fi-se.c ebcdic-fi-se-a.c ebcdic-fr.c     \
-             ebcdic-is-friss.c ebcdic-it.c ebcdic-pt.c ebcdic-uk.c         \
-             ebcdic-us.c ibm037.c ibm038.c ibm256.c ibm273.c ibm274.c      \
-             ibm275.c ibm277.c ibm278.c ibm280.c ibm281.c ibm284.c         \
-             ibm285.c ibm290.c ibm297.c ibm420.c ibm423.c ibm424.c         \
-             ibm437.c ibm500.c ibm850.c ibm851.c ibm852.c ibm855.c         \
-             ibm857.c ibm860.c ibm861.c ibm862.c ibm863.c ibm864.c         \
-             ibm865.c ibm868.c ibm869.c ibm870.c ibm871.c ibm875.c         \
-             ibm880.c ibm891.c ibm903.c ibm904.c ibm905.c ibm918.c         \
-             ibm1004.c ibm1026.c ibm1047.c cp1250.c cp1251.c cp1252.c      \
-             ibm866.c cp1258.c cp1258.h                                    \
-             cp1253.c cp1254.c cp1255.c cp1256.c cp1257.c cp874.c cp874.h  \
-             cp737.c cp737.h cp775.c cp775.h iso-2022-jp.c iso-2022-kr.c   \
-             gen-8bit.sh gen-8bit-gap.sh gen-8bit-gap-1.sh macintosh.c     \
-             iec_p27-1.c baltic.c asmo_449.c ansi_x3.110.c csn_369103.c    \
-             cwi.c dec-mcs.c ecma-cyrillic.c gost_19768-74.c greek-ccitt.c \
-             greek7.c greek7-old.c inis.c inis-8.c inis-cyrillic.c         \
-             iso6937-2.c iso_2033.c iso_5427.c iso_5427-ext.c mac-uk.c     \
-             iso_5428.c iso_10367-box.c mac-is.c nats-dano.c nats-sefi.c
+             iso8859-15.c iso_2033.c iso_5427-ext.c iso_5427.c iso_5428.c  \
+             iso_6937.c iso_6937-2.c iso_10367-box.c jis0201.c jis0201.h   \
+             jis0208.c jis0208.h jis0212.c jis0212.h johab.c koi-8.c       \
+             koi8-r.c ksc5601.c ksc5601.h latin-greek.c latin-greek-1.c    \
+             macintosh.c mac-is.c mac-uk.c nats-dano.c nats-sefi.c sjis.c  \
+             t.61.c uhc.c
 
 # We build the transformation modules only when we build shared libs.
 ifeq (yes,$(build-shared))
@@ -258,6 +128,10 @@ $(LINK.o) -shared -o $@ $(sysdep-LDFLAGS) $(config-LDFLAGS)  \
 endef
 
 # Rule to generate the shared objects.
+charmaps = ../localedata/charmaps
+ifndef no_deps
+-include $(objpfx)iconv-rules
+endif
 extra-modules-left := $(modules)
 include extra-module.mk
 
@@ -269,6 +143,42 @@ install-others     = $(addprefix $(inst_gconvdir)/, $(modules.so)) \
 # If we have the localedata add-on available we can build the conversion
 # tables for numerous charsets.
 
+gen-8bit-modules := iso8859-2 iso8859-3 iso8859-4 iso8859-6 iso8859-9 koi-8 \
+                   hp-roman8 ebcdic-at-de ebcdic-at-de-a ebcdic-ca-fr      \
+                   ebcdic-dk-no ebcdic-dk-no-a ebcdic-es ebcdic-es-a       \
+                   ebcdic-es-s ebcdic-fi-se ebcdic-fi-se-a ebcdic-fr       \
+                   ebcdic-is-friss ebcdic-it ebcdic-pt ebcdic-uk ebcdic-us \
+                   ibm037 ibm038 ibm274 ibm275 ibm423 ibm500 ibm870 ibm871 \
+                   ibm891 ibm903 ibm904 ibm905 ibm1047
+
+gen-8bit-gap-modules := koi8-r latin-greek latin-greek-1 ibm256 ibm273    \
+                       ibm277 ibm278 ibm280 ibm281 ibm284 ibm285 ibm290   \
+                       ibm297 ibm420 ibm424 ibm437 ibm850 ibm851 ibm852   \
+                       ibm855 ibm857 ibm860 ibm861 ibm862 ibm863 ibm864   \
+                       ibm865 ibm868 ibm869 ibm875 ibm880 ibm918 ibm1004  \
+                       ibm1026 cp1250 cp1251 cp1252 cp1253 cp1254 cp1255  \
+                       cp1256 cp1257 ibm866 iso8859-5 iso8859-7 iso8859-8 \
+                       iso8859-10 macintosh iec_p27-1 baltic asmo_449     \
+                       csn_369103 cwi dec-mcs ecma-cyrillic gost_19768-74 \
+                       greek-ccitt greek7 greek7-old inis inis-8          \
+                       inis-cyrillic iso_2033 iso_5427 iso_5427-ext       \
+                       iso_5428 iso_10367-box mac-is nats-dano nats-sefi  \
+                       iso8859-13 iso8859-14 iso8859-15 mac-uk
+
+gen-special-modules := iso8859-7jp
+
+generated-modules := $(gen-8bit-modules) $(gen-8bit-gap-modules) \
+                    $(gen-special-modules)
+
+generated = $(generated-modules:=.h) $(generated-modules:=.stmp) \
+           iconv-test.out iconv-rules
+ifdef objpfx
+generated += gconv-modules
+endif
+
+# Rules to generate the headers.
+export AWK
+
 define generate-8bit-table
 $(make-target-directory)
 $(SHELL) ./gen-8bit.sh $< > $(@:stmp=T)
@@ -276,17 +186,6 @@ $(move-if-change) $(@:stmp=T) $(@:stmp=h)
 touch $@
 endef
 
-sed-generated-headers := iso8859-2.h iso8859-3.h iso8859-4.h iso8859-6.h \
-                        iso8859-9.h koi-8.h hp-roman8.h ebcdic-at-de.h  \
-                        ebcdic-at-de-a.h ebcdic-ca-fr.h ebcdic-dk-no.h  \
-                        ebcdic-dk-no-a.h ebcdic-es.h ebcdic-es-a.h      \
-                        ebcdic-es-s.h ebcdic-fi-se.h ebcdic-fi-se-a.h   \
-                        ebcdic-fr.h ebcdic-is-friss.h ebcdic-it.h       \
-                        ebcdic-pt.h ebcdic-uk.h ebcdic-us.h ibm037.h    \
-                        ibm038.h ibm274.h ibm275.h ibm423.h ibm500.h    \
-                        ibm870.h ibm871.h ibm891.h ibm903.h ibm904.h    \
-                        ibm905.h ibm1047.h
-
 define generate-8bit-gap-table
 $(make-target-directory)
 $(SHELL) ./gen-8bit-gap.sh $< > $(@:stmp=T)
@@ -294,293 +193,52 @@ $(move-if-change) $(@:stmp=T) $(@:stmp=h)
 touch $@
 endef
 
-export AWK
-
-awk-generated-headers  := koi8-r.h latin-greek.h latin-greek-1.h        \
-                         ibm256.h ibm273.h ibm277.h ibm278.h ibm280.h   \
-                         ibm281.h ibm284.h ibm285.h ibm290.h ibm297.h   \
-                         ibm420.h ibm424.h ibm437.h ibm850.h ibm851.h   \
-                         ibm852.h ibm855.h ibm857.h ibm860.h ibm861.h   \
-                         ibm862.h ibm863.h ibm864.h ibm865.h ibm868.h   \
-                         ibm869.h ibm875.h ibm880.h ibm918.h ibm1004.h  \
-                         ibm1026.h cp1250.h cp1251.h cp1252.h cp1253.h  \
-                         cp1254.h cp1255.h cp1256.h cp1257.h ibm866.h   \
-                         iso8859-5.h iso8859-7.h iso8859-8.h            \
-                         iso8859-10.h iso8859-7jp.h macintosh.h         \
-                         iec_p27-1.h baltic.h asmo_449.h csn_369103.h   \
-                         cwi.h dec-mcs.h ecma-cyrillic.h gost_19768-74.h\
-                         greek-ccitt.h greek7.h greek7-old.h inis.h     \
-                         inis-8.h inis-cyrillic.h iso_2033.h iso_5427.h \
-                         iso_5427-ext.h iso_5428.h iso_10367-box.h      \
-                         mac-is.h nats-dano.h nats-sefi.h iso8859-13.h  \
-                         iso8859-14.h iso8859-15.h mac-uk.h
-
-generated = $(sed-generated-headers) $(sed-generated-headers:%.h=%.stmp) \
-           $(awk-generated-headers) $(awk-generated-headers:%.h=%.stmp) \
-           iconv-test.out
-ifdef objpfx
-generated += $(objpfx)gconv-modules
-endif
-
 # The headers must be generated before the compilation.
-before-compile = $(addprefix $(objpfx),\
-                       $(sed-generated-headers) $(awk-generated-headers))
+before-compile = $(addprefix $(objpfx),$(generated-modules:=.h))
 
-# Rules to generate the headers.
-$(sed-generated-headers:%=$(objpfx)%): $(objpfx)%.h: $(objpfx)%.stmp
+$(objpfx)iconv-rules: Makefile
+       $(make-target-directory)
+       { echo $(filter-out lib%, $(modules)); \
+         echo 8bit $(gen-8bit-modules); \
+         echo 8bit-gap $(gen-8bit-gap-modules); } | \
+       $(AWK) 'NR == 1 { \
+                 for (i = 1; i <= NF; i++) \
+                   printf "%s-routines := %s\n", $$i, tolower($$i); \
+               }; \
+               NR > 1 { \
+                 for (i = 2; i <= NF; i++) { \
+                   printf "$$(objpfx)%s.stmp: ", $$i; \
+                   map = toupper($$i); \
+                   sub(/^ISO8859/, "ISO-8859", map); \
+                   if (map == "ISO_2033") map = map "-1983"; \
+                   printf "$$(charmaps)/%s ", map; \
+                   printf "gen-%s.sh\n", $$1; \
+                   printf "\t$$(generate-%s-table)\n", $$1; \
+                 } \
+               }' > $@.new
+       mv -f $@.new $@
+
+$(generated-modules:%=$(objpfx)%.h): $(objpfx)%.h: $(objpfx)%.stmp
        @:
 
-$(objpfx)iso8859-2.stmp: ../localedata/charmaps/ISO-8859-2 gen-8bit.sh
-       $(generate-8bit-table)
-$(objpfx)iso8859-3.stmp: ../localedata/charmaps/ISO-8859-3 gen-8bit.sh
-       $(generate-8bit-table)
-$(objpfx)iso8859-4.stmp: ../localedata/charmaps/ISO-8859-4 gen-8bit.sh
-       $(generate-8bit-table)
-$(objpfx)iso8859-6.stmp: ../localedata/charmaps/ISO-8859-6 gen-8bit.sh
-       $(generate-8bit-table)
-$(objpfx)iso8859-9.stmp: ../localedata/charmaps/ISO-8859-9 gen-8bit.sh
-       $(generate-8bit-table)
-
-$(objpfx)koi-8.stmp: ../localedata/charmaps/KOI-8 gen-8bit.sh
-       $(generate-8bit-table)
-$(objpfx)hp-roman8.stmp: ../localedata/charmaps/HP-ROMAN8 gen-8bit.sh
-       $(generate-8bit-table)
-
-$(objpfx)ebcdic-at-de.stmp: ../localedata/charmaps/EBCDIC-AT-DE gen-8bit.sh
-       $(generate-8bit-table)
-$(objpfx)ebcdic-at-de-a.stmp: ../localedata/charmaps/EBCDIC-AT-DE-A gen-8bit.sh
-       $(generate-8bit-table)
-$(objpfx)ebcdic-ca-fr.stmp: ../localedata/charmaps/EBCDIC-CA-FR gen-8bit.sh
-       $(generate-8bit-table)
-$(objpfx)ebcdic-dk-no.stmp: ../localedata/charmaps/EBCDIC-DK-NO gen-8bit.sh
-       $(generate-8bit-table)
-$(objpfx)ebcdic-dk-no-a.stmp: ../localedata/charmaps/EBCDIC-DK-NO-A gen-8bit.sh
-       $(generate-8bit-table)
-$(objpfx)ebcdic-es.stmp: ../localedata/charmaps/EBCDIC-ES gen-8bit.sh
-       $(generate-8bit-table)
-$(objpfx)ebcdic-es-a.stmp: ../localedata/charmaps/EBCDIC-ES-A gen-8bit.sh
-       $(generate-8bit-table)
-$(objpfx)ebcdic-es-s.stmp: ../localedata/charmaps/EBCDIC-ES-S gen-8bit.sh
-       $(generate-8bit-table)
-$(objpfx)ebcdic-fi-se.stmp: ../localedata/charmaps/EBCDIC-FI-SE gen-8bit.sh
-       $(generate-8bit-table)
-$(objpfx)ebcdic-fi-se-a.stmp: ../localedata/charmaps/EBCDIC-FI-SE-A gen-8bit.sh
-       $(generate-8bit-table)
-$(objpfx)ebcdic-fr.stmp: ../localedata/charmaps/EBCDIC-FR gen-8bit.sh
-       $(generate-8bit-table)
-$(objpfx)ebcdic-is-friss.stmp: ../localedata/charmaps/EBCDIC-IS-FRISS gen-8bit.sh
-       $(generate-8bit-table)
-$(objpfx)ebcdic-it.stmp: ../localedata/charmaps/EBCDIC-IT gen-8bit.sh
-       $(generate-8bit-table)
-$(objpfx)ebcdic-pt.stmp: ../localedata/charmaps/EBCDIC-PT gen-8bit.sh
-       $(generate-8bit-table)
-$(objpfx)ebcdic-uk.stmp: ../localedata/charmaps/EBCDIC-UK gen-8bit.sh
-       $(generate-8bit-table)
-$(objpfx)ebcdic-us.stmp: ../localedata/charmaps/EBCDIC-US gen-8bit.sh
-       $(generate-8bit-table)
-
-$(objpfx)ibm037.stmp: ../localedata/charmaps/IBM037 gen-8bit.sh
-       $(generate-8bit-table)
-$(objpfx)ibm038.stmp: ../localedata/charmaps/IBM038 gen-8bit.sh
-       $(generate-8bit-table)
-$(objpfx)ibm274.stmp: ../localedata/charmaps/IBM274 gen-8bit.sh
-       $(generate-8bit-table)
-$(objpfx)ibm275.stmp: ../localedata/charmaps/IBM275 gen-8bit.sh
-       $(generate-8bit-table)
-$(objpfx)ibm423.stmp: ../localedata/charmaps/IBM423 gen-8bit.sh
-       $(generate-8bit-table)
-$(objpfx)ibm500.stmp: ../localedata/charmaps/IBM500 gen-8bit.sh
-       $(generate-8bit-table)
-$(objpfx)ibm870.stmp: ../localedata/charmaps/IBM870 gen-8bit.sh
-       $(generate-8bit-table)
-$(objpfx)ibm871.stmp: ../localedata/charmaps/IBM871 gen-8bit.sh
-       $(generate-8bit-table)
-$(objpfx)ibm891.stmp: ../localedata/charmaps/IBM891 gen-8bit.sh
-       $(generate-8bit-table)
-$(objpfx)ibm903.stmp: ../localedata/charmaps/IBM903 gen-8bit.sh
-       $(generate-8bit-table)
-$(objpfx)ibm904.stmp: ../localedata/charmaps/IBM904 gen-8bit.sh
-       $(generate-8bit-table)
-$(objpfx)ibm905.stmp: ../localedata/charmaps/IBM905 gen-8bit.sh
-       $(generate-8bit-table)
-$(objpfx)ibm1047.stmp: ../localedata/charmaps/IBM1047 gen-8bit.sh
-       $(generate-8bit-table)
-
-$(awk-generated-headers:%=$(objpfx)%): $(objpfx)%.h: $(objpfx)%.stmp
-       @:
+$(gen-8bit-modules:%=$(objpfx)%.stmp): $(objpfx)%.stmp: $(objpfx)iconv-rules
+$(gen-8bit-gap-modules:%=$(objpfx)%.stmp): $(objpfx)%.stmp: $(objpfx)iconv-rules
 
-$(objpfx)iso8859-5.stmp: ../localedata/charmaps/ISO-8859-5 gen-8bit-gap.sh
-       $(generate-8bit-gap-table)
-$(objpfx)iso8859-7.stmp: ../localedata/charmaps/ISO-8859-7 gen-8bit-gap.sh
-       $(generate-8bit-gap-table)
-$(objpfx)iso8859-7jp.stmp: ../localedata/charmaps/ISO-8859-7 gen-8bit-gap-1.sh
+$(objpfx)iso8859-7jp.stmp: $(charmaps)/ISO-8859-7 gen-8bit-gap-1.sh
        $(make-target-directory)
-       $(SHELL) ./gen-8bit-gap-1.sh $< >$(@:stmp=T)
+       $(SHELL) ./gen-8bit-gap-1.sh $< > $(@:stmp=T)
        $(move-if-change) $(@:stmp=T) $(@:stmp=h)
        touch $@
 
-$(objpfx)iso8859-8.stmp: ../localedata/charmaps/ISO-8859-8 gen-8bit-gap.sh
-       $(generate-8bit-gap-table)
-$(objpfx)iso8859-10.stmp: ../localedata/charmaps/ISO-8859-10 gen-8bit-gap.sh
-       $(generate-8bit-gap-table)
-$(objpfx)iso8859-13.stmp: ../localedata/charmaps/ISO-8859-13 gen-8bit-gap.sh
-       $(generate-8bit-gap-table)
-$(objpfx)iso8859-14.stmp: ../localedata/charmaps/ISO-8859-14 gen-8bit-gap.sh
-       $(generate-8bit-gap-table)
-$(objpfx)iso8859-15.stmp: ../localedata/charmaps/ISO-8859-15 gen-8bit-gap.sh
-       $(generate-8bit-gap-table)
-
-$(objpfx)koi8-r.stmp: ../localedata/charmaps/KOI8-R gen-8bit-gap.sh
-       $(generate-8bit-gap-table)
-$(objpfx)latin-greek.stmp: ../localedata/charmaps/LATIN-GREEK gen-8bit-gap.sh
-       $(generate-8bit-gap-table)
-$(objpfx)latin-greek-1.stmp: ../localedata/charmaps/LATIN-GREEK-1 gen-8bit-gap.sh
-       $(generate-8bit-gap-table)
-
-$(objpfx)ibm256.stmp: ../localedata/charmaps/IBM256 gen-8bit-gap.sh
-       $(generate-8bit-gap-table)
-$(objpfx)ibm273.stmp: ../localedata/charmaps/IBM273 gen-8bit-gap.sh
-       $(generate-8bit-gap-table)
-$(objpfx)ibm277.stmp: ../localedata/charmaps/IBM277 gen-8bit-gap.sh
-       $(generate-8bit-gap-table)
-$(objpfx)ibm278.stmp: ../localedata/charmaps/IBM278 gen-8bit-gap.sh
-       $(generate-8bit-gap-table)
-$(objpfx)ibm280.stmp: ../localedata/charmaps/IBM280 gen-8bit-gap.sh
-       $(generate-8bit-gap-table)
-$(objpfx)ibm281.stmp: ../localedata/charmaps/IBM281 gen-8bit-gap.sh
-       $(generate-8bit-gap-table)
-$(objpfx)ibm284.stmp: ../localedata/charmaps/IBM284 gen-8bit-gap.sh
-       $(generate-8bit-gap-table)
-$(objpfx)ibm285.stmp: ../localedata/charmaps/IBM285 gen-8bit-gap.sh
-       $(generate-8bit-gap-table)
-$(objpfx)ibm290.stmp: ../localedata/charmaps/IBM290 gen-8bit-gap.sh
-       $(generate-8bit-gap-table)
-$(objpfx)ibm297.stmp: ../localedata/charmaps/IBM297 gen-8bit-gap.sh
-       $(generate-8bit-gap-table)
-$(objpfx)ibm420.stmp: ../localedata/charmaps/IBM420 gen-8bit-gap.sh
-       $(generate-8bit-gap-table)
-$(objpfx)ibm424.stmp: ../localedata/charmaps/IBM424 gen-8bit-gap.sh
-       $(generate-8bit-gap-table)
-$(objpfx)ibm437.stmp: ../localedata/charmaps/IBM437 gen-8bit-gap.sh
-       $(generate-8bit-gap-table)
-$(objpfx)ibm850.stmp: ../localedata/charmaps/IBM850 gen-8bit-gap.sh
-       $(generate-8bit-gap-table)
-$(objpfx)ibm851.stmp: ../localedata/charmaps/IBM851 gen-8bit-gap.sh
-       $(generate-8bit-gap-table)
-$(objpfx)ibm852.stmp: ../localedata/charmaps/IBM852 gen-8bit-gap.sh
-       $(generate-8bit-gap-table)
-$(objpfx)ibm855.stmp: ../localedata/charmaps/IBM855 gen-8bit-gap.sh
-       $(generate-8bit-gap-table)
-$(objpfx)ibm857.stmp: ../localedata/charmaps/IBM857 gen-8bit-gap.sh
-       $(generate-8bit-gap-table)
-$(objpfx)ibm860.stmp: ../localedata/charmaps/IBM860 gen-8bit-gap.sh
-       $(generate-8bit-gap-table)
-$(objpfx)ibm861.stmp: ../localedata/charmaps/IBM861 gen-8bit-gap.sh
-       $(generate-8bit-gap-table)
-$(objpfx)ibm862.stmp: ../localedata/charmaps/IBM862 gen-8bit-gap.sh
-       $(generate-8bit-gap-table)
-$(objpfx)ibm863.stmp: ../localedata/charmaps/IBM863 gen-8bit-gap.sh
-       $(generate-8bit-gap-table)
-$(objpfx)ibm864.stmp: ../localedata/charmaps/IBM864 gen-8bit-gap.sh
-       $(generate-8bit-gap-table)
-$(objpfx)ibm865.stmp: ../localedata/charmaps/IBM865 gen-8bit-gap.sh
-       $(generate-8bit-gap-table)
-$(objpfx)ibm866.stmp: ../localedata/charmaps/IBM866 gen-8bit-gap.sh
-       $(generate-8bit-gap-table)
-$(objpfx)ibm868.stmp: ../localedata/charmaps/IBM868 gen-8bit-gap.sh
-       $(generate-8bit-gap-table)
-$(objpfx)ibm869.stmp: ../localedata/charmaps/IBM869 gen-8bit-gap.sh
-       $(generate-8bit-gap-table)
-$(objpfx)ibm875.stmp: ../localedata/charmaps/IBM875 gen-8bit-gap.sh
-       $(generate-8bit-gap-table)
-$(objpfx)ibm880.stmp: ../localedata/charmaps/IBM880 gen-8bit-gap.sh
-       $(generate-8bit-gap-table)
-$(objpfx)ibm918.stmp: ../localedata/charmaps/IBM918 gen-8bit-gap.sh
-       $(generate-8bit-gap-table)
-$(objpfx)ibm1004.stmp: ../localedata/charmaps/IBM1004 gen-8bit-gap.sh
-       $(generate-8bit-gap-table)
-$(objpfx)ibm1026.stmp: ../localedata/charmaps/IBM1026 gen-8bit-gap.sh
-       $(generate-8bit-gap-table)
-
-$(objpfx)cp1250.stmp: ../localedata/charmaps/CP1250 gen-8bit-gap.sh
-       $(generate-8bit-gap-table)
-$(objpfx)cp1251.stmp: ../localedata/charmaps/CP1251 gen-8bit-gap.sh
-       $(generate-8bit-gap-table)
-$(objpfx)cp1252.stmp: ../localedata/charmaps/CP1252 gen-8bit-gap.sh
-       $(generate-8bit-gap-table)
-$(objpfx)cp1253.stmp: ../localedata/charmaps/CP1253 gen-8bit-gap.sh
-       $(generate-8bit-gap-table)
-$(objpfx)cp1254.stmp: ../localedata/charmaps/CP1254 gen-8bit-gap.sh
-       $(generate-8bit-gap-table)
-$(objpfx)cp1255.stmp: ../localedata/charmaps/CP1255 gen-8bit-gap.sh
-       $(generate-8bit-gap-table)
-$(objpfx)cp1256.stmp: ../localedata/charmaps/CP1256 gen-8bit-gap.sh
-       $(generate-8bit-gap-table)
-$(objpfx)cp1257.stmp: ../localedata/charmaps/CP1257 gen-8bit-gap.sh
-       $(generate-8bit-gap-table)
-
-$(objpfx)macintosh.stmp: ../localedata/charmaps/MACINTOSH gen-8bit-gap.sh
-       $(generate-8bit-gap-table)
-$(objpfx)iec_p27-1.stmp: ../localedata/charmaps/IEC_P27-1 gen-8bit-gap.sh
-       $(generate-8bit-gap-table)
-$(objpfx)baltic.stmp: ../localedata/charmaps/BALTIC gen-8bit-gap.sh
-       $(generate-8bit-gap-table)
-$(objpfx)asmo_449.stmp: ../localedata/charmaps/ASMO_449 gen-8bit-gap.sh
-       $(generate-8bit-gap-table)
-$(objpfx)csn_369103.stmp: ../localedata/charmaps/CSN_369103 gen-8bit-gap.sh
-       $(generate-8bit-gap-table)
-$(objpfx)cwi.stmp: ../localedata/charmaps/CWI gen-8bit-gap.sh
-       $(generate-8bit-gap-table)
-$(objpfx)dec-mcs.stmp: ../localedata/charmaps/DEC-MCS gen-8bit-gap.sh
-       $(generate-8bit-gap-table)
-$(objpfx)ecma-cyrillic.stmp: ../localedata/charmaps/ECMA-CYRILLIC \
-                            gen-8bit-gap.sh
-       $(generate-8bit-gap-table)
-$(objpfx)gost_19768-74.stmp: ../localedata/charmaps/GOST_19768-74 \
-                            gen-8bit-gap.sh
-       $(generate-8bit-gap-table)
-$(objpfx)greek-ccitt.stmp: ../localedata/charmaps/GREEK-CCITT gen-8bit-gap.sh
-       $(generate-8bit-gap-table)
-$(objpfx)greek7.stmp: ../localedata/charmaps/GREEK7 gen-8bit-gap.sh
-       $(generate-8bit-gap-table)
-$(objpfx)greek7-old.stmp: ../localedata/charmaps/GREEK7-OLD gen-8bit-gap.sh
-       $(generate-8bit-gap-table)
-$(objpfx)inis.stmp: ../localedata/charmaps/INIS gen-8bit-gap.sh
-       $(generate-8bit-gap-table)
-$(objpfx)inis-8.stmp: ../localedata/charmaps/INIS-8 gen-8bit-gap.sh
-       $(generate-8bit-gap-table)
-$(objpfx)inis-cyrillic.stmp: ../localedata/charmaps/INIS-CYRILLIC \
-                            gen-8bit-gap.sh
-       $(generate-8bit-gap-table)
-$(objpfx)iso_2033.stmp: ../localedata/charmaps/ISO_2033-1983 gen-8bit-gap.sh
-       $(generate-8bit-gap-table)
-$(objpfx)iso_5427.stmp: ../localedata/charmaps/ISO_5427 gen-8bit-gap.sh
-       $(generate-8bit-gap-table)
-$(objpfx)iso_5427-ext.stmp: ../localedata/charmaps/ISO_5427-EXT gen-8bit-gap.sh
-       $(generate-8bit-gap-table)
-$(objpfx)iso_5428.stmp: ../localedata/charmaps/ISO_5428 gen-8bit-gap.sh
-       $(generate-8bit-gap-table)
-$(objpfx)iso_10367-box.stmp: ../localedata/charmaps/ISO_10367-BOX \
-                            gen-8bit-gap.sh
-       $(generate-8bit-gap-table)
-$(objpfx)mac-is.stmp: ../localedata/charmaps/MAC-IS gen-8bit-gap.sh
-       $(generate-8bit-gap-table)
-$(objpfx)mac-uk.stmp: ../localedata/charmaps/MAC-UK gen-8bit-gap.sh
-       $(generate-8bit-gap-table)
-$(objpfx)nats-dano.stmp: ../localedata/charmaps/NATS-DANO gen-8bit-gap.sh
-       $(generate-8bit-gap-table)
-$(objpfx)nats-sefi.stmp: ../localedata/charmaps/NATS-SEFI gen-8bit-gap.sh
-       $(generate-8bit-gap-table)
-
-headers: $(addprefix $(objpfx),\
-               $(sed-generated-headers) $(awk-generated-headers))
+headers: $(addprefix $(objpfx), $(generated-modules:=.h))
 
 $(addprefix $(inst_gconvdir)/, $(modules.so)): \
     $(inst_gconvdir)/%: $(objpfx)% $(+force)
        $(do-install-program)
 $(inst_gconvdir)/gconv-modules: gconv-modules $(+force)
        $(do-install)
-endif
+
+endif # build-shared = yes
 
 include ../Rules
 
similarity index 100%
rename from iconvdata/euccn.c
rename to iconvdata/euc-cn.c
similarity index 100%
rename from iconvdata/eucjp.c
rename to iconvdata/euc-jp.c
similarity index 100%
rename from iconvdata/euckr.c
rename to iconvdata/euc-kr.c
similarity index 100%
rename from iconvdata/euctw.c
rename to iconvdata/euc-tw.c
similarity index 100%
rename from iconvdata/iso6937-2.c
rename to iconvdata/iso_6937-2.c
similarity index 100%
rename from iconvdata/iso6937.c
rename to iconvdata/iso_6937.c
similarity index 100%
rename from iconvdata/t61.c
rename to iconvdata/t.61.c
index c0edd10..c447a60 100644 (file)
@@ -26,7 +26,8 @@
    _ISOC9X_SOURCE      Extensions to ISO C 89 from ISO C 9x.
    _POSIX_SOURCE       IEEE Std 1003.1.
    _POSIX_C_SOURCE     If ==1, like _POSIX_SOURCE; if >=2 add IEEE Std 1003.2;
-                       if >=199309L, add IEEE Std 1003.1b-1993
+                       if >=199309L, add IEEE Std 1003.1b-1993;
+                       if >=199506L, add IEEE Std 1003.1c-1995
    _XOPEN_SOURCE       Includes POSIX and XPG things.  Set to 500 if
                        Single Unix conformance is wanted.
    _XOPEN_SOURCE_EXTENDED XPG things and X/Open Unix extensions.
index 30bceb6..85d42fa 100644 (file)
@@ -31,6 +31,8 @@
 #endif
 #include <string.h>
 
+static _IO_lock_t list_all_lock = _IO_lock_initializer;
+
 void
 _IO_un_link (fp)
      _IO_FILE *fp;
@@ -38,6 +40,7 @@ _IO_un_link (fp)
   if (fp->_flags & _IO_LINKED)
     {
       _IO_FILE **f;
+      _IO_lock_lock (list_all_lock);
       for (f = &_IO_list_all; *f != NULL; f = &(*f)->_chain)
        {
          if (*f == fp)
@@ -46,6 +49,7 @@ _IO_un_link (fp)
              break;
            }
        }
+      _IO_lock_unlock (list_all_lock);
       fp->_flags &= ~_IO_LINKED;
     }
 }
@@ -57,8 +61,10 @@ _IO_link_in (fp)
     if ((fp->_flags & _IO_LINKED) == 0)
       {
        fp->_flags |= _IO_LINKED;
+       _IO_lock_lock (list_all_lock);
        fp->_chain = _IO_list_all;
        _IO_list_all = fp;
+       _IO_lock_unlock (list_all_lock);
       }
 }
 
index 5fbba3a..82b805c 100644 (file)
@@ -1,3 +1,8 @@
+1998-12-31  Ulrich Drepper  <drepper@cygnus.com>
+
+       * sysdeps/pthread/bits/stdio-lock.h: Define _IO_lock_lock and
+       _IO_lock_unlock.
+
 1998-12-29  Ulrich Drepper  <drepper@cygnus.com>
 
        * semaphore.c (sem_trywait): Don't forget to unlock the semaphore
index 23ebf40..edc69f6 100644 (file)
@@ -1,5 +1,5 @@
 /* Thread package specific definitions of stream lock type.
-   Copyright (C) 1996, 1997 Free Software Foundation, Inc.
+   Copyright (C) 1996, 1997, 1998 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
 
    The GNU C Library is free software; you can redistribute it and/or
@@ -33,3 +33,7 @@ typedef pthread_mutex_t _IO_lock_t;
      __libc_lock_init_recursive (_name)
 #define _IO_lock_fini(_name) \
      __libc_lock_fini_recursive (_name)
+#define _IO_lock_lock(_name) \
+     __libc_lock_lock (_name)
+#define _IO_lock_unlock(_name) \
+     __libc_lock_unlock (_name)
index bb9cba5..1598db8 100644 (file)
@@ -88,8 +88,9 @@ typedef pthread_mutex_t       mutex_t;
 
 #endif /* MUTEX_INITIALIZER && PTHREAD_MUTEX_INITIALIZER */
 
+#ifndef NO_THREADS
 
-/* thread specific data */
+/* thread specific data for glibc */
 
 #include <bits/libc-tsd.h>
 
@@ -99,6 +100,7 @@ __libc_tsd_define (, MALLOC) /* declaration/common definition */
 #define tsd_setspecific(key, data)     __libc_tsd_set (MALLOC, (data))
 #define tsd_getspecific(key, vptr)     ((vptr) = __libc_tsd_get (MALLOC))
 
+#endif
 
 #elif defined(USE_PTHREADS) /* Posix threads */
 
index bac17b4..2b8f6bf 100644 (file)
@@ -1,32 +1,33 @@
 #include <stdio.h>
+#include <stdlib.h>
 #include <printf.h>
-#include <stdarg.h>
 
 /*@group*/
 typedef struct
-  {
-    char *name;
-  } Widget;
+{
+  char *name;
+}
+Widget;
 /*@end group*/
 
 int
 print_widget (FILE *stream,
              const struct printf_info *info,
-             va_list *app)
+             const void *const *args)
 {
-  Widget *w;
+  const Widget *w;
   char *buffer;
   int len;
 
   /* Format the output into a string. */
-  w = va_arg (*app, Widget *);
+  w = *((const Widget **) (args[0]));
   len = asprintf (&buffer, "<Widget %p: %s>", w, w->name);
   if (len == -1)
     return -1;
 
   /* Pad to the minimum field width and print to the stream. */
   len = fprintf (stream, "%*s",
-                (info->left ? - info->width : info->width),
+                (info->left ? -info->width : info->width),
                 buffer);
 
   /* Clean up and return. */
index f281d4d..220419c 100644 (file)
@@ -116,7 +116,7 @@ $(VAR_DB)/shadow.db: /etc/shadow
        @if chgrp shadow $@ 2>/dev/null; then \
          chmod g+r $@; \
        else \
-         chown 0; chgrp 0; chmod 600; \
+         chown 0 $@; chgrp 0 $@; chmod 600 $@; \
          echo; \
          echo "Warning: The shadow password database $@"; \
          echo "has been set to be readable only by root.  You may want"; \
index 6d48be3..0f0648b 100644 (file)
@@ -136,7 +136,7 @@ fnmatch (pattern, string, flags)
      int flags;
 {
   register const char *p = pattern, *n = string;
-  register char c;
+  register unsigned char c;
 
 /* Note that this evaluates C many times.  */
 # ifdef _LIBC
@@ -170,7 +170,7 @@ fnmatch (pattern, string, flags)
                return FNM_NOMATCH;
              c = FOLD (c);
            }
-         if (FOLD (*n) != c)
+         if (FOLD ((unsigned char) *n) != c)
            return FNM_NOMATCH;
          break;
 
@@ -202,10 +202,10 @@ fnmatch (pattern, string, flags)
            return 0;
 
          {
-           char c1 = (!(flags & FNM_NOESCAPE) && c == '\\') ? *p : c;
+           unsigned char c1 = (!(flags & FNM_NOESCAPE) && c == '\\') ? *p : c;
            c1 = FOLD (c1);
            for (--p; *n != '\0'; ++n)
-             if ((c == '[' || FOLD (*n) == c1) &&
+             if ((c == '[' || FOLD ((unsigned char) *n) == c1) &&
                  fnmatch (p, n, flags & ~FNM_PERIOD) == 0)
                return 0;
            return FNM_NOMATCH;
@@ -239,13 +239,13 @@ fnmatch (pattern, string, flags)
            c = *p++;
            for (;;)
              {
-               int fn = FOLD (*n);
+               unsigned int fn = FOLD (*n);
 
                if (!(flags & FNM_NOESCAPE) && c == '\\')
                  {
                    if (*p == '\0')
                      return FNM_NOMATCH;
-                   c = FOLD (*p);
+                   c = FOLD ((unsigned char) *p);
                    ++p;
 
                    if (c == fn)
@@ -313,7 +313,7 @@ fnmatch (pattern, string, flags)
                if (c == '-' && *p != ']')
                  {
                    /* It is a range.  */
-                   char cend = *p++;
+                   unsigned char cend = *p++;
                    if (!(flags & FNM_NOESCAPE) && cend == '\\')
                      cend = *p++;
                    if (cend == '\0')
@@ -364,7 +364,7 @@ fnmatch (pattern, string, flags)
          break;
 
        default:
-         if (c != FOLD (*n))
+         if (c != FOLD ((unsigned char) *n))
            return FNM_NOMATCH;
        }
 
index bc4e58d..d10fa43 100644 (file)
@@ -1168,6 +1168,7 @@ extern USItype __udiv_qrnnd ();
             "1" ((USItype)(n1)),                                       \
             "0" ((USItype)(n0)) : "%g1" __AND_CLOBBER_CC)
 #define UDIV_TIME (3+7*32)     /* 7 instructions/iteration. 32 iterations. */
+#else
 extern USItype __udiv_qrnnd __P ((USItype *, USItype, USItype, USItype));
 #define UDIV_TIME 140
 #endif /* udiv_qrnnd */
index e6c2554..8248ed9 100644 (file)
@@ -1,5 +1,5 @@
 /* Wrapper around MD5 sum replacement for crypt function.
-   Copyright (C) 1996, 1997 Free Software Foundation, Inc.
+   Copyright (C) 1996, 1997, 1998 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Ulrich Drepper <drepper@cygnus.com>, 1996.
 
@@ -34,6 +34,8 @@ extern char *__md5_crypt_r (const char *key, const char *salt, char *buffer,
                            int buflen);
 extern char *__md5_crypt (const char *key, const char *salt);
 
+extern char *__crypt_r (const char *key, const char *salt,
+                       struct crypt_data *__restrict data);
 
 /* We recognize an intended call of the MD5 crypt replacement function
    by the first 3 characters of the salt string.  If they match the
@@ -42,7 +44,7 @@ char *
 __crypt_r (key, salt, data)
      const char *key;
      const char *salt;
-     struct crypt_data *data;
+     struct crypt_data *__restrict data;
 {
   if (strncmp (md5_salt_prefix, salt, sizeof (md5_salt_prefix) - 1) == 0)
     return __md5_crypt_r (key, salt, (char *) data,
index c14554c..0713e95 100644 (file)
@@ -1,7 +1,7 @@
 /*
  * UFC-crypt: ultra fast crypt(3) implementation
  *
- * Copyright (C) 1991, 1992, 1993, 1996, 1997 Free Software Foundation, Inc.
+ * Copyright (C) 1991, 92, 93, 96, 97, 98 Free Software Foundation, Inc.
  *
  * This library is free software; you can redistribute it and/or
  * modify it under the terms of the GNU Library General Public
@@ -50,10 +50,8 @@ struct crypt_data
     int direction, initialized;
   };
 
-extern char *__crypt_r __P ((__const char *__key, __const char *__salt,
-                            struct crypt_data *__data));
 extern char *crypt_r __P ((__const char *__key, __const char *__salt,
-                          struct crypt_data *__data));
+                          struct crypt_data *__restrict __data));
 #endif
 
 __END_DECLS
index fc17793..c3b8aa6 100644 (file)
@@ -1,4 +1,4 @@
-/* Compute hash alue for given string according to ELF standard.
+/* Compute hash value for given string according to ELF standard.
    Copyright (C) 1995, 1996, 1997, 1998 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
 
index 7795f51..35f3291 100644 (file)
@@ -1,4 +1,4 @@
-/* High precision, low overhead timing functions.  i686 version.
+/* High precision, low overhead timing functions.  Generic version.
    Copyright (C) 1998 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Ulrich Drepper <drepper@cygnus.com>, 1998.
index ffbeb27..004cfff 100644 (file)
@@ -84,7 +84,7 @@
 /* We use 64bit values for the times.  */
 typedef unsigned long long int hp_timing_t;
 
-/* Internal variabled used to store the overhead of the measurement
+/* Internal variable used to store the overhead of the measurement
    opcodes.  */
 extern hp_timing_t __libc_hp_timing_overhead;
 
similarity index 58%
rename from sysdeps/unix/sysv/linux/mips/sys/regdef.h
rename to sysdeps/i386/i686/mempcpy.S
index 700fd66..5760d9f 100644 (file)
@@ -1,6 +1,8 @@
-/* Copyright (C) 1997 Free Software Foundation, Inc.
+/* Copy memory block and return pointer to following byte.
+   For Intel 80x86, x>=6.
    This file is part of the GNU C Library.
-   Contributed by Ralf Baechle <ralf@gnu.ai.mit.edu>.
+   Copyright (C) 1998 Free Software Foundation, Inc.
+   Contributed by Ulrich Drepper <drepper@cygnus.com>, 1998.
 
    The GNU C Library is free software; you can redistribute it and/or
    modify it under the terms of the GNU Library General Public License as
    write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
    Boston, MA 02111-1307, USA.  */
 
-#ifndef _REGDEF_H
-#define _REGDEF_H      1
+#include <sysdep.h>
+#include "asm-syntax.h"
 
-/*
- * The real definitions come from the Linux kernel sources
- */
-#include <asm/regdef.h>
-#include <asm/fpregdef.h>
+/* strtok:
+       INPUT PARAMETER:
+       dest            (sp + 4)
+       src             (sp + 8)
+       len             (sp + 12)
+*/
 
-#endif /* regdef.h */
+ENTRY(__mempcpy)
+       movl    %edi, %eax
+       movl    4(%esp), %edi
+       movl    %esi, %edx
+       movl    8(%esp), %esi
+       movl    12(%esp), %ecx
+       cld
+       shrl    $1, %ecx
+       jnc     1f
+       movsb
+1:     shrl    $1, %ecx
+       jnc     2f
+       movsw
+2:     rep
+       movsl
+       xchgl   %edi, %eax
+       movl    %edx, %esi
+       ret
+END(mempcpy)
+weak_alias (__mempcpy, mempcpy)
index c7a058e..18aa7c8 100644 (file)
@@ -73,6 +73,7 @@ ENTRY (FUNCTION)
        movl $64, %ecx
        movl %esp, %edi
        xorl %eax, %eax
+       cld
        rep
        stosl
 
index 9b6fd71..7ccfb1b 100644 (file)
@@ -1,3 +1,9 @@
 setjmp_aux.c
 rtld-ldscript.in
 rtld-parms
+regdef.h
+sgidefs.h
+fpregdef.h
+sys/regdef.h
+sys/fpregdef.h
+sys/asm.h
index 5585c61..54b3520 100644 (file)
@@ -1,3 +1,7 @@
+ifeq ($(subdir),misc)
+headers += regdef.h fpregdef.h sys/regdef.h sys/fpregdef.h sys/asm.h sgidefs.h
+endif
+
 ifeq ($(subdir),setjmp)
 sysdep_routines += setjmp_aux
 endif
similarity index 77%
rename from sysdeps/unix/sysv/linux/mips/sys/fpregdef.h
rename to sysdeps/mips/fpregdef.h
index 48d8f75..25b93ca 100644 (file)
@@ -1,4 +1,4 @@
-/* Copyright (C) 1991, 92, 94, 95, 96, 97 Free Software Foundation, Inc.
+/* Copyright (C) 1991, 92, 94, 95, 96 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
 
    The GNU C Library is free software; you can redistribute it and/or
    write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
    Boston, MA 02111-1307, USA.  */
 
-#ifndef _SYS_FPREGDEF_H
-#define _SYS_FPREGDEF_H
+#ifndef _FPREGDEF_H
+#define _FPREGDEF_H
 
-/*
- * The real definitions come from the Linux kernel sources
- */
-#include <asm/fpregdef.h>
+#include <sys/fpregdef.h>
 
-#endif /* sys/fpregdef.h */
+#endif /* _FPREGDEF_H */
index e271ae1..471c68e 100644 (file)
@@ -1,5 +1,5 @@
 /* FPU control word bits.  Mips version.
-   Copyright (C) 1996, 1997 Free Software Foundation, Inc.
+   Copyright (C) 1996, 1997, 1998 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Olaf Flebbe and Ralf Baechle.
 
@@ -80,7 +80,7 @@
 /* The fdlibm code requires strict IEEE double precision arithmetic,
    and no interrupts for exceptions, rounding to nearest.  */
 
-#define _FPU_DEFAULT  0x00000600
+#define _FPU_DEFAULT  0x00000000
 
 /* IEEE:  same as above, but exceptions */
 #define _FPU_IEEE     0x00000F80
similarity index 76%
rename from sysdeps/unix/sysv/linux/mips/sys/asm.h
rename to sysdeps/mips/regdef.h
index 346a9c4..0fa50f0 100644 (file)
@@ -1,6 +1,6 @@
-/* Copyright (C) 1997 Free Software Foundation, Inc.
+/* Copyright (C) 1994, 1995, 1996, 1997, 1998 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
-   Contributed by Ralf Baechle <ralf@gnu.ai.mit.edu>.
+   Contributed by Ralf Baechle <ralf@gnu.org>.
 
    The GNU C Library is free software; you can redistribute it and/or
    modify it under the terms of the GNU Library General Public License as
    write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
    Boston, MA 02111-1307, USA.  */
 
-#ifndef _SYS_ASM_H
-#define _SYS_ASM_H
+#ifndef _REGDEF_H
+#define _REGDEF_H
 
-/*
- * The real definitions come from the Linux kernel sources
- */
-#include <asm/asm.h>
+#include <sys/regdef.h>
+#include <sys/fpregdef.h>
+
+#endif /* _REGDEF_H */
 
-#endif /* sys/asm.h */
diff --git a/sysdeps/mips/sgidefs.h b/sysdeps/mips/sgidefs.h
new file mode 100644 (file)
index 0000000..56567e8
--- /dev/null
@@ -0,0 +1,44 @@
+/* Copyright (C) 1996, 1997, 1998 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+   Contributed by Ralf Baechle <ralf@gnu.org>.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Library General Public License as
+   published by the Free Software Foundation; either version 2 of the
+   License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Library General Public License for more details.
+
+   You should have received a copy of the GNU Library General Public
+   License along with the GNU C Library; see the file COPYING.LIB.  If not,
+   write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+   Boston, MA 02111-1307, USA.  */
+
+#ifndef _SGIDEFS_H
+#define _SGIDEFS_H     1
+
+/*
+ * Definitions for the ISA level
+ */
+#define _MIPS_ISA_MIPS1 1
+#define _MIPS_ISA_MIPS2 2
+#define _MIPS_ISA_MIPS3 3
+#define _MIPS_ISA_MIPS4 4
+#define _MIPS_ISA_MIPS5 5
+
+/*
+ * Subprogram calling convention
+ *
+ * At the moment only _MIPS_SIM_ABI32 is in use.  This will change rsn.
+ * Until GCC 2.8.0 is released don't rely on this definitions because the
+ * 64bit code is essentially using the 32bit interface model just with
+ * 64bit registers.
+ */
+#define _MIPS_SIM_ABI32                1
+#define _MIPS_SIM_NABI32       2
+#define _MIPS_SIM_ABI64                3
+
+#endif /* sgidefs.h */
diff --git a/sysdeps/mips/sys/asm.h b/sysdeps/mips/sys/asm.h
new file mode 100644 (file)
index 0000000..b90a331
--- /dev/null
@@ -0,0 +1,377 @@
+/* Copyright (C) 1997, 1998 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+   Contributed by Ralf Baechle <ralf@gnu.org>.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Library General Public License as
+   published by the Free Software Foundation; either version 2 of the
+   License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Library General Public License for more details.
+
+   You should have received a copy of the GNU Library General Public
+   License along with the GNU C Library; see the file COPYING.LIB.  If not,
+   write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+   Boston, MA 02111-1307, USA.  */
+
+#ifndef _SYS_ASM_H
+#define _SYS_ASM_H
+
+#include <sgidefs.h>
+
+#ifndef CAT
+#ifdef __STDC__
+#define __CAT(str1,str2) str1##str2
+#else
+#define __CAT(str1,str2) str1/**/str2
+#endif
+#define CAT(str1,str2) __CAT(str1,str2)
+#endif
+
+/*
+ * Macros to handle different pointer/register sizes for 32/64-bit code
+ *
+ * 64 bit address space isn't used yet, so we may use the R3000 32 bit
+ * defines for now.
+ */
+#define PTR    .word
+#define PTRSIZE        4
+#define PTRLOG 2
+
+/*
+ * PIC specific declarations
+ */
+#ifdef __PIC__
+#define CPRESTORE(register)                             \
+               .cprestore register
+#define CPADD(register)                                 \
+               .cpadd  register
+#define CPLOAD(register)                                \
+               .cpload register
+#else
+#define CPRESTORE(register)
+#define CPADD(register)
+#define CPLOAD(register)
+#endif
+
+/*
+ * LEAF - declare leaf routine
+ */
+#define        LEAF(symbol)                                    \
+               .globl  symbol;                         \
+               .align  2;                              \
+               .type   symbol,@function;               \
+               .ent    symbol,0;                       \
+symbol:                .frame  sp,0,ra
+
+/*
+ * NESTED - declare nested routine entry point
+ */
+#define        NESTED(symbol, framesize, rpc)                  \
+               .globl  symbol;                         \
+               .align  2;                              \
+               .type   symbol,@function;               \
+               .ent    symbol,0;                       \
+symbol:                .frame  sp, framesize, rpc
+
+/*
+ * END - mark end of function
+ */
+#define        END(function)                                   \
+               .end    function;                       \
+               .size   function,.-function
+
+/*
+ * EXPORT - export definition of symbol
+ */
+#define        EXPORT(symbol)                                  \
+               .globl  symbol;                         \
+symbol:
+
+/*
+ * ABS - export absolute symbol
+ */
+#define        ABS(symbol,value)                               \
+               .globl  symbol;                         \
+symbol         =       value
+
+#define        PANIC(msg)                                      \
+               .set    push;                           \
+               .set    reorder;                        \
+               la      a0,8f;                          \
+               jal     panic;                          \
+9:             b       9b;                             \
+               .set    pop;                            \
+               TEXT(msg)
+
+/*
+ * Print formated string
+ */
+#define PRINT(string)                                   \
+               .set    push;                           \
+               .set    reorder;                        \
+               la      a0,8f;                          \
+               jal     printk;                         \
+               .set    pop;                            \
+               TEXT(string)
+
+#define        TEXT(msg)                                       \
+               .data;                                  \
+8:             .asciiz msg;                            \
+               .previous;
+
+/*
+ * Build text tables
+ */
+#define TTABLE(string)                                  \
+               .text;                                  \
+               .word   1f;                             \
+               .previous;                              \
+               .data;                                  \
+1:             .asciz  string;                         \
+               .previous
+
+/*
+ * MIPS IV pref instruction.
+ * Use with .set noreorder only!
+ *
+ * MIPS IV implementations are free to treat this as a nop.  The R5000
+ * is one of them.  So we should have an option not to use this instruction.
+ */
+#if (_MIPS_ISA == _MIPS_ISA_MIPS4) || (_MIPS_ISA == _MIPS_ISA_MIPS5)
+#define PREF(hint,addr)                                 \
+               pref    hint,addr
+#define PREFX(hint,addr)                                \
+               prefx   hint,addr
+#else
+#define PREF
+#define PREFX
+#endif
+
+/*
+ * MIPS ISA IV/V movn/movz instructions and equivalents for older CPUs.
+ */
+#if _MIPS_ISA == _MIPS_ISA_MIPS1
+#define MOVN(rd,rs,rt)                                  \
+               .set    push;                           \
+               .set    reorder;                        \
+               beqz    rt,9f;                          \
+               move    rd,rs;                          \
+               .set    pop;                            \
+9:
+#define MOVZ(rd,rs,rt)                                  \
+               .set    push;                           \
+               .set    reorder;                        \
+               bnez    rt,9f;                          \
+               move    rd,rt;                          \
+               .set    pop;                            \
+9:
+#endif /* _MIPS_ISA == _MIPS_ISA_MIPS1 */
+#if (_MIPS_ISA == _MIPS_ISA_MIPS2) || (_MIPS_ISA == _MIPS_ISA_MIPS3)
+#define MOVN(rd,rs,rt)                                  \
+               .set    push;                           \
+               .set    noreorder;                      \
+               bnezl   rt,9f;                          \
+               move    rd,rs;                          \
+               .set    pop;                            \
+9:
+#define MOVZ(rd,rs,rt)                                  \
+               .set    push;                           \
+               .set    noreorder;                      \
+               beqzl   rt,9f;                          \
+               movz    rd,rs;                          \
+               .set    pop;                            \
+9:
+#endif /* (_MIPS_ISA == _MIPS_ISA_MIPS2) || (_MIPS_ISA == _MIPS_ISA_MIPS3) */
+#if (_MIPS_ISA == _MIPS_ISA_MIPS4) || (_MIPS_ISA == _MIPS_ISA_MIPS5)
+#define MOVN(rd,rs,rt)                                  \
+               movn    rd,rs,rt
+#define MOVZ(rd,rs,rt)                                  \
+               movz    rd,rs,rt
+#endif /* (_MIPS_ISA == _MIPS_ISA_MIPS4) || (_MIPS_ISA == _MIPS_ISA_MIPS5) */
+
+/*
+ * Stack alignment
+ */
+#if (_MIPS_ISA == _MIPS_ISA_MIPS1) || (_MIPS_ISA == _MIPS_ISA_MIPS2)
+#define ALSZ   7
+#define ALMASK ~7
+#endif
+#if (_MIPS_ISA == _MIPS_ISA_MIPS3) || (_MIPS_ISA == _MIPS_ISA_MIPS4) || \
+    (_MIPS_ISA == _MIPS_ISA_MIPS5)
+#define ALSZ   15
+#define ALMASK ~15
+#endif
+
+/*
+ * Size of a register
+ */
+#ifdef __mips64
+#define SZREG  8
+#else
+#define SZREG  4
+#endif
+
+/*
+ * Use the following macros in assemblercode to load/store registers,
+ * pointers etc.
+ */
+#if (_MIPS_ISA == _MIPS_ISA_MIPS1) || (_MIPS_ISA == _MIPS_ISA_MIPS2)
+#define REG_S sw
+#define REG_L lw
+#define PTR_SUBU subu
+#define PTR_ADDU addu
+#endif
+#if (_MIPS_ISA == _MIPS_ISA_MIPS3) || (_MIPS_ISA == _MIPS_ISA_MIPS4) || \
+    (_MIPS_ISA == _MIPS_ISA_MIPS5)
+#define REG_S sd
+#define REG_L ld
+/* We still live in a 32 bit address space ...  */
+#define PTR_SUBU subu
+#define PTR_ADDU addu
+#endif
+
+/*
+ * How to add/sub/load/store/shift C int variables.
+ */
+#if (_MIPS_SZINT == 32)
+#define INT_ADD        add
+#define INT_ADDI       addi
+#define INT_ADDU       addu
+#define INT_ADDIU      addiu
+#define INT_SUB        add
+#define INT_SUBI       subi
+#define INT_SUBU       subu
+#define INT_SUBIU      subu
+#define INT_L          lw
+#define INT_S          sw
+#define LONG_SLL       sll
+#define LONG_SLLV      sllv
+#define LONG_SRL       srl
+#define LONG_SRLV      srlv
+#define LONG_SRA       sra
+#define LONG_SRAV      srav
+#endif
+
+#if (_MIPS_SZINT == 64)
+#define INT_ADD        dadd
+#define INT_ADDI       daddi
+#define INT_ADDU       daddu
+#define INT_ADDIU      daddiu
+#define INT_SUB        dadd
+#define INT_SUBI       dsubi
+#define INT_SUBU       dsubu
+#define INT_SUBIU      dsubu
+#define INT_L          ld
+#define INT_S          sd
+#define LONG_SLL       dsll
+#define LONG_SLLV      dsllv
+#define LONG_SRL       dsrl
+#define LONG_SRLV      dsrlv
+#define LONG_SRA       dsra
+#define LONG_SRAV      dsrav
+#endif
+
+/*
+ * How to add/sub/load/store/shift C long variables.
+ */
+#if (_MIPS_SZLONG == 32)
+#define LONG_ADD       add
+#define LONG_ADDI      addi
+#define LONG_ADDU      addu
+#define LONG_ADDIU     addiu
+#define LONG_SUB       add
+#define LONG_SUBI      subi
+#define LONG_SUBU      subu
+#define LONG_SUBIU     subu
+#define LONG_L         lw
+#define LONG_S         sw
+#define LONG_SLL       sll
+#define LONG_SLLV      sllv
+#define LONG_SRL       srl
+#define LONG_SRLV      srlv
+#define LONG_SRA       sra
+#define LONG_SRAV      srav
+#endif
+
+#if (_MIPS_SZLONG == 64)
+#define LONG_ADD       dadd
+#define LONG_ADDI      daddi
+#define LONG_ADDU      daddu
+#define LONG_ADDIU     daddiu
+#define LONG_SUB       dadd
+#define LONG_SUBI      dsubi
+#define LONG_SUBU      dsubu
+#define LONG_SUBIU     dsubu
+#define LONG_L         ld
+#define LONG_S         sd
+#define LONG_SLL       dsll
+#define LONG_SLLV      dsllv
+#define LONG_SRL       dsrl
+#define LONG_SRLV      dsrlv
+#define LONG_SRA       dsra
+#define LONG_SRAV      dsrav
+#endif
+
+/*
+ * How to add/sub/load/store/shift pointers.
+ */
+#if (_MIPS_SZLONG == 32)
+#define PTR_ADD        add
+#define PTR_ADDI       addi
+#define PTR_ADDU       addu
+#define PTR_ADDIU      addiu
+#define PTR_SUB                add
+#define PTR_SUBI       subi
+#define PTR_SUBU       subu
+#define PTR_SUBIU      subu
+#define PTR_L          lw
+#define PTR_S          sw
+#define PTR_SLL                sll
+#define PTR_SLLV       sllv
+#define PTR_SRL                srl
+#define PTR_SRLV       srlv
+#define PTR_SRA                sra
+#define PTR_SRAV       srav
+
+#define PTR_SCALESHIFT 2
+#endif
+
+#if (_MIPS_SZLONG == 64)
+#define PTR_ADD        dadd
+#define PTR_ADDI       daddi
+#define PTR_ADDU       daddu
+#define PTR_ADDIU      daddiu
+#define PTR_SUB                dadd
+#define PTR_SUBI       dsubi
+#define PTR_SUBU       dsubu
+#define PTR_SUBIU      dsubu
+#define PTR_L          ld
+#define PTR_S          sd
+#define PTR_SLL                dsll
+#define PTR_SLLV       dsllv
+#define PTR_SRL                dsrl
+#define PTR_SRLV       dsrlv
+#define PTR_SRA                dsra
+#define PTR_SRAV       dsrav
+
+#define PTR_SCALESHIFT 3
+#endif
+
+/*
+ * Some cp0 registers were extended to 64bit for MIPS III.
+ */
+#if (_MIPS_ISA == _MIPS_ISA_MIPS1) || (_MIPS_ISA == _MIPS_ISA_MIPS2)
+#define MFC0   mfc0
+#define MTC0   mtc0
+#endif
+#if (_MIPS_ISA == _MIPS_ISA_MIPS3) || (_MIPS_ISA == _MIPS_ISA_MIPS4) || \
+    (_MIPS_ISA == _MIPS_ISA_MIPS5)
+#define MFC0   dmfc0
+#define MTC0   dmtc0
+#endif
+
+#endif /* sys/asm.h */
diff --git a/sysdeps/mips/sys/fpregdef.h b/sysdeps/mips/sys/fpregdef.h
new file mode 100644 (file)
index 0000000..ef7309c
--- /dev/null
@@ -0,0 +1,61 @@
+/* Copyright (C) 1991, 92, 94, 95, 96, 97, 98 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Library General Public License as
+   published by the Free Software Foundation; either version 2 of the
+   License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Library General Public License for more details.
+
+   You should have received a copy of the GNU Library General Public
+   License along with the GNU C Library; see the file COPYING.LIB.  If not,
+   write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+   Boston, MA 02111-1307, USA.  */
+
+#ifndef _SYS_FPREGDEF_H
+#define _SYS_FPREGDEF_H
+
+/*
+ * These definitions only cover the R3000-ish 16/32 register model.
+ * But we're trying to be R3000 friendly anyway ...
+ */
+#define fv0    $f0      /* return value */
+#define fv0f   $f1
+#define fv1    $f2
+#define fv1f   $f3
+#define fa0    $f12     /* argument registers */
+#define fa0f   $f13
+#define fa1    $f14
+#define fa1f   $f15
+#define ft0    $f4      /* caller saved */
+#define ft0f   $f5
+#define ft1    $f6
+#define ft1f   $f7
+#define ft2    $f8
+#define ft2f   $f9
+#define ft3    $f10
+#define ft3f   $f11
+#define ft4    $f16
+#define ft4f   $f17
+#define ft5    $f18
+#define ft5f   $f19
+#define fs0    $f20     /* callee saved */
+#define fs0f   $f21
+#define fs1    $f22
+#define fs1f   $f23
+#define fs2    $f24
+#define fs2f   $f25
+#define fs3    $f26
+#define fs3f   $f27
+#define fs4    $f28
+#define fs4f   $f29
+#define fs5    $f30
+#define fs5f   $f31
+
+#define fcr31  $31      /* FPU status register */
+
+#endif /* sys/fpregdef.h */
index 4b6205c..7d45e74 100644 (file)
 #define PLT_DATA_START_WORDS(num_entries) PLT_ENTRY_START_WORDS(num_entries)
 
 #define OPCODE_ADDI(rd,ra,simm) \
-  (0x38000000 | (rd) << 21 | (ra) << 16 | (simm) & 0xffff)
+  (0x38000000 | (rd) << 21 | (ra) << 16 | ((simm) & 0xffff))
 #define OPCODE_ADDIS(rd,ra,simm) \
-  (0x3c000000 | (rd) << 21 | (ra) << 16 | (simm) & 0xffff)
+  (0x3c000000 | (rd) << 21 | (ra) << 16 | ((simm) & 0xffff))
 #define OPCODE_ADD(rd,ra,rb) \
   (0x7c000214 | (rd) << 21 | (ra) << 16 | (rb) << 11)
-#define OPCODE_B(target) (0x48000000 | (target) & 0x03fffffc)
-#define OPCODE_BA(target) (0x48000002 | (target) & 0x03fffffc)
+#define OPCODE_B(target) (0x48000000 | ((target) & 0x03fffffc))
+#define OPCODE_BA(target) (0x48000002 | ((target) & 0x03fffffc))
 #define OPCODE_BCTR() 0x4e800420
 #define OPCODE_LWZ(rd,d,ra) \
-  (0x80000000 | (rd) << 21 | (ra) << 16 | (d) & 0xffff)
+  (0x80000000 | (rd) << 21 | (ra) << 16 | ((d) & 0xffff))
 #define OPCODE_MTCTR(rd) (0x7C0903A6 | (rd) << 21)
 #define OPCODE_RLWINM(ra,rs,sh,mb,me) \
   (0x54000000 | (rs) << 21 | (ra) << 16 | (sh) << 11 | (mb) << 6 | (me) << 1)
@@ -305,7 +305,7 @@ __elf_machine_fixup_plt(struct link_map *map, const Elf32_Rela *reloc,
             updating a lazy PLT entry).  */
 
          reloc_addr[0] = OPCODE_LI (11, finaladdr);
-         reloc_addr[1] = OPCODE_ADDIS (11, 11, finaladdr + 0x8000 >> 16);
+         reloc_addr[1] = OPCODE_ADDIS (11, 11, (finaladdr + 0x8000) >> 16);
          reloc_addr[2] = OPCODE_MTCTR (11);
          reloc_addr[3] = OPCODE_BCTR ();
        }
@@ -355,7 +355,7 @@ __process_machine_rela (struct link_map *map,
          _dl_signal_error(0, map->l_name,
                           "R_PPC_ADDR24 relocation out of range");
        }
-      *reloc_addr = *reloc_addr & 0xfc000003 | finaladdr & 0x3fffffc;
+      *reloc_addr = (*reloc_addr & 0xfc000003) | (finaladdr & 0x3fffffc);
       break;
 
     case R_PPC_ADDR16:
@@ -388,11 +388,11 @@ __process_machine_rela (struct link_map *map,
          _dl_signal_error(0, map->l_name,
                           "R_PPC_ADDR14 relocation out of range");
        }
-      *reloc_addr = *reloc_addr & 0xffff0003 | finaladdr & 0xfffc;
+      *reloc_addr = (*reloc_addr & 0xffff0003) | (finaladdr & 0xfffc);
       if (rinfo != R_PPC_ADDR14)
-       *reloc_addr = (*reloc_addr & 0xffdfffff
-                      | (rinfo == R_PPC_ADDR14_BRTAKEN
-                         ^ finaladdr >> 31) << 21);
+       *reloc_addr = ((*reloc_addr & 0xffdfffff)
+                      | ((rinfo == R_PPC_ADDR14_BRTAKEN)
+                         ^ (finaladdr >> 31)) << 21);
       break;
 
     case R_PPC_REL24:
@@ -403,7 +403,7 @@ __process_machine_rela (struct link_map *map,
            _dl_signal_error(0, map->l_name,
                             "R_PPC_REL24 relocation out of range");
          }
-       *reloc_addr = *reloc_addr & 0xfc000003 | delta & 0x3fffffc;
+       *reloc_addr = (*reloc_addr & 0xfc000003) | (delta & 0x3fffffc);
       }
       break;
 
index cfcf175..47254fd 100644 (file)
@@ -29,8 +29,8 @@ feclearexcept (int excepts)
   u.fenv = fegetenv_register ();
 
   /* Clear the relevant bits.  */
-  u.l[1] = u.l[1] & ~(-((excepts) >> 31-FPSCR_VX & 1) & FE_ALL_INVALID
-                     | (excepts) & FPSCR_STICKY_BITS);
+  u.l[1] = u.l[1] & ~((-((excepts) >> (31-FPSCR_VX) & 1) & FE_ALL_INVALID)
+                     | ((excepts) & FPSCR_STICKY_BITS));
 
   /* Put the new state in effect.  */
   fesetenv_register (u.fenv);
index 0afd6ce..875c897 100644 (file)
@@ -32,7 +32,7 @@ fesetround (int round)
   u.fenv = fegetenv_register ();
 
   /* Set the relevant bits.  */
-  u.l[1] = u.l[1] & ~3  |  round & 3;
+  u.l[1] = (u.l[1] & ~3)  |  (round & 3);
 
   /* Put the new state in effect.  */
   fesetenv_register (u.fenv);
index b3a3f95..14fa6bb 100644 (file)
@@ -30,7 +30,7 @@ feupdateenv (const fenv_t *envp)
   old.fenv = fegetenv_register ();
 
   /* Copy the set exceptions from `old' to `new'.  */
-  new.l[1] = new.l[1] & 0xE00000FF | old.l[1] & 0x1FFFFF00;
+  new.l[1] = (new.l[1] & 0xE00000FF) | (old.l[1] & 0x1FFFFF00);
 
   /* Atomically enable and raise (if appropriate) exceptions set in `new'. */
   fesetenv_register (new.fenv);
index d0c7971..39e3fbd 100644 (file)
@@ -35,9 +35,9 @@ feraiseexcept (int excepts)
 
   /* Add the exceptions */
   u.l[1] = (u.l[1]
-           | excepts & FPSCR_STICKY_BITS
+           | (excepts & FPSCR_STICKY_BITS)
            /* Turn FE_INVALID into FE_INVALID_SOFTWARE.  */
-           | (excepts >> (31 - FPSCR_VX) - (31 - FPSCR_VXSOFT)
+           | (excepts >> ((31 - FPSCR_VX) - (31 - FPSCR_VXSOFT))
               & FE_INVALID_SOFTWARE));
 
   /* Store the new status word (along with the rest of the environment),
index b762552..347035e 100644 (file)
@@ -32,9 +32,9 @@ fesetexceptflag (const fexcept_t *flagp, int excepts)
   flag = *flagp & excepts;
 
   /* Replace the exception status */
-  u.l[1] = (u.l[1] & ~(FPSCR_STICKY_BITS & excepts)
-           | flag & FPSCR_STICKY_BITS
-           | (flag >> (31 - FPSCR_VX) - (31 - FPSCR_VXSOFT)
+  u.l[1] = ((u.l[1] & ~(FPSCR_STICKY_BITS & excepts))
+           | (flag & FPSCR_STICKY_BITS)
+           | (flag >> ((31 - FPSCR_VX) - (31 - FPSCR_VXSOFT))
               & FE_INVALID_SOFTWARE));
 
   /* Store the new status word (along with the rest of the environment).
index d6d1dd2..a475875 100644 (file)
@@ -25,16 +25,18 @@ __rint (double x)
   static const float TWO52 = 4503599627370496.0;
 
   if (fabs (x) < TWO52)
-    if (x > 0.0)
-      {
-       x += TWO52;
-       x -= TWO52;
-      }
-    else if (x < 0.0)
-      {
-       x -= TWO52;
-       x += TWO52;
-      }
+    {
+      if (x > 0.0)
+       {
+         x += TWO52;
+         x -= TWO52;
+       }
+      else if (x < 0.0)
+       {
+         x -= TWO52;
+         x += TWO52;
+       }
+    }
 
   return x;
 }
index b95c054..dde40bb 100644 (file)
@@ -25,17 +25,19 @@ __rintf (float x)
   static const float TWO23 = 8388608.0;
 
   if (fabsf (x) < TWO23)
-    if (x > 0.0)
-      {
-       x += TWO23;
-       x -= TWO23;
-      }
-    else if (x < 0.0)
-      {
-       x -= TWO23;
-       x += TWO23;
-      }
-
+    {
+      if (x > 0.0)
+       {
+         x += TWO23;
+         x -= TWO23;
+       }
+      else if (x < 0.0)
+       {
+         x -= TWO23;
+         x += TWO23;
+       }
+    }
+  
   return x;
 }
 weak_alias (__rintf, rintf)
index df80973..c42ace5 100644 (file)
@@ -74,9 +74,9 @@ __sqrt(double x)
          fe = fegetenv_register();
          EXTRACT_WORDS (xi0,xi1,x);
          relax_fenv_state();
-         sxi = xi0 & 0x3fffffff | 0x3fe00000;
+         sxi = (xi0 & 0x3fffffff) | 0x3fe00000;
          INSERT_WORDS (sx, sxi, xi1);
-         t_sqrt = __t_sqrt + (xi0 >> 52-32-8-1  & 0x3fe);
+         t_sqrt = __t_sqrt + (xi0 >> (52-32-8-1)  & 0x3fe);
          sg = t_sqrt[0];
          sy = t_sqrt[1];
          
@@ -84,7 +84,7 @@ __sqrt(double x)
             division and a square root and the remainder of the
             argument reduction, all interleaved.   */
          sd  = -(sg*sg - sx);
-         fsgi = xi0 + 0x40000000 >> 1 & 0x7ff00000;
+         fsgi = (xi0 + 0x40000000) >> 1 & 0x7ff00000;
          sy2 = sy + sy;
          sg  = sy*sd + sg;  /* 16-bit approximation to sqrt(sx). */
          INSERT_WORDS (fsg, fsgi, 0);
index 804dff3..d40ade1 100644 (file)
@@ -74,9 +74,9 @@ __sqrtf(float x)
          GET_FLOAT_WORD (xi, x);
          fe = fegetenv_register ();
          relax_fenv_state ();
-         sxi = xi & 0x3fffffff | 0x3f000000;
+         sxi = (xi & 0x3fffffff) | 0x3f000000;
          SET_FLOAT_WORD (sx, sxi);
-         t_sqrt = __t_sqrt + (xi >> 23-8-1  & 0x3fe);
+         t_sqrt = __t_sqrt + (xi >> (23-8-1)  & 0x3fe);
          sg = t_sqrt[0];
          sy = t_sqrt[1];
          
@@ -84,7 +84,7 @@ __sqrtf(float x)
             division and a square root and the remainder of the
             argument reduction, all interleaved.   */
          sd  = -(sg*sg - sx);
-         fsgi = xi + 0x40000000 >> 1 & 0x7f800000;
+         fsgi = (xi + 0x40000000) >> 1 & 0x7f800000;
          sy2 = sy + sy;
          sg  = sy*sd + sg;  /* 16-bit approximation to sqrt(sx). */
          e   = -(sy*sg - almost_half);
index 5f0429b..576aef8 100644 (file)
@@ -3,14 +3,8 @@ kernel_sigaction.h
 kernel_stat.h
 kernel_termios.h
 entry.h
-regdef.h
-fpregdef.h
-sgidefs.h
 xstatconv.c
 sys/acct.h
-sys/asm.h
 sys/cachectl.h
-sys/fpregdef.h
 sys/procfs.h
-sys/regdef.h
 sys/sysmips.h
index 5d3e280..41451ca 100644 (file)
@@ -7,6 +7,5 @@ endif
 ifeq ($(subdir),misc)
 sysdep_routines += cachectl cacheflush sysmips
 
-headers += regdef.h fpregdef.h sys/asm.h sys/cachectl.h sys/fpregdef.h \
-          sys/regdef.h sys/sysmips.h
+headers += sys/cachectl.h sys/sysmips.h
 endif
index 435f8e0..855fe28 100644 (file)
@@ -28,8 +28,20 @@ struct sigaction
     unsigned int sa_flags;
 
     /* Signal handler.  */
+#ifdef __USE_POSIX199309
+    union
+      {
+       /* Used if SA_SIGINFO is not set.  */
+       __sighandler_t sa_handler;
+       /* Used if SA_SIGINFO is set.  */
+       void (*sa_sigaction) __PMT ((int, siginfo_t *, void *));
+      }
+    __sigaction_handler;
+# define sa_handler    __sigaction_handler.sa_handler
+# define sa_sigaction  __sigaction_handler.sa_sigaction
+#else
     __sighandler_t sa_handler;
-
+#endif
     /* Additional set of signals to be blocked.  */
     __sigset_t sa_mask;
 
@@ -43,14 +55,17 @@ struct sigaction
   };
 
 /* Bits in `sa_flags'.  */
-#define        SA_NOCLDSTOP  1          /* Don't send SIGCHLD when children stop.  */
-#ifdef __USE_MISC
+#define SA_NOCLDSTOP  0x00020000 /* Don't send SIGCHLD when children stop.  */
+#define SA_SIGINFO    0x00000008 /* Invoke signal-catching function with
+                                   three arguments instead of one.  */
+#if defined __USE_UNIX98 || defined __USE_MISC
 # define SA_ONSTACK   0x00000001 /* Use signal stack by using `sa_restorer'. */
 # define SA_RESTART   0x00000004 /* Restart syscall on signal return.  */
-# define SA_INTERRUPT 0x00000000 /* Historical no-op.  */
 # define SA_NODEFER   0x00000010 /* Don't automatically block the signal when
                                    its handler is being executed.  */
-# define SA_RESETHAND 0x00000002 /* Reset to SIG_DFL on entry to handler.  */
+#endif
+#ifdef __USE_MISC
+# define SA_INTERRUPT 0x01000000 /* Historical no-op.  */
 
 /* Some aliases for the SA_ constants.  */
 # define SA_NOMASK    SA_NODEFER
@@ -63,5 +78,7 @@ struct sigaction
 #define        SIG_BLOCK     1         /* Block signals.  */
 #define        SIG_UNBLOCK   2         /* Unblock signals.  */
 #define        SIG_SETMASK   3         /* Set the set of blocked signals.  */
-#define SIG_SETMASK32 256      /* Goodie from SGI for BSD compatibility:
+#ifdef __USE_MISC
+# define SIG_SETMASK32 256     /* Goodie from SGI for BSD compatibility:
                                   set only the low 32 bit of the sigset.  */
+#endif
diff --git a/sysdeps/unix/sysv/linux/mips/fpregdef.h b/sysdeps/unix/sysv/linux/mips/fpregdef.h
deleted file mode 100644 (file)
index a963d5f..0000000
+++ /dev/null
@@ -1 +0,0 @@
-#include <sys/fpregdef.h>
diff --git a/sysdeps/unix/sysv/linux/mips/regdef.h b/sysdeps/unix/sysv/linux/mips/regdef.h
deleted file mode 100644 (file)
index b613c8b..0000000
+++ /dev/null
@@ -1 +0,0 @@
-#include <sys/regdef.h>
index dd29d15..434be84 100644 (file)
@@ -37,7 +37,7 @@ socketpair    -       socketpair      4       __socketpair    socketpair
 #
 # There are defined locally because the caller is also defined in this dir.
 #
-s_llseek       llseek  _llseek         5       __sys_llseek
+s_llseek       llseek  _llseek         5       __syscall_llseek
 s_sigaction    sigaction sigaction     3       __syscall_sigaction
 s_ustat                ustat   ustat           2       __syscall_ustat
 sys_mknod      xmknod  mknod           3       __syscall_mknod
@@ -57,10 +57,11 @@ s_getdents  getdents getdents       3       __syscall_getdents
 s_getpriority  getpriority getpriority 2       __syscall_getpriority
 s_getresgid    getresgid getresgid     3       __syscall_getresgid
 s_getresuid    getresuid getresuid     3       __syscall_getresuid
+s_ipc          msgget  ipc             5       __syscall_ipc
 s_poll         poll    poll            3       __syscall_poll
-s_pread                pread   pread           6       __syscall_pread
+s_pread64      pread64 pread           6       __syscall_pread
 s_ptrace       ptrace  ptrace          4       __syscall_ptrace
-s_pwrite       pwrite  pwrite          6       __syscall_pwrite
+s_pwrite64     pwrite64 pwrite         6       __syscall_pwrite
 s_reboot       reboot  reboot          3       __syscall_reboot
 s_sigpending   sigpending sigpending   1       __syscall_sigpending
 s_sigprocmask  sigprocmask sigprocmask 3       __syscall_sigprocmask
similarity index 59%
rename from sysdeps/unix/sysv/linux/mips/sgidefs.h
rename to sysdeps/unix/sysv/linux/mips/sysdep.S
index a36ece0..c7bc193 100644 (file)
@@ -1,6 +1,5 @@
-/* Copyright (C) 1996, 1997 Free Software Foundation, Inc.
+/* Copyright (C) 1998 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
-   Contributed by Ralf Baechle <ralf@gnu.ai.mit.edu>.
 
    The GNU C Library is free software; you can redistribute it and/or
    modify it under the terms of the GNU Library General Public License as
    write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
    Boston, MA 02111-1307, USA.  */
 
-#ifndef _SGIDEFS_H
-#define _SGIDEFS_H     1
+#include <sysdep.h>
 
-/*
- * The real definitions come from the Linux kernel sources
- */
-#include <asm/sgidefs.h>
+/* Because the Linux version is in fact MIPS/ELF and the start.? file
+   for this system (sysdeps/mips/elf/start.S) is also used by The Hurd
+   and therefore this files must not contain the definition of the
+   `errno' variable (I don't know why, ask Roland), we have to define
+   it somewhere else.
 
-#endif /* sgidefs.h */
+   ...and this place is here.  */
+       .bss
+       .globl  errno
+       .type   errno,@object
+       .size   errno,4
+errno: .word   4
+       .text
+weak_alias(errno, _errno)
+
+#include <sysdeps/unix/mips/sysdep.S>
index 7e5acc8..4419953 100644 (file)
@@ -34,7 +34,7 @@
     ++_tmp;                                                    \
                                                                \
     _test = (size_t)_tmp;                                      \
-    _test = _test + 0xf & ~0xf;                                        \
+    _test = (_test + 0xf) & ~0xf;                              \
     /* Under some circumstances, MkLinux (up to at least DR3a5)        \
        omits the padding.  To work around this, we make a      \
        basic sanity check of the argument vector.  Of          \
index 89e8de8..31bdb13 100644 (file)
@@ -18,6 +18,7 @@
    Boston, MA 02111-1307, USA.  */
 
 #include <math.h>
+#include <wchar.h>
 
 #ifndef __NO_LONG_DOUBLE_MATH
 /* The actual implementation for all floating point sizes is in strtod.c.
index 8f62725..aad55b1 100644 (file)
 #include <math.h>
 #include <stddef.h>
 #include <locale.h>
+#include "wchar.h"
 
-#ifndef __NO_LONG_DOUBLE_MATH
+#define USE_IN_EXTENDED_LOCALE_MODEL   1
 
-# define USE_IN_EXTENDED_LOCALE_MODEL  1
+#ifndef __NO_LONG_DOUBLE_MATH
 
 extern long double ____wcstold_l_internal (const wchar_t *, wchar_t **, int,
                                           __locale_t);
@@ -46,6 +47,6 @@ ____wcstold_l_internal (const wchar_t *nptr, wchar_t **endptr, int group,
 long double
 __wcstold_l (const wchar_t *nptr, wchar_t **endptr, __locale_t loc)
 {
-  return __wcstod_internal (nptr, endptr, 0, loc);
+  return ____wcstod_l_internal (nptr, endptr, 0, loc);
 }
 #endif