From b9b49b44fdc1c74ad85076bca9ff7ea0200e2214 Mon Sep 17 00:00:00 2001 From: Ulrich Drepper Date: Sun, 28 Dec 1997 16:01:53 +0000 Subject: Update. 1997-12-28 15:08 Ulrich Drepper * sysdeps/powerpc/__longjmp.S: Define _SETJMP_H before including . * sysdeps/powerpc/setjmp.S: Likewise. Patches by Matt McLean . * Make-dist (sysdep_dirs): Ignore bits dirs while searching. * Makefile: Undo last patch. (distribute): Add test-installation.pl. * configure.in: Correct handling of --enable-add-ons without parameter. Correct address of WWW pages. * libc.map: Add _nl_domain_bindings. * db2/mutex/tsl_parisc.s: New file. * iconvdata/Makefile (distribute): Add jis0201.c, jis0208.c, jis0212.c, and extra-module.mk. * localedata/Makefile (distribute): New. Add all the files. * stdlib/Makefile (headers): Add inttypes.h. (routines): Add strtoimax, strtoumax, wcstoimax, and wcstoumax. * sysdeps/generic/inttypes.h: New file. * sysdeps/generic/strtoimax.c: New file. * sysdeps/generic/strtoumax.c: New file. * sysdeps/generic/wcstoimax.c: New file. * sysdeps/generic/wcstoumax.c: New file. * sysdeps/wordsize-32/Dist: Removed. * sysdeps/wordsize-32/Makefile: Removed. * sysdeps/wordsize-64/Dist: Removed. * sysdeps/wordsize-64/Makefile: Removed. * sysdeps/generic/bits/environments.h: New file. * include/limits.h: Define MB_LEN_MAX in any case to 6. The gcc header is still not correct. * io/fcntl.h [__USE_FILE_OFFSET64]: We have to use the __*64 types. * posix/unistd.h: Likewise. * sysdeps/generic/sys/mman.h: Likewise. * sysdeps/unix/sysv/linux/sys/mman.h: Likewise. * manual/arith.texi: Change definition of mul macro. * manual/math.texi: Likewise. * misc/Makefile (routines): Add mmap64. * sysdeps/generic/mmap64.c: New file. * sysdeps/unix/sysv/linux/alpha/mmap64.c: New file. * sysdeps/unix/sysv/linux/sparc/sparc64/mmap64.c: New file. * sysdeps/unix/sysv/linux/alpha/syscalls.list: Add __mmap64 and mmap64 aliases to mmap. * sysdeps/unix/sysv/linux/sparc/sparc64/syscalls.list: Likewise. * sysdeps/generic/setrlimit64.c: Don't mark as stub. * nis/nss_nis/nis-hosts.c (internal_nis_gethostent_r): Pretty print. * nis(rpcsvc/nis_tags.h: Prevent warning by unknown pragma. * sysdeps/posix/mk-stdiolim.c: Generate correct file which defines FOPEN_MAX also when included by limits.h. * sysdeps/unix/sysv/linux/stdio_lim.h.in: Likewise. * sysdeps/unix/sysv/linux/Dist: Add oldsiglist.c, netax25/ax25.h, and netrom/netrom.h. * sysdeps/unix/sysv/linux/Makefile [$(subdir)=stdio-common]: Add oldsiglist to sysdep_routines, not aux. [$(subdir)=inet] (sysdep_headers): Add netax25/ax25.h, netrom/netrom.h. * sysdeps/unix/sysv/linux/bits/socket.h: Remove SOL_AX25, SOL_ATALK, and SOL_NETROM definition. * sysdeps/unix/sysv/linux/i386/Dist: Add s_pwrite64.S and s_pread64.S. * sysdeps/unix/sysv/linux/net/route.h: Pretty print. * sysdeps/unix/sysv/linux/netatalk/at.h: Pretty print. 1997-12-25 Ulrich Drepper * sysdeps/unix/sysv/linux/alpha/net/route.h: New file. * sysdeps/unix/sysv/linux/alpha/kernel_sigaction.h: Replace sa_handler with k_sa_handler. * sysdeps/unix/sysv/linux/alpha/syscalls.list: Add __getrlimit as strong alias. Reported by a sun. * sysdeps/unix/sysv/linux/sigsuspend.c: Don't define __libc_have_rt_sigs here. * sysdeps/unix/sysv/linux/sigaction.c: Do it instead here. * sysdeps/unix/sysv/linux/i386/sigaction.c: Likewise. * sysdeps/unix/sysv/linux/sigpending.c: Correct comment. * sysdeps/unix/sysv/linux/sigprocmask.c: Likewise. 1997-12-11 07:51 Geoff Keating * sysdeps/powerpc/atomicity.h: New file. * sysdeps/mach/powerpc/machine-lock.h: New file. * Rules: Use -fpic to build anything that might end up in a users' shared library. * sysdeps/powerpc/s_fdim.c: New file. * sysdeps/powerpc/s_fdimf.c: New file. * sysdeps/powerpc/s_fmax.S: New file. * sysdeps/powerpc/s_fmaxf.S: New file. * sysdeps/powerpc/s_fmin.S: New file. * sysdeps/powerpc/s_fminf.S: New file. * sysdeps/powerpc/s_llrint.c: Now is for double. * sysdeps/powerpc/s_llrintf.c: New file. * sysdeps/powerpc/s_llround.c: Now is for double. * sysdeps/powerpc/s_llroundf.c: New file. * sysdeps/powerpc/s_lrint.c: Now is for double. * sysdeps/powerpc/s_lrintf.S: New file. * sysdeps/powerpc/s_lround.c: Now is for double. * sysdeps/powerpc/s_lroundf.c: New file. * sysdeps/powerpc/bits/mathinlines.h: Add inline versions of lrint, lrintf, fdim, fdimf. * sysdeps/unix/sysv/linux/powerpc/kernel_termios.h: Don't use bits/ file directly, use its parent. * sysdeps/unix/sysv/linux/powerpc/dl-sysdep.c: Re-instate '++' (for the third time). 1997-12-20 13:50 Richard Henderson * posix/sched.h: timespec is in . * sysdeps/unix/sysv/linux/sys/kd.h: Don't redefine _LINUX_TYPES_H. --- ChangeLog | 134 ++++++++++++++++++ FAQ.in | 4 +- Make-dist | 2 +- Makefile | 13 +- PROJECTS | 3 +- README | 6 +- README.template | 6 +- Rules | 6 + bits/environments.h | 35 +++++ configure | 152 +++++++++++---------- configure.in | 10 +- db2/mutex/tsl_parisc.s | 65 +++++++++ iconvdata/Makefile | 15 +- include/limits.h | 9 +- io/fcntl.h | 2 +- libc.map | 2 +- manual/arith.texi | 19 ++- manual/math.texi | 12 +- misc/Makefile | 2 +- nis/nss_nis/nis-hosts.c | 3 +- nis/rpcsvc/nis_tags.h | 2 + posix/sched.h | 6 +- posix/unistd.h | 12 +- stdlib/Makefile | 6 +- sysdeps/generic/bits/environments.h | 35 +++++ sysdeps/generic/inttypes.h | 1 + sysdeps/generic/mmap64.c | 48 +++++++ sysdeps/generic/setrlimit64.c | 1 - sysdeps/generic/strtoimax.c | 1 + sysdeps/generic/strtoumax.c | 1 + sysdeps/generic/sys/mman.h | 2 + sysdeps/generic/wcstoimax.c | 1 + sysdeps/generic/wcstoumax.c | 1 + sysdeps/mach/powerpc/machine-lock.h | 75 ++++++++++ sysdeps/posix/mk-stdiolim.c | 4 +- sysdeps/powerpc/__longjmp.S | 1 + sysdeps/powerpc/atomicity.h | 99 ++++++++++++++ sysdeps/powerpc/bits/mathinline.h | 67 ++++++--- sysdeps/powerpc/s_fdim.c | 31 +++++ sysdeps/powerpc/s_fdimf.c | 27 ++++ sysdeps/powerpc/s_fmax.S | 43 ++++++ sysdeps/powerpc/s_fmaxf.S | 1 + sysdeps/powerpc/s_fmin.S | 43 ++++++ sysdeps/powerpc/s_fminf.S | 1 + sysdeps/powerpc/s_llrint.c | 11 +- sysdeps/powerpc/s_llrintf.c | 27 ++++ sysdeps/powerpc/s_llround.c | 12 +- sysdeps/powerpc/s_llroundf.c | 46 +++++++ sysdeps/powerpc/s_lrint.c | 28 ++-- sysdeps/powerpc/s_lrintf.S | 1 + sysdeps/powerpc/s_lround.c | 12 +- sysdeps/powerpc/s_lroundf.c | 46 +++++++ sysdeps/powerpc/setjmp.S | 1 + sysdeps/unix/sysv/linux/Dist | 3 + sysdeps/unix/sysv/linux/Makefile | 4 +- sysdeps/unix/sysv/linux/alpha/kernel_sigaction.h | 2 +- sysdeps/unix/sysv/linux/alpha/mmap64.c | 1 + sysdeps/unix/sysv/linux/alpha/net/route.h | 140 +++++++++++++++++++ sysdeps/unix/sysv/linux/alpha/syscalls.list | 4 +- sysdeps/unix/sysv/linux/bits/socket.h | 3 - sysdeps/unix/sysv/linux/i386/Dist | 2 + sysdeps/unix/sysv/linux/i386/sigaction.c | 4 +- sysdeps/unix/sysv/linux/net/route.h | 3 +- sysdeps/unix/sysv/linux/netatalk/at.h | 6 +- sysdeps/unix/sysv/linux/netax25/ax25.h | 147 ++++++++++++++++++++ sysdeps/unix/sysv/linux/netrom/netrom.h | 80 +++++++++++ sysdeps/unix/sysv/linux/powerpc/dl-sysdep.c | 7 +- sysdeps/unix/sysv/linux/powerpc/kernel_termios.h | 2 +- sysdeps/unix/sysv/linux/sigaction.c | 4 +- sysdeps/unix/sysv/linux/sigpending.c | 2 +- sysdeps/unix/sysv/linux/sigprocmask.c | 2 +- sysdeps/unix/sysv/linux/sigsuspend.c | 4 +- sysdeps/unix/sysv/linux/sparc/sparc64/mmap64.c | 1 + .../unix/sysv/linux/sparc/sparc64/syscalls.list | 1 + sysdeps/unix/sysv/linux/stdio_lim.h.in | 5 +- sysdeps/unix/sysv/linux/sys/kd.h | 4 +- sysdeps/unix/sysv/linux/sys/mman.h | 10 +- sysdeps/wordsize-32/Dist | 5 - sysdeps/wordsize-32/Makefile | 5 - sysdeps/wordsize-64/Dist | 5 - sysdeps/wordsize-64/Makefile | 5 - 81 files changed, 1437 insertions(+), 217 deletions(-) create mode 100644 bits/environments.h create mode 100644 db2/mutex/tsl_parisc.s create mode 100644 sysdeps/generic/bits/environments.h create mode 100644 sysdeps/generic/inttypes.h create mode 100644 sysdeps/generic/mmap64.c create mode 100644 sysdeps/generic/strtoimax.c create mode 100644 sysdeps/generic/strtoumax.c create mode 100644 sysdeps/generic/wcstoimax.c create mode 100644 sysdeps/generic/wcstoumax.c create mode 100644 sysdeps/mach/powerpc/machine-lock.h create mode 100644 sysdeps/powerpc/atomicity.h create mode 100644 sysdeps/powerpc/s_fdim.c create mode 100644 sysdeps/powerpc/s_fdimf.c create mode 100644 sysdeps/powerpc/s_fmax.S create mode 100644 sysdeps/powerpc/s_fmaxf.S create mode 100644 sysdeps/powerpc/s_fmin.S create mode 100644 sysdeps/powerpc/s_fminf.S create mode 100644 sysdeps/powerpc/s_llrintf.c create mode 100644 sysdeps/powerpc/s_llroundf.c create mode 100644 sysdeps/powerpc/s_lrintf.S create mode 100644 sysdeps/powerpc/s_lroundf.c create mode 100644 sysdeps/unix/sysv/linux/alpha/mmap64.c create mode 100644 sysdeps/unix/sysv/linux/alpha/net/route.h create mode 100644 sysdeps/unix/sysv/linux/netax25/ax25.h create mode 100644 sysdeps/unix/sysv/linux/netrom/netrom.h create mode 100644 sysdeps/unix/sysv/linux/sparc/sparc64/mmap64.c delete mode 100644 sysdeps/wordsize-32/Dist delete mode 100644 sysdeps/wordsize-32/Makefile delete mode 100644 sysdeps/wordsize-64/Dist delete mode 100644 sysdeps/wordsize-64/Makefile diff --git a/ChangeLog b/ChangeLog index 00185bf0a3..db94809eb7 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,137 @@ +1997-12-28 15:08 Ulrich Drepper + + * sysdeps/powerpc/__longjmp.S: Define _SETJMP_H before including + . + * sysdeps/powerpc/setjmp.S: Likewise. + Patches by Matt McLean . + + * Make-dist (sysdep_dirs): Ignore bits dirs while searching. + + * Makefile: Undo last patch. + (distribute): Add test-installation.pl. + + * configure.in: Correct handling of --enable-add-ons without parameter. + Correct address of WWW pages. + + * libc.map: Add _nl_domain_bindings. + + * db2/mutex/tsl_parisc.s: New file. + + * iconvdata/Makefile (distribute): Add jis0201.c, jis0208.c, jis0212.c, + and extra-module.mk. + + * localedata/Makefile (distribute): New. Add all the files. + + * stdlib/Makefile (headers): Add inttypes.h. + (routines): Add strtoimax, strtoumax, wcstoimax, and wcstoumax. + * sysdeps/generic/inttypes.h: New file. + * sysdeps/generic/strtoimax.c: New file. + * sysdeps/generic/strtoumax.c: New file. + * sysdeps/generic/wcstoimax.c: New file. + * sysdeps/generic/wcstoumax.c: New file. + * sysdeps/wordsize-32/Dist: Removed. + * sysdeps/wordsize-32/Makefile: Removed. + * sysdeps/wordsize-64/Dist: Removed. + * sysdeps/wordsize-64/Makefile: Removed. + * sysdeps/generic/bits/environments.h: New file. + + * include/limits.h: Define MB_LEN_MAX in any case to 6. The gcc + header is still not correct. + + * io/fcntl.h [__USE_FILE_OFFSET64]: We have to use the __*64 types. + * posix/unistd.h: Likewise. + * sysdeps/generic/sys/mman.h: Likewise. + * sysdeps/unix/sysv/linux/sys/mman.h: Likewise. + + * manual/arith.texi: Change definition of mul macro. + * manual/math.texi: Likewise. + + * misc/Makefile (routines): Add mmap64. + * sysdeps/generic/mmap64.c: New file. + * sysdeps/unix/sysv/linux/alpha/mmap64.c: New file. + * sysdeps/unix/sysv/linux/sparc/sparc64/mmap64.c: New file. + * sysdeps/unix/sysv/linux/alpha/syscalls.list: Add __mmap64 and mmap64 + aliases to mmap. + * sysdeps/unix/sysv/linux/sparc/sparc64/syscalls.list: Likewise. + + * sysdeps/generic/setrlimit64.c: Don't mark as stub. + + * nis/nss_nis/nis-hosts.c (internal_nis_gethostent_r): Pretty print. + + * nis(rpcsvc/nis_tags.h: Prevent warning by unknown pragma. + + * sysdeps/posix/mk-stdiolim.c: Generate correct file which defines + FOPEN_MAX also when included by limits.h. + * sysdeps/unix/sysv/linux/stdio_lim.h.in: Likewise. + + * sysdeps/unix/sysv/linux/Dist: Add oldsiglist.c, netax25/ax25.h, + and netrom/netrom.h. + * sysdeps/unix/sysv/linux/Makefile [$(subdir)=stdio-common]: Add + oldsiglist to sysdep_routines, not aux. + [$(subdir)=inet] (sysdep_headers): Add netax25/ax25.h, netrom/netrom.h. + + * sysdeps/unix/sysv/linux/bits/socket.h: Remove SOL_AX25, SOL_ATALK, + and SOL_NETROM definition. + + * sysdeps/unix/sysv/linux/i386/Dist: Add s_pwrite64.S and s_pread64.S. + + * sysdeps/unix/sysv/linux/net/route.h: Pretty print. + * sysdeps/unix/sysv/linux/netatalk/at.h: Pretty print. + +1997-12-25 Ulrich Drepper + + * sysdeps/unix/sysv/linux/alpha/net/route.h: New file. + + * sysdeps/unix/sysv/linux/alpha/kernel_sigaction.h: Replace + sa_handler with k_sa_handler. + * sysdeps/unix/sysv/linux/alpha/syscalls.list: Add __getrlimit as + strong alias. + Reported by a sun. + + * sysdeps/unix/sysv/linux/sigsuspend.c: Don't define + __libc_have_rt_sigs here. + * sysdeps/unix/sysv/linux/sigaction.c: Do it instead here. + * sysdeps/unix/sysv/linux/i386/sigaction.c: Likewise. + * sysdeps/unix/sysv/linux/sigpending.c: Correct comment. + * sysdeps/unix/sysv/linux/sigprocmask.c: Likewise. + +1997-12-11 07:51 Geoff Keating + + * sysdeps/powerpc/atomicity.h: New file. + * sysdeps/mach/powerpc/machine-lock.h: New file. + + * Rules: Use -fpic to build anything that might end up in a users' + shared library. + + * sysdeps/powerpc/s_fdim.c: New file. + * sysdeps/powerpc/s_fdimf.c: New file. + * sysdeps/powerpc/s_fmax.S: New file. + * sysdeps/powerpc/s_fmaxf.S: New file. + * sysdeps/powerpc/s_fmin.S: New file. + * sysdeps/powerpc/s_fminf.S: New file. + * sysdeps/powerpc/s_llrint.c: Now is for double. + * sysdeps/powerpc/s_llrintf.c: New file. + * sysdeps/powerpc/s_llround.c: Now is for double. + * sysdeps/powerpc/s_llroundf.c: New file. + * sysdeps/powerpc/s_lrint.c: Now is for double. + * sysdeps/powerpc/s_lrintf.S: New file. + * sysdeps/powerpc/s_lround.c: Now is for double. + * sysdeps/powerpc/s_lroundf.c: New file. + * sysdeps/powerpc/bits/mathinlines.h: Add inline versions of lrint, + lrintf, fdim, fdimf. + + * sysdeps/unix/sysv/linux/powerpc/kernel_termios.h: Don't use bits/ + file directly, use its parent. + + * sysdeps/unix/sysv/linux/powerpc/dl-sysdep.c: Re-instate '++' + (for the third time). + +1997-12-20 13:50 Richard Henderson + + * posix/sched.h: timespec is in . + + * sysdeps/unix/sysv/linux/sys/kd.h: Don't redefine _LINUX_TYPES_H. + 1997-12-22 18:10 Ulrich Drepper * configure.in: Stop with error if --disable-static is used when diff --git a/FAQ.in b/FAQ.in index 62c943bd74..1d8918a1a2 100644 --- a/FAQ.in +++ b/FAQ.in @@ -42,7 +42,7 @@ few people have expressed interest. If you have a system not listed above (or in the `README' file) and you are really interested in porting it, contact - + ?? What compiler do I need to build GNU libc? @@ -103,7 +103,7 @@ has not been ported to them. You should not need these tools unless you change the source files. * Some scripts need perl5 - but at the moment those scripts are not - vital for building and installing GNU libc (some data files will not + vital for building and installing GNU libc (some data files will not be created). * When compiling for Linux, the header files of the Linux kernel must diff --git a/Make-dist b/Make-dist index 981d5e68f4..f77eb35507 100644 --- a/Make-dist +++ b/Make-dist @@ -34,7 +34,7 @@ foo:=$(shell echo 'foobar=$(filter %.c %.S %.s %.h,$(distribute))'>&2) ifndef sysdep_dirs # Find all sysdep directories. -export sysdep_dirs := $(shell find $(..)sysdeps -type d \ +export sysdep_dirs := $(shell find $(..)sysdeps -type d ! -name bits \ ! -name CVS ! -name RCS -print) else # Defined by the parent. diff --git a/Makefile b/Makefile index 9e7679bcf4..ed8d327ddc 100644 --- a/Makefile +++ b/Makefile @@ -188,19 +188,20 @@ $(version.c-objects): $(objpfx)version-info.h subdir-stubs := $(foreach dir,$(subdirs),$(common-objpfx)stub-$(dir)) -$(common-objpfx)stub-%: subdir_install - # Since stubs.h is never needed when building the library, we simplify the # hairy installation process by producing it in place only as the last part -# of the top-level `make install'. -$(inst_includedir)/gnu/stubs.h: $(subdir-stubs) +# of the top-level `make install'. It depends on subdir_install, which +# iterates over all the subdirs; subdir_install in each subdir depends on +# the subdir's stubs file. Having more direct dependencies would result in +# extra iterations over the list for subdirs and many recursive makes. +$(inst_includedir)/gnu/stubs.h: subdir_install $(make-target-directory) @rm -f $(objpfx)stubs.h (echo '/* This file is automatically generated.';\ echo ' It defines a symbol `__stub_FUNCTION'\'' for each function';\ echo ' in the C library which is a stub, meaning it will fail';\ echo ' every time called, usually setting errno to ENOSYS. */';\ - sort $^) > $(objpfx)stubs.h + sort $(subdir-stubs)) > $(objpfx)stubs.h if test -r $@ && cmp -s $(objpfx)stubs.h $@; \ then echo 'stubs.h unchanged'; \ else $(INSTALL_DATA) $(objpfx)stubs.h $@; fi @@ -315,7 +316,7 @@ distribute := README INSTALL FAQ NOTES NEWS PROJECTS BUGS \ autolock.sh rellns-sh munch-tmpl.c munch.awk interp.c \ sysdep.h set-hooks.h libc-symbols.h version.h shlib-versions \ rpm/Makefile rpm/template rpm/rpmrc glibcbug.in abi-tags \ - stub-tag.h + stub-tag.h test-installation.pl distribute := $(strip $(distribute)) generated := $(generated) stubs.h version-info.h diff --git a/PROJECTS b/PROJECTS index d7291b8744..c8a196342b 100644 --- a/PROJECTS +++ b/PROJECTS @@ -86,7 +86,6 @@ contact [13] Several more or less small functions have to be written: - + tcgetid() and waitid() from XPG4.2 + grantpt(), ptsname(), unlockpt() from XPG4.2 More information is available on request. @@ -97,6 +96,8 @@ contact This is needed in several places in the GNU libc and I already have rather concrete plans but so far no possibility to start this. +*** The library is available, no it remains to be used in the streams. + [15] Cleaning up the header files. Ideally, each header style should follow the "good examples". Each variable and function should have diff --git a/README b/README index 755d4ec667..4594cc5eb5 100644 --- a/README +++ b/README @@ -1,4 +1,4 @@ -This directory contains the version 2.0.90 test release of the GNU C Library. +This directory contains the version 2.0.91 test release of the GNU C Library. Many bugs have been fixed since the last release. Some bugs surely remain. @@ -47,7 +47,7 @@ provides the Unix `crypt' function, plus some other entry points. Because of the United States export restriction on DES implementations, we are distributing this code separately from the rest of the C library. There is an extra distribution tar file just for crypt; it is -called `glibc-crypt-2.0.90.tar.gz'. You can just unpack the crypt +called `glibc-crypt-2.0.91.tar.gz'. You can just unpack the crypt distribution along with the rest of the C library and build; you can also build the library without getting crypt. Users outside the USA can get the crypt distribution via anonymous FTP from ftp.ifi.uio.no @@ -80,7 +80,7 @@ in the GNU C library, explaining how you can tell the library what facilities you want it to make available. We prefer to get bug reports sent using the `glibcbug' shell script which -is install together with the rest of the GNU libc to . +is installed together with the rest of the GNU libc to . Simply run this shell script and fill in the information. Nevertheless you can still send bug reports to as normal electronic mails. diff --git a/README.template b/README.template index 600a3e6d54..fbea883444 100644 --- a/README.template +++ b/README.template @@ -40,7 +40,7 @@ Since no one has volunteered to test and fix the above configurations, these are not supported at the moment. It's expected that these don't work anymore. Porting the library is not hard. If you are interested in doing a port, please contact the glibc maintainers by sending -electronic mail to . +electronic mail to . The GNU C library now includes Michael Glad's Ultra Fast Crypt, which provides the Unix `crypt' function, plus some other entry points. @@ -82,8 +82,8 @@ facilities you want it to make available. We prefer to get bug reports sent using the `glibcbug' shell script which is installed together with the rest of the GNU libc to . Simply run this shell script and fill in the information. Nevertheless -you can still send bug reports to as normal -electronic mails. +you can still send bug reports to as normal electronic +mails. The GNU C Library is free software. See the file COPYING.LIB for copying conditions. diff --git a/Rules b/Rules index c36e2c30d6..029f81b96e 100644 --- a/Rules +++ b/Rules @@ -171,6 +171,12 @@ ifdef static-only-routines $(static-only-routines:%=$(objpfx)%.os): %.os: $(common-objpfx)empty.os rm -f $@ ln $< $@ + +# Must build the routines as PIC, though, because they can end up in (users') +# shared objects. We don't want to use CFLAGS-os because users may, for +# example, make that processor-specific. +$(static-only-routines:%=$(objpfx)%.o): $(objpfx)%.o: %.c $(before-compile) + $(compile.c) $(pic-ccflag) $(OUTPUT_OPTION) endif ifdef shared-only-routines diff --git a/bits/environments.h b/bits/environments.h new file mode 100644 index 0000000000..8ed19906b4 --- /dev/null +++ b/bits/environments.h @@ -0,0 +1,35 @@ +/* Copyright (C) 1997 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 _UNISTD_H +# error "Never include this file directly. Use instead" +#endif + +/* This header should define the following symbols under the described + situations. A value `1' means that the model is always supported, + `-1' means it is never supported. Undefined means it cannot be + statically decided. + + _XBS5_ILP32_OFF32 32bit int, long, pointers, and off_t type + _XBS5_ILP32_OFFBIG 32bit int, long, and pointers and larger off_t type + + _XBS5_LP64_OFF32 64bit long and pointers and 32bit off_t type + _XBS5_LPBIG_OFFBIG 64bit long and pointers and large off_t type +*/ + +#endif /* environments.h */ diff --git a/configure b/configure index 625d2f75ba..1e6489461b 100755 --- a/configure +++ b/configure @@ -694,8 +694,12 @@ fi if test "${enable_add_ons+set}" = set; then enableval="$enable_add_ons" case "$enableval" in - yes) add_ons=`echo $srcdir/*/configure | \ - sed -e "s!$srcdir/!!g" -e 's!/configure!!g'`;; + yes) if test "$srcdir" = "."; then + add_ons=`echo */configure | sed -e 's!/configure!!g'` + else + add_ons=`echo $srcdir/*/configure | \ + sed -e "s!^$srcdir/!!g" -e 's!/configure!!g'` + fi;; *) add_ons=`echo "$enableval" | sed 's/,/ /g'`;; esac else @@ -758,7 +762,7 @@ else { echo "configure: error: can not run $ac_config_sub" 1>&2; exit 1; } fi echo $ac_n "checking host system type""... $ac_c" 1>&6 -echo "configure:762: checking host system type" >&5 +echo "configure:766: checking host system type" >&5 host_alias=$host case "$host_alias" in @@ -809,7 +813,7 @@ if test -z "$enable_hacker_mode"; then echo "*** So far nobody cared to port it and if there is no volunteer it" echo "*** might never happen. So, if you have interest to see glibc on" echo "*** this platform visit" - echo "*** http://www.gnu.ai.mit.edu/software/libc/porting.html" + echo "*** http://www.gnu.org/software/libc/porting.html" echo "*** and join the group of porters" exit 1 ;; @@ -877,7 +881,7 @@ fi # This can take a while to compute. sysdep_dir=$srcdir/sysdeps echo $ac_n "checking sysdep dirs""... $ac_c" 1>&6 -echo "configure:881: checking sysdep dirs" >&5 +echo "configure:885: checking sysdep dirs" >&5 # Make sco3.2v4 become sco3.2.4 and sunos4.1.1_U1 become sunos4.1.1.U1. os="`echo $os | sed 's/\([0-9A-Z]\)[v_]\([0-9A-Z]\)/\1.\2/g'`" @@ -1078,7 +1082,7 @@ echo "$ac_t""sysdeps/generic" 1>&6 # SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" # ./install, which can be erroneously created by make from ./install.sh. echo $ac_n "checking for a BSD compatible install""... $ac_c" 1>&6 -echo "configure:1082: checking for a BSD compatible install" >&5 +echo "configure:1086: checking for a BSD compatible install" >&5 if test -z "$INSTALL"; then if eval "test \"`echo '$''{'ac_cv_path_install'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -1132,7 +1136,7 @@ if test "$INSTALL" = "${srcdir}/install-sh -c"; then INSTALL='\$(..)./install-sh -c' fi echo $ac_n "checking whether ln -s works""... $ac_c" 1>&6 -echo "configure:1136: checking whether ln -s works" >&5 +echo "configure:1140: checking whether ln -s works" >&5 if eval "test \"`echo '$''{'ac_cv_prog_LN_S'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -1157,7 +1161,7 @@ do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:1161: checking for $ac_word" >&5 +echo "configure:1165: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_MSGFMT'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -1189,7 +1193,7 @@ test -n "$MSGFMT" || MSGFMT=":" # Extract the first word of "makeinfo", so it can be a program name with args. set dummy makeinfo; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:1193: checking for $ac_word" >&5 +echo "configure:1197: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_MAKEINFO'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -1229,7 +1233,7 @@ fi # Extract the first word of "gcc", so it can be a program name with args. set dummy gcc; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:1233: checking for $ac_word" >&5 +echo "configure:1237: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -1258,7 +1262,7 @@ if test -z "$CC"; then # Extract the first word of "cc", so it can be a program name with args. set dummy cc; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:1262: checking for $ac_word" >&5 +echo "configure:1266: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -1306,7 +1310,7 @@ fi fi echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works""... $ac_c" 1>&6 -echo "configure:1310: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works" >&5 +echo "configure:1314: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works" >&5 ac_ext=c # CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options. @@ -1316,11 +1320,11 @@ ac_link='${CC-cc} -o conftest $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS cross_compiling=$ac_cv_prog_cc_cross cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest; then +if { (eval echo configure:1328: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then ac_cv_prog_cc_works=yes # If we can't run a trivial program, we are probably using a cross compiler. if (./conftest; exit) 2>/dev/null; then @@ -1343,13 +1347,13 @@ else cross_linkable=yes fi echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler""... $ac_c" 1>&6 -echo "configure:1347: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler" >&5 +echo "configure:1351: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler" >&5 echo "$ac_t""$ac_cv_prog_cc_cross" 1>&6 cross_compiling=$ac_cv_prog_cc_cross echo $ac_n "checking whether we are using GNU C""... $ac_c" 1>&6 -echo "configure:1353: checking whether we are using GNU C" >&5 +echo "configure:1357: checking whether we are using GNU C" >&5 if eval "test \"`echo '$''{'ac_cv_prog_gcc'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -1358,7 +1362,7 @@ else yes; #endif EOF -if { ac_try='${CC-cc} -E conftest.c'; { (eval echo configure:1362: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then +if { ac_try='${CC-cc} -E conftest.c'; { (eval echo configure:1366: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then ac_cv_prog_gcc=yes else ac_cv_prog_gcc=no @@ -1375,7 +1379,7 @@ if test $ac_cv_prog_gcc = yes; then yes; #endif EOF - if { ac_try='${CC-cc} -E conftest.c'; { (eval echo configure:1379: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then + if { ac_try='${CC-cc} -E conftest.c'; { (eval echo configure:1383: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then if test -z "$CFLAGS"; then CFLAGS="-g -O2" fi @@ -1387,7 +1391,7 @@ else fi echo $ac_n "checking build system type""... $ac_c" 1>&6 -echo "configure:1391: checking build system type" >&5 +echo "configure:1395: checking build system type" >&5 build_alias=$build case "$build_alias" in @@ -1410,7 +1414,7 @@ do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:1414: checking for $ac_word" >&5 +echo "configure:1418: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_BUILD_CC'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -1441,7 +1445,7 @@ done fi echo $ac_n "checking how to run the C preprocessor""... $ac_c" 1>&6 -echo "configure:1445: checking how to run the C preprocessor" >&5 +echo "configure:1449: checking how to run the C preprocessor" >&5 # On Suns, sometimes $CPP names a directory. if test -n "$CPP" && test -d "$CPP"; then CPP= @@ -1456,13 +1460,13 @@ else # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. cat > conftest.$ac_ext < Syntax Error EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:1466: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:1470: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out` if test -z "$ac_err"; then : @@ -1473,13 +1477,13 @@ else rm -rf conftest* CPP="${CC-cc} -E -traditional-cpp" cat > conftest.$ac_ext < Syntax Error EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:1483: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:1487: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out` if test -z "$ac_err"; then : @@ -1512,7 +1516,7 @@ LD=`$CC -print-file-name=ld` # Determine whether we are using GNU binutils. echo $ac_n "checking whether $AS is GNU as""... $ac_c" 1>&6 -echo "configure:1516: checking whether $AS is GNU as" >&5 +echo "configure:1520: checking whether $AS is GNU as" >&5 if eval "test \"`echo '$''{'libc_cv_prog_as_gnu'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -1530,7 +1534,7 @@ rm -f a.out gnu_as=$libc_cv_prog_as_gnu echo $ac_n "checking whether $LD is GNU ld""... $ac_c" 1>&6 -echo "configure:1534: checking whether $LD is GNU ld" >&5 +echo "configure:1538: checking whether $LD is GNU ld" >&5 if eval "test \"`echo '$''{'libc_cv_prog_ld_gnu'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -1554,7 +1558,7 @@ fi # Extract the first word of "${ac_tool_prefix}ar", so it can be a program name with args. set dummy ${ac_tool_prefix}ar; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:1558: checking for $ac_word" >&5 +echo "configure:1562: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_AR'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -1585,7 +1589,7 @@ fi # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args. set dummy ${ac_tool_prefix}ranlib; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:1589: checking for $ac_word" >&5 +echo "configure:1593: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_RANLIB'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -1616,7 +1620,7 @@ if test -n "$ac_tool_prefix"; then # Extract the first word of "ranlib", so it can be a program name with args. set dummy ranlib; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:1620: checking for $ac_word" >&5 +echo "configure:1624: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_RANLIB'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -1651,7 +1655,7 @@ fi # Extract the first word of "bash", so it can be a program name with args. set dummy bash; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:1655: checking for $ac_word" >&5 +echo "configure:1659: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_path_BASH'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -1693,7 +1697,7 @@ if test "$BASH" = no; then # Extract the first word of "ksh", so it can be a program name with args. set dummy ksh; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:1697: checking for $ac_word" >&5 +echo "configure:1701: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_path_KSH'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -1739,7 +1743,7 @@ do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:1743: checking for $ac_word" >&5 +echo "configure:1747: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_path_PERL'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -1774,7 +1778,7 @@ test -n "$PERL" || PERL="no" echo $ac_n "checking for signed size_t type""... $ac_c" 1>&6 -echo "configure:1778: checking for signed size_t type" >&5 +echo "configure:1782: checking for signed size_t type" >&5 if eval "test \"`echo '$''{'libc_cv_signed_size_t'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -1798,12 +1802,12 @@ EOF fi echo $ac_n "checking for libc-friendly stddef.h""... $ac_c" 1>&6 -echo "configure:1802: checking for libc-friendly stddef.h" >&5 +echo "configure:1806: checking for libc-friendly stddef.h" >&5 if eval "test \"`echo '$''{'libc_cv_friendly_stddef'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:1826: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* libc_cv_friendly_stddef=yes else @@ -1837,7 +1841,7 @@ override stddef.h = # The installed seems to be libc-friendly." fi echo $ac_n "checking whether we need to use -P to assemble .S files""... $ac_c" 1>&6 -echo "configure:1841: checking whether we need to use -P to assemble .S files" >&5 +echo "configure:1845: checking whether we need to use -P to assemble .S files" >&5 if eval "test \"`echo '$''{'libc_cv_need_minus_P'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -1868,7 +1872,7 @@ if test $ac_cv_prog_gcc = yes; then # We must check this even if -pipe is not given here, because the user # might do `make CFLAGS=-pipe'. echo $ac_n "checking for gcc 2.7.x -pipe bug""... $ac_c" 1>&6 -echo "configure:1872: checking for gcc 2.7.x -pipe bug" >&5 +echo "configure:1876: checking for gcc 2.7.x -pipe bug" >&5 if eval "test \"`echo '$''{'libc_cv_gcc_pipe_bug'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -1897,7 +1901,7 @@ else fi echo $ac_n "checking for assembler global-symbol directive""... $ac_c" 1>&6 -echo "configure:1901: checking for assembler global-symbol directive" >&5 +echo "configure:1905: checking for assembler global-symbol directive" >&5 if eval "test \"`echo '$''{'libc_cv_asm_global_directive'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -1927,7 +1931,7 @@ EOF fi echo $ac_n "checking for .set assembler directive""... $ac_c" 1>&6 -echo "configure:1931: checking for .set assembler directive" >&5 +echo "configure:1935: checking for .set assembler directive" >&5 if eval "test \"`echo '$''{'libc_cv_asm_set_directive'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -1961,7 +1965,7 @@ EOF fi echo $ac_n "checking for .symver assembler directive""... $ac_c" 1>&6 -echo "configure:1965: checking for .symver assembler directive" >&5 +echo "configure:1969: checking for .symver assembler directive" >&5 if eval "test \"`echo '$''{'libc_cv_asm_symver_directive'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -1980,7 +1984,7 @@ fi echo "$ac_t""$libc_cv_asm_symver_directive" 1>&6 echo $ac_n "checking for ld --version-script""... $ac_c" 1>&6 -echo "configure:1984: checking for ld --version-script" >&5 +echo "configure:1988: checking for ld --version-script" >&5 if eval "test \"`echo '$''{'libc_cv_ld_version_script_option'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -2003,7 +2007,7 @@ EOF if { ac_try='${CC-cc} $CFLAGS -shared -o conftest.so conftest.o -nostartfiles -nostdlib -Wl,--version-script,conftest.map - 1>&5'; { (eval echo configure:2007: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; }; + 1>&5'; { (eval echo configure:2011: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; }; then libc_cv_ld_version_script_option=yes else @@ -2041,7 +2045,7 @@ if test $VERSIONING = no; then fi if test $elf = yes; then echo $ac_n "checking for .previous assembler directive""... $ac_c" 1>&6 -echo "configure:2045: checking for .previous assembler directive" >&5 +echo "configure:2049: checking for .previous assembler directive" >&5 if eval "test \"`echo '$''{'libc_cv_asm_previous_directive'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -2049,7 +2053,7 @@ else .section foo_section .previous EOF - if { ac_try='${CC-cc} -c $CFLAGS conftest.s 1>&5'; { (eval echo configure:2053: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; }; then + if { ac_try='${CC-cc} -c $CFLAGS conftest.s 1>&5'; { (eval echo configure:2057: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; }; then libc_cv_asm_previous_directive=yes else libc_cv_asm_previous_directive=no @@ -2065,7 +2069,7 @@ EOF else echo $ac_n "checking for .popsection assembler directive""... $ac_c" 1>&6 -echo "configure:2069: checking for .popsection assembler directive" >&5 +echo "configure:2073: checking for .popsection assembler directive" >&5 if eval "test \"`echo '$''{'libc_cv_asm_popsection_directive'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -2073,7 +2077,7 @@ else .pushsection foo_section .popsection EOF - if { ac_try='${CC-cc} -c $CFLAGS conftest.s 1>&5'; { (eval echo configure:2077: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; }; then + if { ac_try='${CC-cc} -c $CFLAGS conftest.s 1>&5'; { (eval echo configure:2081: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; }; then libc_cv_asm_popsection_directive=yes else libc_cv_asm_popsection_directive=no @@ -2093,12 +2097,12 @@ fi if test $elf != yes; then echo $ac_n "checking for .init and .fini sections""... $ac_c" 1>&6 -echo "configure:2097: checking for .init and .fini sections" >&5 +echo "configure:2101: checking for .init and .fini sections" >&5 if eval "test \"`echo '$''{'libc_cv_have_initfini'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:2115: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* libc_cv_have_initfini=yes else @@ -2135,19 +2139,19 @@ if test $elf = yes; then else if test $ac_cv_prog_cc_works = yes; then echo $ac_n "checking for _ prefix on C symbol names""... $ac_c" 1>&6 -echo "configure:2139: checking for _ prefix on C symbol names" >&5 +echo "configure:2143: checking for _ prefix on C symbol names" >&5 if eval "test \"`echo '$''{'libc_cv_asm_underscores'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest; then +if { (eval echo configure:2155: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then rm -rf conftest* libc_cv_asm_underscores=yes else @@ -2162,17 +2166,17 @@ fi echo "$ac_t""$libc_cv_asm_underscores" 1>&6 else echo $ac_n "checking for _ prefix on C symbol names""... $ac_c" 1>&6 -echo "configure:2166: checking for _ prefix on C symbol names" >&5 +echo "configure:2170: checking for _ prefix on C symbol names" >&5 if eval "test \"`echo '$''{'libc_cv_asm_underscores'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:2180: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then if grep _underscore_test conftest* >/dev/null; then rm -f conftest* libc_cv_asm_underscores=yes @@ -2205,7 +2209,7 @@ if test $elf = yes; then libc_cv_asm_weakext_directive=no else echo $ac_n "checking for assembler .weak directive""... $ac_c" 1>&6 -echo "configure:2209: checking for assembler .weak directive" >&5 +echo "configure:2213: checking for assembler .weak directive" >&5 if eval "test \"`echo '$''{'libc_cv_asm_weak_directive'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -2228,7 +2232,7 @@ echo "$ac_t""$libc_cv_asm_weak_directive" 1>&6 if test $libc_cv_asm_weak_directive = no; then echo $ac_n "checking for assembler .weakext directive""... $ac_c" 1>&6 -echo "configure:2232: checking for assembler .weakext directive" >&5 +echo "configure:2236: checking for assembler .weakext directive" >&5 if eval "test \"`echo '$''{'libc_cv_asm_weakext_directive'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -2265,7 +2269,7 @@ EOF fi echo $ac_n "checking for ld --no-whole-archive""... $ac_c" 1>&6 -echo "configure:2269: checking for ld --no-whole-archive" >&5 +echo "configure:2273: checking for ld --no-whole-archive" >&5 if eval "test \"`echo '$''{'libc_cv_ld_no_whole_archive'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -2276,7 +2280,7 @@ __throw () {} EOF if { ac_try='${CC-cc} $CFLAGS -nostdlib -nostartfiles -Wl,--no-whole-archive - -o conftest conftest.c 1>&5'; { (eval echo configure:2280: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; }; then + -o conftest conftest.c 1>&5'; { (eval echo configure:2284: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; }; then libc_cv_ld_no_whole_archive=yes else libc_cv_ld_no_whole_archive=no @@ -2287,7 +2291,7 @@ fi echo "$ac_t""$libc_cv_ld_no_whole_archive" 1>&6 echo $ac_n "checking for gcc -fno-exceptions""... $ac_c" 1>&6 -echo "configure:2291: checking for gcc -fno-exceptions" >&5 +echo "configure:2295: checking for gcc -fno-exceptions" >&5 if eval "test \"`echo '$''{'libc_cv_gcc_no_exceptions'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -2298,7 +2302,7 @@ __throw () {} EOF if { ac_try='${CC-cc} $CFLAGS -nostdlib -nostartfiles -fno-exceptions - -o conftest conftest.c 1>&5'; { (eval echo configure:2302: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; }; then + -o conftest conftest.c 1>&5'; { (eval echo configure:2306: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; }; then libc_cv_gcc_no_exceptions=yes else libc_cv_gcc_no_exceptions=no @@ -2310,14 +2314,14 @@ echo "$ac_t""$libc_cv_gcc_no_exceptions" 1>&6 if test "$base_machine" = alpha ; then echo $ac_n "checking for function ..ng prefix""... $ac_c" 1>&6 -echo "configure:2314: checking for function ..ng prefix" >&5 +echo "configure:2318: checking for function ..ng prefix" >&5 if eval "test \"`echo '$''{'libc_cv_gcc_alpha_ng_prefix'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.c <<\EOF foo () { } EOF -if { ac_try='${CC-cc} -S conftest.c -o - | fgrep "\$foo..ng" > /dev/null'; { (eval echo configure:2321: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; }; +if { ac_try='${CC-cc} -S conftest.c -o - | fgrep "\$foo..ng" > /dev/null'; { (eval echo configure:2325: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; }; then libc_cv_gcc_alpha_ng_prefix=yes else @@ -2341,12 +2345,12 @@ fi fi echo $ac_n "checking for DWARF2 unwind info support""... $ac_c" 1>&6 -echo "configure:2345: checking for DWARF2 unwind info support" >&5 +echo "configure:2349: checking for DWARF2 unwind info support" >&5 if eval "test \"`echo '$''{'libc_cv_gcc_dwarf2_unwind_info'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.c <&5; (eval $ac_try) 2>&5; }; }; then + -o conftest conftest.c -lgcc >&5'; { (eval echo configure:2381: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; }; then libc_cv_gcc_dwarf2_unwind_info=static else libc_cv_gcc_dwarf2_unwind_info=no @@ -2381,7 +2385,7 @@ fi if test $libc_cv_gcc_dwarf2_unwind_info = no; then if { ac_try='${CC-cc} $CFLAGS -DCHECK__register_frame -nostdlib -nostartfiles - -o conftest conftest.c -lgcc >&5'; { (eval echo configure:2385: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; }; then + -o conftest conftest.c -lgcc >&5'; { (eval echo configure:2389: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; }; then libc_cv_gcc_dwarf2_unwind_info=yes else libc_cv_gcc_dwarf2_unwind_info=no @@ -2452,7 +2456,7 @@ if test "$uname" = "sysdeps/generic"; then fi echo $ac_n "checking OS release for uname""... $ac_c" 1>&6 -echo "configure:2456: checking OS release for uname" >&5 +echo "configure:2460: checking OS release for uname" >&5 if eval "test \"`echo '$''{'libc_cv_uname_release'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -2474,7 +2478,7 @@ echo "$ac_t""$libc_cv_uname_release" 1>&6 uname_release="$libc_cv_uname_release" echo $ac_n "checking OS version for uname""... $ac_c" 1>&6 -echo "configure:2478: checking OS version for uname" >&5 +echo "configure:2482: checking OS version for uname" >&5 if eval "test \"`echo '$''{'libc_cv_uname_version'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -2496,7 +2500,7 @@ else fi echo $ac_n "checking stdio selection""... $ac_c" 1>&6 -echo "configure:2500: checking stdio selection" >&5 +echo "configure:2504: checking stdio selection" >&5 case $stdio in libio) cat >> confdefs.h <<\EOF @@ -2508,7 +2512,7 @@ esac echo "$ac_t""$stdio" 1>&6 echo $ac_n "checking ldap selection""... $ac_c" 1>&6 -echo "configure:2512: checking ldap selection" >&5 +echo "configure:2516: checking ldap selection" >&5 case $add_ons in *ldap*) @@ -2570,7 +2574,7 @@ if test $static = no && test $shared = yes; then fi echo $ac_n "checking whether -fPIC is default""... $ac_c" 1>&6 -echo "configure:2574: checking whether -fPIC is default" >&5 +echo "configure:2578: checking whether -fPIC is default" >&5 if eval "test \"`echo '$''{'pic_default'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else diff --git a/configure.in b/configure.in index 4aeeae047a..5f6dae1ed7 100644 --- a/configure.in +++ b/configure.in @@ -84,8 +84,12 @@ AC_ARG_ENABLE(add-ons, dnl [ --enable-add-ons[=DIR1,DIR2]... configure and build add-ons in DIR1,DIR2,... search for add-ons if no parameter given], [case "$enableval" in - yes) add_ons=`echo $srcdir/*/configure | \ - sed -e "s!$srcdir/!!g" -e 's!/configure!!g'`;; + yes) if test "$srcdir" = "."; then + add_ons=`echo */configure | sed -e 's!/configure!!g'` + else + add_ons=`echo $srcdir/*/configure | \ + sed -e "s!^$srcdir/!!g" -e 's!/configure!!g'` + fi;; *) add_ons=`echo "$enableval" | sed 's/,/ /g'`;; esac], [add_ons=]) @@ -144,7 +148,7 @@ if test -z "$enable_hacker_mode"; then echo "*** So far nobody cared to port it and if there is no volunteer it" echo "*** might never happen. So, if you have interest to see glibc on" echo "*** this platform visit" - echo "*** http://www.gnu.ai.mit.edu/software/libc/porting.html" + echo "*** http://www.gnu.org/software/libc/porting.html" echo "*** and join the group of porters" exit 1 ;; diff --git a/db2/mutex/tsl_parisc.s b/db2/mutex/tsl_parisc.s new file mode 100644 index 0000000000..e6054944ec --- /dev/null +++ b/db2/mutex/tsl_parisc.s @@ -0,0 +1,65 @@ +/* + * Copyright (c) 1996-1997 The University of Utah and the Computer Systems + * Laboratory at the University of Utah (CSL). All rights reserved. + * + * Permission to use, copy, modify and distribute this software is hereby + * granted provided that (1) source code retains these copyright, permission, + * and disclaimer notices, and (2) redistributions including binaries + * reproduce the notices in supporting documentation, and (3) all advertising + * materials mentioning features or use of this software display the following + * acknowledgement: ``This product includes software developed by the Computer + * Systems Laboratory at the University of Utah.'' + * + * THE UNIVERSITY OF UTAH AND CSL ALLOW FREE USE OF THIS SOFTWARE IN ITS "AS + * IS" CONDITION. THE UNIVERSITY OF UTAH AND CSL DISCLAIM ANY LIABILITY OF + * ANY KIND FOR ANY DAMAGES WHATSOEVER RESULTING FROM THE USE OF THIS SOFTWARE. + * + * CSL requests users of this software to return to csl-dist@cs.utah.edu any + * improvements that they make and grant CSL redistribution rights. + * + * @(#)tsl_parisc.s 8.4 (Sleepycat) 1/18/97 + */ + +/* + * Spin locks for the PA-RISC. Based on Bob Wheeler's Mach implementation. + */ + .SPACE $TEXT$ + .SUBSPA $CODE$ + +/* + * int tsl_set(tsl_t *tsl) + * + * Try to acquire a lock, return 1 if successful, 0 if not. + */ + .EXPORT tsl_set,ENTRY +tsl_set + .PROC + .CALLINFO FRAME=0,NO_CALLS + .ENTRY + ldo 15(%r26),%r26 + depi 0,31,4,%r26 + ldcws 0(%r26),%r28 + subi,= 0,%r28,%r0 + ldi 1,%r28 + bv,n 0(%r2) + .EXIT + .PROCEND + + +/* + * void tsl_unset(tsl_t *tsl) + * + * Release a lock. + */ + .EXPORT tsl_unset,ENTRY +tsl_unset + .PROC + .CALLINFO FRAME=0,NO_CALLS + .ENTRY + ldo 15(%r26),%r26 + ldi -1,%r19 + depi 0,31,4,%r26 + bv 0(%r2) + stw %r19,0(%r26) + .EXIT + .PROCEND diff --git a/iconvdata/Makefile b/iconvdata/Makefile index 0b64ba4a66..e5bfb7ab72 100644 --- a/iconvdata/Makefile +++ b/iconvdata/Makefile @@ -55,13 +55,14 @@ EBCDIC-AT-DE-A-routines := ebcdic-at-de-a EBCDIC-CA-FR-routines := ebcdic-ca-fr libJIS-routines := jis0201 jis0208 jis0212 -distribute := 8bit-generic.c 8bit-gap.c gap.pl gaptab.pl \ - 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\ - t61.c iso6937.c sjis.c jis0201.h jis0208.h jis0212.h \ - koi-8.c koi8-r.c koi8-r.h hp-roman8.c latin-greek.c \ - latin-greek.h latin-greek-1.c latin-greek-1.h ebcdic-at-de.c\ - ebcdic-at-de-a.c ebcdic-ca-fr.c +distribute := 8bit-generic.c 8bit-gap.c gap.pl gaptab.pl gconv-modules \ + 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 \ + t61.c iso6937.c sjis.c jis0201.h jis0208.h jis0212.h \ + koi-8.c koi8-r.c koi8-r.h hp-roman8.c latin-greek.c \ + latin-greek.h latin-greek-1.c latin-greek-1.h ebcdic-at-de.c \ + ebcdic-at-de-a.c ebcdic-ca-fr.c jis0201.c jis0208.c jis0212.c \ + extra-module.mk # We build the transformation modules only when we build shared libs. ifeq (yes,$(build-shared)) diff --git a/include/limits.h b/include/limits.h index ab51f48331..b149ba1a73 100644 --- a/include/limits.h +++ b/include/limits.h @@ -39,6 +39,12 @@ #endif +/* Maximum length of any multibyte character in any locale. + We define this value here since the gcc header does not define + the correct value. */ +#define MB_LEN_MAX 6 + + #if __GNUC__ >= 2 /* Get the compiler's limits.h, which defines all the ANSI constants. */ @@ -63,9 +69,6 @@ /* Number of bits in a `char'. */ # define CHAR_BIT 8 -/* Maximum length of any multibyte character in any locale. */ -# define MB_LEN_MAX 6 - /* Minimum and maximum values a `signed char' can hold. */ # define SCHAR_MIN (-128) # define SCHAR_MAX 127 diff --git a/io/fcntl.h b/io/fcntl.h index 14a165539b..17120fadc2 100644 --- a/io/fcntl.h +++ b/io/fcntl.h @@ -99,7 +99,7 @@ extern int creat64 __P ((__const char *__file, __mode_t __mode)); # ifndef __USE_FILE_OFFSET64 extern int lockf __P ((int __fd, int __cmd, __off_t __len)); # else -extern int lockf __P ((int __fd, int __cmd, __off_t __len)) +extern int lockf __P ((int __fd, int __cmd, __off64_t __len)) __asm__ ("lockf64"); # endif # ifdef __USE_LARGEFILE64 diff --git a/libc.map b/libc.map index 902d8f89c8..4bc3a4e27c 100644 --- a/libc.map +++ b/libc.map @@ -6,7 +6,7 @@ GLIBC_2.0 { _nl_msg_cat_cntr; __environ; _environ; _res; ___brk_addr; __curbrk; _nl_current_LC_CTYPE; _libc_intl_domainname; _sys_errlist; _sys_siglist; __progname; _nl_default_dirname; - __timezone; __daylight; __tzname; + _nl_domain_bindings; __timezone; __daylight; __tzname; _nl_current_LC_COLLATE; __collate_element_hash; __collate_element_strings; __collate_symbol_classes; __collate_symbol_hash; __collate_symbol_strings; diff --git a/manual/arith.texi b/manual/arith.texi index 3a6bb434de..563d9859af 100644 --- a/manual/arith.texi +++ b/manual/arith.texi @@ -2,17 +2,23 @@ @ifclear cdot @ifhtml @set cdot · +@macro mul +· +@end macro @end ifhtml @iftex -@set cdot @cdot +@set cdot · +@macro mul +@cdot +@end macro @end iftex @ifclear cdot @set cdot x -@end ifclear @macro mul -@value{cdot} +x @end macro @end ifclear +@end ifclear @node Arithmetic, Date and Time, Mathematics, Top @chapter Low-Level Arithmetic Functions @@ -211,6 +217,13 @@ This function returns @code{-1} if @var{x} represents negative infinity, This function returns a nonzero value if @var{x} is a ``not a number'' value, and zero otherwise. (You can just as well use @code{@var{x} != @var{x}} to get the same result). + +However, @code{isnan} will not raise an invalid exception if @var{x} is +a signalling NaN, while @code{@var{x} != @var{x}} will. This makes +@code{isnan} much slower than the alternative; in code where performance +matters and signalling NaNs are unimportant, it's usually better to use +@code{@var{x} != @var{x}}, even though this is harder to understand. + @end deftypefun @comment math.h diff --git a/manual/math.texi b/manual/math.texi index d6206eb4fe..b784afe52b 100644 --- a/manual/math.texi +++ b/manual/math.texi @@ -2,17 +2,23 @@ @ifclear cdot @ifhtml @set cdot · +@macro mul +· +@end macro @end ifhtml @iftex -@set cdot @cdot +@set cdot · +@macro mul +@cdot +@end macro @end iftex @ifclear cdot @set cdot x -@end ifclear @macro mul -@value{cdot} +x @end macro @end ifclear +@end ifclear @iftex @set infty @infty @end iftex diff --git a/misc/Makefile b/misc/Makefile index 842f9839bb..1dfde43f7e 100644 --- a/misc/Makefile +++ b/misc/Makefile @@ -52,7 +52,7 @@ routines := brk sbrk sstk ioctl \ chflags fchflags \ insremque getttyent getusershell getpass ttyslot \ syslog syscall daemon \ - mmap munmap mprotect msync madvise \ + mmap munmap mprotect msync madvise mmap64 \ efgcvt efgcvt_r qefgcvt qefgcvt_r \ hsearch hsearch_r tsearch lsearch \ err error ustat \ diff --git a/nis/nss_nis/nis-hosts.c b/nis/nss_nis/nis-hosts.c index f08a624c37..e627d24399 100644 --- a/nis/nss_nis/nis-hosts.c +++ b/nis/nss_nis/nis-hosts.c @@ -199,7 +199,8 @@ internal_nis_gethostent_r (struct hostent *host, char *buffer, ++p; free (result); - if ((parse_res = parse_line (p, host, data, buflen, errnop)) == -1) + parse_res = parse_line (p, host, data, buflen, errnop); + if (parse_res == -1) { free (outkey); *h_errnop = NETDB_INTERNAL; diff --git a/nis/rpcsvc/nis_tags.h b/nis/rpcsvc/nis_tags.h index 19a5bcab19..9a24188f98 100644 --- a/nis/rpcsvc/nis_tags.h +++ b/nis/rpcsvc/nis_tags.h @@ -12,7 +12,9 @@ #ifndef _RPCSVC_NIS_TAGS_H #define _RPCSVC_NIS_TAGS_H +#if 0 #pragma ident "@(#)nis_tags.h 1.16 96/10/25 SMI" +#endif /* from file: zns_tags.h 1.7 Copyright (c) 1990 Sun Microsystems */ #ifdef __cplusplus diff --git a/posix/sched.h b/posix/sched.h index ae0f634fa4..b5c44996d4 100644 --- a/posix/sched.h +++ b/posix/sched.h @@ -1,5 +1,5 @@ /* Definitions for POSIX 1003.1b-1993 (aka POSIX.4) scheduling interface. - Copyright (C) 1996 Free Software Foundation, Inc. + Copyright (C) 1996, 1997 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 @@ -24,7 +24,9 @@ /* Get type definitions. */ #include -#include /* for struct timespec */ + +#define __need_timespec +#include /* Get system specific constant and data structure definitions. */ #include diff --git a/posix/unistd.h b/posix/unistd.h index 0147594f53..9e1cc8e8e0 100644 --- a/posix/unistd.h +++ b/posix/unistd.h @@ -273,7 +273,7 @@ extern __off_t __lseek __P ((int __fd, __off_t __offset, int __whence)); #ifndef __USE_FILE_OFFSET64 extern __off_t lseek __P ((int __fd, __off_t __offset, int __whence)); #else -extern __off_t lseek __P ((int __fd, __off_t __offset, int __whence)) +extern __off_t lseek __P ((int __fd, __off64_t __offset, int __whence)) __asm__ ("lseek64"); #endif #ifdef __USE_LARGEFILE64 @@ -304,7 +304,7 @@ extern ssize_t pread __P ((int __fd, __ptr_t __buf, size_t __nbytes, __off_t __offset)); # else extern ssize_t pread __P ((int __fd, __ptr_t __buf, size_t __nbytes, - __off_t __offset)) __asm__ ("pread64"); + __off64_t __offset)) __asm__ ("pread64"); # endif extern ssize_t __pread64 __P ((int __fd, __ptr_t __buf, size_t __nbytes, __off64_t __offset)); @@ -322,7 +322,7 @@ extern ssize_t pwrite __P ((int __fd, __const __ptr_t __buf, size_t __n, __off_t __offset)); # else extern ssize_t pwrite __P ((int __fd, __const __ptr_t __buf, size_t __n, - __off_t __offset)) __asm__ ("pwrite64"); + __off64_t __offset)) __asm__ ("pwrite64"); # endif extern ssize_t __pwrite64 __P ((int __fd, __const __ptr_t __buf, size_t __n, __off64_t __offset)); @@ -878,7 +878,7 @@ extern int getpagesize __P ((void)); #ifndef __USE_FILE_OFFSET64 extern int truncate __P ((__const char *__file, __off_t __length)); #else -extern int truncate __P ((__const char *__file, __off_t __length)) +extern int truncate __P ((__const char *__file, __off64_t __length)) __asm__ ("truncate64"); #endif #ifdef __USE_LARGEFILE64 @@ -889,7 +889,7 @@ extern int truncate64 __P ((__const char *__file, __off64_t __length)); #ifndef __USE_FILE_OFFSET64 extern int ftruncate __P ((int __fd, __off_t __length)); #else -extern int ftruncate __P ((int __fd, __off_t __length)) +extern int ftruncate __P ((int __fd, __off64_t __length)) __asm__ ("ftruncate64"); #endif #ifdef __USE_LARGEFILE64 @@ -957,7 +957,7 @@ extern long int syscall __P ((long int __sysno, ...)); # ifndef __USE_FILE_OFFSET64 extern int lockf __P ((int __fd, int __cmd, __off_t __len)); # else -extern int lockf __P ((int __fd, int __cmd, __off_t __len)) +extern int lockf __P ((int __fd, int __cmd, __off64_t __len)) __asm__ ("lockf64"); # endif # ifdef __USE_LARGEFILE64 diff --git a/stdlib/Makefile b/stdlib/Makefile index 0076ad4fff..2d297e5191 100644 --- a/stdlib/Makefile +++ b/stdlib/Makefile @@ -21,7 +21,8 @@ # subdir := stdlib -headers := stdlib.h alloca.h monetary.h fmtmsg.h ucontext.h sys/ucontext.h +headers := stdlib.h alloca.h monetary.h fmtmsg.h ucontext.h sys/ucontext.h \ + inttypes.h routines := \ atof atoi atol atoll \ @@ -44,7 +45,8 @@ routines := \ strtof_l strtod_l strtold_l \ system canonicalize \ a64l l64a \ - rpmatch strfmon strfmon_l getsubopt xpg_basename fmtmsg + rpmatch strfmon strfmon_l getsubopt xpg_basename fmtmsg \ + strtoimax strtoumax wcstoimax wcstoumax distribute := exit.h grouping.h abort-instr.h tests := tst-strtol tst-strtod testmb testrand testsort testdiv \ diff --git a/sysdeps/generic/bits/environments.h b/sysdeps/generic/bits/environments.h new file mode 100644 index 0000000000..8ed19906b4 --- /dev/null +++ b/sysdeps/generic/bits/environments.h @@ -0,0 +1,35 @@ +/* Copyright (C) 1997 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 _UNISTD_H +# error "Never include this file directly. Use instead" +#endif + +/* This header should define the following symbols under the described + situations. A value `1' means that the model is always supported, + `-1' means it is never supported. Undefined means it cannot be + statically decided. + + _XBS5_ILP32_OFF32 32bit int, long, pointers, and off_t type + _XBS5_ILP32_OFFBIG 32bit int, long, and pointers and larger off_t type + + _XBS5_LP64_OFF32 64bit long and pointers and 32bit off_t type + _XBS5_LPBIG_OFFBIG 64bit long and pointers and large off_t type +*/ + +#endif /* environments.h */ diff --git a/sysdeps/generic/inttypes.h b/sysdeps/generic/inttypes.h new file mode 100644 index 0000000000..c5a74b8d2d --- /dev/null +++ b/sysdeps/generic/inttypes.h @@ -0,0 +1 @@ +#error "This file must be written based on the data typs sizes of the target" diff --git a/sysdeps/generic/mmap64.c b/sysdeps/generic/mmap64.c new file mode 100644 index 0000000000..c0e886867a --- /dev/null +++ b/sysdeps/generic/mmap64.c @@ -0,0 +1,48 @@ +/* Copyright (C) 1997 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. */ + +#include +#include +#include + +/* Map addresses starting near ADDR and extending for LEN bytes. From + OFFSET into the file FD describes according to PROT and FLAGS. If ADDR + is nonzero, it is the desired mapping address. If the MAP_FIXED bit is + set in FLAGS, the mapping will be at ADDR exactly (which must be + page-aligned); otherwise the system chooses a convenient nearby address. + The return value is the actual mapping address chosen or MAP_FAILED + for errors (in which case `errno' is set). A successful `mmap' call + deallocates any previous mapping for the affected region. */ + +__ptr_t +__mmap64 (__ptr_t addr, size_t len, int prot, int flags, int fd, + __off64_t offset) +{ + off_t small_offset = (off_t) offset; + + if (small_offset != offset) + { + /* We cannot do this since the offset is too large. */ + __set_errno (EOVERFLOW); + return MAP_FAILED; + } + + return __mmap (addr, len, prot, flags, fd, small_offset); +} + +weak_alias (__mmap64, mmap64) diff --git a/sysdeps/generic/setrlimit64.c b/sysdeps/generic/setrlimit64.c index 97329c58d8..57c5da44c1 100644 --- a/sysdeps/generic/setrlimit64.c +++ b/sysdeps/generic/setrlimit64.c @@ -43,4 +43,3 @@ setrlimit64 (resource, rlimits) } stub_warning (setrlimit64) -#include diff --git a/sysdeps/generic/strtoimax.c b/sysdeps/generic/strtoimax.c new file mode 100644 index 0000000000..f1de70f320 --- /dev/null +++ b/sysdeps/generic/strtoimax.c @@ -0,0 +1 @@ +#error "The correct implementation must be chosen based on the `intmax_t' type" diff --git a/sysdeps/generic/strtoumax.c b/sysdeps/generic/strtoumax.c new file mode 100644 index 0000000000..508cb19f8c --- /dev/null +++ b/sysdeps/generic/strtoumax.c @@ -0,0 +1 @@ +#error "The correct implementation must be chosen based on the `uintmax_t' type" diff --git a/sysdeps/generic/sys/mman.h b/sysdeps/generic/sys/mman.h index f8ca3f03ee..f6e0196f70 100644 --- a/sysdeps/generic/sys/mman.h +++ b/sysdeps/generic/sys/mman.h @@ -100,6 +100,8 @@ extern __ptr_t mmap __P ((__ptr_t __addr, size_t __len, int __prot, __asm__ ("mmap64"); #endif #ifdef __USE_LARGEFILE64 +extern __ptr_t __mmap64 __P ((__ptr_t __addr, size_t __len, int __prot, + int __flags, int __fd, __off64_t __offset)); extern __ptr_t mmap64 __P ((__ptr_t __addr, size_t __len, int __prot, int __flags, int __fd, __off64_t __offset)); #endif diff --git a/sysdeps/generic/wcstoimax.c b/sysdeps/generic/wcstoimax.c new file mode 100644 index 0000000000..f1de70f320 --- /dev/null +++ b/sysdeps/generic/wcstoimax.c @@ -0,0 +1 @@ +#error "The correct implementation must be chosen based on the `intmax_t' type" diff --git a/sysdeps/generic/wcstoumax.c b/sysdeps/generic/wcstoumax.c new file mode 100644 index 0000000000..508cb19f8c --- /dev/null +++ b/sysdeps/generic/wcstoumax.c @@ -0,0 +1 @@ +#error "The correct implementation must be chosen based on the `uintmax_t' type" diff --git a/sysdeps/mach/powerpc/machine-lock.h b/sysdeps/mach/powerpc/machine-lock.h new file mode 100644 index 0000000000..543927d048 --- /dev/null +++ b/sysdeps/mach/powerpc/machine-lock.h @@ -0,0 +1,75 @@ +/* Machine-specific definition for spin locks. PowerPC version. + Copyright (C) 1994, 1997 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 _MACHINE_LOCK_H +#define _MACHINE_LOCK_H + +/* The type of a spin lock variable. */ + +typedef __volatile long int __spin_lock_t; + +/* Value to initialize `__spin_lock_t' variables to. */ + +#define __SPIN_LOCK_INITIALIZER 0L + + +#ifndef _EXTERN_INLINE +#define _EXTERN_INLINE extern __inline +#endif + +/* Unlock LOCK. */ + +_EXTERN_INLINE void +__spin_unlock (__spin_lock_t *__lock) +{ + __asm__ __volatile__ ("sync ; stwcx. %1,0,%0" + : : "r" (__lock), "r" (0) : "cr0"); +} + +/* Try to lock LOCK; return nonzero if we locked it, zero if another has. */ + +_EXTERN_INLINE int +__spin_try_lock (register __spin_lock_t *__lock) +{ + long int __rtn; + + __asm__ __volatile__ ("\ +0: lwarx %0,0,%1 + stwcx. %2,0,%1 + bne- 0b +" : "=&r"(__rtn) : "r"(__lock), "r"(1) : "cr0"); + return ~__rtn; +} + +/* Return nonzero if LOCK is locked. */ + +_EXTERN_INLINE int +__spin_lock_locked (__spin_lock_t *__lock) +{ + long int __rtn; + __asm__ __volatile__ ("\ +0: lwarx %0,0,%1 + stwcx. %0,0,%1 + bne- 0b +" : "=&r"(__rtn) : "r"(__lock) : "cr0"); + return __rtn; +} + + +#endif /* machine-lock.h */ diff --git a/sysdeps/posix/mk-stdiolim.c b/sysdeps/posix/mk-stdiolim.c index 8858ebeae5..ec482dee96 100644 --- a/sysdeps/posix/mk-stdiolim.c +++ b/sysdeps/posix/mk-stdiolim.c @@ -49,7 +49,7 @@ main() /* These values correspond to the code in sysdeps/posix/tempname.c. Change the values here if you change that code. */ - puts ("#ifndef __need_FOPEN_MAX"); + puts ("#ifdef _STDIO_H"); printf ("# define L_tmpnam %u\n", sizeof ("/usr/tmp/") + 9); printf ("# define TMP_MAX %u\n", 62 * 62 * 62); @@ -74,6 +74,8 @@ main() #endif ); + puts ("# undef __need_FOPEN_MAX"); + puts ("# define __need_FOPEN_MAX 1"); puts ("#endif\n"); /* POSIX does not require that OPEN_MAX and PATH_MAX be defined, so diff --git a/sysdeps/powerpc/__longjmp.S b/sysdeps/powerpc/__longjmp.S index 4a22fb8952..5d6422c500 100644 --- a/sysdeps/powerpc/__longjmp.S +++ b/sysdeps/powerpc/__longjmp.S @@ -19,6 +19,7 @@ #include #define _ASM +#define _SETJMP_H #include ENTRY (__longjmp) diff --git a/sysdeps/powerpc/atomicity.h b/sysdeps/powerpc/atomicity.h new file mode 100644 index 0000000000..dba09658cb --- /dev/null +++ b/sysdeps/powerpc/atomicity.h @@ -0,0 +1,99 @@ +/* Low-level functions for atomic operations. PowerPC version. + Copyright (C) 1997 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 _ATOMICITY_H +#define _ATOMICITY_H 1 + +#include + +static inline int +__attribute__ ((unused)) +exchange_and_add (volatile uint32_t *mem, int val) +{ + int tmp, result; + __asm__ __volatile__ ("\ +0: lwarx %0,0,%2 + add %1,%3,%0 + stwcx. %1,0,%2 + bne- 0b +" : "=&r"(result), "=&r"(tmp) : "r" (mem), "r"(val) : "cr0"); + return result; +} + +static inline void +__attribute__ ((unused)) +atomic_add (volatile uint32_t *mem, int val) +{ + int tmp; + __asm__ __volatile__("\ +0: lwarx %0,0,%1 + add %0,%2,%0 + stwcx. %0,0,%1 + bne- 0b +" : "=&r"(tmp) : "r" (mem), "r"(val) : "cr0"); +} + +static inline int +__attribute__ ((unused)) +compare_and_swap (volatile long int *p, long int oldval, long int newval) +{ + int result; + __asm__ __volatile__ ("\ +0: lwarx %0,0,%1 + xor. %0,%0,%2 + cntlzw %0,%0 + bne- 1f + stwcx. %3,0,%1 + bne- 0b +1: srwi %0,%0,5 +" : "=&r"(result) : "r"(p), "r"(oldval), "r"(newval) : "cr0"); + return result; +} + +static inline long int +__attribute__ ((unused)) +always_swap (volatile long int *p, long int newval) +{ + long int result; + __asm__ __volatile__ ("\ +0: lwarx %0,0,%1 + stwcx. %2,0,%1 + bne- 0b +" : "=&r"(result) : "r"(p), "r"(newval) : "cr0"); + return result; +} + +static inline int +__attribute__ ((unused)) +test_and_set (volatile long int *p, long int oldval, long int newval) +{ + int result; + __asm__ __volatile__ ("\ +0: lwarx %0,0,%1 + xor. %0,%0,%2 + cntlzw %0,%0 + bne- 1f + stwcx. %3,0,%1 + bne- 0b +1: srwi %0,%0,5 +" : "=&r"(result) : "r"(p), "r"(oldval), "r"(newval) : "cr0"); + return result; +} + +#endif /* atomicity.h */ diff --git a/sysdeps/powerpc/bits/mathinline.h b/sysdeps/powerpc/bits/mathinline.h index 24f186adf1..fff1d64ce2 100644 --- a/sysdeps/powerpc/bits/mathinline.h +++ b/sysdeps/powerpc/bits/mathinline.h @@ -18,28 +18,14 @@ Boston, MA 02111-1307, USA. */ #ifdef __GNUC__ -#if !defined __NO_MATH_INLINES && defined __OPTIMIZE__ - -#ifdef __cplusplus -# define __MATH_INLINE __inline -#else -# define __MATH_INLINE extern __inline -#endif - -__MATH_INLINE double __sgn1 (double __x); -__MATH_INLINE double -__sgn1 (double __x) -{ - return __x >= 0.0 ? 1.0 : -1.0; -} -#endif /* !__NO_MATH_INLINES && __OPTIMIZE__ */ #if __USE_ISOC9X && !defined _SOFT_FLOAT # define __unordered_cmp(x, y) \ (__extension__ \ ({ __typeof__(x) __x = (x); __typeof__(y) __y = (y); \ unsigned __r; \ - __asm__("fcmpu 7,%1,%2 ; mfcr %0" : "=r" (__r) : "f" (__x), "f"(__y)); \ + __asm__("fcmpu 7,%1,%2 ; mfcr %0" : "=r" (__r) : "f" (__x), "f"(__y) \ + : "cr7"); \ __r; })) # define isgreater(x, y) (__unordered_cmp (x, y) >> 2 & 1) @@ -50,4 +36,53 @@ __sgn1 (double __x) # define isunordered(x, y) (__unordered_cmp (x, y) & 1) #endif /* __USE_ISOC9X && !_SOFT_FLOAT */ +#if !defined __NO_MATH_INLINES && defined __OPTIMIZE__ + +#ifdef __cplusplus +# define __MATH_INLINE __inline +#else +# define __MATH_INLINE extern __inline +#endif /* __cplusplus */ + +#ifdef __USE_ISOC9X +__MATH_INLINE long int lrint (double __x); +__MATH_INLINE long int +lrint (double __x) +{ + union { + double __d; + long int __ll[2]; + } __u; + asm ("fctiw %0,%1" : "=f"(__u.__d) : "f"(__x)); + return __u.__ll[1]; +} + +__MATH_INLINE long int lrintf (float __x); +__MATH_INLINE long int +lrintf (float __x) +{ + union { + double __d; + long int __ll[2]; + } __u; + asm ("fctiw %0,%1" : "=f"(__u.__d) : "f"(__x)); + return __u.__ll[1]; +} + +__MATH_INLINE double fdim (double __x, double __y); +__MATH_INLINE double +fdim (double __x, double __y) +{ + return __x < __y ? 0 : __x - __y; +} + +__MATH_INLINE float fdimf (float __x, float __y); +__MATH_INLINE float +fdimf (float __x, float __y) +{ + return __x < __y ? 0 : __x - __y; +} + +#endif /* __USE_ISOC9X */ +#endif /* !__NO_MATH_INLINES && __OPTIMIZE__ */ #endif /* __GNUC__ */ diff --git a/sysdeps/powerpc/s_fdim.c b/sysdeps/powerpc/s_fdim.c new file mode 100644 index 0000000000..da22f5c978 --- /dev/null +++ b/sysdeps/powerpc/s_fdim.c @@ -0,0 +1,31 @@ +/* Return positive difference between arguments. + Copyright (C) 1997 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. */ + +#include + +double +__fdim (double x, double y) +{ + return x < y ? 0 : x - y; +} +weak_alias (__fdim, fdim) +#ifdef NO_LONG_DOUBLE +strong_alias (__fdim, __fdiml) +weak_alias (__fdim, fdiml) +#endif diff --git a/sysdeps/powerpc/s_fdimf.c b/sysdeps/powerpc/s_fdimf.c new file mode 100644 index 0000000000..bebe7e58f3 --- /dev/null +++ b/sysdeps/powerpc/s_fdimf.c @@ -0,0 +1,27 @@ +/* Return positive difference between arguments. + Copyright (C) 1997 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. */ + +#include + +float +__fdimf (float x, float y) +{ + return x < y ? 0 : x - y; +} +weak_alias (__fdimf, fdimf) diff --git a/sysdeps/powerpc/s_fmax.S b/sysdeps/powerpc/s_fmax.S new file mode 100644 index 0000000000..559769a251 --- /dev/null +++ b/sysdeps/powerpc/s_fmax.S @@ -0,0 +1,43 @@ +/* Floating-point maximum. PowerPC version. + Copyright (C) 1997 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. */ + +#include + +ENTRY(__fmax) +/* double [f1] fmax (double [f1] x, double [f2] y); */ + fcmpu %cr0,%f1,%f2 + blt %cr0,0f /* if x < y, neither x nor y can be NaN... */ + bnulr+ %cr0 +/* x and y are unordered, so one of x or y must be a NaN... */ + fcmpu %cr1,%f2,%f2 + bunlr %cr1 +0: fmr %f1,%f2 + blr +END(__fmax) + +weak_alias(__fmax,fmax) + +/* It turns out that it's safe to use this code even for single-precision. */ +strong_alias(__fmax,__fmaxf) +weak_alias(__fmax,fmaxf) + +#ifdef NO_LONG_DOUBLE +weak_alias(__fmax,__fmaxl) +weak_alias(__fmax,fmaxl) +#endif diff --git a/sysdeps/powerpc/s_fmaxf.S b/sysdeps/powerpc/s_fmaxf.S new file mode 100644 index 0000000000..3c2d62bb81 --- /dev/null +++ b/sysdeps/powerpc/s_fmaxf.S @@ -0,0 +1 @@ +/* __fmaxf is in s_fmax.c */ diff --git a/sysdeps/powerpc/s_fmin.S b/sysdeps/powerpc/s_fmin.S new file mode 100644 index 0000000000..72516c29f0 --- /dev/null +++ b/sysdeps/powerpc/s_fmin.S @@ -0,0 +1,43 @@ +/* Floating-point minimum. PowerPC version. + Copyright (C) 1997 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. */ + +#include + +ENTRY(__fmin) +/* double [f1] fmin (double [f1] x, double [f2] y); */ + fcmpu %cr0,%f1,%f2 + bgt %cr0,0f /* if x > y, neither x nor y can be NaN... */ + bnulr+ %cr0 +/* x and y are unordered, so one of x or y must be a NaN... */ + fcmpu %cr1,%f2,%f2 + bunlr %cr1 +0: fmr %f1,%f2 + blr +END(__fmin) + +weak_alias(__fmin,fmin) + +/* It turns out that it's safe to use this code even for single-precision. */ +strong_alias(__fmin,__fminf) +weak_alias(__fmin,fminf) + +#ifdef NO_LONG_DOUBLE +weak_alias(__fmin,__fminl) +weak_alias(__fmin,fminl) +#endif diff --git a/sysdeps/powerpc/s_fminf.S b/sysdeps/powerpc/s_fminf.S new file mode 100644 index 0000000000..10ab7fe53c --- /dev/null +++ b/sysdeps/powerpc/s_fminf.S @@ -0,0 +1 @@ +/* __fminf is in s_fmin.c */ diff --git a/sysdeps/powerpc/s_llrint.c b/sysdeps/powerpc/s_llrint.c index 7ca48c029a..1789e79860 100644 --- a/sysdeps/powerpc/s_llrint.c +++ b/sysdeps/powerpc/s_llrint.c @@ -1,5 +1,4 @@ -/* Round a long long floating point value to an integer in the current - rounding mode. +/* Round a double value to a long long in the current rounding mode. Copyright (C) 1997 Free Software Foundation, Inc. This file is part of the GNU C Library. @@ -21,8 +20,12 @@ #include "math.h" long long int -__llrint (long double x) +__llrint (double x) { - return (long long int) __rintl (x); + return (long long int) __rint (x); } weak_alias (__llrint, llrint) +#ifdef NO_LONG_DOUBLE +strong_alias (__llrint, __llrintl) +weak_alias (__llrint, llrintl) +#endif diff --git a/sysdeps/powerpc/s_llrintf.c b/sysdeps/powerpc/s_llrintf.c new file mode 100644 index 0000000000..2068a02a93 --- /dev/null +++ b/sysdeps/powerpc/s_llrintf.c @@ -0,0 +1,27 @@ +/* Round a float value to a long long in the current rounding mode. + Copyright (C) 1997 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. */ + +#include "math.h" + +long long int +__llrintf (float x) +{ + return (long long int) __rintf (x); +} +weak_alias (__llrintf, llrintf) diff --git a/sysdeps/powerpc/s_llround.c b/sysdeps/powerpc/s_llround.c index fbe3a3217c..6b49dbf917 100644 --- a/sysdeps/powerpc/s_llround.c +++ b/sysdeps/powerpc/s_llround.c @@ -1,4 +1,4 @@ -/* Round long double value to long int. +/* Round double value to long long int. Copyright (C) 1997 Free Software Foundation, Inc. This file is part of the GNU C Library. @@ -26,12 +26,12 @@ clipping to MAX_LLONG or MIN_LLONG. */ long long int -__llround (long double x) +__llround (double x) { - long double xrf; + double xrf; long long int xr; xr = (long long int) x; - xrf = (long double) xr; + xrf = (double) xr; if (x >= 0.0) if (x - xrf >= 0.5 && x - xrf < 1.0 && x+1 > 0) return x+1; @@ -44,3 +44,7 @@ __llround (long double x) return x; } weak_alias (__llround, llround) +#ifdef NO_LONG_DOUBLE +strong_alias (__llround, __llroundl) +weak_alias (__llround, llroundl) +#endif diff --git a/sysdeps/powerpc/s_llroundf.c b/sysdeps/powerpc/s_llroundf.c new file mode 100644 index 0000000000..23f1c28ab0 --- /dev/null +++ b/sysdeps/powerpc/s_llroundf.c @@ -0,0 +1,46 @@ +/* Round float value to long long int. + Copyright (C) 1997 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. */ + +#include + +/* I think that what this routine is supposed to do is round a value + to the nearest integer, with values exactly on the boundary rounded + away from zero. */ +/* This routine relies on (long long)x, when x is out of range of a long long, + clipping to MAX_LLONG or MIN_LLONG. */ + +long long int +__llroundf (float x) +{ + float xrf; + long long int xr; + xr = (long long int) x; + xrf = (float) xr; + if (x >= 0.0) + if (x - xrf >= 0.5 && x - xrf < 1.0 && x+1 > 0) + return x+1; + else + return x; + else + if (xrf - x >= 0.5 && xrf - x < 1.0 && x-1 < 0) + return x-1; + else + return x; +} +weak_alias (__llroundf, llroundf) diff --git a/sysdeps/powerpc/s_lrint.c b/sysdeps/powerpc/s_lrint.c index 647cf30c9c..a060598859 100644 --- a/sysdeps/powerpc/s_lrint.c +++ b/sysdeps/powerpc/s_lrint.c @@ -19,26 +19,28 @@ #include "math.h" -#ifdef NO_LONG_DOUBLE - long int -__lrint (long double x) -{ - return (long int) __rintl(x); -} - -#else - -long int -__lrint (long double x) +__lrint (double x) { union { double d; long int ll[2]; } u; asm ("fctiw %0,%1" : "=f"(u.d) : "f"(x)); - return d.ll[1]; + return u.ll[1]; } +weak_alias (__lrint, lrint) + +/* This code will also work for a 'float' argument. */ +asm ("\ + .globl __lrintf + .globl lrintf + .weak lrintf + .set __lrintf,__lrint + .set lrintf,__lrint +"); +#ifdef NO_LONG_DOUBLE +strong_alias (__lrint, __lrintl) +weak_alias (__lrint, lrintl) #endif -weak_alias (__lrint, lrint) diff --git a/sysdeps/powerpc/s_lrintf.S b/sysdeps/powerpc/s_lrintf.S new file mode 100644 index 0000000000..e24766535f --- /dev/null +++ b/sysdeps/powerpc/s_lrintf.S @@ -0,0 +1 @@ +/* __lrintf is in s_lrint.c */ diff --git a/sysdeps/powerpc/s_lround.c b/sysdeps/powerpc/s_lround.c index a6cb6c96d2..c52c0388f6 100644 --- a/sysdeps/powerpc/s_lround.c +++ b/sysdeps/powerpc/s_lround.c @@ -1,4 +1,4 @@ -/* Round long double value to long int. +/* Round double value to long int. Copyright (C) 1997 Free Software Foundation, Inc. This file is part of the GNU C Library. @@ -26,12 +26,12 @@ clipping to MAX_LONG or MIN_LONG. */ long int -__lround (long double x) +__lround (double x) { - long double xrf; + double xrf; long int xr; xr = (long int) x; - xrf = (long double) xr; + xrf = (double) xr; if (x >= 0.0) if (x - xrf >= 0.5 && x - xrf < 1.0 && x+1 > 0) return x+1; @@ -44,3 +44,7 @@ __lround (long double x) return x; } weak_alias (__lround, lround) +#ifdef NO_LONG_DOUBLE +strong_alias (__lround, __lroundl) +weak_alias (__lround, lroundl) +#endif diff --git a/sysdeps/powerpc/s_lroundf.c b/sysdeps/powerpc/s_lroundf.c new file mode 100644 index 0000000000..ce1c3cf257 --- /dev/null +++ b/sysdeps/powerpc/s_lroundf.c @@ -0,0 +1,46 @@ +/* Round float value to long int. + Copyright (C) 1997 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. */ + +#include + +/* I think that what this routine is supposed to do is round a value + to the nearest integer, with values exactly on the boundary rounded + away from zero. */ +/* This routine relies on (long int)x, when x is out of range of a long int, + clipping to MAX_LONG or MIN_LONG. */ + +long int +__lroundf (float x) +{ + float xrf; + long int xr; + xr = (long int) x; + xrf = (float) xr; + if (x >= 0.0) + if (x - xrf >= 0.5 && x - xrf < 1.0 && x+1 > 0) + return x+1; + else + return x; + else + if (xrf - x >= 0.5 && xrf - x < 1.0 && x-1 < 0) + return x-1; + else + return x; +} +weak_alias (__lroundf, lroundf) diff --git a/sysdeps/powerpc/setjmp.S b/sysdeps/powerpc/setjmp.S index 8fa863f161..dc9d923c75 100644 --- a/sysdeps/powerpc/setjmp.S +++ b/sysdeps/powerpc/setjmp.S @@ -19,6 +19,7 @@ #include #define _ASM +#define _SETJMP_H #include ENTRY (__sigsetjmp) diff --git a/sysdeps/unix/sysv/linux/Dist b/sysdeps/unix/sysv/linux/Dist index e22cec7dec..6743794281 100644 --- a/sysdeps/unix/sysv/linux/Dist +++ b/sysdeps/unix/sysv/linux/Dist @@ -5,6 +5,7 @@ kernel_sigaction.h kernel_stat.h kernel_termios.h llseek.c +oldsiglist.c s_pread64.c s_pwrite64.c siglist.h @@ -21,6 +22,7 @@ net/ppp-comp.h net/ppp_defs.h net/route.h netatalk/at.h +netax25/ax25.h netinet/if_fddi.h netinet/if_tr.h netinet/igmp.h @@ -30,6 +32,7 @@ netinet/ip_icmp.h netinet/tcp.h netinet/udp.h netipx/ipx.h +netrom/netrom.h nfs/nfs.h rt_sigaction.c rt_sigpending.c diff --git a/sysdeps/unix/sysv/linux/Makefile b/sysdeps/unix/sysv/linux/Makefile index 152c7984bd..29f1566753 100644 --- a/sysdeps/unix/sysv/linux/Makefile +++ b/sysdeps/unix/sysv/linux/Makefile @@ -69,7 +69,7 @@ ifeq ($(subdir),stdio-common) inhibit-siglist := yes ifeq ($(versioning),yes) -aux += oldsiglist +sysdep_routines += oldsiglist endif shared-only-routines += oldsiglist @@ -79,7 +79,7 @@ ifeq ($(subdir),inet) sysdep_headers += netinet/in_systm.h netinet/udp.h \ netinet/if_fddi.h netinet/if_tr.h netinet/igmp.h \ netinet/ip_fw.h netinet/ip_icmp.h netipx/ipx.h \ - sys/socketvar.h + sys/socketvar.h netax25/ax25.h netrom/netrom.h endif ifeq ($(subdir),posix) diff --git a/sysdeps/unix/sysv/linux/alpha/kernel_sigaction.h b/sysdeps/unix/sysv/linux/alpha/kernel_sigaction.h index 6f8bc9bcd4..f8c42e0a1e 100644 --- a/sysdeps/unix/sysv/linux/alpha/kernel_sigaction.h +++ b/sysdeps/unix/sysv/linux/alpha/kernel_sigaction.h @@ -1,7 +1,7 @@ /* This is the sigaction struction from the Linux 2.1.20 kernel. */ struct old_kernel_sigaction { - __sighandler_t sa_handler; + __sighandler_t k_sa_handler; unsigned long sa_mask; unsigned int sa_flags; }; diff --git a/sysdeps/unix/sysv/linux/alpha/mmap64.c b/sysdeps/unix/sysv/linux/alpha/mmap64.c new file mode 100644 index 0000000000..0dbd384a6a --- /dev/null +++ b/sysdeps/unix/sysv/linux/alpha/mmap64.c @@ -0,0 +1 @@ +/* mmap64 is the same as mmap. */ diff --git a/sysdeps/unix/sysv/linux/alpha/net/route.h b/sysdeps/unix/sysv/linux/alpha/net/route.h new file mode 100644 index 0000000000..6c7d8dd015 --- /dev/null +++ b/sysdeps/unix/sysv/linux/alpha/net/route.h @@ -0,0 +1,140 @@ +/* Copyright (C) 1997 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. */ + +/* Based on the 4.4BSD and Linux version of this file. */ + +#ifndef _NET_ROUTE_H +#define _NET_ROUTE_H 1 + +#include +#include +#include +#include + + +/* This structure gets passed by the SIOCADDRT and SIOCDELRT calls. */ +struct rtentry + { + unsigned long int rt_pad1; + struct sockaddr rt_dst; /* Target address. */ + struct sockaddr rt_gateway; /* Gateway addr (RTF_GATEWAY). */ + struct sockaddr rt_genmask; /* Target network mask (IP). */ + unsigned short int rt_flags; + short int rt_pad2; + unsigned long int rt_pad3; + unsigned char rt_tos; + unsigned char rt_class; + short int rt_pad4[3]; + short int rt_metric; /* +1 for binary compatibility! */ + char *rt_dev; /* Forcing the device at add. */ + unsigned long int rt_mtu; /* Per route MTU/Window. */ + unsigned long int rt_window; /* Window clamping. */ + unsigned short int rt_irtt; /* Initial RTT. */ + }; +/* Compatibility hack. */ +#define rt_mss rt_mtu + + +struct in6_rtmsg + { + struct in6_addr rtmsg_dst; + struct in6_addr rtmsg_src; + struct in6_addr rtmsg_gateway; + u_int32_t rtmsg_type; + u_int16_t rtmsg_dst_len; + u_int16_t rtmsg_src_len; + u_int32_t rtmsg_metric; + unsigned long int rtmsg_info; + u_int32_t rtmsg_flags; + int rtmsg_ifindex; + }; + + +#define RTF_UP 0x0001 /* Route usable. */ +#define RTF_GATEWAY 0x0002 /* Destination is a gateway. */ + +#define RTF_HOST 0x0004 /* Host entry (net otherwise). */ +#define RTF_REINSTATE 0x0008 /* Reinstate route after timeout. */ +#define RTF_DYNAMIC 0x0010 /* Created dyn. (by redirect). */ +#define RTF_MODIFIED 0x0020 /* Modified dyn. (by redirect). */ +#define RTF_MTU 0x0040 /* Specific MTU for this route. */ +#define RTF_MSS RTF_MTU /* Compatibility. */ +#define RTF_WINDOW 0x0080 /* Per route window clamping. */ +#define RTF_IRTT 0x0100 /* Initial round trip time. */ +#define RTF_REJECT 0x0200 /* Reject route. */ +#define RTF_STATIC 0x0400 /* Manually injected route. */ +#define RTF_XRESOLVE 0x0800 /* External resolver. */ +#define RTF_NOFORWARD 0x1000 /* Forwarding inhibited. */ +#define RTF_THROW 0x2000 /* Go to next class. */ +#define RTF_NOPMTUDISC 0x4000 /* Do not send packets with DF. */ + +/* for IPv6 */ +#define RTF_DEFAULT 0x00010000 /* default - learned via ND */ +#define RTF_ALLONLINK 0x00020000 /* fallback, no routers on link */ +#define RTF_ADDRCONF 0x00040000 /* addrconf route - RA */ + +#define RTF_LINKRT 0x00100000 /* link specific - device match */ +#define RTF_NONEXTHOP 0x00200000 /* route with no nexthop */ + +#define RTF_CACHE 0x01000000 /* cache entry */ +#define RTF_FLOW 0x02000000 /* flow significant route */ +#define RTF_POLICY 0x04000000 /* policy route */ + +#define RTCF_VALVE 0x00200000 +#define RTCF_MASQ 0x00400000 +#define RTCF_NAT 0x00800000 +#define RTCF_DOREDIRECT 0x01000000 +#define RTCF_LOG 0x02000000 +#define RTCF_DIRECTSRC 0x04000000 + +#define RTF_LOCAL 0x80000000 +#define RTF_INTERFACE 0x40000000 +#define RTF_MULTICAST 0x20000000 +#define RTF_BROADCAST 0x10000000 +#define RTF_NAT 0x08000000 + +#define RTF_ADDRCLASSMASK 0xF8000000 +#define RT_ADDRCLASS(flags) ((__u_int32_t) flags >> 23) + +#define RT_TOS(tos) ((tos) & IPTOS_TOS_MASK) + +#define RT_LOCALADDR(flags) ((flags & RTF_ADDRCLASSMASK) \ + == (RTF_LOCAL|RTF_INTERFACE)) + +#define RT_CLASS_UNSPEC 0 +#define RT_CLASS_DEFAULT 253 + +#define RT_CLASS_MAIN 254 +#define RT_CLASS_LOCAL 255 +#define RT_CLASS_MAX 255 + + +#define RTMSG_ACK NLMSG_ACK +#define RTMSG_OVERRUN NLMSG_OVERRUN + +#define RTMSG_NEWDEVICE 0x11 +#define RTMSG_DELDEVICE 0x12 +#define RTMSG_NEWROUTE 0x21 +#define RTMSG_DELROUTE 0x22 +#define RTMSG_NEWRULE 0x31 +#define RTMSG_DELRULE 0x32 +#define RTMSG_CONTROL 0x40 + +#define RTMSG_AR_FAILED 0x51 /* Address Resolution failed. */ + +#endif /* net/route.h */ diff --git a/sysdeps/unix/sysv/linux/alpha/syscalls.list b/sysdeps/unix/sysv/linux/alpha/syscalls.list index af964718bc..9406892124 100644 --- a/sysdeps/unix/sysv/linux/alpha/syscalls.list +++ b/sysdeps/unix/sysv/linux/alpha/syscalls.list @@ -19,13 +19,13 @@ osf_sigprocmask - osf_sigprocmask 2 __osf_sigprocmask getpeername - getpeername 3 __getpeername getpeername getpriority - getpriority 2 __getpriority getpriority -mmap - mmap 6 __mmap mmap +mmap - mmap 6 __mmap mmap __mmap64 mmap64 llseek EXTRA lseek 3 __llseek llseek lseek64 pread EXTRA pread 4 __pread pread __pread64 pread64 pwrite EXTRA pwrite 4 __pwrite pwrite __pwrite64 pwrite64 fstatfs - fstatfs 2 __fstatfs fstatfs fstatfs64 statfs - statfs 2 __statfs statfs statfs64 -getrlimit - getrlimit 2 getrlimit getrlimit64 +getrlimit - getrlimit 2 __getrlimit getrlimit getrlimit64 setrlimit - setrlimit 2 setrlimit setrlimit64 ftruncate - ftruncate 2 ftruncate ftruncate64 truncate - truncate 2 truncate truncate64 diff --git a/sysdeps/unix/sysv/linux/bits/socket.h b/sysdeps/unix/sysv/linux/bits/socket.h index 42a4f8b74f..34c2be4271 100644 --- a/sysdeps/unix/sysv/linux/bits/socket.h +++ b/sysdeps/unix/sysv/linux/bits/socket.h @@ -107,9 +107,6 @@ enum __socket_type #define SOL_IPV6 41 #define SOL_ICMPV6 58 #define SOL_RAW 255 -#define SOL_AX25 257 -#define SOL_ATALK 258 -#define SOL_NETROM 259 #define SOL_ROSE 260 #define SOL_DECNET 261 #define SOL_X25 262 diff --git a/sysdeps/unix/sysv/linux/i386/Dist b/sysdeps/unix/sysv/linux/i386/Dist index d762dc9416..75955fcc15 100644 --- a/sysdeps/unix/sysv/linux/i386/Dist +++ b/sysdeps/unix/sysv/linux/i386/Dist @@ -1,4 +1,6 @@ bits/mman.h clone.S +s_pwrite64.S +s_pread64.S sys/perm.h sys/vm86.h diff --git a/sysdeps/unix/sysv/linux/i386/sigaction.c b/sysdeps/unix/sysv/linux/i386/sigaction.c index 05d187c432..90818c1dff 100644 --- a/sysdeps/unix/sysv/linux/i386/sigaction.c +++ b/sysdeps/unix/sysv/linux/i386/sigaction.c @@ -32,8 +32,8 @@ extern int __syscall_rt_sigaction (int, const struct sigaction *, struct sigaction *, size_t); /* The variable is shared between all wrappers around signal handling - functions which have RT equivalents. It is defined in sigsuspend.c. */ -extern int __libc_have_rt_sigs; + functions which have RT equivalents. */ +int __libc_have_rt_sigs = -1; /* If ACT is not NULL, change the action for SIG to *ACT. diff --git a/sysdeps/unix/sysv/linux/net/route.h b/sysdeps/unix/sysv/linux/net/route.h index 2450d5154a..6cccbeee2e 100644 --- a/sysdeps/unix/sysv/linux/net/route.h +++ b/sysdeps/unix/sysv/linux/net/route.h @@ -19,10 +19,9 @@ /* Based on the 4.4BSD and Linux version of this file. */ #ifndef _NET_ROUTE_H - #define _NET_ROUTE_H 1 -#include +#include #include #include #include diff --git a/sysdeps/unix/sysv/linux/netatalk/at.h b/sysdeps/unix/sysv/linux/netatalk/at.h index e0ccff8552..4c586106c6 100644 --- a/sysdeps/unix/sysv/linux/netatalk/at.h +++ b/sysdeps/unix/sysv/linux/netatalk/at.h @@ -16,8 +16,8 @@ write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ -#ifndef __NETATALK_ATALK_H -#define __NETATALK_ATALK_H 1 +#ifndef _NETATALK_AT_H +#define _NETATALK_AT_H 1 #include #include @@ -25,4 +25,4 @@ #define SOL_ATALK 258 /* sockopt level for atalk */ -#endif +#endif /* netatalk/at.h */ diff --git a/sysdeps/unix/sysv/linux/netax25/ax25.h b/sysdeps/unix/sysv/linux/netax25/ax25.h new file mode 100644 index 0000000000..1bec5920aa --- /dev/null +++ b/sysdeps/unix/sysv/linux/netax25/ax25.h @@ -0,0 +1,147 @@ +/* Copyright (C) 1997 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 _NETAX25_AX25_H +#define _NETAX25_AX25_H 1 + +#include +#include + +/* Setsockoptions(2) level. Thanks to BSD these must match IPPROTO_xxx. */ +#define SOL_AX25 257 + +/* AX.25 flags: */ +#define AX25_WINDOW 1 +#define AX25_T1 2 +#define AX25_T2 5 +#define AX25_T3 4 +#define AX25_N2 3 +#define AX25_BACKOFF 6 +#define AX25_EXTSEQ 7 +#define AX25_IDLE 9 +#define AX25_PACLEN 10 +#define AX25_IPMAXQUEUE 11 +#define AX25_KILL 99 + +/* AX.25 socket ioctls: */ +#define SIOCAX25GETUID (SIOCPROTOPRIVATE) +#define SIOCAX25ADDUID (SIOCPROTOPRIVATE+1) +#define SIOCAX25DELUID (SIOCPROTOPRIVATE+2) +#define SIOCAX25NOUID (SIOCPROTOPRIVATE+3) +#define SIOCAX25BPQADDR (SIOCPROTOPRIVATE+4) +#define SIOCAX25GETPARMS (SIOCPROTOPRIVATE+5) +#define SIOCAX25SETPARMS (SIOCPROTOPRIVATE+6) +#define SIOCAX25OPTRT (SIOCPROTOPRIVATE+7) +#define SIOCAX25CTLCON (SIOCPROTOPRIVATE+8) + +/* unknown: */ +#define AX25_NOUID_DEFAULT 0 +#define AX25_NOUID_BLOCK 1 +#define AX25_SET_RT_IPMODE 2 + +/* Digipeating flags: */ +#define AX25_DIGI_INBAND 0x01 /* Allow digipeating within port */ +#define AX25_DIGI_XBAND 0x02 /* Allow digipeating across ports */ + +/* Maximim number of digipeaters: */ +#define AX25_MAX_DIGIS 8 + + +typedef struct + { + char ax25_call[7]; /* 6 call + SSID (shifted ascii) */ + } +ax25_address; + +struct sockaddr_ax25 + { + sa_family_t sax25_family; + ax25_address sax25_call; + int sax25_ndigis; + }; + +/* + * The sockaddr struct with the digipeater adresses: + */ +struct full_sockaddr_ax25 + { + struct sockaddr_ax25 fsa_ax25; + ax25_address fsa_digipeater[AX25_MAX_DIGIS]; + }; +#define sax25_uid sax25_ndigis + +struct ax25_routes_struct + { + ax25_address port_addr; + ax25_address dest_addr; + unsigned char digi_count; + ax25_address digi_addr[AX25_MAX_DIGIS]; + }; + +/* The AX.25 ioctl structure: */ +struct ax25_ctl_struct + { + ax25_address port_addr; + ax25_address source_addr; + ax25_address dest_addr; + unsigned int cmd; + unsigned long arg; + }; + +/* AX.25 route structure: */ +struct ax25_route_opt_struct + { + ax25_address port_addr; + ax25_address dest_addr; + int cmd; + int arg; + }; + +/* AX.25 BPQ stuff: */ +struct ax25_bpqaddr_struct + { + char dev[16]; + ax25_address addr; + }; + +/* Definitions for the AX.25 `values' fields: */ +#define AX25_VALUES_IPDEFMODE 0 /* 'D'=DG 'V'=VC */ +#define AX25_VALUES_AXDEFMODE 1 /* 8=Normal 128=Extended Seq Nos */ +#define AX25_VALUES_NETROM 2 /* Allow NET/ROM - 0=No 1=Yes */ +#define AX25_VALUES_TEXT 3 /* Allow PID=Text - 0=No 1=Yes */ +#define AX25_VALUES_BACKOFF 4 /* 'E'=Exponential 'L'=Linear */ +#define AX25_VALUES_CONMODE 5 /* Allow connected modes - 0=No 1=Yes */ +#define AX25_VALUES_WINDOW 6 /* Default window size for standard AX.25 */ +#define AX25_VALUES_EWINDOW 7 /* Default window size for extended AX.25 */ +#define AX25_VALUES_T1 8 /* Default T1 timeout value */ +#define AX25_VALUES_T2 9 /* Default T2 timeout value */ +#define AX25_VALUES_T3 10 /* Default T3 timeout value */ +#define AX25_VALUES_N2 11 /* Default N2 value */ +#define AX25_VALUES_DIGI 12 /* Digipeat mode */ +#define AX25_VALUES_IDLE 13 /* mode vc idle timer */ +#define AX25_VALUES_PACLEN 14 /* AX.25 MTU */ +#define AX25_VALUES_IPMAXQUEUE 15 /* Maximum number of buffers enqueued */ +#define AX25_MAX_VALUES 20 + +struct ax25_parms_struct + { + ax25_address port_addr; + unsigned short values[AX25_MAX_VALUES]; + }; + +#endif /* netax25/ax25.h */ diff --git a/sysdeps/unix/sysv/linux/netrom/netrom.h b/sysdeps/unix/sysv/linux/netrom/netrom.h new file mode 100644 index 0000000000..b8c2af0c11 --- /dev/null +++ b/sysdeps/unix/sysv/linux/netrom/netrom.h @@ -0,0 +1,80 @@ +/* Copyright (C) 1997 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 _NETROM_NETROM_H +#define _NETROM_NETROM_H 1 + +#include + +/* Setsockoptions(2) level. Thanks to BSD these must match IPPROTO_xxx. */ +#define SOL_NETROM 259 + +/* NetRom control values: */ +#define NETROM_T1 1 +#define NETROM_T2 2 +#define NETROM_N2 3 +#define NETROM_PACLEN 5 + +#define NETROM_KILL 99 + +/* Type of route: */ +#define NETROM_NEIGH 0 +#define NETROM_NODE 1 + +struct nr_route_struct + { + int type; + ax25_address callsign; + char device[16]; + unsigned int quality; + char mnemonic[7]; + ax25_address neighbour; + unsigned int obs_count; + }; + +/* NetRom socket ioctls: */ +#define SIOCNRGETPARMS (SIOCPROTOPRIVATE+0) +#define SIOCNRSETPARMS (SIOCPROTOPRIVATE+1) +#define SIOCNRDECOBS (SIOCPROTOPRIVATE+2) +#define SIOCNRRTCTL (SIOCPROTOPRIVATE+3) +#define SIOCNRCTLCON (SIOCPROTOPRIVATE+4) + +/* NetRom parameter structure: */ +struct nr_parms_struct + { + unsigned int quality; + unsigned int obs_count; + unsigned int ttl; + unsigned int timeout; + unsigned int ack_delay; + unsigned int busy_delay; + unsigned int tries; + unsigned int window; + unsigned int paclen; + }; + +/* NetRom control structure: */ +struct nr_ctl_struct + { + unsigned char index; + unsigned char id; + unsigned int cmd; + unsigned long arg; + }; + +#endif /* netrom/netrom.h */ diff --git a/sysdeps/unix/sysv/linux/powerpc/dl-sysdep.c b/sysdeps/unix/sysv/linux/powerpc/dl-sysdep.c index 6b4373db0f..211a56b9f0 100644 --- a/sysdeps/unix/sysv/linux/powerpc/dl-sysdep.c +++ b/sysdeps/unix/sysv/linux/powerpc/dl-sysdep.c @@ -29,12 +29,13 @@ (envp) = (argv) + (argc) + 1; \ for (_tmp = (void **) (envp); *_tmp; ++_tmp) \ continue; \ - if (*_tmp == 0 && ((size_t)_tmp & 0xf) != 0) \ + /* The following '++' is important! */ \ + ++_tmp; \ + if (*_tmp == 0) \ { \ size_t _test = (size_t)_tmp; \ _test = _test + 0xf & ~0xf; \ - if (*(long *)_test == AT_PHDR) \ - _tmp = (void **)_test; \ + _tmp = (void **)_test; \ } \ (auxp) = (void *) _tmp; \ } while (0) diff --git a/sysdeps/unix/sysv/linux/powerpc/kernel_termios.h b/sysdeps/unix/sysv/linux/powerpc/kernel_termios.h index c3908d7080..a40b3c19bd 100644 --- a/sysdeps/unix/sysv/linux/powerpc/kernel_termios.h +++ b/sysdeps/unix/sysv/linux/powerpc/kernel_termios.h @@ -20,7 +20,7 @@ #define _KERNEL_TERMIOS_H 1 /* We need the definition of tcflag_t, cc_t, and speed_t. */ -#include +#include #define __KERNEL_NCCS 19 diff --git a/sysdeps/unix/sysv/linux/sigaction.c b/sysdeps/unix/sysv/linux/sigaction.c index 3eb721454e..6b3d69d451 100644 --- a/sysdeps/unix/sysv/linux/sigaction.c +++ b/sysdeps/unix/sysv/linux/sigaction.c @@ -30,8 +30,8 @@ extern int __syscall_rt_sigaction (int, const struct sigaction *, struct sigaction *, size_t); /* The variable is shared between all wrappers around signal handling - functions which have RT equivalents. It is defined in sigsuspend.c. */ -extern int __libc_have_rt_sigs; + functions which have RT equivalents. */ +int __libc_have_rt_sigs = -1; /* If ACT is not NULL, change the action for SIG to *ACT. diff --git a/sysdeps/unix/sysv/linux/sigpending.c b/sysdeps/unix/sysv/linux/sigpending.c index 4cecb8dc60..fade020d26 100644 --- a/sysdeps/unix/sysv/linux/sigpending.c +++ b/sysdeps/unix/sysv/linux/sigpending.c @@ -25,7 +25,7 @@ extern int __syscall_rt_sigpending (sigset_t *, size_t); /* The variable is shared between all wrappers around signal handling - functions which have RT equivalents. It is defined in sigsuspend.c. */ + functions which have RT equivalents. It is defined in sigaction.c. */ extern int __libc_have_rt_sigs; diff --git a/sysdeps/unix/sysv/linux/sigprocmask.c b/sysdeps/unix/sysv/linux/sigprocmask.c index dc262c88f4..63889a61dd 100644 --- a/sysdeps/unix/sysv/linux/sigprocmask.c +++ b/sysdeps/unix/sysv/linux/sigprocmask.c @@ -25,7 +25,7 @@ extern int __syscall_rt_sigprocmask (int, const sigset_t *, sigset_t *, size_t); /* The variable is shared between all wrappers around signal handling - functions which have RT equivalents. It is defined in sigsuspend.c. */ + functions which have RT equivalents. It is defined in sigaction.c. */ extern int __libc_have_rt_sigs; diff --git a/sysdeps/unix/sysv/linux/sigsuspend.c b/sysdeps/unix/sysv/linux/sigsuspend.c index 2cf34eb9b1..8d8fa8e709 100644 --- a/sysdeps/unix/sysv/linux/sigsuspend.c +++ b/sysdeps/unix/sysv/linux/sigsuspend.c @@ -25,8 +25,8 @@ extern int __syscall_rt_sigsuspend (const sigset_t *, size_t); /* The variable is shared between all wrappers around signal handling - functions which have RT equivalents. */ -int __libc_have_rt_sigs = 1; + functions which have RT equivalents. It is defined in sigaction.c. */ +extern int __libc_have_rt_sigs; /* Change the set of blocked signals to SET, diff --git a/sysdeps/unix/sysv/linux/sparc/sparc64/mmap64.c b/sysdeps/unix/sysv/linux/sparc/sparc64/mmap64.c new file mode 100644 index 0000000000..0dbd384a6a --- /dev/null +++ b/sysdeps/unix/sysv/linux/sparc/sparc64/mmap64.c @@ -0,0 +1 @@ +/* mmap64 is the same as mmap. */ diff --git a/sysdeps/unix/sysv/linux/sparc/sparc64/syscalls.list b/sysdeps/unix/sysv/linux/sparc/sparc64/syscalls.list index 7e64daf578..ca142da29c 100644 --- a/sysdeps/unix/sysv/linux/sparc/sparc64/syscalls.list +++ b/sysdeps/unix/sysv/linux/sparc/sparc64/syscalls.list @@ -10,6 +10,7 @@ getrlimit - getrlimit 2 getrlimit getrlimit64 setrlimit - setrlimit 2 setrlimit setrlimit64 ftruncate - ftruncate 2 ftruncate ftruncate64 truncate - truncate 2 truncate truncate64 +mmap - mmap 6 __mmap mmap __mmap64 mmap64 # Override select.S in parent directory: select - select 5 __select select diff --git a/sysdeps/unix/sysv/linux/stdio_lim.h.in b/sysdeps/unix/sysv/linux/stdio_lim.h.in index 07280956f2..bded904ef0 100644 --- a/sysdeps/unix/sysv/linux/stdio_lim.h.in +++ b/sysdeps/unix/sysv/linux/stdio_lim.h.in @@ -21,7 +21,7 @@ # error "Never include directly; use instead." #endif -#ifndef __need_FOPEN_MAX +#ifdef _STDIO_H # define L_tmpnam 19 # define TMP_MAX 238328 @@ -31,6 +31,9 @@ # endif # define FILENAME_MAX DEFAULT_FILENAME_MAX + +# undef __need_FOPEN_MAX +# define __need_FOPEN_MAX #endif #if defined __need_FOPEN_MAX && !defined __defined_FOPEN_MAX diff --git a/sysdeps/unix/sysv/linux/sys/kd.h b/sysdeps/unix/sysv/linux/sys/kd.h index 0ff5220014..b37586abfd 100644 --- a/sysdeps/unix/sysv/linux/sys/kd.h +++ b/sysdeps/unix/sysv/linux/sys/kd.h @@ -20,7 +20,9 @@ #define _SYS_KD_H 1 /* Make sure the header is not loaded. */ -#define _LINUX_TYPES_H 1 +#ifndef _LINUX_TYPES_H +# define _LINUX_TYPES_H 1 +#endif #include diff --git a/sysdeps/unix/sysv/linux/sys/mman.h b/sysdeps/unix/sysv/linux/sys/mman.h index e2434f135f..70f95d080f 100644 --- a/sysdeps/unix/sysv/linux/sys/mman.h +++ b/sysdeps/unix/sysv/linux/sys/mman.h @@ -42,18 +42,20 @@ __BEGIN_DECLS deallocates any previous mapping for the affected region. */ extern __ptr_t __mmap __P ((__ptr_t __addr, size_t __len, int __prot, - int __flags, int __fd, __off_t __offset)); + int __flags, int __fd, __off_t __offset)); #ifndef __USE_FILE_OFFSET64 extern __ptr_t mmap __P ((__ptr_t __addr, size_t __len, int __prot, - int __flags, int __fd, __off_t __offset)); + int __flags, int __fd, __off_t __offset)); #else extern __ptr_t mmap __P ((__ptr_t __addr, size_t __len, int __prot, - int __flags, int __fd, __off_t __offset)) + int __flags, int __fd, __off64_t __offset)) __asm__ ("mmap64"); #endif #ifdef __USE_LARGEFILE64 +extern __ptr_t __mmap64 __P ((__ptr_t __addr, size_t __len, int __prot, + int __flags, int __fd, __off64_t __offset)); extern __ptr_t mmap64 __P ((__ptr_t __addr, size_t __len, int __prot, - int __flags, int __fd, __off64_t __offset)); + int __flags, int __fd, __off64_t __offset)); #endif /* Deallocate any mapping for the region starting at ADDR and extending LEN diff --git a/sysdeps/wordsize-32/Dist b/sysdeps/wordsize-32/Dist deleted file mode 100644 index 36bfb62e73..0000000000 --- a/sysdeps/wordsize-32/Dist +++ /dev/null @@ -1,5 +0,0 @@ -inttypes.h -strtoimax.c -strtoumax.c -wcstoimax.c -wcstoumax.c diff --git a/sysdeps/wordsize-32/Makefile b/sysdeps/wordsize-32/Makefile deleted file mode 100644 index b22eaee177..0000000000 --- a/sysdeps/wordsize-32/Makefile +++ /dev/null @@ -1,5 +0,0 @@ -ifeq ($(subdir),stdlib) -sysdep_headers += inttypes.h - -sysdep_routines += strtoimax strtoumax wcstoimax wcstoumax -endif diff --git a/sysdeps/wordsize-64/Dist b/sysdeps/wordsize-64/Dist deleted file mode 100644 index 36bfb62e73..0000000000 --- a/sysdeps/wordsize-64/Dist +++ /dev/null @@ -1,5 +0,0 @@ -inttypes.h -strtoimax.c -strtoumax.c -wcstoimax.c -wcstoumax.c diff --git a/sysdeps/wordsize-64/Makefile b/sysdeps/wordsize-64/Makefile deleted file mode 100644 index b22eaee177..0000000000 --- a/sysdeps/wordsize-64/Makefile +++ /dev/null @@ -1,5 +0,0 @@ -ifeq ($(subdir),stdlib) -sysdep_headers += inttypes.h - -sysdep_routines += strtoimax strtoumax wcstoimax wcstoumax -endif -- cgit v1.2.3