Bug#1096826: icon: ftbfs with GCC-15
Package: src:icon
Version: 9.5.24a-2
Severity: important
Tags: sid forky
User: debian-gcc@lists.debian.org
Usertags: ftbfs-gcc-15
[This bug is NOT targeted to the upcoming trixie release]
Please keep this issue open in the bug tracker for the package it
was filed for. If a fix in another package is required, please
file a bug for the other package (or clone), and add a block in this
package. Please keep the issue open until the package can be built in
a follow-up test rebuild.
The package fails to build in a test rebuild on at least amd64 with
gcc-15/g++-15, but succeeds to build with gcc-14/g++-14. The
severity of this report will be raised before the forky release.
The full build log can be found at:
http://qa-logs.debian.net/2025/02/16/amd64exp/icon_9.5.24a-2_unstable_gccexp.log.gz
The last lines of the build log are at the end of this report.
To build with GCC 15, either set CC=gcc-15 CXX=g++-15 explicitly,
or install the gcc, g++, gfortran, ... packages from experimental.
apt-get -t=experimental install g++
GCC 15 now defaults to the C23/C++23 standards, exposing many FTBFS.
Other Common build failures are new warnings resulting in build failures
with -Werror turned on, or new/dropped symbols in Debian symbols files.
For other C/C++ related build failures see the porting guide at
http://gcc.gnu.org/gcc-15/porting_to.html
[...]
rttdb.c: In function 'dumpdb':
rttdb.c:286:57: error: passing argument 6 of 'prt_impls' from incompatible pointer type [-Wincompatible-pointer-types]
286 | prt_impls(db, "functions", bhash, num_fnc, sort_ary, name_cmp);
| ^~~~~~~~
| |
| int (*)(char *, char *)
rttdb.c:20:72: note: expected 'int (*)(void)' but argument is of type 'int (*)(char *, char *)'
20 | int num, struct implement **sort_ary, int (*com)());
| ~~~~~~^~~~~~
rttdb.c:16:16: note: 'name_cmp' declared here
16 | static int name_cmp (char *p1, char *p2);
| ^~~~~~~~
rttdb.c:287:58: error: passing argument 6 of 'prt_impls' from incompatible pointer type [-Wincompatible-pointer-types]
287 | prt_impls(db, "\noperators", ohash, num_op, sort_ary, op_cmp);
| ^~~~~~
| |
| int (*)(char *, char *)
rttdb.c:20:72: note: expected 'int (*)(void)' but argument is of type 'int (*)(char *, char *)'
20 | int num, struct implement **sort_ary, int (*com)());
| ~~~~~~^~~~~~
rttdb.c:17:16: note: 'op_cmp' declared here
17 | static int op_cmp (char *p1, char *p2);
| ^~~~~~
rttdb.c:288:58: error: passing argument 6 of 'prt_impls' from incompatible pointer type [-Wincompatible-pointer-types]
288 | prt_impls(db, "\nkeywords", khash, num_key, sort_ary, name_cmp);
| ^~~~~~~~
| |
| int (*)(char *, char *)
rttdb.c:20:72: note: expected 'int (*)(void)' but argument is of type 'int (*)(char *, char *)'
20 | int num, struct implement **sort_ary, int (*com)());
| ~~~~~~^~~~~~
rttdb.c:16:16: note: 'name_cmp' declared here
16 | static int name_cmp (char *p1, char *p2);
| ^~~~~~~~
rttdb.c: In function 'prt_impls':
rttdb.c:327:64: error: passing argument 4 of 'qsort' from incompatible pointer type [-Wincompatible-pointer-types]
327 | qsort((char *)sort_ary, num, sizeof(struct implement *), cmp);
| ^~~
| |
| int (*)(void)
In file included from ../preproc/../h/../h/sys.h:15,
from ../preproc/../h/gsupport.h:9,
from ../preproc/preproc.h:1,
from rtt1.h:1,
from rtt.h:2,
from rttdb.c:6:
/usr/include/stdlib.h:971:34: note: expected '__compar_fn_t' {aka 'int (*)(const void *, const void *)'} but argument is of type 'int (*)(void)'
971 | __compar_fn_t __compar) __nonnull ((1, 4));
| ~~~~~~~~~~~~~~^~~~~~~~
/usr/include/stdlib.h:948:15: note: '__compar_fn_t' declared here
948 | typedef int (*__compar_fn_t) (const void *, const void *);
| ^~~~~~~~~~~~~
rttdb.c: In function 'prt_dpnd':
rttdb.c:1091:10: error: passing argument 4 of 'qsort' from incompatible pointer type [-Wincompatible-pointer-types]
1091 | (int (*)())src_cmp);
| ^~~~~~~~~~~~~~~~~~
| |
| int (*)(void)
/usr/include/stdlib.h:971:34: note: expected '__compar_fn_t' {aka 'int (*)(const void *, const void *)'} but argument is of type 'int (*)(void)'
971 | __compar_fn_t __compar) __nonnull ((1, 4));
| ~~~~~~~~~~~~~~^~~~~~~~
/usr/include/stdlib.h:948:15: note: '__compar_fn_t' declared here
948 | typedef int (*__compar_fn_t) (const void *, const void *);
| ^~~~~~~~~~~~~
make[2]: *** [<builtin>: rttdb.o] Error 1
make[2]: Leaving directory '/build/reproducible-path/icon-9.5.24a/src/rtt'
make[1]: *** [Makefile:68: bin/icont] Error 2
make[1]: Leaving directory '/build/reproducible-path/icon-9.5.24a'
make: *** [debian/rules:47: build-ipl] Error 2
dpkg-buildpackage: error: debian/rules binary subprocess returned exit status 2
Reply to: