まつもと ゆきひろです

In message "[ruby-list:8606] can't build 1.1b9_28 on digital-unix"
    on 98/07/01, Go Nakagawa <nakagawa / shizuokanet.ne.jp> 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))