DynamoRIO / DynamoRIO/dynamorio

Make drreg state restoration without ilist similar to that with ilist

Open
#5,303 1 comment 0 reactions 0 assignees View on GitHub
Component-Extension
Dominant language
C
Stars
3.2k
Forks
629
Avg merge
2d 15h
Merged PRs (30d)
31

Description

drreg has two state restoration routines, `drreg_event_restore_state_with_ilist` and `drreg_event_restore_state_without_ilist`. `drreg_event_restore_state_with_ilist` uses the ilist to be able to recognize faux spills and restore, which are application instructions that look like a drreg spill/restore (this may happen on AArch64). See this test:
https://github.com/DynamoRIO/dynamorio/blob/f1d496b451eaa6e9aaff7125617030164c6cfdff/suite/tests/client-interface/drreg-test.c#L683. `drreg_event_restore_state_without_ilist` uses an old version of the restore logic that does not handle multi-phase drreg use well.

For cases when the ilist is not available, drreg can easily fall back to the same logic as `drreg_event_restore_state_with_ilist` minus the faux spill/restore detection.

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.