Shared libraries

Sean Eric Fagan sef at kithrup.COM
Mon May 6 16:20:42 AEST 1991


In article <1991May3.134905.42465 at eagle.wesleyan.edu> amolitor at eagle.wesleyan.edu writes:
>	I've not noticed anyone mention the VMS implementation. It's my
>impression that the VMS shared libarary system is Done Right.
>I believe that VMS a) uses the
>copy-on-write abilities of it's memory system to deal with static data
>areas gracefully and b) has proper load-time linking to libraries -- i.e.
>calls to library routines are exactly the same as any other call. 

You can do that if you have static addresses for your shared libraries.  The
SysVr3 shared libraries have that.  One question, though:  can you replace
VMS' equivalent of, say, malloc() and then have all of the routines in the
shared library use that?  If you do completely static linking (for
addresses), you can build a shared library that has printf at, say,
0xa0000000, and malloc() at, oh, 0xb0000000.  By setting the addresses when
you build the library, and putting those addresses into the equivalent of
libc.a, you can do things the way you describe.  But, as I said earlier, you
cannot then replace malloc() and have printf() use it (which was a
requirement in the AT&T shared library design).

-- 
Sean Eric Fagan  | "I made the universe, but please don't blame me for it;
sef at kithrup.COM  |  I had a bellyache at the time."
-----------------+           -- The Turtle (Stephen King, _It_)
Any opinions expressed are my own, and generally unpopular with others.



More information about the Comp.unix.internals mailing list