Newsgroups: comp.os.linux
From: hlu@phys1.physics.wsu.edu (Hongjiu Lu)
Subject: README: gcc 2.2.2d is out
Organization: Washington State University
Date: Sun, 16 Aug 92 08:50:02 GMT

gcc 2.2.2d is out. It is on tsx-11 under pub/linux/GCC/private/pub and
fgb1.fgb.mw.tu-muenchen.de under pub/linux/GCC.

You have to do this on tsx-11

cd pub/linux/GCC/private/pub

Sorry for that. I have no choice if I want to release it today.


-- 
H.J.
Gcc/libc maintainer for Linux.
-------------
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

Newsgroups: comp.os.linux
From: hlu@phys1.physics.wsu.edu (Hongjiu Lu)
Subject: src of gcc 2.2.2d is on tsx-11
Organization: Washington State University
Date: Mon, 17 Aug 92 00:25:26 GMT

The complete source code of gcc 2.2.2d for Linux (aka, gcc 2.2.2 from
the FSF) is on tsx-11 under pub/linux/GCC. The filename is

gcc-src-linux-2.2.2d.tar.Z

gcc-2.2.2d.tar.Z is just the diffs for Linux.

-- 
H.J.
Gcc/libc maintainer for Linux.

From: hlu@phys1.physics.wsu.edu (Hongjiu Lu)
Newsgroups: comp.os.linux
Subject: FAQ for gcc 2.2.2d
Date: 17 Aug 92 00:28:13 GMT
Organization: Washington State University


-- 
H.J.
Gcc/libc maintainer for Linux.
---------
QUESTION: What compiler should I use for Linux?

ANSWER: You should only use the same version on tsx-11.mit.edu or
fgb1.fgb.mw.tu-muenchen.de under /pub/linux/GCC. If you want to use
the testing release, first join the GCC channel on the Linux mailing
list, and then send a note to hlu@eecs.wsu.edu. Don't use gcc older
than the one on tsx-11.mit.edu or fgb1.fgb.mw.tu-muenchen.de.

QUESTION: Where is the latest official gcc 2.xx for Linux?

ANSWER: It's on tsx-11.mit.edu under /pub/Linux/GCC and
fgb1.fgb.mw.tu-muenchen.de under pub/linux/GCC. You may find it on the
other sites. There are 4 files, 2.xxdb.tar.Z, 2.xxg1.tar.Z,
2.xxlib.tar.Z and 2.xxmisc.tar.Z. Another file, binutils.tar.Z, is not
the part of gcc 2.xx, but used by gcc 2.xx. It contains all the binary
utilities you need to run gcc 2.xx.  You should read the release note
to see if you should get the new binutils.tar.Z.

QUESTION: What are the contents of them?

ANSWER: 2.xxdb.tar.Z contains libg.a (compiled with -g), libc_p.a and
jump table stuffs. 2.xxg1.tar.Z contains libg.a compiled with -g1.
2.xxlib.tar.Z contains cc1 and cc1plus. 2.xxmisc.tar.Z contains gcc
2.xx drivers, cpp, header files, libraries, manual pages and
installation instructions.

Another file, XXXXinc.tar.Z, where XXXX is the current version number
of Linux kernel, has all the header files to replace the header files 
from kernel. 

YOU MUST INSTALL IT.
YOU MUST INSTALL IT.
YOU MUST INSTALL IT.
YOU MUST INSTALL IT.
YOU MUST INSTALL IT.

To use gcc 2.xx, you have to put the header files from kernel source of
version XXXX on line. Please read README for details.

QUESTION: How do I install it?

ANSWER: Read README and release notes.

QUESTION: What are the main differences with the old release?

ANSWER: Read README and release notes.

QUESTION: Can I use the old version of gcc?

ANSWER: Please get rid of gcc older than gcc 2.2.2. Starting from
gcc 2.2.2, you can do

	gcc -V xxxx

