Subject: Cygwin 1.7/1.5 C99 conformance (GCC, libc)
From: "Matthias Andree" <[email-masked]>
To: [email-masked]
Cc: "Bjorn Reese" <[email-masked]>
Date: Tue, 15 Sep 2009 11:38:44 +0200
List-Id: <cygwin.cygwin.com>

Greetings,

I recently figured that ctrio (from sourceforge.net) fails to link (GCC  
3.4.4 here).

Reason is that ctrio checks the __STDC_VERSION__ for C99 support, which  
there is, and assumes that the implementation were a hosted one (as  
opposed to a freestanding one) and uses powl() without further checks.

Now, Cygwin 1.5 and 1.7 appear to lack long double library support in  
libc/libm -- which is required for a hosted C99 implementation however,  
but not for a freestanding C99 implementation.

Trying to solve this, I found another Cygwin issue: GCC 3.4.4 sets  
__STDC_HOSTED__ to 1 by default (that's a GCC factory default).

I propose that this gets overridden to 0 in Cygwin-ported GCC compilers  
until the library support for a C99-conforming full hosted implementation  
is in place, so that applications can safely check

#if __STDC_HOSTED__ - 0 > 0
/* assume hosted C99 implementation, i. e. with powl() capable libc/libm */
/* ... */
#endif

Thanks.

Best regards

-- 
Matthias Andree

--
Problem reports:       http://cygwin.com/problems.html
FAQ:                   http://cygwin.com/faq/
Documentation:         http://cygwin.com/docs.html
Unsubscribe info:      http://cygwin.com/ml/#unsubscribe-simple