Variatic functions such as printf can be wrapped using dlsym because it has a va_list version vprintf. So,
int printf(const char *format, ...); //is equivalent to
int vprintf(const char *format, va_list ap);
citing https://stackoverflow.com/a/51627404/6353189 which shows exactly this.
But since I don't see a va_list version of the clone syscall on linux, don't know how to wrap it.