diff options
Diffstat (limited to 'tests/tst-errno-abi.c')
| -rw-r--r-- | tests/tst-errno-abi.c | 217 |
1 files changed, 217 insertions, 0 deletions
diff --git a/tests/tst-errno-abi.c b/tests/tst-errno-abi.c new file mode 100644 index 0000000..1d7dcd5 --- /dev/null +++ b/tests/tst-errno-abi.c @@ -0,0 +1,217 @@ +#include <stdio.h> + +#include <libmpu.h> + +/* 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 <sys/asm/errno.h> +#include <sys/asm/mpu-errno.h> + + +#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() */ |
