1 /* Test for syscalls that are available on illumos but are removed on
2 Solaris 11. This test is compiled only on illumos. */
3
4 #include "scalar.h"
5
6 #include <sys/fcntl.h>
7
8 __attribute__((noinline))
sys_open(void)9 static void sys_open(void)
10 {
11 GO(SYS_open, "(2-args) 2s 1m");
12 SY(SYS_open, x0, x0); FAIL;
13 }
14
15 __attribute__((noinline))
sys_open2(void)16 static void sys_open2(void)
17 {
18 GO(SYS_open, "(3-args) 3s 1m");
19 SY(SYS_open, x0, x0 | O_CREAT, x0); FAIL;
20 }
21
main(void)22 int main(void)
23 {
24 /* Uninitialised, but we know px[0] is 0x0. */
25 long *px = malloc(sizeof(long));
26 x0 = px[0];
27
28 /* SYS_open 5 */
29 sys_open();
30 sys_open2();
31
32 /* SYS_link 9 */
33 GO(SYS_link, "2s 2m");
34 SY(SYS_link, x0, x0); FAIL;
35
36 /* SYS_unlink 10 */
37 GO(SYS_unlink, "1s 1m");
38 SY(SYS_unlink, x0); FAIL;
39
40 /* SYS_mknod 14 */
41 /* XXX Missing wrapper. */
42
43 /* SYS_chmod 15 */
44 GO(SYS_chmod, "2s 1m");
45 SY(SYS_chmod, x0, x0); FAIL;
46
47 /* SYS_chown 16 */
48 GO(SYS_chown, "3s 1m");
49 SY(SYS_chown, x0, x0, x0); FAIL;
50
51 /* SYS_stat 18 */
52 GO(SYS_stat, "2s 2m");
53 SY(SYS_stat, x0, x0); FAIL;
54
55 /* SYS_fstat 28 */
56 GO(SYS_fstat, "2s 1m");
57 SY(SYS_fstat, x0, x0); FAIL;
58
59 /* SYS_access 33 */
60 GO(SYS_access, "2s 1m");
61 SY(SYS_access, x0, x0); FAIL;
62
63 /* SYS_rmdir 79 */
64 GO(SYS_rmdir, "1s 1m");
65 SY(SYS_rmdir, x0); FAIL;
66
67 /* SYS_mkdir 80 */
68 GO(SYS_mkdir, "2s 1m");
69 SY(SYS_mkdir, x0, x0); FAIL;
70
71 /* SYS_lstat 88 */
72 GO(SYS_lstat, "2s 2m");
73 SY(SYS_lstat, x0, x0); FAIL;
74
75 /* SYS_symlink 89 */
76 GO(SYS_symlink, "2s 2m");
77 SY(SYS_symlink, x0, x0); FAIL;
78
79 /* SYS_readlink 90 */
80 GO(SYS_readlink, "3s 2m");
81 SY(SYS_readlink, x0, x0, x0 + 1); FAIL;
82
83 /* SYS_fchmod 93 */
84 GO(SYS_fchmod, "2s 0m");
85 SY(SYS_fchmod, x0 - 1, x0); FAIL;
86
87 /* SYS_fchown 94 */
88 GO(SYS_fchown, "3s 0m");
89 SY(SYS_fchown, x0, x0, x0); FAIL;
90
91 /* SYS_lchown 130 */
92 GO(SYS_lchown, "3s 1m");
93 SY(SYS_lchown, x0, x0, x0); FAIL;
94
95 /* SYS_rename 134 */
96 GO(SYS_rename, "2s 2m");
97 SY(SYS_rename, x0, x0); FAIL;
98
99 /* SYS_stat64 215 */
100 /* Tested in x86-solaris/scalar_obsolete.c. */
101
102 /* SYS_lstat64 216 */
103 /* Tested in x86-solaris/scalar_obsolete.c. */
104
105 /* SYS_fstat64 217 */
106 /* Tested in x86-solaris/scalar_obsolete.c. */
107
108 /* SYS_open64 225 */
109 /* Tested in x86-solaris/scalar_obsolete.c. */
110
111 return 0;
112 }
113
114