Interface Compliance of Inline Assembly: Automatically Check, Patch and Refine
Fr\'ed\'eric Recoules, S\'ebastien Bardin, Richard Bonichon, Matthieu, Lemerre, Laurent Mounier, Marie-Laure Potet

TL;DR
This paper introduces RUSTInA, an automated formal verification tool for checking inline assembly compliance in C programs, which detects issues, proposes patches, and has been successfully applied to real-world packages.
Contribution
RUSTInA is the first tool to automatically verify inline assembly compliance, propose patches, and refine assembly interfaces using formal methods and novel algorithms.
Findings
Detected 2183 issues in 85 packages, including major projects.
Proposed patches for 92% of issues, with 38 patches accepted.
Positive feedback from development teams on patch effectiveness.
Abstract
Inline assembly is still a common practice in low-level C programming, typically for efficiency reasons or for accessing specific hardware resources. Such embedded assembly codes in the GNU syntax (supported by major compilers such as GCC, Clang and ICC) have an interface specifying how the assembly codes interact with the C environment. For simplicity reasons, the compiler treats GNU inline assembly codes as blackboxes and relies only on their interface to correctly glue them into the compiled C code. Therefore, the adequacy between the assembly chunk and its interface (named compliance) is of primary importance, as such compliance issues can lead to subtle and hard-to-find bugs. We propose RUSTInA, the first automated technique for formally checking inline assembly compliance, with the extra ability to propose (proven) patches and (optimization) refinements in certain cases. RUSTInA…
Peer Reviews
No public reviews on file for this paper yet. If you reviewed it on a platform where reviews are public (OpenReview, ICLR, NeurIPS, ICML), you can paste yours below so the community can read it here.
Videos
No videos yet. Explain this paper in a talk, walkthrough, or lecture? Add one.
