Partially Evaluating Symbolic Interpreters for AllRemote
Symbolic execution is a program analysis technique to automatically explore the execution space of programs by treating some inputs symbolically. To efficiently perform symbolic execution, one emerging way is to construct a compiler that translates input programs to symbolic programs without the interpretation overhead. Previous work has explored compiling nondeterministic symbolic execution by partially evaluating a symbolic interpreter.
In this paper, we follow a “semantics-first“ approach and investigate compiling concolic execution and backward symbolic execution by multi-stage programming. In particular, we construct variants of staged symbolic interpreters that can be partially evaluated using the Lightweight Modular Staging (LMS) framework. We demonstrate our approach using a simple low-level intermediate representation (IR) and evaluate the prototype implementations for the LLVM IR. Our concolic compiler shows comparable performance to SymCC, a state-of-the-art concolic compiler, and our backward symbolic compiler solves tasks that are difficult for forward execution engines. The demonstrated approach shows a unifying methodology that can be applied to compiling diverse flavors of symbolic execution.
Short paper (paper.pdf) | 497KiB |
Mon 17 JanDisplayed time zone: Eastern Time (US & Canada) change
11:35 - 12:35 | Contributed Talks 1PEPM at PEPM Chair(s): Antonina Nepeivoda Program Systems Institute of RAS, Russia | ||
11:35 30mTalk | Partially Evaluating Symbolic Interpreters for AllRemote PEPM File Attached | ||
12:05 30mTalk | Parallel Algebraic Effect HandlersRemote PEPM Ningning Xie University of Toronto, Daniel D. Johnson Google Research, Dougal Maclaurin Google Research, Adam Paszke Google Research File Attached |