Posted By: pivson (Pijte pivo, je zdrave !) on 'CZprogram' Title: GCC and Elf Date: Thu Sep 6 11:38:51 2001 Caute... Mam gcc kompiler. Dejme tomu ze mam kod typu: const char* ble="..."; Potom nejaky dalsi konstanty. Potom samozrejmne non-read only data, prodecury, etc... Elf si nahravam/relokuju sam (to jest prez virtualni pamet si udelam stranky, etc.) No a muj problem spociva v tom, ze on sice udela vsechny sekce spravne (to jest, konstanty josu v .rodata (pomijim dalsi sekce). To by taky bylo blby kdyby top nebylo spravne ;o) No, a v program hlavicce (tedy segmentech) se tato sekce (bohuzel) nachazi (jak by clovek cekal) v loadable sekci, jenze zaroven s .text - tedy page prava jsou R X. Vadi mi samozrejmne ze mohu provest 'konstantu'. Tedy pokud budu mit nejakej ptr na fci, a nejakou nahodou (chybou v pgmu) se mi presune to teto variable konstanta treba na string, tak naprosto bez problemu se pusti 'konstanta' - tedy nejakej bordel co zrovna bude tvorit instrukce. A ja mam 2 cesty, nebot nehodlam toto velice pekne potencialni nebezpeci nechat: 1. parsovat si ELF a udelat segmentu podle svyho 2. nejaky prinutit gccc aby naprosto idiotsky nedaval dohromady konstanty a code (1) neni tak hrozna prace, ale pokud existuje (2) tak radsi bych toto :) ps: aby mne nekdo nenapadnul, ze by to stejne pravdepodobne skonci s 'segfault' nebo tak, necht tedy dotycny si uvedomi, ze nahoda je blbec a zrovna tam muze bejt u smyslu plnej kod, a hlavne, ten elf poustim pod ruznejma OS (proto svuj loader, ikdyz pripmarne kompilujeme pod unixama) a pod jinejma systemama se da dobre debugovat kdyz uz k takovy situaci dojde tak si nenecham znicit stack a podobny veci, neb se rad podivam jak k ty chybe doslo a odkad vzesla... pss: a nehodlam se bavit o tom, ze gcc usetri par bajtiku kdyz ty segmenty spoji dohromady... Nenahravam program co ma 60 bajtu aby mne to bolelo. A max 4K je dneska opravdu hnilobne malo. A pro rejlapy co trdi ze debuger je zbytecnej: nepovazuju se za takove bohy jako oni povazuji sebe a pocitam s tim ze jsem delal chyby, delam je a budu delat - a udelam vse proto aby kdyz uz tam takova chyba bude, aby to 'padlo' na vyjimce (nejaky) a nebudu riskovat ze to 'nahodou' pujde a padne mi to o par desitek hodin pozdeji nekde uplne jinde. Dik :) Pivson I a posledni, z bozi vule pivar A co budou delat cesi ??? Deme na pivo !