Minimum Coverage Instrumentation

08/29/2022
by   Li Chen, et al.
0

Modern compilers leverage block coverage profile data to carry out downstream profile-guided optimizations to improve the runtime performance and the size of a binary. Given a control-flow graph G=(V, E) of a function in the binary, where nodes in V correspond to basic blocks (sequences of instructions that are always executed sequentially) and edges in E represent jumps in the control flow, the goal is to know for each block u ∈ V whether u was executed during a session. To this end, extra instrumentation code that records when a block is executed needs to be added to the binary. This extra code creates a time and space overhead, which one would like to minimize as much as possible. Motivated by this application, we study the Minimum Coverage Instrumentation problem, where the goal is to find a minimum size subset of blocks to instrument such that the coverage of the remaining blocks in the graph can be inferred from the coverage status of the instrumented subset. Our main result is an algorithm to find an optimal instrumentation strategy and to carry out the inference in O(|E|) time. We also study variants of this basic problem in which we are interested in learning the coverage of edges instead of the nodes, or when we are only allowed to instrument edges instead of the nodes.

READ FULL TEXT

page 1

page 2

page 3

page 4

research
03/04/2022

Basic Block Coverage for Search-based Unit Testing and Crash Reproduction

Search-based techniques have been widely used for white-box test generat...
research
04/29/2020

Efficient Binary-Level Coverage Analysis

Coverage analysis plays an important role in the software testing proces...
research
12/19/2012

Parsimonious module inference in large networks

We investigate the detectability of modules in large networks when the n...
research
09/07/2022

Same Coverage, Less Bloat: Accelerating Binary-only Fuzzing with Coverage-preserving Coverage-guided Tracing

Coverage-guided fuzzing's aggressive, high-volume testing has helped rev...
research
08/26/2021

Code Coverage and Test Automation: State of the Art

This chapter surveys the state of the art in code coverage from the pers...
research
09/16/2020

Improving Linux-Kernel Tests for LockDoc with Feedback-driven Fuzzing

LockDoc is an approach to extract locking rules for kernel data structur...
research
09/12/2018

Improved Basic Block Reordering

Basic block reordering is an important step for profile-guided binary op...

Please sign up or login with your details

Forgot password? Click here to reset