Home | History | Annotate | Download | only in x86-linux
      1 #include "../../../include/vki/vki-scnums-x86-linux.h"
      2 
      3 #include <assert.h>
      4 #include <errno.h>
      5 #include <fcntl.h>
      6 #include <stdio.h>
      7 #include <stdlib.h>
      8 #include <sys/syscall.h>
      9 #include <sys/stat.h>
     10 #include <sys/ptrace.h>
     11 #include <sys/types.h>
     12 #include <sys/mman.h>
     13 
     14 // Since we use vki_unistd.h, we can't include <unistd.h>.  So we have to
     15 // declare this ourselves.
     16 extern long int syscall (long int __sysno, ...) __THROW;
     17 
     18 // Thorough syscall scalar arg checking.  Also serves as thorough checking
     19 // for (very) basic syscall use.  Generally not trying to do anything
     20 // meaningful with the syscalls.
     21 
     22 #define GO(__NR_xxx, s) \
     23    fprintf(stderr, "-----------------------------------------------------\n"  \
     24                    "%3d:%20s %s\n"                                            \
     25                    "-----------------------------------------------------\n", \
     26                    __NR_xxx, #__NR_xxx, s);
     27 
     28 #define SY  res = syscall
     29 
     30 #define FAIL  assert(-1 == res);
     31 #define SUCC  assert(-1 != res);
     32 #define SUCC_OR_FAIL    /* no test */
     33 
     34 #define FAILx(E) \
     35    do { \
     36       int myerrno = errno; \
     37       if (-1 == res) { \
     38          if (E == myerrno) { \
     39             /* as expected */ \
     40          } else { \
     41          fprintf(stderr, "Expected error %s (%d), got %d\n", #E, E, myerrno); \
     42          exit(1); \
     43          } \
     44       } else { \
     45          fprintf(stderr, "Expected error %s (%d), got success\n", #E, E); \
     46          exit(1); \
     47       } \
     48    } while (0);
     49 
     50 #define SUCC_OR_FAILx(E) \
     51    do { \
     52       int myerrno = errno; \
     53       if (-1 == res) { \
     54          if (E == myerrno) { \
     55             /* as expected */ \
     56          } else { \
     57          fprintf(stderr, "Expected error %s (%d), got %d\n", #E, E, myerrno); \
     58          exit(1); \
     59          } \
     60       } \
     61    } while (0);
     62