#include #ifndef __NR_vfork #define __NR_vfork 190 #endif .text .type vfork, @function .globl vfork .align 4 /* Get rid of the stack modifications (popl/ret) after vfork() success. * vfork is VERY sneaky. One has to be very careful about what can be done * between a successful vfork and a a subsequent execve() */ vfork: /* grab the return address */ popl %ecx movl $__NR_vfork, %eax int $0x80 cmpl $-129, %eax jb 1f negl %eax pushl %eax call __set_errno orl $-1, %eax 1: jmp *%ecx