From df444b7874236782f116c914799bc6ac2c2ddc83 Mon Sep 17 00:00:00 2001 From: Michael Tautschnig Date: Thu, 26 May 2022 22:13:51 +0000 Subject: [PATCH] C library: getrandom requires glibc >= 2.25 As noticed in https://github.com/Homebrew/homebrew-core/pull/102337, which attempts to build on Ubuntu 16.04, sys/random.h isn't available with glibc versions prior to 2.25. Therefore, replace the __linux__ inclusion check by one that tests for a particular glibc version. --- regression/cbmc-library/getrandom-01/main.c | 7 ++++--- src/ansi-c/library/random.c | 8 +++++++- 2 files changed, 11 insertions(+), 4 deletions(-) diff --git a/regression/cbmc-library/getrandom-01/main.c b/regression/cbmc-library/getrandom-01/main.c index 01334f7ac09..9325690b789 100644 --- a/regression/cbmc-library/getrandom-01/main.c +++ b/regression/cbmc-library/getrandom-01/main.c @@ -1,8 +1,9 @@ -#ifdef __linux__ -# include - # include +#if defined(__GLIBC__) && \ + (__GLIBC__ > 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 25)) +# include + int main() { char zero_bytes[6] = {0}; diff --git a/src/ansi-c/library/random.c b/src/ansi-c/library/random.c index 9a7cff665ad..65d2ef7947a 100644 --- a/src/ansi-c/library/random.c +++ b/src/ansi-c/library/random.c @@ -1,6 +1,12 @@ /* FUNCTION: getrandom */ -#ifdef __linux__ +#ifndef __CPROVER_ERRNO_H_INCLUDED +#include +#define __CPROVER_ERRNO_H_INCLUDED +#endif + +#if defined(__GLIBC__) && \ + (__GLIBC__ > 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 25)) # ifndef __CPROVER_SYS_RANDOM_H_INCLUDED # include