Index: sys/compat/netbsd32/netbsd32.h =================================================================== RCS file: /cvsroot/src/sys/compat/netbsd32/netbsd32.h,v retrieving revision 1.127 diff -u -r1.127 netbsd32.h --- sys/compat/netbsd32/netbsd32.h 3 Oct 2019 22:16:53 -0000 1.127 +++ sys/compat/netbsd32/netbsd32.h 18 Nov 2019 11:11:51 -0000 @@ -162,6 +162,10 @@ typedef uint64_t netbsd32_uint64 NETBSD32_INT64_ALIGN; #undef NETBSD32_INT64_ALIGN +/* Type used in siginfo, avoids circular dependencies between headers. */ +CTASSERT(sizeof(netbsd32_uint64) == sizeof(netbsd32_siginfo_uint64)); +CTASSERT(__alignof__(netbsd32_uint64) == __alignof__(netbsd32_siginfo_uint64)); + /* * all pointers are netbsd32_pointer_t (defined in ) */ Index: sys/compat/sys/siginfo.h =================================================================== RCS file: /cvsroot/src/sys/compat/sys/siginfo.h,v retrieving revision 1.8 diff -u -r1.8 siginfo.h --- sys/compat/sys/siginfo.h 30 Sep 2019 21:13:33 -0000 1.8 +++ sys/compat/sys/siginfo.h 18 Nov 2019 11:11:51 -0000 @@ -34,6 +34,14 @@ #ifdef _KERNEL +/* Avoids circular dependency with machine/netbsd32_machdep.h */ +#if defined(__x86_64__) +#define NETBSD32_SIGINFO_UINT64_ALIGN __attribute__((__aligned__(4))) +#else +#define NETBSD32_SIGINFO_UINT64_ALIGN __attribute__((__aligned__(8))) +#endif +typedef uint64_t netbsd32_siginfo_uint64 NETBSD32_SIGINFO_UINT64_ALIGN; + typedef union sigval32 { int sival_int; uint32_t sival_ptr; @@ -73,7 +81,7 @@ int _sysnum; int _retval[2]; int _error; - uint64_t _args[8]; /* SYS_MAXSYSARGS */ + netbsd32_siginfo_uint64 _args[8]; /* SYS_MAXSYSARGS */ } _syscall; struct {