В настоящее время я использую LLVM's
ObjectFile
(documented здесь) для представления исполняемого файла. Я успешно прочитал в исполняемом файле ObjectFile
и хотел бы определить, какие адреса назначения вызовов в моем исполняемом файле соответствуют именам символов, содержащимся в symbol_iterator
, полученным вызовом функции begin_dynamic_symbols()
. Итерация по каждому из символов в symbol_iterator
дает мне имя каждого символа и его адрес, но поскольку символы являются динамическими, адрес каждого символа равен -1; это означает, что ObjectFile
не связывает имена символов напрямую с их соответствующими адресами назначения вызова.
Есть ли способ определить, какие адреса назначения адреса сопоставляются с динамическими символами в ObjectFile
? Я бы предпочел не вручную вычислять все прыжки через PLT
и GOT
, если я могу избежать этого.