Hi, Gals and Guys, This is the public release of the Linux C library release 5.2.16. Please read the ChangeLog for details regarding changes/bug fixes. DISTRIBUTION SITES: The primary FTP sites for the compiler/C library are: * ftp://tsx-11.mit.edu/pub/linux/packages/GCC * ftp://sunsite.unc.edu/pub/Linux/GCC DISTRIBUTION FILES: 1. libc-5.2.16.bin.tar.gz REQUIRED. This package contains the header files for libc, shared and static ELF libraries libc and libm, and the static ELF library libbsd.a. The header files in libc-5.2.16.bin.tar.gz are not complete. You need to install the kernel source tree for the system-dependent header files. The header files are in lib-x.y.z.bin.tar.gz and libc-x.y.z.tar.gz. You can do # gzip -dc lib-x.y.z.bin.tar.gz | tar xvvf - usr/include to extract the header files without the binaries files. A separate tar file for the header files may cause unnecessary confusion. 2. libc-5.2.16.tar.gz Source tree for libc and header files. 3. libc-5.0.9-5.2.16.diff.gz Context diffs against the source tree from the previous libc release. It assumes you have the "libc" tree and the "include" tree in the same directory. The -E option is recommended for patch. MISSING LIBRARIES: The only libraries included in this package are the Linux C library, libc and the math library, libm. ELF versions of libraries formerly included in the libc package can be found at the following FTP sites: * gdbm ftp://sunsite.unc.edu/pub/Linux/libs/db/gdbm-1.7.3-ELF.tar.gz * db ftp://sunsite.unc.edu/pub/Linux/libs/db/db-1.85.2.bin.tar.gz * curses (site forthcoming) * termcap (site forthcoming) Gertjan van Wingerde (gertjan@cs.vu.nl) maintains the ELF db package. Christopher Wiles (wileyc@moscow.com) maintains the ELF gdbm package. NOTE: I strongly suggest using ncurses to replace curses/termcap. The current ncurses supports ELF. SYSTEM REQUIREMENTS: * kernel 1.1.92 or above. It may work with an older kernel if the QMAGIC format is supported. If you use the kernel 1.3.x, you should upgrade to 1.3.40 or above. Otherwise readv/writev system calls won't work right. * gcc-2.7.2 or above and binutils 2.6.0.2 or above. * ld.so-1.7.10 or above. * libg++ 2.7.1.3 or above. This is only necessary for development using c++. BINARY INSTALLATION: Ensure that /usr/include/asm and /usr/include/linux are a symlinks to their counterparts in the kernel source tree. For example, if your kernel source resides within /usr/src/linux, execute: ln -s -f /usr/src/linux/include/asm /usr/include/asm ln -s -f /usr/src/linux/include/linux /usr/include/linux As some programs need , the following two commands may be necessary to generate that header file: cd /usr/src/linux make config Verify that /var/run/utmp and /var/log/wtmp exist. Replace all other occurances of utmp and wtmp (/etc/utmp, for example) with symlinks. Assuming the libc binary tarfile is in /, and as root, execute: cd / rm -f /usr/lib/libc.so /usr/lib/libm.so rm -f /usr/include/iolibio.h /usr/include/iostdio.h rm -f /usr/include/ld_so_config.h /usr/include/localeinfo.h rm -rf /usr/include/netinet /usr/include/net /usr/include/pthread tar -xzf libc-5.2.16.bin.tar.gz SOURCE INSTALLATION: Unpack the libc source tarfile in your source directory. Refer to the README for compilation instructions. COMPATIBILITY NOTES: There is no support for a.out libraries in this source tree. The latest version of the a.out library suite is libc-4.7.5, which can be obtained from one of the ftp sites listed below. The structure DIR, defined in sysdeps/linux/dirstream.h, was changed in release 5.2.0. If you upgrade from release 5.1.4 or earlier to release 5.2.0 or later, you must reboot after installing the new libraries. If you compile your own library, *do not* "make install". Instead, copy the new libc.so* to /lib, do "ldconfig -v", reboot, then do "make install" A dirent bug, which erroneously defined d->reclen to d->namlen if USE_GNU was defined, has been fixed. Unfortunately, some GNU packages depend on this bug. GNU make 3.xx is one of them. A patch is included here. Please recompile GNU make before installing this library. Otherwise you have to use "make -f Makefile" to specify which Makefile to use when rebuilding GNU make. A back door has been added for the file descriptor in DIR. You need to define DIRENT_ILLEGAL_ACCESS to access the dd_fd field. You should use dirfd () to get the the file descriptor in DIR. Use this at your own risk. A new dirent bug is fixed. The ELF nfsd should work fine. and have been removed. PTHREAD NOTES: The MIT pthread library 1.60 beta2 seems to work. It passed most of tests in the MIT pthread package. The pthread libraries are not installed by default, nor are binaries included. You may want to remove "-g" from the default CFLAGS for the pthread library. You need to install the libraries "elfshared/libpthread.so.1.60.beta2" and "elfstatic/libpthread.a" in either /usr/local/lib or /usr/lib manually. You must run ldconfig after installing them. To compile pthread programs, you need to add -D_MIT_POSIX_THREADS to CFLAGS and -lpthread to LDFLAGS. The network _r functions are still missing. Due to the implementation of the pthread library, pthread only works with the shared libpthread. NYS NOTES: NYS binaries are not provided this time. NYS 0.27.4 is included in the source tree as a compile-time option. Please consult README.nys and other applicable NYS documents before attempting NYS installation. I disabled DBM for NYS. Some changes are needed to support non-builtin dbm. INFORMATION/DOCUMENTATION: ELF related WWW pages: * http://www.intac.com/~cully/elf.html * http://www.sjc.ox.ac.uk/users/barlow/elf.html * http://www.blackdown.org/elf/elf.html ELF documentation: * ftp://sunsite.unc.edu/pub/Linux/GCC/elf.ps.gz * ftp://sunsite.unc.edu/pub/Linux/GCC/elf.latex.tar.gz * ftp://sunsite.unc.edu/pub/Linux/GCC/ELF.doc.tar.gz H.J. hjl@gnu.ai.mit.edu 12/02/95 ---- RCS file: /home/cvs/gnu/make/dir.c,v retrieving revision 1.1.1.1 diff -c -r1.1.1.1 dir.c *** 1.1.1.1 1995/06/25 03:27:16 --- dir.c 1995/06/25 03:55:22 *************** *** 20,26 **** #if defined (POSIX) || defined (HAVE_DIRENT_H) || defined (__GNU_LIBRARY__) #include ! #ifndef __GNU_LIBRARY__ #define D_NAMLEN(d) strlen((d)->d_name) #else /* GNU C library. */ #define D_NAMLEN(d) ((d)->d_namlen) --- 20,26 ---- #if defined (POSIX) || defined (HAVE_DIRENT_H) || defined (__GNU_LIBRARY__) #include ! #ifndef __BAD_GNU_LIBRARY__ #define D_NAMLEN(d) strlen((d)->d_name) #else /* GNU C library. */ #define D_NAMLEN(d) ((d)->d_namlen) =================================================================== RCS file: /home/cvs/gnu/make/glob/glob.c,v retrieving revision 1.1.1.1 diff -c -r1.1.1.1 glob.c *** 1.1.1.1 1995/06/25 03:27:18 --- glob/glob.c 1995/06/25 03:56:01 *************** *** 64,70 **** #if defined (POSIX) || defined (HAVE_DIRENT_H) || defined (__GNU_LIBRARY__) #include ! #ifndef __GNU_LIBRARY__ #define D_NAMLEN(d) strlen((d)->d_name) #else /* GNU C library. */ #define D_NAMLEN(d) ((d)->d_namlen) --- 64,70 ---- #if defined (POSIX) || defined (HAVE_DIRENT_H) || defined (__GNU_LIBRARY__) #include ! #ifndef __BAD_GNU_LIBRARY__ #define D_NAMLEN(d) strlen((d)->d_name) #else /* GNU C library. */ #define D_NAMLEN(d) ((d)->d_namlen)