Content area

Abstract

Compilers are part of the foundation upon which software systems are built, so they must be as correct as possible. Compiler fuzzing is a technique that has achieved impressive results in finding compiler bugs. This dissertation presents a novel approach to constructing generative compiler fuzzers for unsafe languages. Techniques developed in this dissertation helped me to find hundreds of bugs in GCC, LLVM, the Intel C/C++ Compiler, and other tools. My first main contribution is a novel static undefined behavior avoidance mechanism. I use it to generate tests that are compliant with the language standard, allowing me to detect miscompilation errors. My second main contribution is a novel mechanism to target compiler optimizations explicitly. It allows me to thoroughly test various scalar and loop optimizations, including those found in compilers for data-parallel languages. This technique increases the diversity of generated tests and helps me detect difficult-to-find bugs. These ideas were implemented in the YARPGen compiler fuzzer, which is used by multiple companies and research groups.

Details

1010268
Business indexing term
Title
Better Generative Compiler Fuzzing for Unsafe Languages
Number of pages
132
Publication year
2024
Degree date
2024
School code
0240
Source
DAI-A 86/8(E), Dissertation Abstracts International
ISBN
9798304918497
Advisor
Committee member
Eide, Eric Norman; Serebryany, Konstantin; Panchekha, Pavel; Rakamaric, Zvonimir; Babokin, Dmitry
University/institution
The University of Utah
Department
School of Computing
University location
United States -- Utah
Degree
Ph.D.
Source type
Dissertation or Thesis
Language
English
Document type
Dissertation/Thesis
Dissertation/thesis number
31640906
ProQuest document ID
3166062168
Document URL
https://www.proquest.com/dissertations-theses/better-generative-compiler-fuzzing-unsafe/docview/3166062168/se-2?accountid=208611
Copyright
Database copyright ProQuest LLC; ProQuest does not claim copyright in the individual underlying works.
Database
ProQuest One Academic