Sasha Da Rocha Pinheiro darochapinhe@wisc.edu
Wed Jun 26 20:02:00 GMT 2019

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.


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?
 From: Mark Wielaard <mark@klomp.org>
  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 +0000, 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

More information about the Elfutils-devel mailing list