えぐち です。

----------
> 差出人 : WATANABE Hirofumi <watanabe / ase.ptg.sony.co.jp>
> 宛先 : ruby mailing list <ruby-list / netlab.co.jp>
> 件名 : [ruby-list:4849] Re: _muldi3 included in libgcc.a(Re: rbc.rb)
> 送信日時 : 1997年10月8日 12:52
> 
> わたなべです.
> 
> "EGUCHI Osamu" <eguchi / shizuokanet.or.jp> writes:
> 
> :通常 _muldi3 は、 libgcc.a に含まれています。
> 
> なるほど. gcc -shared だと -lgcc とかがつかないんだ.
> -lgcc を追加するのが簡単ですね.

たぶんそれでもうまく行きます。。
ただ気になるのは、FreeBSD-2.2.2の gcc-2.7.2.1 では、

	long long f(long long a, long long b)
	{
	    return a * b;
	}

最適化なしでも _muldi3 を呼び出さず、インラインに展開してました。

どうも libjava は、古い(あるいは改造された) gcc でコンパイル
されているのではないかと思います。

---
別件ですが Java の long って gcc の long long でないですか?
手元に動く Java の処理系がないので、確認できないのですが。
もし long long と、jri:ext/java/java.c の INT2NUM() で
jlong を 変換しているあたりでオーバーフローしますね。

  sizeof (jlong) が幾つになるか、どなたかご存知ですか?

#dec-alpha とか UltraSPARC のような64ビットなCPUの
#事を考えると、perl みたいに INT32 とかやらないと駄目かも、、

	えぐち