
Issue #21497 has been reported by liuzx (Liu Z.). ---------------------------------------- Bug #21497: building issue when using gcc15, because C23 is default https://bugs.ruby-lang.org/issues/21497 * Author: liuzx (Liu Z.) * Status: Open * ruby -v: 3.2, 3.3, 3.4 * Backport: 3.2: UNKNOWN, 3.3: UNKNOWN, 3.4: UNKNOWN ---------------------------------------- https://github.com/ruby/ruby/pull/13736 1. 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 2. 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(); | ^~~~~~~~~