Article View: ee.prog
Article #82Re: Unixi Dynamic Library
From: Toomas Kiisk
Date: Wed, 01 Mar 2000 00:00
Date: Wed, 01 Mar 2000 00:00
58 lines
3587 bytes
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-mailReferences:
<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