まつもと ゆきひろです
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))