#include #include /* Capture the LibMPU values before the public assembler header is included. */ enum { LIBMPU_EUNKNOWN = __EUNKNOWN__, LIBMPU_I_ESIZE = __I_ESIZE__, LIBMPU_I_ESHIFT = __I_ESHIFT__, LIBMPU_I_ENUMBER = __I_ENUMBER__, LIBMPU_I_ERADIX = __I_ERADIX__, LIBMPU_I_MAX_ERRNO = __I_MAX_ERRNO, LIBMPU_R_ESIZE = __R_ESIZE__, LIBMPU_R_ETRUNC = __R_ETRUNC__, LIBMPU_R_MAX_ERRNO = __R_MAX_ERRNO, LIBMPU_C_EDIVZEROBYZERO = __C_EDIVZEROBYZERO__, LIBMPU_C_ELOGOFZERO = __C_ELOGOFZERO__, LIBMPU_C_EPOWOFZERO = __C_EPOWOFZERO__, LIBMPU_C_MAX_ERRNO = __C_MAX_ERRNO, LIBMPU_DOMAIN = __DOMAIN__, LIBMPU_SING = __SING__, LIBMPU_OVERFLOW = __OVERFLOW__, LIBMPU_UNDERFLOW = __UNDERFLOW__, LIBMPU_TLOSS = __TLOSS__, LIBMPU_PLOSS = __PLOSS__, LIBMPU_INVALID = __INVALID__, LIBMPU_INEXACT = __INEXACT__, LIBMPU_M_MAX_ERRNO = __M_MAX_ERRNO }; #include "../cpu/cpu-errno.h" #include #include #define CHECK_SYSTEM_ERRNO(name) \ do { \ if( (name) != (__MCPU_ ## name) ) \ { \ fprintf( stderr, #name " ABI mismatch: public=%d internal=%d\n", \ (int)(name), (int)(__MCPU_ ## name) ); \ return( 1 ); \ } \ } while( 0 ) int main( void ) { CHECK_SYSTEM_ERRNO( EPERM ); CHECK_SYSTEM_ERRNO( ENOENT ); CHECK_SYSTEM_ERRNO( ESRCH ); CHECK_SYSTEM_ERRNO( EINTR ); CHECK_SYSTEM_ERRNO( EIO ); CHECK_SYSTEM_ERRNO( ENXIO ); CHECK_SYSTEM_ERRNO( E2BIG ); CHECK_SYSTEM_ERRNO( ENOEXEC ); CHECK_SYSTEM_ERRNO( EBADF ); CHECK_SYSTEM_ERRNO( ECHILD ); CHECK_SYSTEM_ERRNO( EAGAIN ); CHECK_SYSTEM_ERRNO( ENOMEM ); CHECK_SYSTEM_ERRNO( EACCES ); CHECK_SYSTEM_ERRNO( EFAULT ); CHECK_SYSTEM_ERRNO( ENOTBLK ); CHECK_SYSTEM_ERRNO( EBUSY ); CHECK_SYSTEM_ERRNO( EEXIST ); CHECK_SYSTEM_ERRNO( EXDEV ); CHECK_SYSTEM_ERRNO( ENODEV ); CHECK_SYSTEM_ERRNO( ENOTDIR ); CHECK_SYSTEM_ERRNO( EISDIR ); CHECK_SYSTEM_ERRNO( EINVAL ); CHECK_SYSTEM_ERRNO( ENFILE ); CHECK_SYSTEM_ERRNO( EMFILE ); CHECK_SYSTEM_ERRNO( ENOTTY ); CHECK_SYSTEM_ERRNO( ETXTBSY ); CHECK_SYSTEM_ERRNO( EFBIG ); CHECK_SYSTEM_ERRNO( ENOSPC ); CHECK_SYSTEM_ERRNO( ESPIPE ); CHECK_SYSTEM_ERRNO( EROFS ); CHECK_SYSTEM_ERRNO( EMLINK ); CHECK_SYSTEM_ERRNO( EPIPE ); CHECK_SYSTEM_ERRNO( EDOM ); CHECK_SYSTEM_ERRNO( ERANGE ); CHECK_SYSTEM_ERRNO( EDEADLK ); CHECK_SYSTEM_ERRNO( ENAMETOOLONG ); CHECK_SYSTEM_ERRNO( ENOLCK ); CHECK_SYSTEM_ERRNO( ENOSYS ); CHECK_SYSTEM_ERRNO( ENOTEMPTY ); CHECK_SYSTEM_ERRNO( ELOOP ); CHECK_SYSTEM_ERRNO( ENOMSG ); CHECK_SYSTEM_ERRNO( EIDRM ); CHECK_SYSTEM_ERRNO( ECHRNG ); CHECK_SYSTEM_ERRNO( EL2NSYNC ); CHECK_SYSTEM_ERRNO( EL3HLT ); CHECK_SYSTEM_ERRNO( EL3RST ); CHECK_SYSTEM_ERRNO( ELNRNG ); CHECK_SYSTEM_ERRNO( EUNATCH ); CHECK_SYSTEM_ERRNO( ENOCSI ); CHECK_SYSTEM_ERRNO( EL2HLT ); CHECK_SYSTEM_ERRNO( EBADE ); CHECK_SYSTEM_ERRNO( EBADR ); CHECK_SYSTEM_ERRNO( EXFULL ); CHECK_SYSTEM_ERRNO( ENOANO ); CHECK_SYSTEM_ERRNO( EBADRQC ); CHECK_SYSTEM_ERRNO( EBADSLT ); CHECK_SYSTEM_ERRNO( EBFONT ); CHECK_SYSTEM_ERRNO( ENOSTR ); CHECK_SYSTEM_ERRNO( ENODATA ); CHECK_SYSTEM_ERRNO( ETIME ); CHECK_SYSTEM_ERRNO( ENOSR ); CHECK_SYSTEM_ERRNO( ENONET ); CHECK_SYSTEM_ERRNO( ENOPKG ); CHECK_SYSTEM_ERRNO( EREMOTE ); CHECK_SYSTEM_ERRNO( ENOLINK ); CHECK_SYSTEM_ERRNO( EADV ); CHECK_SYSTEM_ERRNO( ESRMNT ); CHECK_SYSTEM_ERRNO( ECOMM ); CHECK_SYSTEM_ERRNO( EPROTO ); CHECK_SYSTEM_ERRNO( EMULTIHOP ); CHECK_SYSTEM_ERRNO( EDOTDOT ); CHECK_SYSTEM_ERRNO( EBADMSG ); CHECK_SYSTEM_ERRNO( EOVERFLOW ); CHECK_SYSTEM_ERRNO( ENOTUNIQ ); CHECK_SYSTEM_ERRNO( EBADFD ); CHECK_SYSTEM_ERRNO( EREMCHG ); CHECK_SYSTEM_ERRNO( ELIBACC ); CHECK_SYSTEM_ERRNO( ELIBBAD ); CHECK_SYSTEM_ERRNO( ELIBSCN ); CHECK_SYSTEM_ERRNO( ELIBMAX ); CHECK_SYSTEM_ERRNO( ELIBEXEC ); CHECK_SYSTEM_ERRNO( EILSEQ ); CHECK_SYSTEM_ERRNO( ERESTART ); CHECK_SYSTEM_ERRNO( ESTRPIPE ); CHECK_SYSTEM_ERRNO( EUSERS ); CHECK_SYSTEM_ERRNO( ENOTSOCK ); CHECK_SYSTEM_ERRNO( EDESTADDRREQ ); CHECK_SYSTEM_ERRNO( EMSGSIZE ); CHECK_SYSTEM_ERRNO( EPROTOTYPE ); CHECK_SYSTEM_ERRNO( ENOPROTOOPT ); CHECK_SYSTEM_ERRNO( EPROTONOSUPPORT ); CHECK_SYSTEM_ERRNO( ESOCKTNOSUPPORT ); CHECK_SYSTEM_ERRNO( EOPNOTSUPP ); CHECK_SYSTEM_ERRNO( EPFNOSUPPORT ); CHECK_SYSTEM_ERRNO( EAFNOSUPPORT ); CHECK_SYSTEM_ERRNO( EADDRINUSE ); CHECK_SYSTEM_ERRNO( EADDRNOTAVAIL ); CHECK_SYSTEM_ERRNO( ENETDOWN ); CHECK_SYSTEM_ERRNO( ENETUNREACH ); CHECK_SYSTEM_ERRNO( ENETRESET ); CHECK_SYSTEM_ERRNO( ECONNABORTED ); CHECK_SYSTEM_ERRNO( ECONNRESET ); CHECK_SYSTEM_ERRNO( ENOBUFS ); CHECK_SYSTEM_ERRNO( EISCONN ); CHECK_SYSTEM_ERRNO( ENOTCONN ); CHECK_SYSTEM_ERRNO( ESHUTDOWN ); CHECK_SYSTEM_ERRNO( ETOOMANYREFS ); CHECK_SYSTEM_ERRNO( ETIMEDOUT ); CHECK_SYSTEM_ERRNO( ECONNREFUSED ); CHECK_SYSTEM_ERRNO( EHOSTDOWN ); CHECK_SYSTEM_ERRNO( EHOSTUNREACH ); CHECK_SYSTEM_ERRNO( EALREADY ); CHECK_SYSTEM_ERRNO( EINPROGRESS ); CHECK_SYSTEM_ERRNO( ESTALE ); CHECK_SYSTEM_ERRNO( EUCLEAN ); CHECK_SYSTEM_ERRNO( ENOTNAM ); CHECK_SYSTEM_ERRNO( ENAVAIL ); CHECK_SYSTEM_ERRNO( EISNAM ); CHECK_SYSTEM_ERRNO( EREMOTEIO ); CHECK_SYSTEM_ERRNO( EDQUOT ); CHECK_SYSTEM_ERRNO( ENOMEDIUM ); CHECK_SYSTEM_ERRNO( EMEDIUMTYPE ); CHECK_SYSTEM_ERRNO( ECANCELED ); CHECK_SYSTEM_ERRNO( ENOKEY ); CHECK_SYSTEM_ERRNO( EKEYEXPIRED ); CHECK_SYSTEM_ERRNO( EKEYREVOKED ); CHECK_SYSTEM_ERRNO( EKEYREJECTED ); CHECK_SYSTEM_ERRNO( EOWNERDEAD ); CHECK_SYSTEM_ERRNO( ENOTRECOVERABLE ); CHECK_SYSTEM_ERRNO( ERFKILL ); CHECK_SYSTEM_ERRNO( EHWPOISON ); CHECK_SYSTEM_ERRNO( EFTYPE ); CHECK_SYSTEM_ERRNO( EUNKNOWN ); if( EWOULDBLOCK != EAGAIN || __MCPU_EWOULDBLOCK != __MCPU_EAGAIN ) return( 1 ); if( EDEADLOCK != EDEADLK || __MCPU_EDEADLOCK != __MCPU_EDEADLK ) return( 1 ); if( ENOTSUP != EOPNOTSUPP || __MCPU_ENOTSUP != __MCPU_EOPNOTSUPP ) return( 1 ); if( __EUNKNOWN__ != LIBMPU_EUNKNOWN ) return( 1 ); if( __I_ESIZE__ != LIBMPU_I_ESIZE || __I_ESHIFT__ != LIBMPU_I_ESHIFT || __I_ENUMBER__ != LIBMPU_I_ENUMBER || __I_ERADIX__ != LIBMPU_I_ERADIX || __I_MAX_ERRNO != LIBMPU_I_MAX_ERRNO ) return( 1 ); if( __R_ESIZE__ != LIBMPU_R_ESIZE || __R_ETRUNC__ != LIBMPU_R_ETRUNC || __R_MAX_ERRNO != LIBMPU_R_MAX_ERRNO ) return( 1 ); if( __C_EDIVZEROBYZERO__ != LIBMPU_C_EDIVZEROBYZERO || __C_ELOGOFZERO__ != LIBMPU_C_ELOGOFZERO || __C_EPOWOFZERO__ != LIBMPU_C_EPOWOFZERO || __C_MAX_ERRNO != LIBMPU_C_MAX_ERRNO ) return( 1 ); if( __DOMAIN__ != LIBMPU_DOMAIN || __SING__ != LIBMPU_SING || __OVERFLOW__ != LIBMPU_OVERFLOW || __UNDERFLOW__ != LIBMPU_UNDERFLOW || __TLOSS__ != LIBMPU_TLOSS || __PLOSS__ != LIBMPU_PLOSS || __INVALID__ != LIBMPU_INVALID || __INEXACT__ != LIBMPU_INEXACT || __M_MAX_ERRNO != LIBMPU_M_MAX_ERRNO ) return( 1 ); return( 0 ); } /* End of main() */