misc #8646

Can't compile ruby on AIX using gcc if a function name has $.

Added by Yutaka Kanemoto 9 months ago. Updated 4 months ago.

[ruby-dev:47512]
Status:Closed
Priority:Normal
Assignee:Yutaka Kanemoto
Category:build
Target version:2.1.0

Description

r41273で追加されたSafe Levelのチェックの部分で関数名に $ が使われているのですが、AIXのgccでエラーになってしまいます。

% make
(中略)
compiling ../trunk/main.c
In file included from ../trunk/include/ruby.h:33:0,
from ../trunk/main.c:13:
../trunk/include/ruby/ruby.h:570:1: error: stray '$' in program
int ruby$safelevel$4(void) _attribute((error("$SAFE=4 is obsolete")));
^
../trunk/include/ruby/ruby.h:570:10: error: expected '=', ',', ';', 'asm' or '
attribute' before 'safelevel'
int ruby$safe
level$4(void) __attribute
((error("$SAFE=4 is obsolete")));
^
../trunk/include/ruby/ruby.h:570:10: error: stray '$' in program
make: *** [main.o] Error 1

ここをみると、
http://gcc.gnu.org/onlinedocs/gcc/Interoperation.html
最後の行に説明があります。
実際最近のバージョンのgccだと-fdollars-in-identifiersを使うとエラーがなくなるのですが、
先日いくつかAIXに関する報告をしてくれた方(GCCのCompilationFarmを紹介してくれました)に聞いてみると、

If Ruby starts using it in general, there would be problems on AIX and
it would be a bad portability decision by Ruby community.

とのことです。というわけで、2箇所ある ruby$safe_level$4 の $ (合計4つ)を _ あたりに変更させていただいてもよろしいでしょうか?
もしそれでよければこちらでコミットしますのでご一報下さい。
よろしくお願いいたします。

Associated revisions

Revision 42035
Added by Nobuyoshi Nakada 9 months ago

ruby.h: no $

  • include/ruby/ruby.h (rubysafelevel_4): get rid of special character. [misc #8646]

History

#1 Updated by Nobuyoshi Nakada 9 months ago

  • Status changed from Open to Assigned
  • Assignee changed from Nobuyoshi Nakada to Yutaka Kanemoto

どうぞ。

#2 Updated by Nobuyoshi Nakada 4 months ago

  • Status changed from Assigned to Closed
  • % Done changed from 0 to 100

Also available in: Atom PDF