J'ai essayé ce qui suit, mais le fichier résultant est toujours un elfe et non purement le contenu de la section.
$ objcopy --only-section=<name> <infile> <outfile>
Je veux juste le contenu de la section. Y a-t-il une utilité qui peut faire cela? Des idées?
Plutôt inélégant hack autour de objdump
et dd
:
IN_F=/bin/echo
OUT_F=./tmp1.bin
SECTION=.text
objdump -h $IN_F |
grep $SECTION |
awk '{print "dd if='$IN_F' of='$OUT_F' bs=1 count=$[0x" $3 "] skip=$[0x" $6 "]"}' |
bash
Les objdump -h
Produit une sortie prévisible contenant une section décalée dans le fichier ELF. J'ai fait le awk
pour générer une commande dd
pour la coquille, puisque dd
ne prend pas en charge les numéros hexadécimaux. Et nourri la commande de shell.
Dans le passé, j'ai fait tout cela manuellement, sans faire de scripts, car il est rarement nécessaire.
Utilisez le -O binary
format de sortie:
objcopy -O binary --only-section=.text foobar.elf foobar.text
Juste vérifié avec avr-objcopy
et une image d'AVR elfe .text
section.
Notez que si, comme indiqué TIM ci-dessous, votre section n'a pas le drapeau Alloc, vous devrez peut-être ajouter --set-section-flags .text=alloc
Pour pouvoir l'extraire.
Démarrez toutes les sections dans des fichiers séparés.
readelf -a filename|grep "NULL\|LOAD"| (x=0;while read a;do echo "$x $a"|awk '{print "dd if=143 of=filename.section."$1" bs=1 skip=$((" $3")) count=$(("$6"))"}';let x=x+1;done)|bash