ELF形式からシンボルデータを読み取って、アドレスから関数を求めよう。 バイナリのあるアドレスから、そのアドレスにある関数名を求めるにはどうすればいいだろうか? たとえば、クラッシュして落ちたときに、クラッシュしたアドレスのログを残したい場合だ。 アドレスだけではわけがわからないので、関数名も一緒にログに書きたいのだ。 libbfd libbfdを使えれば、bfd_openr や bfd_read_minisymbols といろいろ使って、アドレスから関数名を求めることができる。 ただ、もとまるのかもしれないが、libbfdはGPLである。 残念ながら LGPLではない。 ライセンスを気にする人は利用できないだろう。 Binary File Descriptor library https://en.wikipedia.org/wiki/Binary_File_Descriptor_lib