Vím, že je to stará otázka, ale našel jsem pracovní příklad, který mi pomohl použít jej na můj projekt. (Pro případ, že by někdo narazil na tuto otázku)
převzato ze 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
podívejte se na ELFsh, který je nyní součástí projektu ERESI http://www.eresi-project.org/Mají spoustu dokumentace a skvělé využití svých nástrojů.
Následující odkazy mohou být užitečné:
- Výukový program "libelf by Example" obsahuje kapitolu o vytváření nových objektů ELF.
- Projekt elftoolchain má manuálové stránky popisující
libelf
's API podrobně.
V této otázce o záhlaví souborů ELF je několik (možná) souvisejících odpovědí. Přijatá odpověď uvedená pomocí objcopy
přidat sekce do souboru ELF a BSD bintools tvrdí, že má implementaci objcopy
licencovanou BSD které by mohly vyhovovat vašim potřebám.