Closed pgoodman closed 10 years ago
Also, something about this comment and the following implementation makes me feel like this code might have a bug in it. Worth seeing where the DeadRegisterTracker
is used and seeing if the implementation / documentation still makes sense.
A good starting place to test any changes are Granary's test cases. To build and run them, do:
make clean test GRANARY_TARGET=test
If all tests pass, then start running Granary on command-line utilities (e.g. ls
, grep
, gcc
, etc.). You can also run Granary on things like VLC, XChat, or SimMud. To run Granary on these programs, try the following:
make clean all
./bin/debug_linux_user/grr -- ls
If you hit anything like a SEGFAULT or something else, let me know and I'll introduce you to the art of debugging a DBT system ;-)
This will be resolved in my next commit related to exception handling.
The register trackers (
RegisterTracker
,UsedRegisterTracker
,LiveRegisterTracker
, andDeadRegisterTracker
) all use the operand matching interface. I think these could do with arch-specific implementations (for their variousVisit
methods), as that reduces the internal dependencies onstd::function
.Perhaps renaming these set of classes is also in order. I think
*RegisterSet
is a better name.