Project

General

Profile

Actions

Bug #14651

closed

Building 2.5.1p57 with -flto fails on gcc 5.4.0

Added by glebm (Gleb Mazovetskiy) about 6 years ago. Updated about 6 years ago.

Status:
Closed
Assignee:
-
Target version:
-
ruby -v:
ruby 2.5.1p57 (2018-03-29 revision 63029) [x86_64-linux]
[ruby-core:86386]

Description

cflags='-march=native -flto -pipe' rvm reinstall 2.5.1 --disable-binary
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:

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) make.log glebm (Gleb Mazovetskiy), 03/29/2018 05:07 AM
mkmf.log (21.2 KB) mkmf.log ext/bigdecimal/mkmf.log glebm (Gleb Mazovetskiy), 03/29/2018 06:43 AM

Updated by nobu (Nobuyoshi Nakada) about 6 years ago

  • Status changed from Open to Feedback

Seems the check for rb_sym2str failed.
Please show ext/bigdecimal/mkmf.log file.

Updated by nobu (Nobuyoshi Nakada) about 6 years ago

Seems compiling with correct headers but linking against wrong library.
Does it occur without -flto option, and with newer version of gcc?
While I haven't tried rvm, it didn't occur with gcc-5 (Ubuntu 5.5.0-10ubuntu1) 5.5.0 20171010.

Updated by glebm (Gleb Mazovetskiy) about 6 years ago

  • 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.

Actions

Also available in: Atom PDF

Like0
Like0Like0Like0Like0