[TUHS] shared objects in Unix

Clem Cole clemc at ccc.com
Fri Mar 30 10:22:14 AEST 2018


Paul,

The point is that there were a number of different shared library
implementations for UNIX over the years.  That was one of the 'knocks' when
comparing VMS to 4.1BSD in the early 80s.   VMS had shared libraries from
the start.   I'm pretty sure the first unix to support shared libraries was
CMU's Mach using its modified about called macho, which lives today in Mac
OSX.     BSD4.2 had started to implement it, but it was incomplete so folks
like Sun and Masscomp each did their own scheme, both based on modified
a.out. A big problem was every vendor messed with a.out in a different way
-- so Sun's, Masscomp and Apollo's versions were all a little different and
you a linker guy, you know that a.out was not a great format for same.

With System V.3, AT&T introduced was an a new file format, called the
Common Object File Format - *a.k.a.* COFF. SVR3 supported shared libs.  In
fairness, COFF was a huge improvement over a.out, but it was done when AT&T
was in its 'consider it standard' time and trying to force its will and
wanted licensing fees.   Let's say that failed for non-technical reasons.
Unfortunately, it lead to more confusion and we ended up a number of
different COFF-almost, sort-of, extensions.  IIRC, IBM went with a modified
COFF, but again we were in a cold war of who could do what.  I remember
that the time, the Gnu guys wrote tool called 'robitussin' - which 'cured
COFFs.'

With, AT&T's SVR4 release the world was introduced to the 'Extended Linker
Format' - ELF, which fixed a number of issues with COFF, the primary one
being that it could loaded images faster and you could page from directly,
which neither a.out nor COFF could easily.  Again IIRC, SVR4's linker could
handled AT&T's COFF files.

I have never known the legals on it, but some how the details of ELF did
become public and somebody reimplemented the GNU compilers to use it and
AT&T for whatever reason did not complain (maybe the had their hands full
at time with BSDi case).   Anyway, eventually both Linux and FreeBSD
switched to that version of Gnu and its pretty much been stable since.
ᐧ
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://minnie.tuhs.org/pipermail/tuhs/attachments/20180329/455b07c7/attachment.html>


More information about the TUHS mailing list