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