From d2dd35ae658e03d09487a70b157b36d0a4b2a3a1 Mon Sep 17 00:00:00 2001 From: Nick Terrell Date: Thu, 4 Mar 2021 21:13:52 -0800 Subject: [PATCH] [contrib][linux-kernel] Fix unaligned.h Fix the `unaligned.h` shim in the tests that was causing corruption in the tests. Note that this is a problem with the test shim, not the kernel code. --- .../linux-kernel/test/include/asm/unaligned.h | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/contrib/linux-kernel/test/include/asm/unaligned.h b/contrib/linux-kernel/test/include/asm/unaligned.h index 6576b37ee..02c2d74f3 100644 --- a/contrib/linux-kernel/test/include/asm/unaligned.h +++ b/contrib/linux-kernel/test/include/asm/unaligned.h @@ -4,13 +4,23 @@ #include #include -#define _LITTLE_ENDIAN 1 +#ifndef __LITTLE_ENDIAN +# if (__BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__) || defined(__LITTLE_ENDIAN__) +# define __LITTLE_ENDIAN 1 +# endif +#endif + +#ifdef __LITTLE_ENDIAN +# define _IS_LITTLE_ENDIAN 1 +#else +# define _IS_LITTLE_ENDIAN 0 +#endif static unsigned _isLittleEndian(void) { const union { uint32_t u; uint8_t c[4]; } one = { 1 }; - assert(_LITTLE_ENDIAN == one.c[0]); - return _LITTLE_ENDIAN; + assert(_IS_LITTLE_ENDIAN == one.c[0]); + return _IS_LITTLE_ENDIAN; } static uint16_t _swap16(uint16_t in) @@ -165,7 +175,7 @@ extern void __bad_unaligned_access_size(void); (void)0; \ }) -#if _LITTLE_ENDIAN +#if _IS_LITTLE_ENDIAN # define get_unaligned __get_unaligned_le # define put_unaligned __put_unaligned_le #else -- 2.47.2