From: Tanaka Akira Date: 2007-10-07T17:11:52+09:00 Subject: [ruby-dev:31961] Re: pcc: constant too big for cross-compiler In article <470884D1.9040401@airemix.com>, "NARUSE, Yui" writes: > pcc 0.9.8 for i386--netbsdelf で trunk をコンパイルしようとすると、 > > pcc -g -O2 -fPIC -I. -I.ext/include/i386-netbsdelf3.1.1. > -I../trunk/include -I../trunk -DRUBY_EXPORT -c ../trunk/array.c > ../trunk/include/ruby/ruby.h, line 686: constant too big for cross-compiler > ../trunk/include/ruby/ruby.h, line 690: constant too big for cross-compiler > *** Error code 1 > > Stop. > > と怒られるのですが、これは仕様と考えていいのでしょうか。 そっか。enum は int までしか保証されてないんですね。 以下でどうでしょうか。 Index: include/ruby/ruby.h =================================================================== --- include/ruby/ruby.h (リビジョン 13647) +++ include/ruby/ruby.h (作業コピー) @@ -626,67 +626,65 @@ enum ruby_value_flags { RUBY_FL_MARK = (1<<5), -#define FL_MARK RUBY_FL_MARK +#define FL_MARK ((VALUE)RUBY_FL_MARK) RUBY_FL_RESERVED = (1<<6) /* will be used in the future GC */, -#define FL_RESERVED RUBY_FL_RESERVED +#define FL_RESERVED ((VALUE)RUBY_FL_RESERVED) RUBY_FL_FINALIZE = (1<<7), -#define FL_FINALIZE RUBY_FL_FINALIZE +#define FL_FINALIZE ((VALUE)RUBY_FL_FINALIZE) RUBY_FL_TAINT = (1<<8), -#define FL_TAINT RUBY_FL_TAINT +#define FL_TAINT ((VALUE)RUBY_FL_TAINT) RUBY_FL_EXIVAR = (1<<9), -#define FL_EXIVAR RUBY_FL_EXIVAR +#define FL_EXIVAR ((VALUE)RUBY_FL_EXIVAR) RUBY_FL_FREEZE = (1<<10), -#define FL_FREEZE RUBY_FL_FREEZE +#define FL_FREEZE ((VALUE)RUBY_FL_FREEZE) RUBY_FL_SINGLETON = (1<<11), -#define FL_SINGLETON RUBY_FL_SINGLETON +#define FL_SINGLETON ((VALUE)RUBY_FL_SINGLETON) RUBY_FL_USHIFT = 11, -#define FL_USHIFT RUBY_FL_USHIFT +#define FL_USHIFT ((VALUE)RUBY_FL_USHIFT) RUBY_FL_USER0 = (1<<(FL_USHIFT+0)), -#define FL_USER0 RUBY_FL_USER0 +#define FL_USER0 ((VALUE)RUBY_FL_USER0) RUBY_FL_USER1 = (1<<(FL_USHIFT+1)), -#define FL_USER1 RUBY_FL_USER1 +#define FL_USER1 ((VALUE)RUBY_FL_USER1) RUBY_FL_USER2 = (1<<(FL_USHIFT+2)), -#define FL_USER2 RUBY_FL_USER2 +#define FL_USER2 ((VALUE)RUBY_FL_USER2) RUBY_FL_USER3 = (1<<(FL_USHIFT+3)), -#define FL_USER3 RUBY_FL_USER3 +#define FL_USER3 ((VALUE)RUBY_FL_USER3) RUBY_FL_USER4 = (1<<(FL_USHIFT+4)), -#define FL_USER4 RUBY_FL_USER4 +#define FL_USER4 ((VALUE)RUBY_FL_USER4) RUBY_FL_USER5 = (1<<(FL_USHIFT+5)), -#define FL_USER5 RUBY_FL_USER5 +#define FL_USER5 ((VALUE)RUBY_FL_USER5) RUBY_FL_USER6 = (1<<(FL_USHIFT+6)), -#define FL_USER6 RUBY_FL_USER6 +#define FL_USER6 ((VALUE)RUBY_FL_USER6) RUBY_FL_USER7 = (1<<(FL_USHIFT+7)), -#define FL_USER7 RUBY_FL_USER7 +#define FL_USER7 ((VALUE)RUBY_FL_USER7) RUBY_FL_USER8 = (1<<(FL_USHIFT+8)), -#define FL_USER8 RUBY_FL_USER8 +#define FL_USER8 ((VALUE)RUBY_FL_USER8) RUBY_FL_USER9 = (1<<(FL_USHIFT+9)), -#define FL_USER9 RUBY_FL_USER9 +#define FL_USER9 ((VALUE)RUBY_FL_USER9) RUBY_FL_USER10 = (1<<(FL_USHIFT+10)), -#define FL_USER10 RUBY_FL_USER10 +#define FL_USER10 ((VALUE)RUBY_FL_USER10) RUBY_FL_USER11 = (1<<(FL_USHIFT+11)), -#define FL_USER11 RUBY_FL_USER11 +#define FL_USER11 ((VALUE)RUBY_FL_USER11) RUBY_FL_USER12 = (1<<(FL_USHIFT+12)), -#define FL_USER12 RUBY_FL_USER12 +#define FL_USER12 ((VALUE)RUBY_FL_USER12) RUBY_FL_USER13 = (1<<(FL_USHIFT+13)), -#define FL_USER13 RUBY_FL_USER13 +#define FL_USER13 ((VALUE)RUBY_FL_USER13) RUBY_FL_USER14 = (1<<(FL_USHIFT+14)), -#define FL_USER14 RUBY_FL_USER14 +#define FL_USER14 ((VALUE)RUBY_FL_USER14) RUBY_FL_USER15 = (1<<(FL_USHIFT+15)), -#define FL_USER15 RUBY_FL_USER15 +#define FL_USER15 ((VALUE)RUBY_FL_USER15) RUBY_FL_USER16 = (1<<(FL_USHIFT+16)), -#define FL_USER16 RUBY_FL_USER16 +#define FL_USER16 ((VALUE)RUBY_FL_USER16) RUBY_FL_USER17 = (1<<(FL_USHIFT+17)), -#define FL_USER17 RUBY_FL_USER17 +#define FL_USER17 ((VALUE)RUBY_FL_USER17) RUBY_FL_USER18 = (1<<(FL_USHIFT+18)), -#define FL_USER18 RUBY_FL_USER18 +#define FL_USER18 ((VALUE)RUBY_FL_USER18) RUBY_FL_USER19 = (1<<(FL_USHIFT+19)), -#define FL_USER19 RUBY_FL_USER19 +#define FL_USER19 ((VALUE)RUBY_FL_USER19) RUBY_FL_USER20 = (1<<(FL_USHIFT+20)), -#define FL_USER20 RUBY_FL_USER20 - RUBY_FL_DUMMY = ~(VALUE)0 >> 1 /* make sizeof(enum ruby_value_flags) - equal to sizeof(VALUE). */ +#define FL_USER20 ((VALUE)RUBY_FL_USER20) }; #define SPECIAL_CONST_P(x) (IMMEDIATE_P(x) || !RTEST(x)) -- [田中 哲][たなか あきら][Tanaka Akira]