lib/syscall_shim/arch/x86_64: Restore `RIP` from the auxiliary stack
Before this patch, we would simply rely on the original pushed RIP
following the call instruction that got to our assembly wrapper.
However this may not be the same in cases such as those of the clone
or vfork system calls if the child were to reuse the stack: the child
could pop the return address before the parent gets the chance to do it
and even call some other functions (like execve), overwriting whatever
previously was at the bottom of the stack that the parent had prior
to invoking the system call.
To solve this, simply use the RIP pushed at the beginning of the wrapper
instead of assuming the bottom of the stack is untouched.