🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: ee.prog
Article #82

Re: Unixi Dynamic Library

#82
From: Toomas Kiisk
Date: Wed, 01 Mar 2000 00:00
58 lines
3587 bytes
On Wed, 1 Mar 2000, Rene Prillop wrote:

> Kunagi ammu Toomas Kiisk kirjutas:
> > > Kas *ĂŒleĂŒldse* on kuidagi vĂ”imalik teada saada suvalise
> > > mooduli/programmi (iseenda) tÀisnime (koos pathiga)?
> > ĂŒldiselt ei saa. /dev/kmem, procfs, kernfs, ... abiks
> > 
> KÔigepealt tÀnud. Nende abil on asi tÔesti vÔimalik, ent kasutamine
> kipub unixeid-mööda tugevalt erineva.
> 
> Uus kĂŒsimus selline: kui vĂ”tta soove vĂ€hemaks ja tahta saada teada
> ainult dynlibi enda nime (ilma pathita) ja/vÔi Libi laadija nime -- on
> see vÔimalik kuidagi lihtsamalt/universaalsemalt?
> Tean, et gnu libc sisaldab sellist vÔimalust extern muutuja kaudu.
> Aga huvi pakuks ka Solaris.
> 

Sa tahad midagi vÀga iseÀralikku. On variant, et kui sa tahad
*enda* kirjutatud programmi jaoks mingit erilist kÀitumist
tekitada, siis sead pĂŒsti mingi keskkonnamuutuja & laed teegi
kÀsitsi (dlopen ja sÔbrad). Teek siis konfigureerub vastavalt
keskkonnamuutujale. Teine vĂ”imalus on ĂŒritada protsessi
virtuaalmĂ€lust leida mingit spetsiifilist sĂŒmbolit. VĂ”i kirjutada
ise crt0 mis teeb midagi kavalat, nÀiteks tekitab mingile
fikseeritud aadressile argv[0] koopia mida shared libra tsekata
oskab. VÔi siis teeb keskkonna valmis och execve. VÔi siis sÀtib
argv vÔi __environ nagu tahab. VÔi kurat teab mis, igasuguseid
hÀkke annab vÀlja mÔelda lÔputult.

/dev/kmem sisaldab protsessi virtuaalmÀlusse kujutatud shared
librade nime ĂŒsna kindlasti, aga see nĂ”uab ĂŒĂŒratuid privileege
ja pole portaabel. Siis on veel eriti ebaportaablid lahendused,
nagu nÀiteks procfs, kus mÔne platvormi puhul on binaaride (sh
librade) nimed loetaval kujul olemas. MÔni libc vÔib binaaride
nimesid kusagil sÀilitada.

Tegelt, mÔistlikud shellid sÀtivad protsessi argv[0] tÀpselt
niisuguseks nagu kÀsurealt tipiti (vÔi siis aliase vÀÀrtuse),
sel eeldusel saab binaari leida ka $PATH otsinguga. Aga see
ei puutu shared libradesse eriti. VÔibolla ehk niiplaju, et
binaari pÀisest vÔib leida vihjeid, milliseid teeke ta kasutada
kavatseb ja ld konfi teades saab teada ka, kustkohast teegid
vÔetakse (nagu ldd teeb). Aga seda peab tsekkama enne kui
programm ohjad enda kÀtte saab - nÀiteks crt0 moodulis.

Siis on veel variandid, et tekitad iga platvormi jaoks mingi
spetsiifilise lahenduse ja kui see on vĂ”imatu, siis ĂŒtled
lihtsalt et soori vandid, teie platvorm pole toetatud ehk siis
on niijanaasuguste piirangutega.

Aga see kÔik on jama. Teegil ei tohiks asja olla sellega,
millisest failist ta laetud on vÔi mis kontekstis ta jookseb.


-- 

vix
Technical Details
Message-ID: <Pine.LNX.4.21.0003011927510.16255-100000@kiku.itsise>
Path: arc1-ca.pugleaf.net!unknown!not-for-mail
References: <388EA9BD.E95@softronic.ee> <Pine.LNX.4.21.0001261132080.31115-100000@kiku.itsise> <38BD09BD.2A08@softronic.ee>

Show Full Headers
Complete Article Headers
X-Google-Language: ESTONIAN,CP1257
X-Google-Thread: f8b3f,7d899d601c1e409b
X-Google-Attributes: gidf8b3f,public
X-Google-Thread: 1063a5,7d899d601c1e409b
X-Google-Attributes: gid1063a5,public
From: Toomas Kiisk <toomas.kiisk@mail.ee>
Subject: Re: Unixi Dynamic Library
Date: 2000/03/01
Message-ID: <Pine.LNX.4.21.0003011927510.16255-100000@kiku.itsise>
X-Deja-AN: 591852152
Content-Transfer-Encoding: QUOTED-PRINTABLE
References: <388EA9BD.E95@softronic.ee> <Pine.LNX.4.21.0001261132080.31115-100000@kiku.itsise> <38BD09BD.2A08@softronic.ee>
X-Sender: vix@kiku.itsise
Content-Type: TEXT/PLAIN; charset=iso-8859-1
X-Complaints-To: newsmaster@cyber.ee
X-Trace: keeks.cyber.ee 951933576 1346 195.50.202.13 (1 Mar 2000 17:59:36 GMT)
Organization: NNTP server at keeks.cyber.ee
Mime-Version: 1.0
NNTP-Posting-Date: 1 Mar 2000 17:59:36 GMT
Newsgroups: ee.prog,ee.arvutid.unix