threads / patch / 54618

patchcompat/bswap.h: don't assume MSVC is little-endian

Subject: [PATCH] compat/bswap.h: don't assume MSVC is little-endian

## tl;dr

3 messages between Nov 11, 2020 and Nov 11, 2020. Diffs are folded; open one to read it.

replies: 2people: 3as markdown or json

Daniel Gurney· Nov 11, 2020, 08:32 UTC · lore

In 1af265f0 (compat/bswap.h: simplify MSVC endianness detection, 2020-11-08) we attempted to simplify code by assuming MSVC builds will be for little-endian machines, since only unusably old versions of MSVC supported big-endian MIPS and m68k architectures.

However, it's possible that MSVC could be ported to build for a big-endian architecture again, so the simplification wasn't as future-proof as hoped.

So let's go back to the old way of detecting MSVC, and then checking architecture from a list of little-endian architecture macros.

Note that MSVC does not treat ARM64 as bi-endian, so we can safely treat it as little-endian.

Helped-by: brian m. carlson <sandals@crustytoothpaste.net>
Helped-by: Jeff King <peff@peff.net>
Helped-by: Johannes Schindelin <Johannes.Schindelin@gmx.de>
Helped-by: Junio C Hamano <gitster@pobox.com>
Signed-off-by: Daniel Gurney <dgurney99@gmail.com>
---
 compat/bswap.h | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
Show changes to compat/bswap.h +1 −1
diff --git a/compat/bswap.h b/compat/bswap.h
index 72f225eaa8..512f6f4b99 100644
--- a/compat/bswap.h
+++ b/compat/bswap.h
@@ -74,7 +74,7 @@ static inline uint64_t git_bswap64(uint64_t x)
 }
 #endif
 
-#elif defined(_MSC_VER)
+#elif defined(_MSC_VER) && (defined(_M_IX86) || defined(_M_X64) || defined(_M_ARM64))
 
 #include <stdlib.h>
 
-- 
2.29.2
Johannes Schindelin· Nov 11, 2020, 16:23 UTC · re: Daniel Gurney · lore

Re: [PATCH] compat/bswap.h: don't assume MSVC is little-endian

Hi Daniel,
On Wed, 11 Nov 2020, Daniel Gurney wrote:
Show 20 quoted lines
> In 1af265f0 (compat/bswap.h: simplify MSVC endianness
> detection, 2020-11-08) we attempted to simplify code by assuming MSVC
> builds will be for little-endian machines, since only unusably old
> versions of MSVC supported big-endian MIPS and m68k architectures.
>
> However, it's possible that MSVC could be ported to build for a
> big-endian architecture again, so the simplification wasn't as
> future-proof as hoped.
>
> So let's go back to the old way of detecting MSVC, and then checking
> architecture from a list of little-endian architecture macros.
>
> Note that MSVC does not treat ARM64 as bi-endian, so we can safely treat
> it as little-endian.
>
> Helped-by: brian m. carlson <sandals@crustytoothpaste.net>
> Helped-by: Jeff King <peff@peff.net>
> Helped-by: Johannes Schindelin <Johannes.Schindelin@gmx.de>
> Helped-by: Junio C Hamano <gitster@pobox.com>
> Signed-off-by: Daniel Gurney <dgurney99@gmail.com>
ACK!

Thank you so much, Dscho

Show 21 quoted lines
> ---
>  compat/bswap.h | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/compat/bswap.h b/compat/bswap.h
> index 72f225eaa8..512f6f4b99 100644
> --- a/compat/bswap.h
> +++ b/compat/bswap.h
> @@ -74,7 +74,7 @@ static inline uint64_t git_bswap64(uint64_t x)
>  }
>  #endif
>
> -#elif defined(_MSC_VER)
> +#elif defined(_MSC_VER) && (defined(_M_IX86) || defined(_M_X64) || defined(_M_ARM64))
>
>  #include <stdlib.h>
>
> --
> 2.29.2
>
>
Junio C Hamano· Nov 11, 2020, 16:40 UTC · re: Johannes Schindelin · lore

Re: [PATCH] compat/bswap.h: don't assume MSVC is little-endian

Johannes Schindelin <Johannes.Schindelin@gmx.de> writes:
Show 17 quoted lines
>> ...
>> So let's go back to the old way of detecting MSVC, and then checking
>> architecture from a list of little-endian architecture macros.
>>
>> Note that MSVC does not treat ARM64 as bi-endian, so we can safely treat
>> it as little-endian.
>>
>> Helped-by: brian m. carlson <sandals@crustytoothpaste.net>
>> Helped-by: Jeff King <peff@peff.net>
>> Helped-by: Johannes Schindelin <Johannes.Schindelin@gmx.de>
>> Helped-by: Junio C Hamano <gitster@pobox.com>
>> Signed-off-by: Daniel Gurney <dgurney99@gmail.com>
>
> ACK!
>
> Thank you so much,
> Dscho
Thanks, all.

← back to recent threads