linux-gate.so.1
とあるマシン上で何となく "ldd /bin/ls" と実行したら、以下のように表示された。
$ ldd /bin/ls linux-gate.so.1 => (0xffffe000) librt.so.1 => /lib/librt.so.1 (0x4001d000) libacl.so.1 => /lib/libacl.so.1 (0x40030000) libc.so.6 => /lib/libc.so.6 (0x40038000) libpthread.so.0 => /lib/libpthread.so.0 (0x4016b000) /lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x40000000) libattr.so.1 => /lib/libattr.so.1 (0x401bc000)
linux-gate.so.1 って何だ? と思い、調べてみたところ、「What is linux-gate.so.1?」というズバリそのままのページを見付けた。
要するに、システムコールを呼び出すために従来のソフトウェア割込み(int 0x80)を使うと遅くなるので、代わりに sysenter/sysexit を使うためのカーネル側の仕組みとして仮想的な動的ライブラリを使うということらしい。
環境によって linux-gate.so.1 の存在が見えたり見えなかったりするんだけど、カーネル、CPU、ライブラリのどれに依存して変化するんだろう? 詳しく知りたければソースを読むしかないか。