DynamoRIO / DynamoRIO/dynamorio
Make drreg state restoration without ilist similar to that with ilist
- 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
Assessment
This issue has not been assessed yet.