macaw/macaw-aarch32
Tristan Ravitch 37861df8c7
Support for mixed ARM/Thumb binaries (#174)
aarch32: Support mixed ARM/Thumb1 binaries

This updates the aarch32 backend to decode Thumb instructions and generate the Thumb semantics. The major implementation change is to use the `ArchBlockPrecond` feature of macaw to track the Thumb state (`PSTATE_T`) across block boundaries.

The ARM code discovery decides whether or not a function entry point should be decoded as Thumb by examining the low bit of the function address. If the low bit is set, it is a Thumb entry point. This has the slightly odd effect of causing macaw to say that the function is at the address with the low bit set, which is not technically true. This is documented in the README, but not obvious on inspection. Most use cases should not care, and can in any case account for it. In the future, it should be possible to fix this (though it will require some changes to the core of macaw).
2020-11-02 12:48:01 -08:00
..
src/Data/Macaw Support for mixed ARM/Thumb binaries (#174) 2020-11-02 12:48:01 -08:00
tests Support for mixed ARM/Thumb binaries (#174) 2020-11-02 12:48:01 -08:00
ChangeLog.md Rename macaw-asl to macaw-aarch32 2020-04-05 15:16:39 -07:00
LICENSE Rename macaw-asl to macaw-aarch32 2020-04-05 15:16:39 -07:00
macaw-aarch32.cabal Support for mixed ARM/Thumb binaries (#174) 2020-11-02 12:48:01 -08:00
REAMDE.md Support for mixed ARM/Thumb binaries (#174) 2020-11-02 12:48:01 -08:00
Setup.hs Rename macaw-asl to macaw-aarch32 2020-04-05 15:16:39 -07:00