valgrind@snow leopard
id:yukichankoがrubyのお仕事で、出ドコ不明のメモリリークに苦しんでいる、と言う話を聞いて、「それ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