MacOS X (64bit)でのFFI
次(0.2.6)のmoshではOpenCLをサポートする*1ので、64bitのFFIもついでに対応することにした。もっとも、OpenCLランタイムをFFIで呼ぶか、コンパイル時にリンクするかはまだ決めていない。
ABIはLinux等と同様なので対応自体はすぐ終わった。Win64はABIがかなり異なるのと、DLL資産がそれほどまだ揃っていないのでまだまだ対応しない予定。
- http://github.com/okuoku/mosh/commit/f979a26deb4ffb9d962446b4e79cb0ffb8a49440
- このバージョンはcallbackが呼べない
罠が2つ有った。
"32-bit absolute addressing is not supported for x86-64"
MacOS Xの64bitコードはPICでなければならないので、シンボルの参照は明示的にrip相対にしないといけない。。
最初↑のようにGOT相対にするのを忘れていて、callbackが動作しなかった。
というわけで、@GOTPCRELを付ける。