NOTE: If you miss ONE LINE in this documentation, this library may not work for you. Hi, Guys, This is the public release of the Linux C library 4.5.21. You have to run the kernel and install the source code of 0.99 pl 15g or above to use all the features in it. You also need gcc 2.5.7 or above to use it. If your kernel is older than specified, you should install libc 4.5.21 as well as the suitable gcc to compile the new kernel with them first. While compiling the new kernel, your system should have as few processes running as possible since some of them may be broken with libc 4.5.21 and the old kernel. FYI, the compiler stuff should work with 0.99 pl 13 or above. You can get this package under pub/linux/packages/GCC from tsx-11.mit.edu. The file names are inc-4.5.21.tar.gz, inc-4.5.19-4.5.21.tar.gz, libc-4.5.21.tar.gz, libc-4.5.19-4.5.21.tar.gz, image-4.5.21.tar.gz and extra-4.5.21.tar.gz. In binutils-1.9l.3-as-2.2l.tar.gz, there are a new ar, a new ld with QMAGIC support, GNU make 3.70 and gas 2.2l. The source codes are under pub/linux/packages/GCC/src. You need to do cd /usr/bin rm ld as before untar binutils-1.9l.3-as-2.2l.tar.gz under /. Otherwise, the symbolic links may fail. I only make i486 binary versions this time. WARNING: PLEASE READ THEM OR DONT USE THIS LIBRARY. 1) There are some massive changes to Makefiles and the file structures. Now you can do: ./configure make make install to get everything compiled and installed. Please check it out. There is some primitive support for m68k. Someone has to fill the missing files. There are some bugs in gnu make 3.62 which prevents the successfull compliation. Please use gnu make 3.70 or above instead. I included one in binutils-1.9l.3-as-2.2l.tar.gz. 2) The Linux C library 4.5.8 is very strict. It won't tolerate any bugs in your applications. So it has exposed the "fclose on the same file pointer twice" bugs in mailx and pdksh. If you find something is wrong when using libc 4.5.8, please recompile it with -g and run gdb on it. You should set break points in _IO_fclose () and _IO_fopen (), then check if _IO_fclose () is called twice on the same file pointer. In 4.5.21, I tried to relax the stdio a little bit. "fclose on the same file pointer twice" may work if the memory used by the file pointer does not happen to have a valid stdio signature. Please check it out. But I discourage this practice. 3) In this release, iostream is removed from the Linux C library. That means all the previous C++ binaries using iostream linked with the shared library will break. 4) /usr/lib/libgcc.sa and /usr/lib/libgcc.a must not be used with libc 4.5.21. You have to remove/backup /usr/lib/libgcc.*. 5) All binaries using "long long" output in iostream linked with the shared library may be broken. 6) inet_network () returns the network number and treats the network address as a.b.c.d (with each treated as 8-bits) a.b.c (with each treated as 8-bits) a.b (with each treated as 8 bits) a (with a treated as 8 bits) 7) xdm may be miscompiled by early gcc. If it doesn't work with this libc. Try to recompile it with gcc 2.5.x (x >= 7) or contact Dave_Boyd@Sterling.COM for a working binary. 8) You need tools 2.10 to make the shared library, which can be ftped from tsx-11.mit.edu under pub/linux/packages/GCC/src. 9) ld.so 1.4.3 or above is also required by this release. It is on tsx-11.mit.edu under pub/linux/packages/GCC. 10) _PATH_LASTLOG, _PATH_MAILDIR and WTMP_FILE have bee moved from /usr to /var. _PATH_SENDMAIL is changed to /usr/sbin/sendmail. be sure you make the appropriate symbolic links. You need to link /var/adm/utmp with /etc/utmp, /var/adm/lastlog with /etc/lastlog, /var/spool/mail with /usr/spool/mail, maybe /usr/lib/sendmail with /usr/sbin/sendmail. 11) I am testing rx 0.03 from sed 2.03 used to replace regex 0.12. You have to recompile your applications to take the advantage of the fast regex. The old applications should work fine with the old regex in the shared image. Rx 0.03 is too buggy. I have sent an email to the author asking for new version. At the same time, the old GNU regex 0.12 is restored. 12) Please remove /usr/include/shadow.h if you don't use the shadow password. I will try to add the shadow stuff after 4.5.xx 13) A stdio bug is fixed. For fgets (), the buffer will be unchanged and NULL is returned when the EOF is seen. Before that, the buffer was terminated by the null char, which violates the ANSI C standard. But some programs may rely on that bug. 14) libm.so.x.y is moved to /usr/lib. Please clean up /lib. 15) A new system call, getpgid (), is added. It requries the kernel 0.99 pl 15 or above. 16) There is a new obstack.[hc]. Please check if it breaks any old binaries compiled with old obstack.h. This release is compressed with gzip 1.2.4. Please read ChangeLog for details of the bug fixes and changes. The file list: 1. inc-4.5.21.tar.gz REQUIRED. It is the header files for 4.5.21. cd / rm /usr/include/regex.h /usr/include/rx.h gzip -dc inc-4.5.21.tar.gz | tar xvvSof - # Please be careful, I don't know what you have under /usr/include. # If you have a problem with the header files, you may do # rm -rf /usr/include # mkdir -p /usr/include # before # gzip -dc inc-4.5.21.tar.gz | tar xSvvof - The header files in inc-4.5.21.tar.gz are not complete. You have to install the kernel source for the rest of the header files. Please get the version mentioned at the beginning of this release note. Suppose you install the kernel source at "/foo/bar/src", you should do as root cd /usr/include ln -s /foo/bar/src/linux/include/asm . ln -s /foo/bar/src/linux/include/linux . Since some programs need , you may have to do cd /foo/bar/src/linux make config before you can compile them. 2. inc-4.5.19-4.5.21.tar.gz Change of the header files from 4.5.19 to 4.5.21. cd / rm -f /usr/include/regex.h /usr/include/rx.h gzip -dc inc-4.5.19-4.5.21.tar.gz | tar xSvvof - 3. libc-4.5.21.tar.gz Source code for 4.5.21. cd src rm -rf libc-linux gzip -dc libc-4.5.21.tar.gz | tar xSvvof - 4. libc-4.5.19-4.5.21.tar.gz Change of the source code from 4.5.19 to 4.5.21. cd src gzip -dc libc-4.5.19-4.5.21.tar.gz | tar xSvvof - cd libc-linux rm -rf gmon 5. image-4.5.21.tar.gz REQUIRED. The stub/static libraries and the shared images. To install it, as root do cd /tmp rm -rf ./lib gzip -dc image-4.5.21.tar.gz | tar xSvvof - cp -av ./lib ./usr / ldconfig -v 6. extra-4.5.21.tar.gz REQUIRED. libmcheck.a, libg.a, libc_p.a, libgmon.a and gcrt0.o. To install cd / gzip -dc extra-4.5.21.tar.gz | tar xSvvof - 7. ChangeLog Change log for the Linux C library. Please fix the file permissions after you install it. H.J. hjl@nynexst.com 02/26/94 ----- Sat Feb 26 14:01:18 1994 H.J. Lu (hlu@nighthawk) * version 4.5.21 is re-released :-(. * ./sysdeps/linux/i386/gmon: moved from ./gmon. * ./sysdeps/linux/i386/gmon/Makefile (TOPDIR): change it to "../../../..". * ./sysdeps/linux/i386/Makefile (DIRS): add "gmon" if PROFILE == true. * ./gmon: moved to ./sysdeps/linux/i386. * ./Makefile (CLEAN_DIRS): (DIRS): remove "gmon". Tue Feb 22 14:23:06 1994 H.J. Lu (hlu@nighthawk) * version 4.5.21 is released. * sysdeps/linux/__adjtime.c: define SIMPLE_ADJTIME. * rpc/get_myaddr.c (USE_GETHOSTNAME): undo the change of Tue Feb 15. Mon Feb 21 13:18:20 1994 H.J. Lu (hlu@nighthawk) * jump/libm/jump.params: * jump/libm/jump.params.build: * jump/libc.lite/jump.params: * jump/libc.lite/jump.params.build: * jump/libc/jump.params: * jump/libc/jump.params.build: bump up to version 4.5.21 * <_G_config.h>: update verion to 4.5.21. * ./libio/ChangeLog: new entries. * rpc/pmap_rmt.c (getbroadcastnets): change "#ifdef linux" to "#if 0". (SIOCGIFBRDADDR): use addrs[i++] = inet_makeaddr((int)inet_netof (sin->sin_addr), INADDR_ANY); need 0.99 pl15g or above. * : copied from glibc 1.07.4. Please check out if it is compatible with the old one. * misc/obstack.c: copied from glibc 1.07.4. * nls/linux/French/errlist.m: fix typoes. Sat Feb 19 13:19:34 1994 H.J. Lu (hlu@nighthawk) * : declcare cuserid (). * posix/cuserid.c: include . Tue Feb 15 12:01:14 1994 H.J. Lu (hlu@nighthawk) * version 4.5.20 is released. * jump/libm/jump.params: * jump/libm/jump.params.build: * jump/libc.lite/jump.params: * jump/libc.lite/jump.params.build: * jump/libc/jump.params: * jump/libc/jump.params.build: bump up to version 4.5.20 * <_G_config.h>: update verion to 4.5.20. * jump/libc/Makefile (install): * jump/libm/Makefile (install): copy the old shared library to SHLIB_FILE.$$. * jump/libm/Makefile (install): replace TARGET_SO_DIR with TARGET_LIBM_SO_DIR. * Makeconfig (TARGET_LIBM_SO_DIR): new, make it /usr/lib. * configure: add credit for Mitchum Dsouza . * mntent/Makefile (SCR1S): change mntent.o to mntent.c. * (MNTMAXSTR): change that to 512 from 128. * : include . add __BEGIN_DECLS and __END_DECLS. * time/strftime.c (strftime): don't set the values before they are called for since not all the fields in the struct tm pointer passed are valid. * nls/linux/Makefile (FR-SRCS) (FRENCH-SRCS): (french:) new for French. * nls/linux/French/LISEZMOI: * nls/linux/French/auth.m: * nls/linux/French/clnt-misc.m: * nls/linux/French/errlist-u.m: * nls/linux/French/errlist.m: * nls/linux/French/getopt.m: * nls/linux/French/h-errlist.m: * nls/linux/French/net-misc.m: * nls/linux/French/rpc-errlist.m: * nls/linux/French/rpc-misc.m: * nls/linux/French/siglist-u.m: * nls/linux/French/siglist.m: new for French. * Makefile (DIRS): new entry for CHECKER == true. (install.checker): new. * curses/Makefile (CHECKER_LIB): * gcc/Makefile (CHECKER_LIB): * gdbm/Makefile (CHECKER_LIB): * libbsd/Makefile (CHECKER_LIB): * termcap/Makefile (CHECKER_LIB): new. * checker/Makefile: new. * sysdeps/linux/i386/crt/Makefile (lib): fix a typo in the chkrcrt0.o rule. * nls/Makefile (BASE_CFLAGS): no -DHAVE_MMAP if CHECKER is true. * Maketargets (lib): add a new rule for CHECKER_LIB. * : include( . (MAP_ANON, MAP_FILE): new. * ./libio/ChangeLog: new entries. * jump/libc.lite/jump.funcs: * jump/libc/jump.funcs: add _getpgid. * sysdeps/linux/Makefile (SRC2S): add getpgid.S. * sysdeps/linux/getpgid.S: new. need kernel 0.99 pl 15. * (getpgid): new. * (SYS_getpgid): new. * : copied from gawk 2.15.4. * regex/regex.c: copied and modified from gawk 2.15.4. * regex/regex.diff: modification to gawk 2.15.4. * rpc/get_myaddr.c (USE_GETHOSTNAME): defined. * sysdeps/linux/__adjtime.c: handle large time. * cureses/Makefile (SHARED_LIB): * gcc/Makefile (LIBGCC): * gdbm/Makefile (SHARED_LIB): * termcap/Makefile (SHARED_LIB): use $(SHARED_DIR) * cureses/Makefile (STATIC_LIB): * gdbm/Makefile (STATIC_LIB): * libbsd/Makefile (STATIC_LIB): * termcap/Makefile (STATIC_LIB): use $(STATIC_DIR) * : add some appropriate "const" in the prototypes. * malloc/Makefile (LIBMCHECK_SRCS): remove mcheck.c. (SRC1S): add mcheck.c. (lib): don't make $(LIBMCHECK). * Makefile (install.static): add libmalias.a for libm.a. (install.debug): copy debug/libc/mcheck-init.o to libmcheck.a. * sysdeps/linux/set-init.c: copied from glibc 1.07.2. * sysdeps/linux/m68k/math/Makefile (SRC1S): remove drem.c. * sysdeps/linux/m68k/math/drem.c: removed. * sysdeps/linux/i386/math/Makefile (SRC2S): remove drem.S. * sysdeps/linux/i386/math/drem.S: removed. * ./mntent/mntent.c (getmntent): return NULL if fgets () returns NULL. * Makeconfig: define LDCONFIG as "ldconfig" if the host machine is running Linux, otherwise as "true". (SHARED_LITE_DIR): new, "shared.lite". (SHARED_DIR): defined as $(SHARED_LITE_DIR) for the light shared C library if LITE is true. (OBJS_DIR): remove "shared.lite", add $(SHARED_LITE_DIR) * Maketargets (depend): add "$(SHARED_LITE_DIR)/$(SUBDIR)/\1". * jump/libc/Makefile (install): * jump/libm/Makefile (install): run $(LDCONFIG) if the host machine is running Linux.