31 lines · c
1// RUN: %clang -O2 %s -o %t && %run %t2// UNSUPPORTED: android, darwin, target={{.*(netbsd|solaris).*}}3//4 5#include <sys/types.h>6#include <errno.h>7 8#if !defined(__GLIBC_PREREQ)9#define __GLIBC_PREREQ(a, b) 010#endif11 12#if (defined(__linux__) && __GLIBC_PREREQ(2, 25)) || defined(__FreeBSD__) || \13 (defined(__sun) && defined(__svr4__))14#define HAS_GETRANDOM15#endif16 17#if defined(HAS_GETRANDOM)18#include <sys/random.h>19#endif20 21int main() {22 char buf[16];23 ssize_t n = 1;24#if defined(HAS_GETRANDOM)25 n = getrandom(buf, sizeof(buf), 0);26 if (n == -1 && errno == ENOSYS)27 n = 1;28#endif29 return (int)(n <= 0);30}31