mirror of
https://github.com/GaloisInc/macaw.git
synced 2024-12-02 10:54:04 +03:00
37861df8c7
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).
12 lines
342 B
Plaintext
12 lines
342 B
Plaintext
R { funcs = [ (0x100d9, [(0x100d9, 24)])
|
|
, (0x100f4, [ (0x100f4, 32)
|
|
, (0x10114, 12)
|
|
])
|
|
, (0x10120, [ (0x10120, 28)
|
|
, (0x1013c, 8)
|
|
])
|
|
, (0x10150, [ (0x10150, 8)])
|
|
]
|
|
, ignoreBlocks = [0x10144]
|
|
}
|