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 "../solaris/scalar.h"
5
6#include <sys/fcntl.h>
7
8/* Helper functions.  These are necessary if we've got two tests for a single
9   syscall.  In that case, Memcheck can sometimes merge error messages.  Doing
10   each test in its own function prevents that. */
11__attribute__((noinline))
12static void sys_open64(void)
13{
14   GO(SYS_open64, "(2-args) 2s 1m");
15   SY(SYS_open64, x0, x0); FAIL;
16}
17
18__attribute__((noinline))
19static void sys_open642(void)
20{
21   GO(SYS_open64, "(3-args) 3s 1m");
22   SY(SYS_open64, x0, x0 | O_CREAT, x0); FAIL;
23}
24
25int main(void)
26{
27   /* Uninitialised, but we know px[0] is 0x0. */
28   long *px = malloc(sizeof(long));
29   x0 = px[0];
30
31   /* SYS_stat64                215 */
32   GO(SYS_stat64, "2s 2m");
33   SY(SYS_stat64, x0, x0); FAIL;
34
35   /* SYS_lstat64               216 */
36   GO(SYS_lstat64, "2s 2m");
37   SY(SYS_lstat64, x0, x0); FAIL;
38
39   /* SYS_fstat64               217 */
40   GO(SYS_fstat64, "2s 1m");
41   SY(SYS_fstat64, x0, x0); FAIL;
42
43   /* SYS_open64                225 */
44   sys_open64();
45   sys_open642();
46
47   return 0;
48}
49
50