1*1e8a9c3eSKuba Mracek // RUN: %clangxx_tsan -O1 %s -o %t && %run %t %t.tmp 2>&1 | FileCheck %s 2*1e8a9c3eSKuba Mracek #include <stdio.h> 3*1e8a9c3eSKuba Mracek #include <assert.h> 4*1e8a9c3eSKuba Mracek #include <fcntl.h> 5*1e8a9c3eSKuba Mracek #include <unistd.h> 6*1e8a9c3eSKuba Mracek #include <sys/stat.h> 7*1e8a9c3eSKuba Mracek main(int argc,char * argv[])8*1e8a9c3eSKuba Mracekint main(int argc, char *argv[]) { 9*1e8a9c3eSKuba Mracek fprintf(stderr, "Hello world.\n"); 10*1e8a9c3eSKuba Mracek assert(argv[1]); 11*1e8a9c3eSKuba Mracek unlink(argv[1]); 12*1e8a9c3eSKuba Mracek int fd = open(argv[1], O_RDWR | O_CREAT, 0600); 13*1e8a9c3eSKuba Mracek assert(fd != -1); 14*1e8a9c3eSKuba Mracek struct stat info; 15*1e8a9c3eSKuba Mracek int result = fstat(fd, &info); 16*1e8a9c3eSKuba Mracek fprintf(stderr, "permissions = 0%o\n", info.st_mode & ~S_IFMT); 17*1e8a9c3eSKuba Mracek assert(result == 0); 18*1e8a9c3eSKuba Mracek close(fd); 19*1e8a9c3eSKuba Mracek fprintf(stderr, "Done.\n"); 20*1e8a9c3eSKuba Mracek } 21*1e8a9c3eSKuba Mracek 22*1e8a9c3eSKuba Mracek // CHECK: Hello world. 23*1e8a9c3eSKuba Mracek // CHECK: permissions = 0600 24*1e8a9c3eSKuba Mracek // CHECK: Done. 25