How can I reliably move the variable dynamic shared object linux-gate.so.1 that the kernel puts into the address space upon execve()? At Elf32_Ehdr.e_entry, my code sees the Elf32_auxv entries AT_SYSINFO and AT_SYSINFO_EHDR, allocates a page where I want it, copies from AT_SYSINFO_EHDR, then updates those auxv entries. But /proc/PID/auxv still remembers the old values, is read-only, and some code is using them by setting the pc to the old value for __kernel_sigreturn. --