# HG changeset patch # User Tassilo Philipp # Date 1663574061 -7200 # Node ID dfc2e6ee878278f8ad431a3c102096bfba2916c5 # Parent fbd5e5416a4bce08e24bb6ae7820fa385bd22c77 - more robust endian detection, on some platforms inclusion of endian.h led to assuming wrong endianness (subtle if inclusion was in - syscall test: added newline to output diff -r fbd5e5416a4b -r dfc2e6ee8782 ChangeLog --- a/ChangeLog Thu Sep 15 18:11:48 2022 +0200 +++ b/ChangeLog Mon Sep 19 09:54:21 2022 +0200 @@ -22,6 +22,9 @@ o x64/windows masm directives for frame unwinding information (as dbg help; thanks Raphael Luba!) dynload: o build fix for ReactOS with RosBE/cmake/mingw-make environment +general: + o more robust detection of platform endianness (on some platforms inclusion + of endian.h led to wrong assumptions) tests: o call_suite: simplified and extended to test also unsigned types, and _Bool o callback_suite: refactored to be much more like call_suite test diff -r fbd5e5416a4b -r dfc2e6ee8782 dyncall/dyncall_macros.h --- a/dyncall/dyncall_macros.h Thu Sep 15 18:11:48 2022 +0200 +++ b/dyncall/dyncall_macros.h Mon Sep 19 09:54:21 2022 +0200 @@ -280,18 +280,22 @@ DC__Arch_PPC64 DC__Arch_SuperH */ -# if (defined(DC__Arch_PPC64) && (DC__ABI_PPC64_ELF_V == 1)) || defined(_BIG_ENDIAN) || defined(__BIG_ENDIAN__) || defined(MIPSEB) || defined(_MIPSEB) || defined(__MIPSEB) || defined(__MIPSEB__) || defined(__ARMEB__) || defined(__AARCH64EB__) +# if (defined(DC__Arch_PPC64) && (DC__ABI_PPC64_ELF_V == 1)) || defined(MIPSEB) || defined(_MIPSEB) || defined(__MIPSEB) || defined(__MIPSEB__) || defined(__ARMEB__) || defined(__AARCH64EB__) # define DC__Endian_BIG -# elif (defined(DC__Arch_PPC64) && (DC__ABI_PPC64_ELF_V == 2)) || defined(_LITTLE_ENDIAN) || defined(__LITTLE_ENDIAN__) || defined(MIPSEL) || defined(_MIPSEL) || defined(__MIPSEL) || defined(__MIPSEL__) || defined(__ARMEL__) || defined(__AARCH64EL__) +# elif (defined(DC__Arch_PPC64) && (DC__ABI_PPC64_ELF_V == 2)) || defined(MIPSEL) || defined(_MIPSEL) || defined(__MIPSEL) || defined(__MIPSEL__) || defined(__ARMEL__) || defined(__AARCH64EL__) # define DC__Endian_LITTLE # elif defined(DC__Arch_Sparc64) && !defined(__BYTE_ORDER__) /* Sparc64 default is big-endian, except if explicitly defined */ # define DC__Endian_BIG -# elif defined(__BYTE_ORDER__) /* explicitly set */ -# if defined(__ORDER_BIG_ENDIAN__) && (__BYTE_ORDER__ == __ORDER_BIG_ENDIAN__) +# elif defined(BYTE_ORDER) || defined(_BYTE_ORDER) || defined(__BYTE_ORDER__) /* explicitly set byte order, either through compiler or platform specific endian.h */ +# if (defined(BIG_ENDIAN) && (BYTE_ORDER == BIG_ENDIAN)) || (defined(_BIG_ENDIAN) && (_BYTE_ORDER == _BIG_ENDIAN)) || (defined(__ORDER_BIG_ENDIAN__) && (__BYTE_ORDER__ == __ORDER_BIG_ENDIAN__)) # define DC__Endian_BIG -# elif defined(__ORDER_LITTLE_ENDIAN__) && (__BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__) +# elif (defined(LITTLE_ENDIAN) && (BYTE_ORDER == LITTLE_ENDIAN)) || (defined(_LITTLE_ENDIAN) && (_BYTE_ORDER == _LITTLE_ENDIAN)) || (defined(__ORDER_LITTLE_ENDIAN__) && (__BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__)) # define DC__Endian_LITTLE # endif +# elif (defined(_BIG_ENDIAN) && (_BIG_ENDIAN == 1)) || (defined(__BIG_ENDIAN__) && (__BIG_ENDIAN__ == 1)) /* explicitly set as on/off */ +# define DC__Endian_BIG +# elif (defined(_LITTLE_ENDIAN) && (_LITTLE_ENDIAN == 1)) || (defined(__LITTLE_ENDIAN__) && (__LITTLE_ENDIAN__ == 1)) /* explicitly set as on/off */ +# define DC__Endian_LITTLE # endif /* no else, leave unset if not sure */ #endif diff -r fbd5e5416a4b -r dfc2e6ee8782 test/syscall/syscall.c --- a/test/syscall/syscall.c Thu Sep 15 18:11:48 2022 +0200 +++ b/test/syscall/syscall.c Mon Sep 19 09:54:21 2022 +0200 @@ -47,6 +47,7 @@ { r = syscall_write(1/*stdout*/, "result: syscall: ", 17); r += syscall_write(1/*stdout*/, r==17?"1":"0", 2); + r += syscall_write(1/*stdout*/, "\n", 2); } return !(r == 19); }