So, I need to write an elf file. I have an open Elf * handle with read only
permission. I then need to update the program headers and next add a new
program header entry.
For that we create an Elf * handle with write permission, and create the
headers doing:
elf64_newphdr(new_elf, old_elf->e_phnum)
for loop: memcpy(newPhdr, oldPhdr, oldEhdr->e_phentsize);
This is done because prior to memcpy, I perform changes (updates) in the values
in the copied program headers.
Now I need to add a new program header. How can I insert a new program header
to the ones copied to newPhdr? The problem here is that I need to assess with
the updated headers where to place a new header. It seems I can't call
elf64_newphdr again on the new_elf handle.
Sasha
From: Sasha Da Rocha Pinheiro
Sent: Tuesday, June 25, 2019 5:09 PM
To: Mark Wielaard; Frank Ch. Eigler
Cc: elfutils-devel@sourceware.org
Subject: Re: Elf64_Phdr
What happens if I call elf64_newphdr() on the same Elf * but with different
size_t __cnt?
What happens to the previous headers?
Sasha
From: Mark Wielaard
Sent: Tuesday, June 25, 2019 12:56:04 AM
To: Sasha Da Rocha Pinheiro; Frank Ch. Eigler
Cc: elfutils-devel@sourceware.org
Subject: Re: Elf64_Phdr
On Tue, 2019-06-25 at 05:22 +, Sasha Da Rocha Pinheiro wrote:
> Oh, of course, that might be it.
>
> Do you know if when it's open with write permission, changes will be
> mapped back to the file?
That depends on whether it is opened with mmap MAP_PRIVATE
(ELF_C_READ_MMAP_PRIVATE,) or not.
Cheers,
Mark