Re: C99 compliance for src/port/snprintf.c
Andres Freund <andres@anarazel.de>
From: Andres Freund <andres@anarazel.de>
To: Tom Lane <tgl@sss.pgh.pa.us>, Dave Page <dpage@pgadmin.org>
Cc: David Steele <david@pgmasters.net>, pgsql-hackers@lists.postgresql.org
Date: 2018-08-16T14:22:20Z
Lists: pgsql-hackers
Hi, On 2018-08-16 04:18:59 -0700, Andres Freund wrote: > Besides gaur, I'm also awaiting casteroides' results. The latter > definitely does support C99, but I'm not sure autconf pushes hard > enough. I think every other relevant animal has reported back. Casteroides wasn't a problem, -D_STDC_C99= does the trick. 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: gcc -std=gnu99 -Wall -Wmissing-prototypes -Wpointer-arith -Wdeclaration-after-statement -Wendif-labels -Wmissing-format-attribute -Wformat-security -fno-strict-aliasing -fwrapv -Wno-unused-command-line-argument -g -I/usr/local/include -m64 -I../../../../src/include -c -o gistutil.o gistutil.c In file included from gistutil.c:24: ../../../../src/include/utils/float.h: In function `get_float4_infinity': ../../../../src/include/utils/float.h:71: error: `__builtin_infinity' undeclared (first use in this function) ../../../../src/include/utils/float.h:71: error: (Each undeclared identifier is reported only once ../../../../src/include/utils/float.h:71: error: for each function it appears in.) ../../../../src/include/utils/float.h: In function `get_float8_infinity': ../../../../src/include/utils/float.h:91: error: `__builtin_infinity' undeclared (first use in this function) ../../../../src/include/utils/float.h: In function `get_float4_nan': ../../../../src/include/utils/float.h:108: error: pointer value used where a floating point value was expected ../../../../src/include/utils/float.h: In function `get_float8_nan': ../../../../src/include/utils/float.h:121: error: pointer value used where a floating point value was expected ../../../../src/include/utils/float.h: In function `check_float4_val': ../../../../src/include/utils/float.h:136: warning: implicit declaration of function `__builtin_isinf' ../../../../src/include/utils/float.h: In function `float4_eq': ../../../../src/include/utils/float.h:283: warning: implicit declaration of function `__builtin_isnan' 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. Greetings, Andres Freund
Commits
Same data as JSON:
GET /api/v1/messages/:b64id/commits
the thread's linked commits as JSON, with link sources.
API reference →
-
Remove test for VA_ARGS, implied by C99.
- 8ecdefc261ab 12.0 landed
-
Introduce minimal C99 usage to verify compiler support.
- 143290efd079 12.0 landed
-
Require C99 (and thus MSCV 2013 upwards).
- d9dd406fe281 12.0 landed
-
Require a C99-compliant snprintf(), and remove related workarounds.
- e1d19c902e59 12.0 landed
-
Try to enable C99 in configure, but do not rely on it (yet).
- 86d78ef50e01 12.0 landed
-
Make snprintf.c follow the C99 standard for snprintf's result value.
- c2a2e331da17 9.6.11 landed
- 1811900b933c 10.6 landed
- 36147ec9f1e2 11.0 landed
- a57a6faf6011 9.3.25 landed
- 27c4b0899c0e 9.4.20 landed
- 8e9f229d2bf6 9.5.15 landed
- 805889d7d23f 12.0 landed
-
Clean up assorted misuses of snprintf()'s result value.
- d7ed4eea539d 11.0 landed
- d371efb39c33 9.4.20 landed
- c81062e8e12f 9.5.15 landed
- c182c1e0b895 9.6.11 landed
- 6101bc2f459c 10.6 landed
- 3531365de5e8 9.3.25 landed
- cc4f6b778618 12.0 landed