Path: utzoo!mnetor!uunet!lll-winken!lll-lcc!ames!ncar!boulder!sunybcs!
bingvaxu!leah!itsgw!nysernic!rutgers!bellcore!tness7!mechjgh
From: mech...@tness7.UUCP (Greg Hackney )
Newsgroups: comp.sys.pyramid
Subject: shared libraries on Pyramid 9820 OSx4.1
Message-ID: <532@tness7.UUCP>
Date: 13 Apr 88 02:57:01 GMT
Lines: 20


I rec'd this question from a programmer, and
don't know the answer. Can someone answer it?

Thanks in advance.
--
Greg Hackney
Southwestern Bell Telephone Co.
{ihnp4 | bellcore}!tness7!mechjgh

. The programmers guide to SVR3 mentions shared
. libraries available in this release of UNIX
.
. Using shared libraries when compiling applications
. holds several advantages over using the standard archived libraries.
.   
. The standard c library is supposed to be available
. in shared form in /shlib/libc_s.
.   
. Unfortunately, this directory is not on the Pyramid.
. I thought OSx was supposed to be SVR3. (as well as BSD)

Path: utzoo!mnetor!uunet!lll-winken!lll-lcc!pyramid!csg
From: c...@pyramid.pyramid.com (Carl S. Gutekunst)
Newsgroups: comp.sys.pyramid
Subject: Re: shared libraries on Pyramid 9820 OSx4.1
Message-ID: <19461@pyramid.pyramid.com>
Date: 13 Apr 88 17:10:27 GMT
References: <532@tness7.UUCP>
Organization: Pyramid Technology Corp., Mountain View, CA
Lines: 74

In article <5...@tness7.UUCP> mech...@tness7.UUCP (Greg Hackney ) writes:
>. The programmers guide to SVR3 mentions shared
>. libraries available in this release of UNIX
>.
>. I thought OSx was supposed to be SVR3. (as well as BSD)

It is, almost.... :-)

Shared libraries and RFS are the two most visible pieces of SVR3 that are not
available in OSx. RFS is not available because it would be a big job to port
and *test*, and quite literally no one is asking for it. (Even the die-hard
System V users run NFS.) Shared libraries *are* something customers are asking
for, and it would be a big help now and even more in the future.

The fundamental problem in bringing up shared libraries is that we cannot do
it with our current BSD-derived (actually SunOS-derived) a.out file format.
Either we would have to add extensions to BSD a.out files to support shared
libraries, or switch to COFF.

Switching to COFF has a number of advantages. All the SVR3 code is already
written assuming COFF; we could drop it into OSx with few modifications. COFF
is (on paper) more extensible than the BSD a.out; the sections are identified
by simple character strings, so you can add new ones at will. Also, most of
Pyramid's best customers (RBOCs) use the System V universe as or more heavily
than the Berkeley universe, and would appreciate the SVR3 functionality of
ld, ar, etc., that would be gained.

The disadvantages are significant, too. COFF has used up all the fields for
classes of objects, which I have been told will make it impossible for a COFF
system to truly support ANSI C (which has new classes like const). We could
rearrange COFF, but we'd be losing the easy portability we sought.

Also, COFF would make the transition code in the kernel vastly more difficult.
Pyramid makes a big issue of binary portability, and the kernel that supported
shared libraries would still have to run the old a.out files, at least for one
major release. If we simply beat up the BSD a.out (which we have done before),
then the transition code is simple: a new magic number, look for new sections. 
Changes to the compiler backend are simple, too. If we've switched to COFF, we
need two completely different kernel loaders. And we would have to regression
test *EVERYTHING* in the whole system, since I'm quite sure that a lot of code
(especially Berkeley code) would break when a.out and library format changed.
(I suspect much Berkeley code writes on areas that would become read-only in a
shared-library environment.)

But making a new BSD a.out that supports shared libraries means major changes
to the SVR3 code, code which we don't understand as well as our own source.

The final decision was no dicision, for now anyway. The advantages of shared
libaries simply didn't outweigh the work required. It would have meant delays
for products that were considered much more important: virtual and mirrored
disk, new communications products, enhanced performance for Sysbase, diskless
NFS, etc. 

There *will* be shared libraries some day, but not today.

Parenthetical comment: The above paragraph also summaries my feelings on why
the AT&T/Sun deal is foolish, and a threat entirely different from what most
people think it is. No one of substance is demanding a merged UNIX -- it's all
purists, hackers, and those who have positioned themselves specifically to
take advantage of it. Programmer resources are *scarce*, and there are *LOTS*
of more important things for UNIX developers to be spending time on than
trying to fill in the gaps between UNIX variants! UNIX is at present a very
mediocre commercial OS, but is so powerful and extensible that this could be
remedied if anyone wanted to try.

Contrary to what all the pundits are saying, I see the SVR4 project doing far
more damage to the commercial success of UNIX than good, because important
things won't get done, while trivial ones flail around in search of a goal
they will never reach. Sun will go down in flames, AT&T will go out with a
wimper, and some of the of the best and brightest minds in the country will
have been wasted. When I consider the AT&T/Sun deal, it is not with fear (as
many UNIX vendors see it) or joyfull anticipation (as USENET readers seem to
see it), but with sadness at what could have been. 

<csg>