18eb8bab992e3998c33770b0cdb16059a8b918a06sewardj/* Test for syscalls that are available on illumos but are removed on 28eb8bab992e3998c33770b0cdb16059a8b918a06sewardj Solaris 11. This test is compiled only on illumos. */ 38eb8bab992e3998c33770b0cdb16059a8b918a06sewardj 48eb8bab992e3998c33770b0cdb16059a8b918a06sewardj#include "../solaris/scalar.h" 58eb8bab992e3998c33770b0cdb16059a8b918a06sewardj 68eb8bab992e3998c33770b0cdb16059a8b918a06sewardj#include <sys/fcntl.h> 78eb8bab992e3998c33770b0cdb16059a8b918a06sewardj 88eb8bab992e3998c33770b0cdb16059a8b918a06sewardj/* Helper functions. These are necessary if we've got two tests for a single 98eb8bab992e3998c33770b0cdb16059a8b918a06sewardj syscall. In that case, Memcheck can sometimes merge error messages. Doing 108eb8bab992e3998c33770b0cdb16059a8b918a06sewardj each test in its own function prevents that. */ 118eb8bab992e3998c33770b0cdb16059a8b918a06sewardj__attribute__((noinline)) 128eb8bab992e3998c33770b0cdb16059a8b918a06sewardjstatic void sys_open64(void) 138eb8bab992e3998c33770b0cdb16059a8b918a06sewardj{ 148eb8bab992e3998c33770b0cdb16059a8b918a06sewardj GO(SYS_open64, "(2-args) 2s 1m"); 158eb8bab992e3998c33770b0cdb16059a8b918a06sewardj SY(SYS_open64, x0, x0); FAIL; 168eb8bab992e3998c33770b0cdb16059a8b918a06sewardj} 178eb8bab992e3998c33770b0cdb16059a8b918a06sewardj 188eb8bab992e3998c33770b0cdb16059a8b918a06sewardj__attribute__((noinline)) 198eb8bab992e3998c33770b0cdb16059a8b918a06sewardjstatic void sys_open642(void) 208eb8bab992e3998c33770b0cdb16059a8b918a06sewardj{ 218eb8bab992e3998c33770b0cdb16059a8b918a06sewardj GO(SYS_open64, "(3-args) 3s 1m"); 228eb8bab992e3998c33770b0cdb16059a8b918a06sewardj SY(SYS_open64, x0, x0 | O_CREAT, x0); FAIL; 238eb8bab992e3998c33770b0cdb16059a8b918a06sewardj} 248eb8bab992e3998c33770b0cdb16059a8b918a06sewardj 258eb8bab992e3998c33770b0cdb16059a8b918a06sewardjint main(void) 268eb8bab992e3998c33770b0cdb16059a8b918a06sewardj{ 278eb8bab992e3998c33770b0cdb16059a8b918a06sewardj /* Uninitialised, but we know px[0] is 0x0. */ 288eb8bab992e3998c33770b0cdb16059a8b918a06sewardj long *px = malloc(sizeof(long)); 298eb8bab992e3998c33770b0cdb16059a8b918a06sewardj x0 = px[0]; 308eb8bab992e3998c33770b0cdb16059a8b918a06sewardj 318eb8bab992e3998c33770b0cdb16059a8b918a06sewardj /* SYS_stat64 215 */ 328eb8bab992e3998c33770b0cdb16059a8b918a06sewardj GO(SYS_stat64, "2s 2m"); 338eb8bab992e3998c33770b0cdb16059a8b918a06sewardj SY(SYS_stat64, x0, x0); FAIL; 348eb8bab992e3998c33770b0cdb16059a8b918a06sewardj 358eb8bab992e3998c33770b0cdb16059a8b918a06sewardj /* SYS_lstat64 216 */ 368eb8bab992e3998c33770b0cdb16059a8b918a06sewardj GO(SYS_lstat64, "2s 2m"); 378eb8bab992e3998c33770b0cdb16059a8b918a06sewardj SY(SYS_lstat64, x0, x0); FAIL; 388eb8bab992e3998c33770b0cdb16059a8b918a06sewardj 398eb8bab992e3998c33770b0cdb16059a8b918a06sewardj /* SYS_fstat64 217 */ 408eb8bab992e3998c33770b0cdb16059a8b918a06sewardj GO(SYS_fstat64, "2s 1m"); 418eb8bab992e3998c33770b0cdb16059a8b918a06sewardj SY(SYS_fstat64, x0, x0); FAIL; 428eb8bab992e3998c33770b0cdb16059a8b918a06sewardj 438eb8bab992e3998c33770b0cdb16059a8b918a06sewardj /* SYS_open64 225 */ 448eb8bab992e3998c33770b0cdb16059a8b918a06sewardj sys_open64(); 458eb8bab992e3998c33770b0cdb16059a8b918a06sewardj sys_open642(); 468eb8bab992e3998c33770b0cdb16059a8b918a06sewardj 478eb8bab992e3998c33770b0cdb16059a8b918a06sewardj return 0; 488eb8bab992e3998c33770b0cdb16059a8b918a06sewardj} 498eb8bab992e3998c33770b0cdb16059a8b918a06sewardj 50