From: Krishna Balasubramanian (balasub@organ.cis.ohio-state.edu)
Date: 09/06/92


From: balasub@organ.cis.ohio-state.edu (Krishna Balasubramanian)
Subject: Re: Linux 0.97p2 compatibility, GCC/SHAREDLIBS/JUMPTABLES.
Date: Sun, 6 Sep 1992 17:13:04 GMT


GCC main releases, the corresponding linux version and some
distributions that use this version of GCC are approximately
as follows: (see the GCC FAQ to find out more).

1) 2.11c, May 19 linux 0.96 x11v1.0
2) 2.2.2, Jun 27 > linux 0.96ap4 rootdisk-0.97, x11v1.1, SLS, MCC-0.96c.
3) 2.2.2d Aug 12 > linux 0.97p1 rootdisk-0.97.1 , MCC-0.97p2

There will probably be a new GCC version with X11 in a week or so.

All these have shared libs which are incompatible with each other.
So if a program wants to load a specific shared image from /lib
you need to make sure the correct version exists or the program
will not work. Binaries on archive sites ususally use on of these
releases but there may be some made with intermediate ones.
A static binary will work unless there is a change to the linux
kernel that breaks it.

Use ldd to determine what shared images a program depends on.

If you use binaries that use many different shared libraries
you'll lose in terms of efficiency but I haven't noticed that.
If you use gcc with versions of the kernel that are very different
from those above, you are likely to run into an occassional
mysterious problem (see the GCC FAQ).
I believe I've seen an occasional core dump on account of
this too .... hard to say why with all these versions.
The only serious problems are those with the latest linux kernel
and gcc release! (well almost).

JUMP TABLES:
~~~~~~~~~~~~
2.2.2d has jump tables but the linux mm underwent massive change
so the jump tables major version has been changed.
Whenever incompatible changes are made in the libraries,
the major number of the library will change as in:
libm.so.2.xx to libm.so.3.xx
The next gcc release will have jump tables which will last for a few
future releases. This means that with the new release you can make
binaries which will work with the next few releases if linked with
-jump instead of having to use -static.

krishna