У вас есть предупреждение об устаревших объявлениях, потому что RTN_BblHead
теперь устарело. Вместо этого используйте RTN_InsHead
.
От include\pin\gen\image.ph
:
/* DO NOT EDIT */
/* RTN_BblHead is now deprecated. See RTN_InsHead.
*/
extern PIN_DEPRECATED_API BBL RTN_BblHead(RTN x);
Это также упоминается в документации: RTN_BblHead
Вы также можете передать -Wno-deprecated-declarations
в GCC, чтобы подавить это предупреждение.
Изменить
Помните, что PIN — это, прежде всего, инфраструктура DBI (динамическая двоичная инструментация): она очень хороша, когда дело доходит до инструментирования потока исполняемого кода, и менее хороша, когда нужно разбить неисполняемый код.
Обычная инструментация позволяет Pintool проверять и инструментировать всю подпрограмму, когда изображение, в котором она содержится, загружается впервые, но, как указывает документация:
Pintool может следовать инструкциям программы. Недостаточно информации, чтобы разбить инструкции на BBL.
Pin находит инструкции RTN посредством статического обнаружения, поэтому Pin не может гарантировать, что найдет все инструкции в RTN, а для BBL это еще сложнее. Я предполагаю, что в какой-то момент они пытались (отсюда доступность RTN_BblHead в прошлом) обеспечить статическое обнаружение BBL, но скорость обнаружения была слишком низкой (или слишком подверженной ошибкам), чтобы считаться приемлемой, поэтому функция стала устаревшей.
Короче говоря, да, вам нужно найти инструкции RTN по инструкциям (зная, что вывод может пропустить некоторые инструкции, поскольку это делается статически). Вы можете обнаружить только BBL подпрограммы, если подпрограмма выполняется в какой-то момент.
person
Neitsa
schedule
02.11.2015