Gauche > Archives > 2010/03/31

2010/03/31 01:33:17 UTCeyasuyuki@twitter
#
64bit用のconfigureオプションとかはなくて、 ./configure だけでよいですよね?>64bit OSでのGaucheビルド
2010/03/31 01:35:51 UTCenami
#
NetBSD でも amd64 だと sh -c 'ulimit -s 2048; make test' とかしなくてもテストが通る :-)
2010/03/31 01:44:07 UTCshiro
#
はい、./configureだけでいけます。
2010/03/31 02:23:28 UTCshiro
#
@eyasuyuki reverse proxyで? > この際karetta.jpをkahua-httpdで運用してみることにする。
2010/03/31 02:49:46 UTCえんどう
#
mod_proxy+mod_rewrite->kahua-httpd
2010/03/31 09:36:18 UTCayato
#
kahua-httpdの行方に期待。
2010/03/31 14:42:47 UTCえんどう
#
jess:Gauche-0.9 yasuyuki$ gosh -V
Gauche scheme shell, version 0.9 [utf-8,pthreads], i386-apple-darwin10.2.0
jess:Gauche-0.9 yasuyuki$ uname -a
Darwin jess.local 10.2.0 Darwin Kernel Version 10.2.0: Tue Nov  3 10:35:19 PST 2009; root:xnu-1486.2.11~1/RELEASE_X86_64 x86_64
#
あれ? 64bitにならない
2010/03/31 14:52:10 UTCshiro
#
んー、config.guessではdarwinの場合uname -pでプロセッサを推定してるみたいなんだけど、uname -pでx86_64って出る?
2010/03/31 14:54:56 UTCkoguro
#
SnowLeopardだと、gosh -V では i386 と出ますが、 file /usr/local/bin/gosh で見れば 64bit になっていませんか?
#
kernel が 32bit で動いていると uname では i386 になります。
2010/03/31 14:56:32 UTCshiro
#
goshのバイナリタイプはgccのデフォルトで決まってると思うので、それが64bitなのだと思うのだけれど、Gaucheのconfigureが自分をi386だと思い込んでるのはちょっと気持ち悪いな。
#
あ、ユーザランドとカーネルで違うってこと?
2010/03/31 14:57:26 UTCkoguro
#
そうなんです。MacOSXってkernelが32bitでもユーザランドが64bitで動くので、ちょっと他の環境と違うのです。
2010/03/31 14:58:40 UTCshiro
#
とりあえず、Gauche内部のScmObjの幅は使ってるgccで決まるので、それが64bitなら64bitとして動作してるはず。(greatest-fixnum) とか評価してみるとわかる。
#
configureがi386と思ってしまうことの弊害は、多分今は無い。将来x86_64の時だけ有効になる最適化とか入れたらその恩恵にあずかれないってことが起きるかもしれないけど。
2010/03/31 15:02:09 UTCkoguro
#
えーと、前に送ったパッチでは darwin の場合は、gcc で i386 のマクロが定義されているか否かで 64bit 環境かどうかを判断するようにしているので、最適化とか入れても大丈夫なんじゃないかな?
2010/03/31 15:03:23 UTCshiro
#
あ、これですね。
#
case $host in
  i?86-apple-darwin*)
    AC_CHECK_DEFINED(i386,
      AC_DEFINE(SCM_TARGET_I386,1,[Define if uses i386 optimizations])) ;;
#
いや、これは違うか。32bitでも定義されちゃう
#
あ、ちゃうちゃう。
#
darwinの場合はi386が定義されないとSCM_TARGET_I386を定義しないってことね。
2010/03/31 15:06:11 UTCkoguro
#
そうです。gccが「64bit用バイナリ作成」と思い込んでいれば、gccのマクロでは64bit用の定義がなされるはずです。
2010/03/31 15:06:22 UTCshiro
#
それはいいんだけれど、将来例えばSCM_TARGET_X86_64みたいな条件でx86_64特有の最適化とかjitを入れるとなった場合に、darwinだけまたこういうルールが必要になるんじゃないかな、ということです。
2010/03/31 15:07:02 UTCkoguro
#
「64bit環境か否かをどうやって判断させるのか」によりますね。
2010/03/31 15:07:08 UTCshiro
#
configureのhostではなくgccのプリプロセッサマクロを優先して判断するようにすればいいのかな。もしかして。
2010/03/31 15:07:16 UTCkoguro
#
そうだと思います。
2010/03/31 15:07:19 UTCshiro
#
s/host/arch/
2010/03/31 22:52:30 UTCえんどう
#
jess:~ yasuyuki$ file /usr/local/bin/gosh 
/usr/local/bin/gosh: Mach-O 64-bit executable x86_64
#
小黒さんの言う通りでした
#
jess:~ yasuyuki$ uname -p
i386
#
これか
2010/03/31 23:18:07 UTCえんどう
#
http://farm3.static.flickr.com/2733/4479729997_97355ac62a_o.png
#
カーネルは64bitで動いている模様