[comp.unix.aux] A/UX 2.0 shared libraries

tody@noao.edu (Doug Tody X217) (03/23/90)

From article <7360@goofy.Apple.COM>, by dwb@sticks.apple.com (David Berry):
> 
> 	The A/UX Shared Library facility allows you to create dynamically
> loaded, but statically linked, shared libraries.  The libraries are bound
> at a fixed address and a jump table is bound into the caller.  At load time
> the appropriate libraries are matched up with the binary and loaded via the
> normal demand page scheme.

Sounds like a good approach.  Static linking avoids the need to have
compilers that can generate position independent code, and avoids the
inefficiencies associated with executing position independent code,
performing dynamic linking, and modifying global data addresses in the
text segment which prevents sharing the affecting pages.  The only thing
I am not clear on is what you do with initialized global data (bss).
Is this shared if not modified?  Are the pages initially shared and then
copied on modify?  Are the facilities for mapping the shared text and
shared/copy-on-modify data pages internal to the exec system call, or
are there new system calls to map files into memory?  (This last would be
very powerful if it has been make available as a general facility!).
Regardless, thanks very much for providing a shared library facility.
What you describe should work well and will benefit large applications
enormously.

-- 
Doug Tody, National Optical Astronomy Observatories, Tucson AZ, 602-325-9217
UUCP: {arizona,decvax,ncar}!noao!tody  or  uunet!noao.edu!tody 
Internet: tody@noao.edu             SPAN/HEPNET: NOAO::TODY (NOAO=5355)