From: matz@... (Yukihiro Matsumoto) Date: 1998-07-02T12:49:13+09:00 Subject: [ruby-list:8615] Re: can't build 1.1b9_28 on digital-unix まつもと ゆきひろです In message "[ruby-list:8606] can't build 1.1b9_28 on digital-unix" on 98/07/01, Go Nakagawa writes: |中川といいます。みなさんはじめまして。 | |digital-unix 3.2G で ruby-1.1b9_28 をコンパイルすると次のようなエラー |になってしまいます。 おお,64bitアーキテクチャっ. これらの原因はそこにあります.私の手元からalphaマシンが無く なって以来全然チェックしていませんから. まず,marshal.cがコンパイルできない件は添付のパッチでうまく 行くのではないかと思います.warningは残るかも. で,make testが失敗しているところは整数演算関係でどこかに sizeof(int)==sizeof(long)を仮定しているところがあるようです. ちょっと調べてみます. --- marshal.c 1998/06/26 09:44:27 1.1.1.1.2.12 +++ marshal.c 1998/07/02 03:45:07 @@ -227,3 +227,3 @@ #else - if (RSHIFT(obj, 32) == 0 || RSHIFT(obj, 32) == -1) { + if (RSHIFT((long)obj, 32) == 0 || RSHIFT((long)obj, 32) == -1) { w_byte(TYPE_FIXNUM, arg); @@ -276,2 +276,3 @@ case T_BIGNUM: + write_bignum: w_byte(TYPE_BIGNUM, arg); @@ -514,3 +515,3 @@ #define r_bytes(s, arg) \ - (s = (char*)r_long(arg), r_bytes0(&s,ALLOCA_N(char,(long)s),(long)s,arg)) + (s = (char*)r_long(arg), r_bytes0(&s,ALLOCA_N(char,(int)s),(int)s,arg))