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 <m...@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