Re: C99 compliance for src/port/snprintf.c - Mailing list pgsql-hackers

From Andres Freund
Subject Re: C99 compliance for src/port/snprintf.c
Date
Msg-id 20180816160508.nd5u6fblr3jwcg6f@alap3.anarazel.de
Whole thread Raw
In response to Re: C99 compliance for src/port/snprintf.c  (Tom Lane <tgl@sss.pgh.pa.us>)
Responses Re: C99 compliance for src/port/snprintf.c
Re: C99 compliance for src/port/snprintf.c
List pgsql-hackers
Hi,

On 2018-08-16 11:41:30 -0400, Tom Lane wrote:
> Andres Freund <andres@anarazel.de> writes:
> > But enabling C99 support triggered a somewhat weird failure on
> > protosciurus (also solaris, but gcc)
> > https://buildfarm.postgresql.org/cgi-bin/show_log.pl?nm=protosciurus&dt=2018-08-16%2013%3A37%3A46
> 
> > It detects C99 support successfully via -std=gnu99 but then fails
> > somewhere during build with:
> > ../../../../src/include/utils/float.h:71: error: `__builtin_infinity' undeclared (first use in this function)
> 
> > While I'd personally have no problem kicking gcc 3.4 to the curb, I'm
> > still confused what causes this error mode.  Kinda looks like
> > out-of-sync headers with gcc or something.
> 
> Yeah, this is *absolutely* unsurprising for a non-native gcc installation
> on an old platform.  It only works to the extent that the platform's
> library headers are up to snuff.  The gcc installation process actually
> knows enough to do a certain amount of editing of the platform's headers,
> and install "fixed" copies of those headers where gcc will find them
> before the ones in /usr/include.  But it looks like the fixing didn't
> account for __builtin_infinity on this platform.  Maybe a newer gcc
> would get it right.

Sure, but that still requires the headers to behave differently between
C89 and C99 mode, as this worked before. But it turns out there's two
different math.h implementation headers, depending on c99 being enabled
(math_c99.h being the troublesome).  If I understand correctly the
problem is more that the system library headers are *newer* (and assume
a sun studio emulating/copying quite a bit of gcc) than the gcc that's
being used, and therefore gcc fails.

Gcc 3.4.3 has been released November 4, 2004, whereas solaris 10 is from
January 31, 2005. The sun studio used for castoroides running on, I
assume, the same hardware, is quite a bit newer in turn.


> I just launched gaur/pademelon builds for you, though I'm quite certain
> they'll both report "unsupported".

Yea, that seems fairly likely.


> If we go through with this, my plan would be to retire pademelon
> (vendor's compiler) and see if I can install gcc 4.something to
> replace the 2.95.3 version that gaur is using.

K.


> The -ansi option that dromedary is using is certainly losable, too
> (I'd probably replace it with either --std=c99 or --std=gnu99,
> whichever autoconf *doesn't* pick by default, just to be contrary).

Makes sense.


> Andrew is going to need to give us a policy decision on whether to
> keep using the existing animal names or take out new ones for these
> rather-significantly-modified configurations.

CCed.

Greetings,

Andres Freund


pgsql-hackers by date:

Previous
From: Alvaro Herrera
Date:
Subject: Re: [sqlsmith] ERROR: partition missing from subplans
Next
From: Alvaro Herrera
Date:
Subject: Re: FailedAssertion on partprune