Searcharxiv⌕ Search

arXiv subjects

M. Ammar Ben Khadra

Publications and source records attributed to M. Ammar Ben Khadra.

3 recordsLinked to original sources

Efficient Binary-Level Coverage Analysis

Code coverage analysis plays an important role in the software testing process. More recently, the remarkable effectiveness of coverage feedback has triggered a broad interest in feedback-guided fuzzing. In this work, we introduce bcov, a tool for binary-level coverage analysis. Our tool statically instruments x86-64 binaries in the ELF format without compiler support. We implement several techniques to improve efficiency and scale to large real-world software. First, we bring Agrawal's probe pruning technique to binary-level instrumentation and effectively leverage its superblocks to reduce overhead. Second, we introduce sliced microexecution, a robust technique for jump table analysis which improves CFG precision and enables us to instrument jump table entries. Additionally, smaller instructions in x86-64 pose a challenge for inserting detours. To address this challenge, we aggressively exploit padding bytes and systematically host detours in neighboring basic blocks. We evaluate bcov on a corpus of 95 binaries compiled from eight popular and well-tested packages like FFmpeg and LLVM. Two instrumentation policies, with different edge-level precision, are used to patch all functions in this corpus - over 1.6 million functions. Our precise policy has average performance and memory overheads of 14% and 22% respectively. Instrumented binaries do not introduce any test regressions. The reported coverage is highly accurate with an average F-score of 99.86%. Finally, our jump table analysis is comparable to that of IDA Pro on gcc binaries and outperforms it on clang binaries.

cs.SE↗

An introduction to approximate computing

Approximate computing is a research area where we investigate a wide spectrum of techniques to trade off computation accuracy for better performance or energy consumption. In this work, we provide a general introduction to approximate computing. Also, we propose a taxonomy to make it easier to discuss the merits of different approximation techniques. Our taxonomy emphasizes the expected cost of tackling approximate computing across the entire system stack. We conclude by discussing the unique opportunities as well as challenges of nondeterministic approximate computing.

cs.PL↗

E3Solver: decision tree unification by enumeration

We introduce E3Solver, a unification-based solver for programming-by-example (PBE) participating in the 2017 edition of the SyGuS Competition. Our tool proceeds in two phases. First, for each individual example, we enumerate a terminal expression consistent with it. Then, we unify these expressions using conditional expressions in a decision tree. To this end, a suitable condition is enumerated for each pair of conflicting examples. This incremental method terminates after fitting all examples in the decision tree. E3Solver solves all 750 instances in the bitvector sub-track in an average time of few seconds each. We make our contributions publicly available (https://github.com/sygus-tools)

cs.PL↗