Subject: crasm: ftbfs with GCC-15

From: Matthias Klose <[email-masked]>
Date: Mon, 17 Feb 2025 17:08:30 +0000

Package: src:crasm
Version: 1.8-3
Severity: important
Tags: sid forky
User: [email-masked]
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/crasm_1.8-3_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

[...]
      |             ^~~~~~~
parse.c:97:66: error: initialization of ‘void (*)(void)’ from incompatible pointer type ‘void (*)(struct result *, char *)’ [-Wincompatible-pointer-types]
   97 |         { "%?"          ,-2,1   /* binaire      */              ,cstbinary,},
      |                                                                  ^~~~~~~~~
parse.c:97:66: note: (near initialization for ‘oplist[20].callop’)
parse.c:60:13: note: ‘cstbinary’ declared here
   60 | extern void cstbinary(struct result *presult, char *s);
      |             ^~~~~~~~~
parse.c:98:66: error: initialization of ‘void (*)(void)’ from incompatible pointer type ‘void (*)(struct result *, char *)’ [-Wincompatible-pointer-types]
   98 |         { "?B"          ,-2,1   /* Intel binaire*/              ,cstbinary,},
      |                                                                  ^~~~~~~~~
parse.c:98:66: note: (near initialization for ‘oplist[21].callop’)
pseudos.c: In function ‘Xcpu’:
parse.c:60:13: note: ‘cstbinary’ declared here
   60 | extern void cstbinary(struct result *presult, char *s);
      |             ^~~~~~~~~
parse.c:99:66: error: initialization of ‘void (*)(void)’ from incompatible pointer type ‘void (*)(struct result *, char *)’ [-Wincompatible-pointer-types]
   99 |         { "0B?"         ,-2,1   /* C binaire    */              ,cstbinary,},
      |                                                                  ^~~~~~~~~
parse.c:99:66: note: (near initialization for ‘oplist[22].callop’)
parse.c:60:13: note: ‘cstbinary’ declared here
   60 | extern void cstbinary(struct result *presult, char *s);
      |             ^~~~~~~~~
pseudos.c:376:10: error: too many arguments to function ‘q->init’; expected 0, have 1
  376 |         (*q->init)(q->code);
      |         ~^~~~~~~~~ ~~~~~~~
parse.c:100:66: error: initialization of ‘void (*)(void)’ from incompatible pointer type ‘void (*)(struct result *, char *)’ [-Wincompatible-pointer-types]
  100 |         { "?Q"          ,-2,1   /* Intel octal  */              ,cstoctal,},
      |                                                                  ^~~~~~~~
In file included from pseudos.c:28:
cpu.h:51:26: note: declared here
   51 |                   void (*init)(); };
      |                          ^~~~
parse.c:100:66: note: (near initialization for ‘oplist[23].callop’)
parse.c:63:13: note: ‘cstoctal’ declared here
   63 | extern void cstoctal(struct result *presult, char *s);
      |             ^~~~~~~~
parse.c: In function ‘parse2’:
parse.c:137:30: error: too many arguments to function ‘(q + (sizetype)((long unsigned int)j * 24))->callop’; expected 0, have 2
  137 |                         (q[j].callop)(presult,&arg);
      |                         ~~~~~^~~~~~~~ ~~~~~~~
parse.c:70:16: note: declared here
   70 |         void (*callop)();       /*      (*callop)(&result,&arg )  */
      |                ^~~~~~
parse.c:143:26: error: too many arguments to function ‘q->callop’; expected 0, have 1
  143 |                         (*q->callop)(presult);
      |                         ~^~~~~~~~~~~ ~~~~~~~
parse.c:70:16: note: declared here
   70 |         void (*callop)();       /*      (*callop)(&result,&arg )  */
      |                ^~~~~~
parse.c:153:26: error: too many arguments to function ‘q->callop’; expected 0, have 2
  153 |                         (*q->callop)(presult,ca);
      |                         ~^~~~~~~~~~~ ~~~~~~~
parse.c:70:16: note: declared here
   70 |         void (*callop)();       /*      (*callop)(&result,&arg )  */
      |                ^~~~~~
parse.c:177:17: error: too many arguments to function ‘error’; expected 0, have 1
  177 |                 error ( "syntax error in an expression" );
      |                 ^~~~~   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
parse.c:32:13: note: declared here
   32 | extern void error();
      |             ^~~~~
make[2]: *** [<builtin>: parse.o] Error 1
make[2]: *** [<builtin>: pseudos.o] Error 1
make[2]: Leaving directory '/build/reproducible-path/crasm-1.8/src'
make[1]: *** [Makefile:9: all] Error 2
make[1]: Leaving directory '/build/reproducible-path/crasm-1.8'
dh_auto_build: error: make -j8 "INSTALL=install --strip-program=true" returned exit code 2
make: *** [debian/rules:11: binary] Error 25
dpkg-buildpackage: error: debian/rules binary subprocess returned exit status 2