Je sais que c'est une vieille question mais j'ai trouvé un exemple de travail qui m'a aidé à l'appliquer à mon projet. (Au cas où quelqu'un tomberait sur cette question)
extrait de Sourceware Mail Archiv
$ echo 'int main() { puts ("Hello world"); }' | gcc -x c - -c -o hello.o
$ echo "this is my special data" >mydata
$ objcopy --add-section .mydata=mydata \
--set-section-flags .mydata=noload,readonly hello.o hello2.o
$ gcc hello2.o -o hello
$ ./hello
Hello world
$ objdump -sj .mydata hello
jetez un œil à ELFsh, qui fait maintenant partie du projet ERESIhttp://www.eresi-project.org/Ils ont beaucoup de documentation et des utilisations intéressantes de leurs outils.
Les liens suivants pourraient être utiles :
- Le tutoriel "libelf par l'exemple" contient un chapitre sur la création de nouveaux objets ELF.
- Le projet elftoolchain a des pages de manuel décrivant
libelf
de l'API en détail.
Il y a quelques réponses (éventuellement) liées dans cette question sur les en-têtes de fichiers ELF. La réponse acceptée mentionnée en utilisant objcopy
pour ajouter des sections à un fichier ELF, et les bintools BSD prétendent avoir une implémentation sous licence BSD de objcopy
qui pourrait répondre à vos besoins.