共有ライブラリの名前とロードされたアドレスを取得する (実行時 ldd 相当)

ldd と違ってどのアドレスにロードされているかの情報も欲しい。 Linux だと /proc/self/maps に書いてある情報。

  • Linux では dl_iterate_phdr でにコールバック関数を渡してやる。
  • FreeBSD では dlinfo(RTLD_SELF, RTLD_DI_LINKMAP, &lmap) などとして link_map という構造体をゲットすればいい。
  • MacOSX では dyld(3) 。 _dyld_image_count と _dyld_get_image_name と _dyld_get_image_vmaddr_slide を使えばいい。
  • Win32 では今のところどうすればいいやら。
  • NetBSD では見当らない。 dlctl(3) というのが今作ってるところだ、って man に書いてあって、ヘッダを見ると DL_GETLIST なんてのがあるので、これでできるかもしれない。

ところで dlinfo が man に無いのはヒドい話だと思う。

なにかあれば下記メールアドレスへ。
shinichiro.hamaji _at_ gmail.com
shinichiro.h