2017-03-09 2 views
0

est-il possible de séparer le .text dans les pages alignées 4K. Par exemple, je l'ai écrit un programme simple et utilisé readelf -a a.out pour vider les têtes de section:Comment séparer la section .text en une adresse 4K alignée dans Linux ELF

[Nr] Name    Type   Addr  Off Size ES Flg Lk Inf Al 
    ... ... 
    [11] .init    PROGBITS  00000470 000470 000023 00 AX 0 0 4 
    [12] .plt    PROGBITS  000004a0 0004a0 000060 04 AX 0 0 16 
    [13] .text    PROGBITS  00000500 000500 000342 00 AX 0 0 16 
    [14] .fini    PROGBITS  00000844 000844 000014 00 AX 0 0 4 

Comment puis-je mettre .text dans une page alignée 4K (par exemple, Adr pour .text être 0x1000)?

Merci!

+0

* Pourquoi * vous souciez-vous de l'alignement des sections? Contrairement à l'alignement * segment * (les segments sont * déjà * alignés, voir 'readelf -Wl'), l'alignement * section * n'a presque jamais d'importance après le dernier lien. –

Répondre

0

L'outil responsable du problème que vous postez est ld(1) (l'éditeur de liens) Il contient un manuel complet décrivant le langage scriptable utilisé pour aligner les pages et créer le programme final. Il suffit de lire ce manuel (je me réfère au manuel ld, pas à la page de manuel)

Une fois que vous l'avez lu, vous pouvez créer un fichier miniscript qui, basé sur le script linux standard, force *(.text) segments être aligné sur la page et l'utiliser pour lier votre programme.