2017-01-26 7 views
2

Existe-t-il un moyen de forcer la section de code de lieu gcc ou ld à la fin du fichier au format ELF de sortie? Peut-être que je peux les forcer à ne produire aucune autre section sauf .text si, par exemple, je n'ai rien dans .data, .rodata, .bss et d'autres sections?Permuter les sections dans ELF

+3

Vous pouvez faire n'importe quoi en écrivant un script de liaison personnalisé * * Lisez le manuel pour plus de détails. – fuz

+1

Comme dit Fuz avec des scripts de linker. Je serais curieux de connaître la situation particulière que vous avez où vous voulez faire cela? –

+0

@MichaelPetch Je veux ajouter du code juste après la section de code d'ELF. C'est juste une architecture d'application spécifique qui génère un code d'opération mais ne peut pas l'assembler par elle-même, elle a donc besoin d'un ELF pré-compilé, et s'y attache ensuite. Merci pour la réponse d'ailleurs! –

Répondre

0

La version minimale du script qui a fonctionné pour moi ressemblait à:

ENTRY(_start) 

SECTIONS 
{ 
    .data : { *(.data) } 
    .bss : { *(.bss) *(COMMON) } 
    .text : { *(.text) } 
} 

Mais après que je l'ai fait quelques recherches (docs here) J'ai remplacé par ce script par défaut (ld --verbose). Ensuite, je viens de placer la section de code à la toute fin du script verbeux et cela a parfaitement fonctionné.