Bug #21497
closedbuilding issue when using gcc15, because C23 is default
Description
https://github.com/ruby/ruby/pull/13736
- for ruby 3.3, 3.4: when compiling using gcc 15 with "-flto -Werror=lto-type-mismatch", ext/io/console/extconf.h will have:
#define HAVE_RB_IO_PATH 1
#define HAVE_RB_IO_DESCRIPTOR 1
#define HAVE_RB_IO_GET_WRITE_IO 1
#define HAVE_RB_IO_CLOSED_P 1
#define HAVE_RB_IO_OPEN_DESCRIPTOR 1
the build is failed with:
console.c:1417:1: error: static declaration of ‘rb_io_closed_p’ follows non-static declaration
1417 | rb_io_closed_p(VALUE io)
| ^~~~~~~~~~~~~~
../../.././include/ruby/io.h:385:7: note: previous declaration of ‘rb_io_closed_p’ with type ‘VALUE(VALUE)’ {aka ‘long unsigned int(long un
signed int)’}
385 | VALUE rb_io_closed_p(VALUE io);
| ^~~~~~~~~~~~~~
see https://bugs.gentoo.org/945643#c17 for more detail analysis
- for ruby 3.2, 3.3, 3.4: when enable socks5 support, gcc15 will report:
init.c:573:19: error: too many arguments to function ‘Rconnect’; expected 0, have 3
573 | return (VALUE)Rconnect(arg->fd, arg->sockaddr, arg->len);
| ^~~~~~~~ ~~~~~~~
In file included from init.c:11:
rubysocket.h:294:5: note: declared here
294 | int Rconnect();
| ^~~~~~~~
sockssocket.c:33:9: error: too many arguments to function ‘SOCKSinit’; expected 0, have 1
33 | SOCKSinit("ruby");
| ^~~~~~~~~ ~~~~~~
In file included from sockssocket.c:11:
rubysocket.h:293:6: note: declared here
293 | void SOCKSinit();
| ^~~~~~~~~