[ruby-core:104866] [Ruby master Bug#18073] test/ruby/test_jit.rb: "error: invalid use of '__builtin_va_arg_pack ()'" on Ruby 2.7.4 on gcc 4.8.5
From:
jaruga@...
Date:
2021-08-10 10:54:27 UTC
List:
ruby-core #104866
Issue #18073 has been updated by jaruga (Jun Aruga).
> This commit is for configure only.
> How the results of configure (config.status and config.h files) differ before and after this commit?
I did ssh login to RubyCI CentOS7 server, and checked the files between commits `fd95a18059` (previous commit for `29bbad9399`) and `29bbad9399` (first failure),
```
config.status
./.ext/include/x86_64-linux/ruby/config.h
```
by running the following commands.
```
git clean -fdx
autoconf
./configure --enable-shared
```
For the `config.status`, here is the result of the difference. There are some differences by not sorted items.
```
$ \diff -u ok.fd95a18059.config.status err.29bbad9399.config.status
--- ok.fd95a18059.config.status 2021-08-10 10:38:05.000139654 +0000
+++ err.29bbad9399.config.status 2021-08-10 10:25:19.967182125 +0000
@@ -791,18 +791,18 @@
S["GNU_LD"]="yes"
S["LD"]="ld"
S["GCC"]="yes"
-S["EGREP"]="/bin/grep -E"
-S["GREP"]="/bin/grep"
-S["CPP"]="$(CC) -E"
S["ac_ct_CXX"]=""
S["CXXFLAGS"]=""
S["CXX"]="g++"
+S["EGREP"]="/bin/grep -E"
+S["GREP"]="/bin/grep"
+S["CPP"]="gcc -E"
S["OBJEXT"]="o"
S["EXEEXT"]=""
+S["ac_ct_CC"]="gcc"
S["CPPFLAGS"]=" $(DEFS) ${cppflags}"
S["LDFLAGS"]="-L. -fstack-protector-strong -rdynamic -Wl,-export-dynamic"
-S["CFLAGS"]="${cflags} -fPIC"
-S["ac_ct_CC"]="gcc"
+S["CFLAGS"]="-g -O2 -fPIC"
S["CC"]="gcc -std=gnu99"
S["target_os"]="linux"
S["target_vendor"]="pc"
```
However the essential difference is the following part.
```
-S["CFLAGS"]="${cflags} -fPIC"
+S["CFLAGS"]="-g -O2 -fPIC"
```
For the `config.h`, here is the difference.
```
$ \diff -u ok.fd95a18059.config.h err.29bbad9399.config.h
--- ok.fd95a18059.config.h 2021-08-10 10:38:04.799141259 +0000
+++ err.29bbad9399.config.h 2021-08-10 10:25:19.775183599 +0000
@@ -169,11 +169,8 @@
#define PRI_SIZE_PREFIX "z"
#define PRI_PTRDIFF_PREFIX "t"
#define HAVE_STRUCT_STAT_ST_BLKSIZE 1
-#define HAVE_ST_BLKSIZE 1
#define HAVE_STRUCT_STAT_ST_BLOCKS 1
-#define HAVE_ST_BLOCKS 1
#define HAVE_STRUCT_STAT_ST_RDEV 1
-#define HAVE_ST_RDEV 1
#define SIZEOF_STRUCT_STAT_ST_SIZE SIZEOF_OFF_T
#define SIZEOF_STRUCT_STAT_ST_BLOCKS SIZEOF_OFF_T
#define SIZEOF_STRUCT_STAT_ST_INO SIZEOF_LONG
```
----------------------------------------
Bug #18073: test/ruby/test_jit.rb: "error: invalid use of '__builtin_va_arg_pack ()'" on Ruby 2.7.4 on gcc 4.8.5
https://bugs.ruby-lang.org/issues/18073#change-93221
* Author: jaruga (Jun Aruga)
* Status: Open
* Priority: Normal
* Backport: 2.6: UNKNOWN, 2.7: REQUIRED, 3.0: DONTNEED
----------------------------------------
I hit the following JIT test failures causing the following error on v2_7_4 tag (Ruby 2.7.4) with gcc 4.8.5 on RHEL 7. The tests work on Ruby 2.7.3 and also works on Ruby 3.0.2.
```
/mnt/git/ruby/ruby/.ext/include/x86_64-linux/rb_mjit_min_header-2.7.4.h: In function 'sprintf':
/mnt/git/ruby/ruby/.ext/include/x86_64-linux/rb_mjit_min_header-2.7.4.h:442:3: error: invalid use of '__builtin_va_arg_pack ()'
return __builtin___sprintf_chk (__s, 2 - 1,
^
```
```
$ which gcc
/usr/bin/gcc
$ gcc --version
gcc (GCC) 4.8.5 20150623 (Red Hat 4.8.5-39)
Copyright (C) 2015 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
$ git branch
* (detached from v2_7_4)
...
$ autoconf
$ ./configure --enable-shared 2>&1 | tee configure.log
$ make 2>&1 | tee make.log
```
Here is one of the failures. I would attach the full long files on this ticket.
```
$ make test-all TESTS="-v test/ruby/test_jit.rb" 2>&1 | tee make_test-all_test_jit.log
...
30) Failure:
TestJIT#test_compile_insn_local [/mnt/git/ruby/ruby/test/ruby/test_jit.rb:62]:
Expected 1 times of JIT success, but succeeded 0 times.
script:
"""
p proc {
foo = 1
foo
}.call
"""
stderr:
"""
/mnt/git/ruby/ruby/.ext/include/x86_64-linux/rb_mjit_min_header-2.7.4.h: In function 'sprintf':
/mnt/git/ruby/ruby/.ext/include/x86_64-linux/rb_mjit_min_header-2.7.4.h:442:3: error: invalid use of '__builtin_va_arg_pack ()'
return __builtin___sprintf_chk (__s, 2 - 1,
^
compilation terminated due to -Wfatal-errors.
Successful MJIT finish
"""
..
<1> expected but was
<0>.
...
Finished tests in 29.837252s, 3.1504 tests/s, 15.7186 assertions/s.
94 tests, 469 assertions, 87 failures, 0 errors, 4 skips
...
```
---Files--------------------------------
configure.log (27.6 KB)
make.log (102 KB)
make_test-all_test_jit.log (77 KB)
--
https://bugs.ruby-lang.org/
Unsubscribe: <mailto:ruby-core-request@ruby-lang.org?subject=unsubscribe>
<http://lists.ruby-lang.org/cgi-bin/mailman/options/ruby-core>