Liveness-Driven Random Program Generation

09/13/2017
by   Gergö Barany, et al.
0

Randomly generated programs are popular for testing compilers and program analysis tools, with hundreds of bugs in real-world C compilers found by random testing. However, existing random program generators may generate large amounts of dead code (computations whose result is never used). This leaves relatively little code to exercise a target compiler's more complex optimizations. To address this shortcoming, we introduce liveness-driven random program generation. In this approach the random program is constructed bottom-up, guided by a simultaneous structural data-flow analysis to ensure that the generator never generates dead code. The algorithm is implemented as a plugin for the Frama-C framework. We evaluate it in comparison to Csmith, the standard random C program generator. Our tool generates programs that compile to more machine code with a more complex instruction mix.

READ FULL TEXT

page 1

page 2

page 3

page 4

research
11/30/2018

Zest: Validity Fuzzing and Parametric Generators for Effective Random Testing

Programs expecting structured inputs often consist of both a syntactic a...
research
09/09/2022

Compiler Testing using Template Java Programs

We present JAttack, a framework that enables template-based testing for ...
research
10/21/2019

Representing and Reasoning about Dynamic Code

Dynamic code, i.e., code that is created or modified at runtime, is ubiq...
research
09/14/2022

Cornucopia: A Framework for Feedback Guided Generation of Binaries

Binary analysis is an important capability required for many security an...
research
08/03/2018

Data-Flow Guided Slicing

We propose a flow-insensitive analysis that prunes out portions of code ...
research
09/18/2020

Out of Sight, Out of Place: Detecting and Assessing Swapped Arguments

Programmers often add meaningful information about program semantics whe...
research
08/24/2018

Adaptive Grey-Box Fuzz-Testing with Thompson Sampling

Fuzz testing, or "fuzzing," refers to a widely deployed class of techniq...

Please sign up or login with your details

Forgot password? Click here to reset