/* Ltrace Test : trace-clone.c. Objectives : Verify that ltrace can trace to child process after clone called. This file was written by Yao Qi <qiyao@cn.ibm.com>. */ #define _GNU_SOURCE #include <stdio.h> #include <sys/types.h> #include <stdlib.h> #include <sched.h> #include <unistd.h> int child () { sleep(1); return 0; } typedef int (* myfunc)(); #define STACK_SIZE 1024 int main () { pid_t pid; static __attribute__ ((aligned (16))) char stack[STACK_SIZE]; #ifdef __ia64__ pid = __clone2((myfunc)&child, stack, STACK_SIZE, CLONE_FS, NULL); #else pid = clone((myfunc)&child, stack + STACK_SIZE, CLONE_FS, NULL); #endif if (pid < 0) { perror("clone called failed"); exit (1); } return 0; }