c4757p
c4757p

Reputation: 1808

Adding section to ELF file

I need to be able to add an arbitrary section to an ELF file. I cannot use GPL code in this program, so BFD is out of the question. I can use libelf/gelf to read sections, but the documentation is fairly sparse for these, and I cannot figure out how to add a section. Does anybody know how to do this? I would rather not write my own ELF code.

Upvotes: 23

Views: 27658

Answers (5)

Ben
Ben

Reputation: 823

I know this is an old question but i found a working example that helped me to apply it to my project. (In case anyone stumbles upon this question)

taken from 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

Upvotes: 28

jkoshy
jkoshy

Reputation: 1863

The following links could be useful:

Upvotes: 3

user13993
user13993

Reputation: 6529

Haven't tried it (yet) myself but you might look at the function elf_newscn in libelf

Upvotes: 1

meik
meik

Reputation: 78

have a look at ELFsh, which is now part of the ERESI project http://www.eresi-project.org/ They have a lot of documentation and cool uses of their tools.

Upvotes: 2

Mark Rushakoff
Mark Rushakoff

Reputation: 258398

There's a few (possibly) related answers in this question about ELF file headers. The accepted answer mentioned using objcopy to add sections to an ELF file, and the BSD bintools claims to have a BSD-licensed implementation of objcopy that might suit your needs.

Upvotes: 21

Related Questions