Currently t_gotfn is declared differently on arm64 and elsewhere:
#ifdef __aarch64__
typedef void (*t_gotfn)(void *x);
#else
typedef void (*t_gotfn)(void *x, ...);
#endif
As reported by Debian bug #783824, the restrictive definition of t_gotfn on arm64 only
makes sense on iOS, but not on Linux (where different calling conventions are
used).
As the restrictive definition needlessly breaks builds on linux/arm64, this
patch applies to restrictive definition only on OSX/arm64 (rather than
any/arm64):
#if defined(__APPLE__) && defined(__aarch64__)
typedef void (*t_gotfn)(void *x);
#else
typedef void (*t_gotfn)(void *x, ...);
#endif