[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: endian: New module.
From: |
Collin Funk |
Subject: |
Re: endian: New module. |
Date: |
Mon, 13 May 2024 13:37:47 -0700 |
User-agent: |
Mozilla Thunderbird |
Hi Bruno,
On 5/13/24 5:38 AM, Bruno Haible wrote:
>> Let me know if I missed anything. Other than the docs and test module
>> which I can do later today (assuming this patch is decent enough).
>
> The doc changes belong in the same commit. The tests module should be
> in a different commit, but it's a good idea to develop both together,
> since the tests often uncover problems.
Sounds good. I was working on tests at the same time but left it out
of the patch.
> But glibc defines PDP_ENDIAN in <endian.h>, and Gnulib attempts to be
> compliant to POSIX _and_ source-compatible with glibc.
>
> Also there is some code that uses PDP_ENDIAN [1].
Ah, okay. I was thinking it was mostly unused.
> Why do you mention the functions in this order?
> +/* Big endian to host. */
> +/* Host to big endian. */
> +/* Host to little endian. */
> +/* Little endian to host. */
> Doing things backwards in the second half than in the first half is
> quite unusual; it's a particular property of the Morse sequence [2].
> (Note that alphabetical order of items is only to be used as a fallback,
> when items cannot be ordered by some form of logic or heuristic.)
Interesting link. Yes, I guess it is a strange ordering. I didn't
think about it to much. The POSIX draft has function prototypes in
that order, so I just transformed them into macros.
> In the autoconf test, compilation with -Wall would produce warnings about
> the 12 unused variables. If a user sets CC="gcc -Wall -Werror", this will
> make the compilation fail. Although this setting of CC is not supported by
> Gnulib, it does not hurt to make things work in this case. Like done in
> m4/intmax_t.m4: Add a 'return' statement that uses all the variables.
> Such as
> return !(value16_1 + value32_1 + value64_1 + value16_2 + value32_2 +
> value64_2
> + value16_3 + value32_3 + value64_3 + value16_4 + value32_4 +
> value64_4);
Ah, I forgot that I have to worry about it. Thanks for the tip. I was
using stdint_h.m4 and sys_time_h.m4 to write that m4 file.
Collin