IRFuzzer: Specialized Fuzzing for LLVM Backend Code Generation
read the original abstract
Modern compilers, such as LLVM, are complex pieces of software. Due to their complexity, manual testing is unlikely to suffice, yet formal verification is difficult to scale. End-to-end fuzzing can be used, but it has difficulties in achieving high coverage of some components of LLVM. In this paper, we implement IRFuzzer to investigate the effectiveness of specialized fuzzing of the LLVM compiler backend. We focus on two approaches to improve the fuzzer: guaranteed input validity using constrained mutations and improved feedback quality. The mutator in IRFuzzer is capable of generating a wide range of LLVM IR inputs, including structured control flow, vector types, and function definitions. The system instruments coding patterns in the compiler to monitor the execution status of instruction selection. The instrumentation not only provides a new coverage feedback called matcher table coverage, but also provides an architecture specific guidance to the mutator. We show that IRFuzzer is more effective than existing fuzzers by fuzzing on 29 mature LLVM backend targets. In the process, we reported 74 confirmed new bugs in LLVM upstream, out of which 49 have been fixed, five have been back ported to LLVM 15, showing that specialized fuzzing provides useful and actionable insights to LLVM developers.
This paper has not been read by Pith yet.
Forward citations
Cited by 2 Pith papers
-
CrossLangFuzzer: Differential Testing of Cross-Language JVM Compilers
CrossLangFuzzer is the first differential testing framework that uses Kotlin IR plus seven mutation operators to generate cross-language programs and found 32 confirmed bugs across five JVM compilers.
-
CLIR: Liveness-Driven and Structure-Aware Fuzzing for the Cranelift Compiler
CLIR, a differential testing framework for Cranelift, combines syntax-preserving hierarchical generation, liveness-guided refinement, and diagnosis-guided adaptation to detect 8-24x more unique bugs than prior tools a...
discussion (0)
Sign in with ORCID, Apple, or X to comment. Anyone can read and Pith papers without signing in.