alsa-tools icon indicating copy to clipboard operation
alsa-tools copied to clipboard

Build failures with GCC 15 (-std=gnu23)

Open kostadinsh opened this issue 1 year ago • 1 comments

Some of the programs in alsa-tools fail to build with upcoming GCC 15 which uses -std=gnu23 by default. This can be reproduced on older GCC and Clang versions by adding -std=gnu23 to CFLAGS.

Downstream Gentoo bug report: https://bugs.gentoo.org/943946

hdajackretask:

apply-changes.c:358:10: error: conflicting types for ‘reset_changes_boot’; have ‘gboolean(GError **)’ {aka ‘int(struct _GError **)’}
  358 | gboolean reset_changes_boot(GError** err)
      |          ^~~~~~~~~~~~~~~~~~
In file included from apply-changes.c:12:
apply-changes.h:12:10: note: previous declaration of ‘reset_changes_boot’ with type ‘gboolean(void)’ {aka ‘int(void)’}
   12 | gboolean reset_changes_boot();
      |          ^~~~~~~~~~~~~~~~~~
main-gtk.c: In function ‘reset_boot_clicked’:
main-gtk.c:375:5: error: too many arguments to function ‘reset_changes_boot’
  375 |     reset_changes_boot(&err);
      |     ^~~~~~~~~~~~~~~~~~
In file included from main-gtk.c:11:
apply-changes.h:12:10: note: declared here
   12 | gboolean reset_changes_boot();
      |          ^~~~~~~~~~~~~~~~~~

envy24control:

new_process.c: In function ‘new_process’:
new_process.c:67:18: error: assignment to ‘void (*)(void)’ from incompatible pointer type ‘__sighandler_t’ {aka ‘void (*)(int)’} [-Wincompatible-pointer-types]
   67 |         int_stat = signal(SIGINT, SIG_IGN);
      |                  ^
new_process.c:68:19: error: assignment to ‘void (*)(void)’ from incompatible pointer type ‘__sighandler_t’ {aka ‘void (*)(int)’} [-Wincompatible-pointer-types]
   68 |         quit_stat = signal(SIGQUIT, SIG_IGN);
      |                   ^
new_process.c:69:19: error: assignment to ‘void (*)(void)’ from incompatible pointer type ‘__sighandler_t’ {aka ‘void (*)(int)’} [-Wincompatible-pointer-types]
   69 |         usr2_stat = signal(SIGUSR2, SIG_IGN);
      |                   ^
new_process.c:81:24: error: passing argument 2 of ‘signal’ from incompatible pointer type [-Wincompatible-pointer-types]
   81 |         signal(SIGINT, int_stat);
      |                        ^~~~~~~~
      |                        |
      |                        void (*)(void)
In file included from envy24control.h:4:
/usr/include/signal.h:88:57: note: expected ‘__sighandler_t’ {aka ‘void (*)(int)’} but argument is of type ‘void (*)(void)’
   88 | extern __sighandler_t signal (int __sig, __sighandler_t __handler)
      |                                          ~~~~~~~~~~~~~~~^~~~~~~~~
new_process.c:82:25: error: passing argument 2 of ‘signal’ from incompatible pointer type [-Wincompatible-pointer-types]
   82 |         signal(SIGQUIT, quit_stat);
      |                         ^~~~~~~~~
      |                         |
      |                         void (*)(void)
/usr/include/signal.h:88:57: note: expected ‘__sighandler_t’ {aka ‘void (*)(int)’} but argument is of type ‘void (*)(void)’
   88 | extern __sighandler_t signal (int __sig, __sighandler_t __handler)
      |                                          ~~~~~~~~~~~~~~~^~~~~~~~~
new_process.c:83:25: error: passing argument 2 of ‘signal’ from incompatible pointer type [-Wincompatible-pointer-types]
   83 |         signal(SIGUSR2, usr2_stat);
      |                         ^~~~~~~~~
      |                         |
      |                         void (*)(void)
/usr/include/signal.h:88:57: note: expected ‘__sighandler_t’ {aka ‘void (*)(int)’} but argument is of type ‘void (*)(void)’
   88 | extern __sighandler_t signal (int __sig, __sighandler_t __handler)
      |                                          ~~~~~~~~~~~~~~~^~~~~~~~~

kostadinsh avatar Nov 26 '24 12:11 kostadinsh

Fixed in 1.2.14 with https://github.com/alsa-project/alsa-tools/commit/5eaadd15bda4cf0424ee2470a6d304a0c2ce10cb and https://github.com/alsa-project/alsa-tools/commit/97092591e03fa01a7b3b38ecf120fc28f437b9ca

PPN-SD avatar Aug 24 '25 23:08 PPN-SD