libffi
http://shinh.skr.jp/koneta/#shelang
更新しないと思ってたけど更新しました。
http://d.hatena.ne.jp/shinichiro_h/20051027#1130351251
の続きです。 libffi を紹介していただいたので使ってみました。生成されていた 7400行とかあった dispatch.c が完全にいらなくなってなんかハッピーチックです。
sayさん に指摘いただいたのですが、シンボルテーブルが無い .so ファイルだとダメです。 objdump やら ld やらはシンボルテーブル無くてもシンボル名からアドレス引いてやがるのでそのへん勉強してみようと思います。あと、どうやら libc のような最初っから読まれているシンボルは dlsym(RTLD_DEFAULT, "puts") などで取れるみたいなので見つからない場合はそれを使ってみました。
追記: シンボルテーブルの無い .so ファイルは elf.h とか使って .dynsym テーブルを読めばいい。実際のシンボル名はどう見ても .rodata にある。まぁちょっと調べりゃわかりそう… readelf -r がズバリっぽい。
以下 libffi について。