2013-07-04 12 views
5

Ho scritto un programma molto semplice Hello World per informazioni sulle sezioni. Dopo aver usato objdump ho ottenuto tutte le sezioni. Sto usando ubuntu 12.04.Smontaggio di sezioni in un programma c

in uscita l'ho trovato così:

  1. smontaggio della sezione .init

  2. smontaggio della sezione .plt

  3. smontaggio della sezione .text

  4. __do_global_dtors_aux

  5. Lo smontaggio di sezione .fini

Voglio sapere che cosa quelle sezioni sono? quali dati memorizzano? Specialmente .plt e .fini. Informazioni su .init e .text Posso indovinare, ma per quanto riguarda gli altri?

+0

si può sapere come hai fatto a compilare questo file –

+0

primo 'gcc -o objectfile programname.c' poi' objectfile' objdump. – someone

risposta

0

From this handy page:

La sezione successiva che voglio citare è la sezione .plt. Questo contiene la tabella di salto che viene utilizzata quando chiamiamo funzioni nella libreria condivisa.

E from this page:

.fini

Questa sezione contiene istruzioni eseguibili che contribuiscono al codice di terminazione processo. Cioè, quando un programma esce normalmente, il sistema organizza per eseguire il codice in questa sezione.

0

potresti trovare questo breve tutorial utile. Contiene anche collegamenti alla letteratura correlata.

"Il linker demistificato, parte 1": http://www.rtos.be/?p=2166

spero che aiuta.

Fernando