On Fri, May 04, 2007 at 04:31:49PM -0700, Jeremy Fitzhardinge wrote: > Quentin Godfroy wrote: > > + elf_ppnt = elf_phdata; > > + for (i = 0; i< loc->elf_ex.e_phnum; i++, elf_ppnt++) > > + if (elf_ppnt->p_type == PT_PHDR) { > > + phdr_addr = elf_ppnt->p_vaddr; > > > > Won't this break with ET_DYN executables? And besides, isn't this the > same thing? Indeed, I haven't seen that. For ET_DYN executables, it could be done a thing like load_addr+elf_ppnt->p_vaddr (in the function that creates the auxv, as ity has access to the elf header), and for ET_EXEC do what I propose. I think this is trivial to do. I'll do it as soon as I come back in front of my machine. > Shouldn't PT_PHDR->p_vaddr point to the vaddr of the Phdr > table itself? I don't understand. Yes it is what it is supposed to be, and the kernel is supposed to give the vaddr of the phdr table to the interpreter and not load addr + offset of phdr in file, which is sometimes wrong. - To unsubscribe from this list: send the line "unsubscribe linux-fsdevel" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html