where xxxx is the version number. Please read `release.xxxx' for
detail. There is one catch in gcc 2.2.2d, setjmp/longjmp is changed,
so the old header files is not compatible with gcc 2.2.2. Before you
install gcc 2.2.2d, please do

cp /usr/include/setjmp.h /usr/lib/gcc-lib/i386-linux/2.2.2/include

where /usr/include/setjmp.h is come with gcc 2.2.2.

QUESTION: Is stdio ANSI compatible?

ANSWER: Yes, please test it.

QUESTION: Is g++ in 2.xx?

ANSWER: Yes.

QUESTION: How do I use gcc?

ANSWER: Read manual page, gcc.ps or gcc.man in /usr/install/gcc2.

QUESTION: What options can I use for gcc?

ANSWER: Read manual page, gcc.ps or gcc.man. -O3, -O4, -O5 or even
higher should work with 2.xx. -O3 is said to be the best. Don't ask me
why. Try it yourself. I was told you could manipulate those
optimization flags to get the best performance. Also -static tells gcc
to use the static libraries. The default is the shared libraries.

QUESTION: Where is the source code of the new libc.a?

ANSWER: The same place you find this file. It is called libc-2.xx.tar.Z.

QUESTION: Why does g++ complain, even die?

ANSWER: You need "expr", which is in GNU shell utilities 1.6, echo (?)
and sed.

QUESTION: How do I generate code for 486?

ANSWER: Add -m486 to CFLAGS.

QUESTION: I heard malloc (0) wouldn't work with Linux, what should I
do?

ANSWER: include < stdlib.h> and don't define NO_FIX_MALLOC.

QUESTION: Why does gcc say "xxxxx..h not found"?

ANSWER: see QUESTION: What are the contents of them?

QUESTION: I really followed every step in the documentation, but when
I do "make", why does it say "don't how to make xxxxxx"?

ANSWER: The dependency in Makefile is dated, you need to make a new
one. Please get some guide on make and read Makefile. For the kernel
sources, please do

cd src/linux
make dep

QUESTION: How do I compile programs under Linux?

ANSWER: The Linux C library is trying to be ANSI/POSIX compliant. It
is also very compatible with SYSV and BSD. The C library is loaded
with SYSV and BSD functions. There are three exceptions:

1. signal in Linux is POSIX.
2. tty in Linux is POSIX.
3. time functions are POSIX, plus a few BSD and SYSV extensions.
4. setjmp/longjmp functions are POSIX. But you can use -D__FAVOR_BSD
   to make it BSD or use sigsigjmp/siglongjmp.

When you compile a program under Linux, your best bet is include all
the appropriate header files and use -Wall. All the usable functions
and global variables are declared in the corresponding header files.
YOU SHOULD NOT DEFINE ANY functions or global variables OF THE LINUX C
LIBRARY IN YOUR CODE IF YOU WANT TO USE THE SHARED LIBRARIES.

After saying all those, you now should know you can compile a program
with -D_POSIX_SOURCE or -D_GNU_SOURCE (read < features.h> for details).
With a few modifications you can even use -DSYSV, -DUSG or -DBSD. Some
codes need to define -DSTDC_HEADERS for ANSI C compiler like gcc here.

Please read the header files for details. Maybe you should get a book
on POSIX. Any suggestion of the book list?

To use malloc () and calloc () safely under Linux, please include
< stdlib.h> and don't define NO_FIX_MALLOC.

BTW, gcc -traditional should work with gcc 2.2.2d or above.

			  SCO's Case Against IBM

November 12, 2003 - Jed Boal from Eyewitness News KSL 5 TV provides an
overview on SCO's case against IBM. Darl McBride, SCO's president and CEO,
talks about the lawsuit's impact and attacks. Jason Holt, student and 
Linux user, talks about the benefits of code availability and the merits 
of the SCO vs IBM lawsuit. See SCO vs IBM.

Note: The materials and information included in these Web pages are not to
be used for any other purpose other than private study, research, review
or criticism.