*BSD News Article 5039


Return to BSD News archive

Path: sserve!manuel!munnari.oz.au!mel.dit.csiro.au!yarra!yarrina.connect.com.au!melba.bby.oz.au!gnb
From: gnb@duke.bby.com.au (Gregory N. Bond)
Newsgroups: comp.unix.bsd
Subject: Re: Shared Libs for X11?, was Re: 386bsd -- The New Newsgroup
Message-ID: <1992Sep14.232949.9093@bby.com.au>
Date: 14 Sep 92 23:29:49 GMT
References: <18iprpINNg6e@agate.berkeley.edu> <1992Sep8.200625.2894@socrates.umd.edu>
	<veit.716026274@du9ds3> <18lkkkINN14d@agate.berkeley.edu>
	<veit.716107923@du9ds3> <7dnL02y821gh01@JUTS.ccc.amdahl.com>
	<veit.716291291@du9ds3>
Sender: usenet@bby.com.au (news READER id)
Organization: Burdett, Buckeridge & Young, Melbourne, Australia
Lines: 21
In-Reply-To: veit@du9ds3.uni-duisburg.de's message of 12 Sep 92 09:48:11 GMT
Nntp-Posting-Host: duke

>>>>> On 12 Sep 92 09:48:11 GMT, veit@du9ds3.uni-duisburg.de (Holger Veit) said:

>> The program loader (kern_execve) resolves the lib references to the
>> shared area, and makes the program's shared data segment
>> copy-on-write so that it does not influence the memory of the
>> library server.

The kernel is probably the wrong place to put all this.  (kern_execve
is hairy enough; witness the number of patches).  Instead, do it like
SunOs does: include just enough stuff in the prolog to mmap() in a
dynamic linker (/usr/lib/ld.so) written in PIC (with no global data)
and jump to it.  Have it do all the fixups, then return.  Unmmap it
and call the main() routine.

This could be done completely independant of the kernel.

Greg.
--
Gregory Bond <gnb@bby.com.au> Burdett Buckeridge & Young Ltd Melbourne Australia
``USL has never sold long distance.  You're going after the wrong men in black 
  hats.  (Or, in the case of Plan 9, black space suits)'' - Tom Limoncelli