関数のトレーサーを少し書きたいと思います。私はptraceを使っています。
CALL命令を見たときに、アドレス呼び出しに相当する関数名を表示したい。
私のトレーサーは、絶対アドレスを持つシンボルで動作します (シンボルはメイン バイナリで定義されます)。しかし、共有ライブラリの関数の仮想メモリ内の絶対アドレスを取得する方法がわかりません。たとえば、libc の関数の呼び出しを検出します。
共有ライブラリ内の関数のアドレスがファイルに対して相対的であることに気付きました。
次の式は良いですか?
Absolute address of symbol = address of the shared library in virtual memory +
relative address of the symbol.
共有ライブラリからシンボルの絶対アドレスを取得するにはどうすればよいですか?