From d359dd9981f4137e8873a7a571e5c54c5b2449c4 Mon Sep 17 00:00:00 2001 From: Uros Majstorovic Date: Wed, 2 Feb 2022 08:14:56 +0100 Subject: linux and freebsd compatibility --- ext/libressl/include/compat/machine/endian.h | 51 ++++++++++++++++++++++++++++ ext/libressl/include/compat/stdlib.h | 47 +++++++++++++++++++++++++ ext/libressl/ssl_common.mk | 2 ++ 3 files changed, 100 insertions(+) create mode 100644 ext/libressl/include/compat/machine/endian.h create mode 100644 ext/libressl/include/compat/stdlib.h (limited to 'ext') diff --git a/ext/libressl/include/compat/machine/endian.h b/ext/libressl/include/compat/machine/endian.h new file mode 100644 index 0000000..4dcb60d --- /dev/null +++ b/ext/libressl/include/compat/machine/endian.h @@ -0,0 +1,51 @@ +/* + * Public domain + * machine/endian.h compatibility shim + */ + +#ifndef LIBCRYPTOCOMPAT_BYTE_ORDER_H_ +#define LIBCRYPTOCOMPAT_BYTE_ORDER_H_ + +#if defined(_WIN32) + +#define LITTLE_ENDIAN 1234 +#define BIG_ENDIAN 4321 +#define PDP_ENDIAN 3412 + +/* + * Use GCC and Visual Studio compiler defines to determine endian. + */ +#if __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__ +#define BYTE_ORDER LITTLE_ENDIAN +#else +#define BYTE_ORDER BIG_ENDIAN +#endif + +#elif defined(__linux__) || defined(__midipix__) +#include + +#elif defined(__sun) || defined(_AIX) || defined(__hpux) +#include +#include + +#elif defined(__sgi) +#include +#include + +#else +#include_next + +#endif + +#ifndef __STRICT_ALIGNMENT +#define __STRICT_ALIGNMENT +#if defined(__i386) || defined(__i386__) || \ + defined(__x86_64) || defined(__x86_64__) || \ + defined(__s390__) || defined(__s390x__) || \ + defined(__aarch64__) || \ + ((defined(__arm__) || defined(__arm)) && __ARM_ARCH >= 6) +#undef __STRICT_ALIGNMENT +#endif +#endif + +#endif diff --git a/ext/libressl/include/compat/stdlib.h b/ext/libressl/include/compat/stdlib.h new file mode 100644 index 0000000..2eaea24 --- /dev/null +++ b/ext/libressl/include/compat/stdlib.h @@ -0,0 +1,47 @@ +/* + * stdlib.h compatibility shim + * Public domain + */ + +#ifdef _MSC_VER +#if _MSC_VER >= 1900 +#include <../ucrt/stdlib.h> +#else +#include <../include/stdlib.h> +#endif +#else +#include_next +#endif + +#ifndef LIBCRYPTOCOMPAT_STDLIB_H +#define LIBCRYPTOCOMPAT_STDLIB_H + +#include +#include + +#ifndef HAVE_ARC4RANDOM_BUF +uint32_t arc4random(void); +void arc4random_buf(void *_buf, size_t n); +uint32_t arc4random_uniform(uint32_t upper_bound); +#endif + +#ifndef HAVE_FREEZERO +void freezero(void *ptr, size_t sz); +#endif + +#ifndef HAVE_GETPROGNAME +const char * getprogname(void); +#endif + +void *reallocarray(void *, size_t, size_t); + +#ifndef HAVE_RECALLOCARRAY +void *recallocarray(void *, size_t, size_t, size_t); +#endif + +#ifndef HAVE_STRTONUM +long long strtonum(const char *nptr, long long minval, + long long maxval, const char **errstr); +#endif + +#endif diff --git a/ext/libressl/ssl_common.mk b/ext/libressl/ssl_common.mk index fab0710..bac4e9f 100644 --- a/ext/libressl/ssl_common.mk +++ b/ext/libressl/ssl_common.mk @@ -1,6 +1,8 @@ -include common.mk CFLAGS += -I../../include/compat -I../../include +# exclude from include/compat/stdlib.h +CFLAGS += -DHAVE_FREEZERO -DHAVE_GETPROGNAME -DHAVE_RECALLOCARRAY -DHAVE_STRTONUM # exclude from include/compat/string.h CFLAGS += -DHAVE_STRCASECMP -DHAVE_STRLCPY -DHAVE_STRLCAT -DHAVE_STRNDUP -DHAVE_STRNLEN -DHAVE_STRSEP -DHAVE_MEMMEM # exclude from include/compat/unistd.h -- cgit v1.2.3