Linuxでは、「write」は小さなシステムコールのwapper関数です。
GDBで。シンボル'write'(info addr write)を検索すると、GDBはlibcの範囲内にあるアドレスを教えてくれます。しかし、libcのエクスポート機能リストを確認すると、「書き込み」記号がありません。
ここで何が起きてるの?
Linuxでは、「write」は小さなシステムコールのwapper関数です。
GDBで。シンボル'write'(info addr write)を検索すると、GDBはlibcの範囲内にあるアドレスを教えてくれます。しかし、libcのエクスポート機能リストを確認すると、「書き込み」記号がありません。
ここで何が起きてるの?
libcのエクスポート機能リストを確認すると、「書き込み」記号がありません。
みてみましょう:
[max@xxx:~/tmp] $ nm --dynamic --defined-only /lib64/libc-2.15.so | grep write
0000003c7a4f1990 T eventfd_write
0000003c7a46c540 W fwrite
0000003c7a475570 T fwrite_unlocked
0000003c7a476d50 T _IO_do_write
0000003c7a475fa0 T _IO_file_write
0000003c7a46c540 T _IO_fwrite
0000003c7a471d10 T _IO_wdo_write
0000003c7a4e3060 T __libc_pwrite
0000003c7a4f2310 T process_vm_writev
0000003c7a4e3060 W pwrite
0000003c7a4e3060 W pwrite64
0000003c7a4e3060 W __pwrite64
0000003c7a4ea520 T pwritev
0000003c7a4ea520 T pwritev64
0000003c7a4e4940 W write
0000003c7a4e4940 W __write
0000003c7a4ea3d0 W writev