valgrind@snow leopard

id:yukichankorubyのお仕事で、出ドコ不明のメモリリークに苦しんでいる、と言う話を聞いて、「それvalgrindで・・・」と言いかけたんだけど、ふと、「あ、そういえば snow leopardにしてから全く使ってなかった」ときがついた。で portでいれてみたら嫌な予感がピッタリ当たって、

checking for the kernel version... unsupported (10.0.0)
configure: error: Valgrind works on Darwin 9.x (Mac OS X 10.5)

あー。
調べてみるとまだ前リリース時は xnuのソースが公開されていなかったため、trunk側では正式対応できていなかった、ということ。現在は既に 10.6xnuのソースが公開されているようで、パッチが公開されている(ただしとりあえず版)。リファクタリングしてtrunkに統合されるにはまだ時間がかかるっぽい。
 http://bugsfiles.kde.org/attachment.cgi?id=36999
で、パッチあてて、バージョンの 不等号の等号が抜けていたのを直して(include/vki/vki-scnums-darwin.h)、 autoconfかけて、ちょっと実験してみると普通のコマンドとかはだいじょーぶ。自分でコンパイルしたものは

% gcc sample.c -o sample -g
% valgrind ./sample
valgrind: ./sample: cannot execute binary file

あり? どうやらi386だけになっているようだ。普通のコマンドはユニバーサルだから行けるのね。
コンパイル条件として amd64を選ばせるのは結構めんどうだったので楽してconfigureを直接書き換えて x86_64に無理矢理変えた。

diff valgrind-3.5.0/configure.in old/valgrind-3.5.0/configure.in
126,127c126
<         #ARCH_MAX="x86"
<         ARCH_MAX="amd64"
---
>         ARCH_MAX="x86"

でなんとか動作。うーん我ながらいい加減。

追記:
万一急いでいる場合の為に一応ここまでのものを固めた物を mediafireに置いておきました。
http://www.mediafire.com/?sharekey=84bca167bd52625f0c814df2efeadc50e04e75f6e8ebb871