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.
This commit is contained in:
Ulrich Drepper 1998-12-31 18:19:19 +00:00
parent c046e7a5a6
commit 118bad87bd
53 changed files with 931 additions and 587 deletions

132
ChangeLog
View File

@ -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.

View 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)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
@:
$(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)iconv-rules: Makefile
$(make-target-directory)
$(SHELL) ./gen-8bit-gap-1.sh $< >$(@:stmp=T)
{ 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
@:
$(gen-8bit-modules:%=$(objpfx)%.stmp): $(objpfx)%.stmp: $(objpfx)iconv-rules
$(gen-8bit-gap-modules:%=$(objpfx)%.stmp): $(objpfx)%.stmp: $(objpfx)iconv-rules
$(objpfx)iso8859-7jp.stmp: $(charmaps)/ISO-8859-7 gen-8bit-gap-1.sh
$(make-target-directory)
$(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

View 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.

View 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);
}
}

View 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

View 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)

View 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 */

View 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. */

View 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"; \

View 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;
}

View 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 */

View 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,

View 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

View 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.

View 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.

View 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;

View File

@ -0,0 +1,51 @@
/* Copy memory block and return pointer to following byte.
For Intel 80x86, x>=6.
This file is part of the GNU C Library.
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
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. */
#include <sysdep.h>
#include "asm-syntax.h"
/* strtok:
INPUT PARAMETER:
dest (sp + 4)
src (sp + 8)
len (sp + 12)
*/
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)

View File

@ -73,6 +73,7 @@ ENTRY (FUNCTION)
movl $64, %ecx
movl %esp, %edi
xorl %eax, %eax
cld
rep
stosl

View 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

View 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

View 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
@ -16,12 +16,9 @@
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 */

View 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

View 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
@ -17,12 +17,11 @@
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 */

View File

@ -1,6 +1,6 @@
/* 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 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
@ -21,8 +21,24 @@
#define _SGIDEFS_H 1
/*
* The real definitions come from the Linux kernel sources
* Definitions for the ISA level
*/
#include <asm/sgidefs.h>
#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 */

377
sysdeps/mips/sys/asm.h Normal file
View File

@ -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 */

View File

@ -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 */

View File

@ -45,16 +45,16 @@
#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;

View 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);

View 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);

View 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);

View 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),

View 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).

View 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;
}

View 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)

View 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);

View 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);

View 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

View 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

View 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

View File

@ -1 +0,0 @@
#include <sys/fpregdef.h>

View File

@ -1 +0,0 @@
#include <sys/regdef.h>

View 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

View File

@ -1,6 +1,5 @@
/* Copyright (C) 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
@ -17,13 +16,21 @@
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>
/*
* The real definitions come from the Linux kernel sources
*/
#include <asm/regdef.h>
#include <asm/fpregdef.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 /* regdef.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>

View 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 \

View 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.

View File

@ -22,11 +22,12 @@
#include <math.h>
#include <stddef.h>
#include <locale.h>
#include "wchar.h"
#define USE_IN_EXTENDED_LOCALE_MODEL 1
#ifndef __NO_LONG_DOUBLE_MATH
# define USE_IN_EXTENDED_LOCALE_MODEL 1
extern long double ____wcstold_l_internal (const wchar_t *, wchar_t **, int,
__locale_t);
extern unsigned long long int ____wcstoull_l_internal (const wchar_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