Actions
Bug #14446
closedSolaris 10 上の Oracle Developer Studio 12.5 および 12.6 の64ビットコンパイル時のmjit関係のエラー
Description
Solaris 10 上にて、Oracle Developer Studio 12.5 または 12.6 にて64ビットコンパイル時、以下のエラーでコンパイルに失敗します。
64ビットバイナリの作成には -m64 (もっと古いバージョンのコンパイラでは -xarch=v9)をCFLAGSやLDFLAGSに付ける必要があるのですが、 ./tool/transform_mjit_header.rb がそれに対応していない(CFLAGS相当が決め打ち)なのが原因のように見えます。
$ export CC=cc
$ export CXX=CC
$ export CPPLAGS="-I/usr/local/64/lib/libffi-3.0.10/include -I/usr/local/64/include"
$ export CFLAGS="-errtags=yes -xO4 -xtarget=sparc64xplus -m64"
$ export CXXFLAGS=$CFLAGS
$ export LDFLAGS="-m64 -L/usr/local/64/lib -R/usr/local/64/lib"
$ export DLDFLAGS=$LDFLAGS
$ export MAKE=/usr/local/64/bin/make
$ ./configure --prefix=/XXXXX/sparc64-cc126-trunk --build=sparc64-sun-solaris2.10 --with-tclConfig-dir=/usr/local/64/lib --with-tkConfig-dir=/usr/local/64/lib
(中略)
$ /usr/local/64/bin/make V=1
BASERUBY = /usr/local/64/bin/ruby --disable=gems
CC = cc
LD = /usr/ccs/bin/ld
LDSHARED = cc -G
CFLAGS = -errtags=yes -xO4 -xtarget=sparc64xplus -m64
XCFLAGS = -DRUBY_DEVEL=1 -DRUBY_EXPORT
CPPFLAGS = -I/usr/local/64/lib/libffi-3.0.10/include -I/usr/local/64/include -D_XOPEN_SOURCE=600 -I. -I.ext/include/sparc64-solaris2.10 -I./include -I. -I./enc/unicode/10.0.0 -DMJIT_HEADER_BUILD_DIR=".ext/include/sparc64-solaris2.10" -DLIBRUBYARG_SHARED="-L/XXXXX/sparc64-cc126-trunk/lib
" -DLIBRUBY_LIBDIR="/XXXXX/sparc64-cc126-trunk/lib" -DMJIT_HEADER_INSTALL_DIR="/XXXXX/sparc64-cc126-trunk/include/ruby-2.6.0/sparc64-solaris2.10"
DLDFLAGS = -m64 -L/usr/local/64/lib -R/usr/local/64/lib -m64
SOLIBS =
LANG = C
LC_ALL =
LC_CTYPE =
cc: Studio 12.6 Sun C 5.15 SunOS_sparc 2017/05/30
cc -errtags=yes -xO4 -xtarget=sparc64xplus -m64 -DRUBY_DEVEL=1 -DRUBY_EXPORT -I/usr/local/64/lib/libffi-3.0.10/include -I/usr/local/64/include -D_XOPEN_SOURCE=600 -I. -I.ext/include/sparc64-solaris2.10 -I./include -I. -I./enc/unicode/10.0.0 -DMJIT_HEADER_BUILD_DIR=\"".ext/include/sparc64-solaris2.10"\" -DLIBRUBYARG_SHARED=\""-L/XXXXX/sparc64-cc126-trunk/lib "\" -DLIBRUBY_LIBDIR=\""/XXXXX/sparc64-cc126-trunk/lib"\" -DMJIT_HEADER_INSTALL_DIR=\""/XXXXX/sparc64-cc126-trunk/include/ruby-2.6.0/sparc64-solaris2.10"\" -o main.o -c ./main.c
(中略)
cc -E -errtags=yes -xO4 -xtarget=sparc64xplus -DRUBY_DEVEL=1 -DRUBY_EXPORT -I/usr/local/64/lib/libffi-3.0.10/include -I/usr/local/64/include -D_XOPEN_SOURCE=600 -I. -I.ext/include/sparc64-solaris2.10 -I./include -I. -I./enc/unicode/10.0.0 -DMJIT_HEADER_BUILD_DIR=\"".ext/include/sparc64-solaris2.10"\" -DLIBRUBYARG_SHARED=\""-L/user/gen-info/ngoto/testruby/daily/sparc64-cc126-trunk/lib "\" -DLIBRUBY_LIBDIR=\""/XXXXX/sparc64-cc126-trunk/lib"\" -DMJIT_HEADER_INSTALL_DIR=\""/XXXXX/sparc64-cc126-trunk/include/ruby-2.6.0/sparc64-solaris2.10"\" -DMJIT_HEADER ./vm.c -o vm.new
./tool/ifchange rb_mjit_header.h vm.new
rb_mjit_header.h updated
./miniruby -I./lib -I. -I.ext/common ./tool/transform_mjit_header.rb "cc" rb_mjit_header.h .ext/include/sparc64-solaris2.10/rb_mjit_min_header-2.6.0.h
error in initial header file:
"include/ruby/ruby.h", line 104: zero or negative subscript
"include/ruby/ruby.h", line 108: zero or negative subscript
"./include/ruby/st.h", line 58: zero or negative subscript
"internal.h", line 252: warning: shift count negative or too big: >> 32
"internal.h", line 408: warning: shift count negative or too big: << 63
"internal.h", line 1501: warning: shift count negative or too big: >> 63
"internal.h", line 1538: warning: shift count negative or too big: >> 60
cc: acomp failed for /var/tmp/20180205-11459-t2wq56.c
make: *** [.ext/include/sparc64-solaris2.10/rb_mjit_min_header-2.6.0.h] Error 1
Actions
Like0
Like0Like0Like0Like0Like0Like0Like0