Re: Compile Error v2.13.2 on Solaris SPARC
From: Liam R. Howlett <hidden>
Date: 2017-06-27 18:29:54
* Junio C Hamano [off-list ref] [170627 13:38]:
"Liam R. Howlett" [off-list ref] writes:quoted
How about: ---- 8< ----diff --git a/sha1dc/sha1.c b/sha1dc/sha1.c index facea1bb5..ed8c63f2d 100644 --- a/sha1dc/sha1.c +++ b/sha1dc/sha1.c@@ -38,9 +38,18 @@ #if (defined(_BYTE_ORDER) || defined(__BYTE_ORDER) || defined(__BYTE_ORDER__)) +#define EMPTY_VAL(x) x ## 1 +#define EMPTY(x) EMPTY_VAL(x) + +#if (defined(_BIG_ENDIAN) && (EMPTY(_BIG_ENDIAN) == 1)) +#undef _BIG_ENDIAN +#define _BIG_ENDIAN 4321 +#endifI'd say it is a bad idea to define a symbol that you _know_ a platform header file defines. Any header you may include from the platform after these lines still expects the symbol to be defined in a way it defines without getting molested and will misbehave.
Okay. Thanks. I thought a c file would be safe, especially after the includes but there is indeed a possible include (ifdef'ed) later. This compressed logic is causing a lot of issues. Could we just rewrite it as a whole lot of #if/#else, statements to avoid running across the issue where the precompiler does not short-circuit the checks? Would this cause any other issues? Alternatively, we can replace the undef/define with the define of SHA1DC_BIGENDIAN and make this an #if/#else.. A third option is to compile a small test and just -DSHA1DC_BIGENDIAN in the Makefile. Cheers, Liam