tests/vg_regtest: Always evaluate prerequisite expressions with sh
[valgrind.git] / memcheck / tests / x86-linux / scalar.h
blobef28b035508cf5c3d358b239e3f78b5dee582ea5
1 #include "../../../include/vki/vki-scnums-x86-linux.h"
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>
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;
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.
22 #define GO(__NR_xxx, s) \
23 fprintf(stderr, "-----------------------------------------------------\n" \
24 "%3d:%20s %s\n" \
25 "-----------------------------------------------------\n", \
26 __NR_xxx, #__NR_xxx, s);
28 #define SY res = syscall
30 #define FAIL assert(-1 == res);
31 #define SUCC assert(-1 != res);
32 #define SUCC_OR_FAIL /* no test */
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);
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);