Kompilatorfuzzning med equivalence-modulo-inputs och optimization-log-guided-fuzzing

Compilers are a necessary part in the development of any modern software. As a result, the correctness of compilers not only concerns the compilers themselves but also any software that has been compiled by them. In particular, in the domain of critical applications such as telecommunications, compiler bugs have the potential to cause significant harm. Compiler fuzzing is an approach to validating compilers that has seen significant success in detecting compiler bugs such as crashes and miscompilations that static test suites miss. Three approaches to compiler fuzzing are Equivalence-modulo-inputs, concrete value-tracking, and Optimization-log-guided (OLG) fuzzing. This thesis presents novel work in combining these three approaches by using concrete-value tracking to construct EMI-variants and guiding variant acceptance using metadata from optimization logs. By extending CFuzzer, an internal fuzzer at Ericsson with the aforementioned methods, we uncovered eight new bugs in Ericsson’s internal LLVM compiler flacc, where three of these were upstream LLVM bugs, in the course of a three-month period. Additionally, we show that this approach achieves higher coverage than previous iterations of CFuzzer and, in some cases, a shorter time between bug occurrences. We also show a correlation between LLVM remarks and compiler coverage, indicating that counting remarks is a good lightweight approximation of LLVM coverage.

Publication Details

Journal
KTH Publication Database DiVA (KTH Royal Institute of Technology)
Published
2025-01-01
Primary Topic
Data Analysis with R
Type
article
Field-Weighted Citation Impact
0.00
Controls
|||
ALL TIME
JAN
FEB
MAR
APR
MAY
JUN
JUL
AUG
SEP
OCT
article

Kompilatorfuzzning med equivalence-modulo-inputs och optimization-log-guided-fuzzing

KTH Publication Database DiVA (KTH Royal Institute of Technology)
Data Analysis with R
article

Kompilatorfuzzning med equivalence-modulo-inputs och optimization-log-guided-fuzzing

article en

Abstract

Compilers are a necessary part in the development of any modern software. As a result, the correctness of compilers not only concerns the compilers themselves but also any software that has been compiled by them. In particular, in the domain of critical applications such as telecommunications, compiler bugs have the potential to cause significant harm. Compiler fuzzing is an approach to validating compilers that has seen significant success in detecting compiler bugs such as crashes and miscompilations that static test suites miss. Three approaches to compiler fuzzing are Equivalence-modulo-inputs, concrete value-tracking, and Optimization-log-guided (OLG) fuzzing. This thesis presents novel work in combining these three approaches by using concrete-value tracking to construct EMI-variants and guiding variant acceptance using metadata from optimization logs. By extending CFuzzer, an internal fuzzer at Ericsson with the aforementioned methods, we uncovered eight new bugs in Ericsson’s internal LLVM compiler flacc, where three of these were upstream LLVM bugs, in the course of a three-month period. Additionally, we show that this approach achieves higher coverage than previous iterations of CFuzzer and, in some cases, a shorter time between bug occurrences. We also show a correlation between LLVM remarks and compiler coverage, indicating that counting remarks is a good lightweight approximation of LLVM coverage.

KTH Publication Database DiVA (KTH Royal Institute of Technology)
Openalex Percentile: Top 72%
Data Analysis with R
AI Navigator

Ask Laika to Summarize, Analyze, and Connect papers live on the map.

Summarize Papers & Methodologies

Extract key findings, datasets, and comparative methods across publications.

Benchmark Rankings & Visual Analytics

Rank top research institutions, authors, funders, topics, and journals by Field-Weighted Citation Impact (FWCI) and paper volume with instant charts.

Connect Distant Disciplines

Bridge topological clusters on the map to find hidden collaborative intersections.