This is a testing release until it is announced on comp.os.linux. PLEASE DON'T LINK ANY SYSTEM UTILITIES IF THIS IS A TESTING RELEASE. PLEASE DON'T LINK ANY SYSTEM UTILITIES IF THIS IS A TESTING RELEASE. PLEASE DON'T LINK ANY SYSTEM UTILITIES IF THIS IS A TESTING RELEASE. PLEASE DON'T LINK ANY SYSTEM UTILITIES IF THIS IS A TESTING RELEASE. PLEASE DON'T LINK ANY SYSTEM UTILITIES IF THIS IS A TESTING RELEASE. PLEASE DON'T LINK ANY SYSTEM UTILITIES IF THIS IS A TESTING RELEASE. PLEASE DON'T LINK ANY SYSTEM UTILITIES IF THIS IS A TESTING RELEASE. If it has been announced on comp.os.linux, it can used for anything. If it has been announced on comp.os.linux, it can used for anything. If it has been announced on comp.os.linux, it can used for anything. If it has been announced on comp.os.linux, it can used for anything. If it has been announced on comp.os.linux, it can used for anything. This release only runs under Linux 0.96c or above. This release only runs under Linux 0.96c or above. This release only runs under Linux 0.96c or above. This release only runs under Linux 0.96c or above. This release only runs under Linux 0.96c or above. This release only works with Linux 0.97 patch 1 or above. This release only works with Linux 0.97 patch 1 or above. This release only works with Linux 0.97 patch 1 or above. This release only works with Linux 0.97 patch 1 or above. This release only works with Linux 0.97 patch 1 or above. This release only works with Linux 0.97 patch 1 or above. This release only works with Linux 0.97 patch 1 or above. You need to have the header files from virgin Linux kernel 0.97 patch 1 or above on line to use this release. You need to have the header files from virgin Linux kernel 0.97 patch 1 or above on line to use this release. You need to have the header files from virgin Linux kernel 0.97 patch 1 or above on line to use this release. You need to have the header files from virgin Linux kernel 0.97 patch 1 or above on line to use this release. Please read all the previous release notes and docs. This release note only covers the new stuffs. This is gcc 2.2.2d for Linux. It is on tsx-11.mit.edu and fgb1.fgb.mw.tu-muenchen.de under /pub/linux/GCC. The source codes for gcc itself is unchanged from 2.2.2, but it was recompiled for new kernel. And lots of bugs are fixed. I am trying to make the Linux C library to be POSIX.1 compliant. I cleared up the header files and some library functions. 1. and are fixed. (in 2.2.2dmisc.tar.Z) 2. is fixed, remove __tzname_max (). (in 0.97pl1inc.tar.Z) 3. posix/sysconf.c. (the shared image is compiled with old one. I don't think it will matter too much. this will be fixed in the next release.) 4. time/Makefile (remove tzname.o) There are some problems with pathconf()/fpathconf(). We need a new sys call to get info about the filesystem. Someone mentioned vfsstat (). It may be a good idea. To be compliance with POSIX.1, we need 1. LINK_MAX 2. MAX_CANON 3. NAME_MAX 4. PATH_MAX 5. PIPE_BUF 6. _POSIX_CHOWN_RESTRICTED 7. _POSIX_NO_TRUNC 8. _POSIX_VDISABLE Some of them may change for different filesystems. Some don't. Some may do in the future. The installation procedure is changed. Please read README first. READ README FIRST READ README FIRST READ README FIRST READ README FIRST READ README FIRST READ README FIRST READ README FIRST READ README FIRST READ README FIRST READ README FIRST PLEASE RUN `install.2.x' PLEASE RUN `install.2.x' PLEASE RUN `install.2.x' PLEASE RUN `install.2.x' PLEASE RUN `install.2.x' PLEASE RUN `install.2.x' The list of known bugs. 1. in some very rare cases, stdio may be broken, like on modem, pipe. I am not sure if it is the stdio's fault. It seems that somehow iostream tries to do a seek on those files. We are investigating it now. We need all the help we can get. Please get libc-2.2.2d.tar.Z and try this gcc -g -o foo foo.c and run gdb on this. Please pay attention to field `_flags'. We need to know some details right before and after `core dump'. Oops: This one turned out not a bug. Of course, we can even do better. But why? Here is what man says --------------------------- When a file is opened for update, both input and output can be done on the resulting stream. However, output cannot be directly followed by input without an intervening call to the fflush function or to a file positioning function (fseek, fsetpos, or rewind), and input cannot be directly followed by output without an intervening call to a file positioning function unless the input operation encounters end-of-file. -------------------------- IMPORTANT NOTE: IMPORTANT NOTE: IMPORTANT NOTE: IMPORTANT NOTE: IMPORTANT NOTE: The new correct setjmp/longjmp are not compatible with gcc 2.2.2. If your code uses them, please recompile it with gcc 2.2.2d. And DO NOT USE setjmp/longjmp WITH THE SHARED X386 v1.1, WAIT FOR v2.0. Another solution is before you install gcc 2.2.2d, please do cp /usr/include/setjmp.h /usr/lib/gcc-lib/i386-linux/2.2.2/include The following bugs in libraries are fixed. 1. div/ldiv. 2. setjmp/longjmp. 3. crt0.o/gcrt0.o. 387 control word is changed to 0x1272. No overflow exception. 4. floating point format errors are fixed. 5. minor bug in mntent.c. 6. popen.o is fixed in libg.a. 7. fopen ("foo", "a") will seek to the end of file. 8. printf ("%10.2f\n", 10.0); 9. libg++.a 2.2 is used. 10. libinet.a is folded into libc.a. All the data bases are in /usr/etc/inet. But you need kernel support for that. Please contact "bir7@leland.stanford.edu" first. 11. a typo in libc-linux/socket/bytedorer.c is fixed. 12. size of args + envs for exec () is fixed. 13. new mount for 0.97. 14. a bug in temporary filename creation is fixed. Now it checks if a process has permission to create a file in specified directory. 15. in libhard.a, pow (0.0, 0.0) = 1.0 now. 16. cc1/cc1plus is fixed for double foo=DBL_MAX; The following functions are added to libraries. 1. setpiority/getpiority. 2. iopl. 3. sigsetjmp/siglongjmp. 4. cfree. The following changes are made to the header files. 1. is fixed. 2. is fixed. 3. all the header files are now compatible with gcc -traditional. 4. strncasecmp is added to . 5. is added. 6. lots of bugs are fixed. 7. and are changed. 8. and are changed for TCP/IP. 9. and are in for TCP/IP. 10. lots of header files in kernel and /usr/include are fixed. You won't notice the changes unless you are testing TCP/IP. If you are, please first contact "bir7@leland.stanford.edu". You need more than that. YOU HAVE TO RECOMPILE GDB 4.6 WITH GCC 2.2.2d. YOU HAVE TO RECOMPILE GDB 4.6 WITH GCC 2.2.2d. YOU HAVE TO RECOMPILE GDB 4.6 WITH GCC 2.2.2d. YOU HAVE TO RECOMPILE GDB 4.6 WITH GCC 2.2.2d. YOU HAVE TO RECOMPILE GDB 4.6 WITH GCC 2.2.2d. YOU HAVE TO RECOMPILE GDB 4.6 WITH GCC 2.2.2d. YOU HAVE TO RECOMPILE GDB 4.6 WITH GCC 2.2.2d. YOU HAVE TO RECOMPILE GDB 4.6 WITH GCC 2.2.2d. 8. two dummies, and are added for gdb 4.6. The following changes are made to libraries. 1. byte order functions for networking are written in C. Please read libc-linux/socket/byteorder.c and David's jump table version 2 release 2.1 is in. Please read /usr/lib/gcc-lib/i386-linux/2.2.2d/jump/README. Now there is only one version of shared images, used both by jump table and non jump table. The following files are changed since 2.2.2/2.2.2b. 1. 2.2.2ddb.tar.Z (libg.a, libc_p.a and jump stable stuffs) 2. 2.2.2dmisc.tar.Z (cpp, eader files, drivers, libs, doc, ....) 3. 2.2.2dlib.tar.Z (cc1, cc1plus) 4. shlib-2.2.2d.tar.Z (making the shared libs for gcc 2.2.2) 5. libc-2.2.2d.tar.Z (source code for the libs) 6. 0.97pl1inc.tar.Z (the header files also used by kernel source 0.97 patch 1) 7. binutils.tar.Z (all new stuffs, compiled with jump table) 8. install.2.x (a new script for installing gcc 2.2.2d) 9. README (installation instruction) 10. FAQ (gcc under Linux) 11. 2.2.2dg1.tar.Z (libg.a compiled with -g1 to get a smaller libg.a) 12. gas-src.tar.Z (source code for gas-1.38.1) 13. binutils-src.tar.Z (source code for ar, gprof, ld, nm, objdump, ranlib, size and strip) At least you need to get and install 2.2.2ddb.tar.Z, 2.2.2dmisc.tar.Z and 0.97inc.tar.Z. File list: 1. 2.2.2ddb.tar.Z (libg.a, libc_p.a and jump stable stuffs) 2. 2.2.2dmisc.tar.Z (cpp, eader files, drivers, libs, doc, ....) 3. 2.2.2dlib.tar.Z (cc1, cc1plus) 4. shlib-2.2.2d.tar.Z (making the shared libs for gcc 2.2.2) 5. libc-2.2.2d.tar.Z (source code for the libs) 6. 0.97pl1inc.tar.Z (the header files also used by kernel source 0.97 patch 1) 7. binutils.tar.Z (all new stuffs, compiled with jump table) 8. install.2.x (a new script for installing gcc 2.2.2d) 9. README (installation instruction) 10. FAQ (gcc under Linux) 11. 2.2.2dg1.tar.Z (libg.a compiled with -g1 to get a smaller libg.a) 12. gas-src.tar.Z (source code for gas-1.38.1) 13. binutils-src.tar.Z (source code for ar, gprof, ld, nm, objdump, ranlib, size and strip) 14. gcc-2.2.2d.tar.Z (patches for compiling gcc 2.2.2d, same as gcc-2.2.2.tar.Z) There may be some bugs in binutils-src.tar.Z. Please report it if you find any. To use 2.2.2dg1.tar.Z, you should unpack it by hand under /lib after you have run `install.2.x' since it just overwrites libg.a. H.J. hlu@eecs.wsu.edu 08/12/92