1 // RUN: %clang -O2 %s -o %t && %run %t 2 // UNSUPPORTED: android, netbsd, darwin, solaris 3 // 4 5 #include <sys/types.h> 6 #include <errno.h> 7 8 #if !defined(__GLIBC_PREREQ) 9 #define __GLIBC_PREREQ(a, b) 0 10 #endif 11 12 #if (defined(__linux__) && __GLIBC_PREREQ(2, 25)) || defined(__FreeBSD__) 13 #define HAS_GETRANDOM 14 #endif 15 16 #if defined(HAS_GETRANDOM) 17 #include <sys/random.h> 18 #endif 19 main()20int main() { 21 char buf[16]; 22 ssize_t n = 1; 23 #if defined(HAS_GETRANDOM) 24 n = getrandom(buf, sizeof(buf), 0); 25 if (n == -1 && errno == ENOSYS) 26 n = 1; 27 #endif 28 return (int)(n <= 0); 29 } 30