Re: [PATCH] block-sha1: Windows declares ntohl() in winsock2.h
- From
Nicolas Pitre <nico@cam.org>
- Date
- Aug 20, 2009, 02:26 UTC
- Message-ID
- <alpine.LFD.2.00.0908192201180.6044@xanadu.home>
- In-Reply-To
- <XJM0H8pTiCJpryS-arPltHCHwsm0djqVixaH1NwBqT2pci2MA9karw@cipher.nrlssc.navy.mil>
On Tue, 18 Aug 2009, Brandon Casey wrote:
Show 20 quoted lines
> The SUNWspro compiler doesn't set __i386__. Instead it sets __i386, and
> I think __x86_64 and __amd64 where appropriate. So, compilation with
> the SUNWspro compiler on x86 is currently unaffected by these changes and
> falls back to the generic routines.
>
> It seems that v5.10 of the compiler can grok both the __asm__ statements
> and the ({...}) naked block notation and passes all of the tests when the
> block_sha1 code is modified to add defined(__i386) to each of the macro
> statements.
>
> The 5.8 version cannot grok the naked block, and requires spelling __asm__
> as __asm for inline assembly. Even then it appears that there is a bug in
> the assembly that is produced (a google search told me so), so the assembly
> code does not successfully compile.
>
> I haven't had much time to think about how or whether to address this.
>
> Adding something like the following would get ugly real quick:
>
> (defined(__i386) && defined(__SUNPRO_C) && (__SUNPRO_C >= 0x5100))I think the best solution in this case might simply be to add something like this somewhere at the top of git-compat-util.h after the system includes:
/* * The SUNWspro compiler uses different symbols than gcc. * Let's standardize on the gcc flavor. */ #if defined(__i386) && !defined(__i386__) #define __i386__ #endif #if (defined(__x86_64) || defined(__amd64)) && !defined(__x86_64__) #define __x86_64__ #endif /* * SUNWspro from version 5.10 supports gcc extensions such as gcc's * statement expressions and extended inline asm, so let's pretend... */ #if defined(__SUNPRO_C) && (__SUNPRO_C >= 0x5100)) #define __GNUC__ #endif
Nicolas