Endicheck
Endicheck detects missing byte-swaps and other endianness-related bugs in programs by performing dynamic analysis within the Valgrind framework.
Key Features:
- Dynamic analysis: Dynamically analyzes programs to detect locations where byte-swaps are missing.
- Valgrind-based framework: Built as an extension to Valgrind and retains existing Valgrind tools such as MemCheck.
- Minimal source-code annotations: Requires fewer source-code annotations compared to Sparse (used by Linux kernel developers).
- Cross-endianness bug detection: Identifies bugs that manifest when a program is executed on a system with the opposite endianness.
- Diagnostic reporting: Emits diagnostic messages that pinpoint source code locations of detected endianness issues.
Scientific Applications:
- Radeon SI Linux OpenGL Driver validation: Used to identify and validate endianness-related bugs in the Radeon SI Linux OpenGL Driver.
- Open-source program testing: Applied to multiple open-source programs to assess reliability and accuracy in detecting endianness issues.
- Cross-platform numeric interoperability testing: Assesses numeric data interpretation and byte-order correctness across systems with differing endianness.
Methodology:
Performs dynamic analysis within the Valgrind framework to detect missing byte-swaps and report source-code locations while retaining Valgrind tools such as MemCheck.
Topics
Details
- Programming Languages:
- C
- Added:
- 1/18/2021
- Last Updated:
- 11/24/2024
Operations
Publications
[No authors listed]. Endicheck: Dynamic Analysis for Detecting Endianness Bugs. Tools and Algorithms for the Construction and Analysis of Systems. 2020;12079:254.
PMCID: PMC7480700