util: Add own prototype for __clone2() on ia64

ia64 needs to use __clone2() as clone() is not available, but glibc
doesn't export the prototype. Take it from clone(2) to avoid an
implicit declaration:

util.c: In function ‘do_clone’:
util.c:512:16: warning: implicit declaration of function ‘__clone2’ [-Wimplicit-function-declaration]
  512 |         return __clone2(fn, stack_area + stack_size / 2, stack_size / 2,
      |                ^~~~~~~~

Signed-off-by: Stefano Brivio <sbrivio@redhat.com>
This commit is contained in:
Stefano Brivio 2023-02-27 17:49:23 +01:00
parent b1b75bd73a
commit c538ee8d69

9
util.c
View file

@ -495,6 +495,15 @@ int write_file(const char *path, const char *buf)
return len == 0 ? 0 : -1; return len == 0 ? 0 : -1;
} }
#ifdef __ia64__
/* Needed by do_clone() below: glibc doesn't export the prototype of __clone2(),
* use the description from clone(2).
*/
int __clone2(int (*fn)(void *), void *stack_base, size_t stack_size, int flags,
void *arg, ... /* pid_t *parent_tid, struct user_desc *tls,
pid_t *child_tid */ );
#endif
/** /**
* do_clone() - Wrapper of __clone2() for ia64, clone() for other architectures * do_clone() - Wrapper of __clone2() for ia64, clone() for other architectures
* @fn: Entry point for child * @fn: Entry point for child