git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: [PATCH v2 2/6] bswap.h: Add support for __BYTE_ORDER__

From
Junio C Hamano <gitster@pobox.com>
Date
Jun 12, 2025, 20:10 UTC
Message-ID
<xmqqv7p0d8m0.fsf@gitster.g>
In-Reply-To
<20250611221444.1567638-3-sebastian@breakpoint.cc>
Sebastian Andrzej Siewior <sebastian@breakpoint.cc> writes:
> The __BYTE_ORDER__ define is provided by gcc (since ~v4.6), clang
> (since ~v3.2) and icc (since ~16.0.3). It is not provided by msvc as of
> v19.43 / 17.13.6.

I think it is more confusing than illuninating to have the last sentence in the above paragraph. There probably are tons of other compilers that do not support it, and this patch does not target any of them, including MSVC, which is the topic of the next step anyway.

So, I'm inclined to just remove the sentence, or replace it with something like "Even recent versions of MSVC do not support it, which will be dealt with in the next patch."

Show 27 quoted lines
> The __BYTE_ORDER and BYTE_ORDER macros are libc specific and are not
> available on all supported platforms such as mingw.
>
> Add support for the __BYTE_ORDER__ macro as a fallback.
>
> Signed-off-by: Sebastian Andrzej Siewior <sebastian@breakpoint.cc>
> ---
>  compat/bswap.h | 6 ++++++
>  1 file changed, 6 insertions(+)
>
> diff --git a/compat/bswap.h b/compat/bswap.h
> index b34054f2bd728..0a457542dd76a 100644
> --- a/compat/bswap.h
> +++ b/compat/bswap.h
> @@ -116,6 +116,12 @@ static inline uint64_t git_bswap64(uint64_t x)
>  # define GIT_LITTLE_ENDIAN LITTLE_ENDIAN
>  # define GIT_BIG_ENDIAN BIG_ENDIAN
>  
> +#elif defined(__BYTE_ORDER__) && defined(__ORDER_LITTLE_ENDIAN__) && defined(__ORDER_BIG_ENDIAN__)
> +
> +# define GIT_BYTE_ORDER __BYTE_ORDER__
> +# define GIT_LITTLE_ENDIAN __ORDER_LITTLE_ENDIAN__
> +# define GIT_BIG_ENDIAN __ORDER_BIG_ENDIAN__
> +
>  #else
>  
>  # define GIT_BIG_ENDIAN 4321
Previous: Collin FunkNext: Sebastian Andrzej Siewior
Message 5 of 20 in “bswap.h: Rework ntohl handling”
  1. 0/6 bswap.h: Rework ntohl handlingSebastian Andrzej Siewior, Jun 11, 2025
  2. 2/6 bswap.h: Add support for __BYTE_ORDER__Sebastian Andrzej Siewior, Jun 11, 2025
  3. brian m. carlsonJun 12, 2025
  4. Collin FunkJun 12, 2025
  5. Junio C HamanoJun 12, 2025
  6. 1/6 Revert "bswap.h: add support for built-in bswap functions"Sebastian Andrzej Siewior, Jun 11, 2025
  7. Junio C HamanoJun 12, 2025
  8. 3/6 bswap.h: Define GIT_LITTLE_ENDIAN on msvc as little endianSebastian Andrzej Siewior, Jun 11, 2025
  9. Junio C HamanoJun 12, 2025
  10. 5/6 bswap.h: Remove optimized x86 version of bswap32/64Sebastian Andrzej Siewior, Jun 11, 2025
  11. Kristoffer HaugsbakkJun 26, 2025
  12. Sebastian Andrzej SiewiorJul 15, 2025
  13. 6/6 bswap.h: Provide a built-in based version of bswap32/64 if possibleSebastian Andrzej Siewior, Jun 11, 2025
  14. 5/6 bswap: Remove optimized x86 version of bswap32/64Sebastian Andrzej Siewior, Jun 11, 2025
  15. 4/6 bswap.h: Always overwrite ntohl/ ntohll macrosSebastian Andrzej Siewior, Jun 11, 2025
  16. brian m. carlsonJun 12, 2025
  17. Junio C HamanoJun 12, 2025
  18. Junio C HamanoJun 12, 2025
  19. Junio C HamanoJul 7, 2025
  20. Sebastian Andrzej SiewiorJul 9, 2025

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.