This is the mail archive of the elfutils-devel@sourceware.org mailing list for the elfutils project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: Elf64_Phdr


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 <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
  (ELF_C_READ_MMAP_PRIVATE,) or not.
  
  Cheers,
  
  Mark
          

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]