Quote:
|
Originariamente inviato da ilsensine
No; gcc_s contiene delle funzioni ausiliarie. Quei .o che ho elencato servono per fare un pò di black magic in fase iniziale e finale. In particolare, crti.o definisce gli entry/exit point _init/_fini. crtbeginS.o "marca" l'inizio delle sezioni elf .ctor e .dtor, mettendo i simboli __CTOR_LIST__ e __DTOR_LIST__; inoltre definisce la funzione __do_global_dtors_aux. Dopo questo file si possono linkare gli oggetti del programma; le funzioni di costruzione/distruzione finiranno nelle sezioni .ctor e .dtor, accodate ai demarcatori di inizio. Quindi l'oggetto crtendS.o chiude le sezioni, inserendo i simboli __CTOR_END__ e __DTOR_END__; in più definisce la funzione __do_global_ctors_aux.
crtn.o "chiude" l'oggetto elf con dei limitatori; non ho ben capito a cosa serva, ma se non lo metto ottengo un segfault alla chiusura.
|
crtn.o a quanto ho capito si occupa di "parametrizzare" la sezione .init e .fini del binario ELF in modo da includere istruzioni di ritorno.