Re: Compile Error v2.13.2 on Solaris SPARC
- From
- Liam R. Howlett <liam.howlett@oracle.com>
- Date
- Jun 27, 2017, 18:29 UTC
- Message-ID
- <20170627182942.gpug4xaek2vba7uh@oracle.com>
- In-Reply-To
- <xmqq1sq52uwj.fsf@gitster.mtv.corp.google.com>
* Junio C Hamano <gitster@pobox.com> [170627 13:38]:
Show 25 quoted lines
> "Liam R. Howlett" <Liam.Howlett@Oracle.com> writes: > > > 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 > > +#endif > > I'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