2010-09-30 3 views
2

Je crée un fichier exécutable ELF et j'ai besoin de savoir quelles sections sont requises par le système d'exploitation pour le charger et l'exécuter.Quelles sections sont requises pour un exécutable ELF utilisable?

Détails:

 
OS:    Ubuntu 10.04 (64-bit) 
Kernel version: 2.6.32-24 
Architecture:  i386 

Je me rends compte que les éléments suivants serait probablement nécessaire:

  • .text
  • .symtab
  • .rel.text

Y en a-t-il d'autres?

Répondre

4

"A Whirlwind Tutorial on Creating Really Teensy ELF Executables for Linux " contient des informations sur la façon de (ab) utiliser les différentes sections ELF pour rendre un fichier exécutable aussi petit que possible. Il contient également un lien vers la spécification ELF si vous avez besoin de plus d'informations. (C'est aussi une lecture assez amusante.) Peut-être que cela vous dira ce que vous devez savoir?

+0

Eh oui. Cela a énormément aidé! Merci! –

+3

Strictement parlant, vous n'avez pas besoin de ** ** sections. Le chargeur dynamique utilise les en-têtes de programme pour charger le fichier, pas les en-têtes de section. L'article arrive à cela, mais je voulais juste le mentionner explicitement. Si vous devez importer des symboles, vous pouvez le faire en ajoutant un segment PT_DYNAMIC. –

2

J'ai décidé de supprimer systématiquement les sections d'un fichier ELF généré par GCC.

j'ai pu supprimer un grand nombre des sections, mais ceux-ci ne pouvaient pas être enlevés et avoir l'exécutable sans exécuter encore une erreur de segmentation:

 
.dynsym 
.dynstr 
.gnu.version_r 
.rel.plt 
.init 
.plt 
.text 
.fini 
.ctors 
.dtors 
.dynamic 
.got.plt 
.data 
.strtab 
Questions connexes