From: glex.spb@... Date: 2018-04-02T01:55:37+00:00 Subject: [ruby-core:86424] [Ruby trunk Bug#14651][Closed] Building 2.5.1p57 with -flto fails on gcc 5.4.0 Issue #14651 has been updated by glebm (Gleb Mazovetskiy). Status changed from Feedback to Closed gcc v5.4.0 is the latest gcc in Ubuntu 16.04 LTS. I've upgraded to Ubuntu 17.10 and there it is currently: ~~~ gcc version 7.2.0 (Ubuntu 7.2.0-8ubuntu3.2) ~~~ With this new gcc version, compiling with `-flto` works. As the new Ubuntu LTS release is just around the corner, perhaps it no longer makes sense to support gcc v5.4. ---------------------------------------- Bug #14651: Building 2.5.1p57 with -flto fails on gcc 5.4.0 https://bugs.ruby-lang.org/issues/14651#change-71359 * Author: glebm (Gleb Mazovetskiy) * Status: Closed * Priority: Normal * Assignee: * Target version: * ruby -v: ruby 2.5.1p57 (2018-03-29 revision 63029) [x86_64-linux] * Backport: 2.3: UNKNOWN, 2.4: UNKNOWN, 2.5: UNKNOWN ---------------------------------------- ~~~ bash cflags='-march=native -flto -pipe' rvm reinstall 2.5.1 --disable-binary ~~~ ~~~ bash gcc -v Using built-in specs. COLLECT_GCC=gcc COLLECT_LTO_WRAPPER=/usr/lib/gcc/x86_64-linux-gnu/5/lto-wrapper Target: x86_64-linux-gnu Configured with: ../src/configure -v --with-pkgversion='Ubuntu 5.4.0-6ubuntu1~16.04.9' --with-bugurl=file:///usr/share/doc/gcc-5/README.Bugs --enable-languages=c,ada,c++,java,go,d,fortran,objc,obj-c++ --prefix=/usr --program-suffix=-5 --enable-shared --enable-linker-build-id --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --libdir=/usr/lib --enable-nls --with-sysroot=/ --enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-time=yes --with-default-libstdcxx-abi=new --enable-gnu-unique-object --disable-vtable-verify --enable-libmpx --enable-plugin --with-system-zlib --disable-browser-plugin --enable-java-awt=gtk --enable-gtk-cairo --with-java-home=/usr/lib/jvm/java-1.5.0-gcj-5-amd64/jre --enable-java-home --with-jvm-root-dir=/usr/lib/jvm/java-1.5.0-gcj-5-amd64 --with-jvm-jar-dir=/usr/lib/jvm-exports/java-1.5.0-gcj-5-amd64 --with-arch-directory=amd64 --with-ecj-jar=/usr/share/java/eclipse-ecj.jar --enable-objc-gc --enable-multiarch --disable-werror --with-arch-32=i686 --with-abi=m64 --with-multilib-list=m32,m64,mx32 --enable-multilib --with-tune=generic --enable-checking=release --build=x86_64-linux-gnu --host=x86_64-linux-gnu --target=x86_64-linux-gnu Thread model: posix gcc version 5.4.0 20160609 (Ubuntu 5.4.0-6ubuntu1~16.04.9) ~~~ make.log attached, relevant error message: ~~~ bash In file included from bigdecimal.c:13:0: bigdecimal.h:139:1: error: static declaration of ���rb_sym2str��� follows non-static declaration rb_sym2str(VALUE sym) ^ In file included from bigdecimal.h:14:0, from bigdecimal.c:13: ../.././include/ruby/ruby.h:1735:7: note: previous declaration of ���rb_sym2str��� was here VALUE rb_sym2str(VALUE); ^ bigdecimal.c:108:1: error: static declaration of ���rb_rational_num��� follows non-static declaration rb_rational_num(VALUE rat) ^ In file included from ../.././include/ruby/ruby.h:2040:0, from bigdecimal.h:14, from bigdecimal.c:13: ../.././include/ruby/intern.h:171:7: note: previous declaration of ���rb_rational_num��� was here VALUE rb_rational_num(VALUE rat); ^ bigdecimal.c: In function ���rb_rational_num���: bigdecimal.c:113:50: error: macro "rb_funcall" requires 4 arguments, but only 2 given return rb_funcall(rat, rb_intern("numerator")); ^ bigdecimal.c:113:12: warning: return makes integer from pointer without a cast [-Wint-conversion] return rb_funcall(rat, rb_intern("numerator")); ^ bigdecimal.c: At top level: bigdecimal.c:120:1: error: static declaration of ���rb_rational_den��� follows non-static declaration rb_rational_den(VALUE rat) ^ In file included from ../.././include/ruby/ruby.h:2040:0, from bigdecimal.h:14, from bigdecimal.c:13: ../.././include/ruby/intern.h:172:7: note: previous declaration of ���rb_rational_den��� was here VALUE rb_rational_den(VALUE rat); ^ bigdecimal.c: In function ���rb_rational_den���: bigdecimal.c:125:52: error: macro "rb_funcall" requires 4 arguments, but only 2 given return rb_funcall(rat, rb_intern("denominator")); ^ bigdecimal.c:125:12: warning: return makes integer from pointer without a cast [-Wint-conversion] return rb_funcall(rat, rb_intern("denominator")); ~~~ ---Files-------------------------------- make.log (36.7 KB) mkmf.log (21.2 KB) -- https://bugs.ruby-lang.org/ Unsubscribe: