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