From: "stes (David Stes)" <noreply@...>
Date: 2021-11-18T18:43:19+00:00
Subject: [ruby-core:106156] [Ruby master Misc#18335] openindiana ruby 3.1 preview needs --disable-dtrace

Issue #18335 has been updated by stes (David Stes).


The actual configure line that works for me on OpenIndiana 2021.10 with gcc 10.3 (or gcc 7.5) is:

./configure --prefix=$HOME/ruby-31 --with-gcc --enable-dtrace CFLAGS="-g -O2" AR=/usr/bin/ar STRIP=/usr/bin/strip

Note that I compile with gcc either 7.5 (32bit) or 10.3 (64bit).

I use --enable-dtrace which uses something called a "glommed object" as discussed in 

https://marc.info/?l=opensolaris-dtrace-discuss&m=114761203110734&w=4

which is a link that is in the Ruby Makefile to explain the idea behind the glommed object.

Finally I have to add CFLAGS="-g -O2" to the configure line.

If not, then it uses the -O3 flag which is set in the configure.ac script as optflags, but this crashes 'ld' (signal 11) in a text in bigdecimal as can be seen in the ext/bigdecimal/mkmf.log  

The ruby-2.7.4 configuration is easier since (1) it does not use GNU ar (gar) and (2) the ruby 2.7.4 configure script sets CFLAGS to -g -O2 and optflags to -O3 and it seems it is not setting both flags to -O3.

----------------------------------------
Misc #18335: openindiana ruby 3.1 preview needs --disable-dtrace
https://bugs.ruby-lang.org/issues/18335#change-94757

* Author: stes (David Stes)
* Status: Open
* Priority: Normal
----------------------------------------
Hello,

I tried compiling ruby 3.1 preview on OpenIndiana (Illumos) and this works:

./configure --prefix=$HOME/ruby-31 --with-gcc --disable-dtrace
gmake
gmake install

It works:

$HOME/ruby-31/bin/ruby --version
ruby 3.1.0preview1 (2021-11-09 master 5a3b2e6141) [i386-solaris2.11]

It succesfully compiles with the above config line and seems to work.

You can see in the above that it builds a 32bit by default, I did not yet try a full 64bit compile.

Note that I use the --with-gcc to select the OpenIndiana GCC compiler (not OpenIndiana clang).

I compiled with the default gcc 7.5.

Now for some reason it seems I have to use --disable-dtrace.

In older versions < 3.0 this works with DTRACE enabled, but this is apparently broken since 3.0.x

If I compile with dtrace enabled I get:

checking whether dtrace USDT is available... yes(-xnolibs)
checking whether dtrace needs post processing... rebuild


and then during compile

compiling builtin.c
generating a glommed object with DTrace probes for static library
linking static-library libruby-static.a
gar: ruby-glommed.o: SHT_GROUP section [index 52] has no SHF_GROUP sections
gar: ruby-glommed.o: SHT_GROUP section [index 53] has no SHF_GROUP sections
gar: ruby-glommed.o: SHT_GROUP section [index 54] has no SHF_GROUP sections
gar: ruby-glommed.o: SHT_GROUP section [index 55] has no SHF_GROUP sections
...
lots of similar messages
gar: ruby-glommed.o: unknown type [0] section `' in group [.group]
gar: ruby-glommed.o: unknown type [0] section `' in group [.group]
gar: ruby-glommed.o: unknown type [0] section `' in group [.group]

Does anyone know what ruby-glommed is and what exactly broke here ?

It seems some sort of rebuild code generation is done in the dtrace case ,
but I am not familiar with the ruby config/build system to see what exactly.

The problem seems to be with GNU ar (gar).

There exist similar reports for FreeBSD like

https://bugs.ruby-lang.org/projects/ruby-master/repository/git/revisions/95aff214687a5e12c3eb57d056665741e734c188

"The latest ruby cannot compile with FreeBSD Dtrace enabled."

Is there a way please to compile with dtrace enabled ?

Thank you,
David Stes



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