Как модифицировать регистр sp в valgrind?
Я хочу отследить модификацию регистра стека x86_64 (sp), написав простой инструмент valgrind. Существует ли какой-либо другой инструмент, который отслеживает изменения sp (или другие изменения в реестре), куда я мог бы посмотреть и скопировать? Я думаю, что мне нужно разобрать IRStmt
помеченный Ist_Put
и искать Put.offset == offset_SP
, Есть ли инструменты, которые уже делают это? Я хочу распечатать значения, которые записаны в SP.
1 ответ
Решение
Смотрите pub_tool_tooliface.h. Это определяет набор функций void VG_(track_new_mem_stack*) и VG_(track_die_mem_stack*) для отслеживания изменений в SP.
Если вам не нужно очень высокопроизводительное отслеживание (например, необходимое для memcheck), оно должно быть достаточно хорошим для использования:
- VG_ (track_new_mem_stack)
- VG_ (track_new_mem_stack_signal)
- VG_ (track_die_mem_stack)
- VG_ (track_die_mem_stack_signal)