macaw/macaw-aarch32/tests
Tristan Ravitch 8047a5d0ed
arm: Add transfer functions for division (#249)
Add support for abstract interpretation of division operations in the ARM
backend (when the operands to division are concretely known). 

This commit also adds extended documentation on the semantics of these
operations.

The concrete evaluation eliminates constant division operations.  The abstract
cases are probably obsolete in light of that, but are still interesting...

These changes were motivated by insufficient simplification around some of the syscall/errno handling code in musl
2021-12-07 14:11:59 -08:00
..
arm arm: Add transfer functions for division (#249) 2021-12-07 14:11:59 -08:00
ARMTests.hs AArch32: Support conditional returns (#243) 2021-11-19 16:20:50 -08:00
MismatchTests.hs Fix macaw-aarch32 tests. 2020-11-12 19:22:20 -08:00
README.md Support for mixed ARM/Thumb binaries (#174) 2020-11-02 12:48:01 -08:00
Shared.hs Fix macaw-aarch32 tests. 2020-11-12 19:22:20 -08:00
TestMain.hs AArch32: Support conditional returns (#243) 2021-11-19 16:20:50 -08:00

Overview

The tests in this directory attempt to test both ARM and Thumb decoding/discovery. The test suite only runs on the binaries with corresponding .mcw.expected files, which describe the expected discovered basic blocks.

  • test-just-exit-a32.exe: Ensures that the very basics of anything at all works
  • test-conditional-a32.exe: Ensures that conditional branches in A32 mode are handled correctly
  • test-direct-call-a32.exe: Ensures that call and return sequences work in A32 mode
  • test-direct-call-t32.exe: Ensures that transitions (via call) to Thumb mode work correctly
  • test-conditional-mixed.exe: Ensures that multi-block Thumb functions are handled correctly
  • test-just-exit-t32.exe: Ensures that Thumb entry points work correctly

Notes

The test-just-exit-t32.exe test is interesting because executables with Thumb entry points have the low bit set (even though it isn't technically the address where the function starts - it happens to work because the ISA clears the bit before jumping). We want to make sure that macaw handles it correctly.