Я хочу написать трассировщик маленькой функции. Я использую ptrace.
Когда я вижу инструкцию CALL, я хочу показать имя функции, эквивалентное адресу вызова.
Мой трассировщик работает с символами с абсолютным адресом (определение символов в основном двоичном файле).
Но я не знаю, как я могу получить абсолютный адрес в виртуальной памяти функции общей библиотеки. Например, определите вызов функций libc.
Я заметил, что адрес функции в общей библиотеке относительно файла.
Хорошо ли следующее уравнение?
Absolute address of symbol = address of the shared library in virtual memory +
relative address of the symbol.
Как я могу получить абсолютный адрес символа из общей библиотеки?