While binary translation technology has existed for many years, emulating an architecture with binary translation is tricky and tends to result in compatibility issues with certain applications. However, with Tango we have gone far beyond what any existing translators have achieved in terms of compatibility.
Linux Test Project
The Linux Test Project is a set of test programs for the Linux kernel. On 32-bit system call tests, Tango passes 1006 out of 1015 test cases (99.11%).
RISU is random instruction sequence generator for 32-bit ARM and Thumb instructions. We have extended RISU to have a more complete coverage of 32-bit ARM instructions, generate multi-instruction sequences with patterns and add many other features.
Tango has been under continuous RISU testing for over 20,000 hours.
Valgrind is an instrumentation framework for building dynamic analysis tools that are used to automatically detect many memory management and threading bugs, and profile programs in detail. Valgrind comes with an extensive test suite which includes both instruction-level tests and Linux system call tests. Tango passes all of these tests.
Android Top 1000 Apps
The top 100 Android apps have been manually tested on Tango and were found to work identically to when running without Tango.
Additionally, the top 1000 Android apps have passed automated tests under Tango.
Tango has been extensively verified in many other ways:
- Android unit tests: bionic, skia_dm
- Android system tests: CTS, GTS, VTS
- Android user experience tests: start up time, memory usage, storage usage, etc
- Various benchmark test suites (geekbench, vellamo, antutu, etc)