gcc -nostdlib a _start a jaderne volani exit

xmail listy ric.linux na os3.os.ds.mfcr.cz
Pátek Srpen 18 13:17:01 CEST 2000


> > Pri kompilaci meho C zdrojaku, ktery neobsahuje zadne GLIBC funkce
> > pomoci gcc 2.7.2.3 s parametrem "-nostdlib" mi hlasi pri linkovani ze
> > nemuze najit "__errno_location".
> > Zjistil jsem ze je to zpusobeno "#iclude <errno.h>" - ovsem to ja
> > potrebuju, protoze pouzivam volani jadra.
> 
> V tom pripade tam dejte "#include <linux/errno.h>" (stejne to nebude
> portabilni, tak co).
> 
Dobre udelam


> > Jak je to s parametry predavanymi na prikazove radce (argc,argv) a co
> > enviroment? Bude se mi pri spusteni spoustet jako prvni funkce main,
> > nebo se spusti jeste neco pred ni?
> 
> V prvni rade se to do main vubec nedostane, protoze main je funkce volana
> z jine funkce obsazene v /usr/lib/crt1.o (nebo gcrt1.o, kdyz tam pridate
> profiling). Standardni linker script nastavuje vstupni adresu na symbol
> _start. Kdybyste nepotreboval pristup k parametrum, tak byste mohl misto
> main() napsat _start()
> 
Dobre udelam (main -> _start)


>  (jenom se z teto funkce nesmite vratit, musite
> zavolat _exit()).
> 
Funkci _exit jsem taky hledal - a nenasel - mohu pouzit jaderne volani exit ?
(man 2 exit)


>  Jestli argv/envp chcete, pak bude nejlepsi, kdyz si
> sam ve zdrojacich jadra a/nebo glibc najdete, jakym zpusobem se
> predavaji. :) (Na prvni pohled to vypada, za na zasobniku je rada
> ukazatelu na jednotlive parametry, pak nula, pak ukazatele na environment,
> pak zase nula.)
> 
Mrknu se na to i kdyz parametry ani enviroment momentalne nepotrebuji.


Dekuji Richard Sputa



Další informace o konferenci Linux