1/* Ltrace Test : trace-clone.c.
2   Objectives  : Verify that ltrace can trace to child process after
3   clone called.
4
5   This file was written by Yao Qi <qiyao@cn.ibm.com>.  */
6#define _GNU_SOURCE
7#include <stdio.h>
8#include <sys/types.h>
9#include <stdlib.h>
10#include <sched.h>
11#include <unistd.h>
12
13int child ()
14{
15  sleep(1);
16  return 0;
17}
18
19typedef int (* myfunc)();
20
21#define STACK_SIZE 1024
22
23int main ()
24{
25  pid_t pid;
26  static __attribute__ ((aligned (16))) char stack[STACK_SIZE];
27
28#ifdef __ia64__
29  pid = __clone2((myfunc)&child, stack, STACK_SIZE, CLONE_FS, NULL);
30#else
31  pid = clone((myfunc)&child, stack + STACK_SIZE, CLONE_FS, NULL);
32#endif
33  if (pid < 0)
34    {
35      perror("clone called failed");
36      exit (1);
37    }
38
39  return 0;
40}
41