Build failure with GCC 15 (defaults to -std=gnu23)
Sam James <sam@gentoo.org>
From: Sam James <sam@gentoo.org>
To: pgsql-bugs@lists.postgresql.org
Date: 2024-11-17T02:54:01Z
Lists: pgsql-bugs
Hi,
postgres-17.1 fails to build with upcoming GCC 15 which defaults to
-std=gnu23 as follows:
```
In file included from ../../src/include/postgres_fe.h:25,
from checksum_helper.c:17:
../../src/include/c.h:456:23: error: two or more data types in declaration specifiers
456 | typedef unsigned char bool;
| ^~~~
../../src/include/c.h:456:1: warning: useless type name in empty declaration
456 | typedef unsigned char bool;
| ^~~~~~~
```
src/include/c.h does attempt to check for whether bool is already defined but
the check doesn't work.
There may be more issues afterwards but I haven't tried papering over
the above issue. It should be possible to reproduce w/
CFLAGS="... -std=gnu23" or CFLAGS="... -std=c23" on older GCC or Clang.
thanks,
sam
Commits
Same data as JSON:
GET /api/v1/messages/:b64id/commits
the thread's linked commits as JSON, with link sources.
API reference →
-
Require sizeof(bool) == 1.
- 97525bc5c8ff 18.0 landed
-
If a C23 compiler is detected, try asking for C17.
- f4e8f137bfb0 10 (unreleased) landed
- 0c7171b32e64 9.2 (unreleased) landed
- 102be6634e6f 9.3 (unreleased) landed
- b1b8b8e6f141 9.4 (unreleased) landed
- 5b40ce749c6f 9.5 (unreleased) landed
- 70cf253d18da 9.6 (unreleased) landed
- 170e416034ec 11 (unreleased) landed
- 3f302f0ed06f 12 (unreleased) landed
- 59ea17c43c6c 13.19 landed
- 1fd57e5bbf87 14.16 landed
- f00c401c65af 15.11 landed
-
Fix C23 compiler warning
- f7a929a007e6 16.7 landed
- f3834c12afd8 17.3 landed
-
Rename C23 keyword
- ae145d1de677 16.7 landed
- ad89c8bda1f0 17.3 landed
-
Assume that <stdbool.h> conforms to the C standard.
- bc5a4dfcf739 18.0 landed
- 0813a5e69186 17.3 landed
- 0f6d902308a8 16.7 landed
- 94817d9d94d0 15.11 landed
- e0874080c472 14.16 landed
- 13242b64e15d 13.19 landed
- 15a89e2cc501 12 (unreleased) landed
- 0305dd3adef2 11 (unreleased) landed
-
Revise tree-walk APIs to improve spec compliance & silence warnings.
- 1c27d16e6e5c 16.0 cited