Sé que esta es una pregunta antigua, pero encontré un ejemplo de trabajo que me ayudó a aplicarlo a mi proyecto. (En caso de que alguien se tropiece con esta pregunta)
tomado 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
echa un vistazo a ELFsh, que ahora es parte del proyecto ERESIhttp://www.eresi-project.org/Tienen mucha documentación y usos geniales de sus herramientas.
Los siguientes enlaces podrían ser útiles:
- El tutorial "libelf by Example" tiene un capítulo sobre la creación de nuevos objetos ELF.
- El proyecto elftoolchain tiene páginas de manual que describen
libelf
API de en detalle.
Hay algunas respuestas (posiblemente) relacionadas en esta pregunta sobre los encabezados de archivos ELF. La respuesta aceptada mencionada usando objcopy
para agregar secciones a un archivo ELF, y BSD bintools afirma tener una implementación con licencia BSD de objcopy
que podría satisfacer sus necesidades.