A Generic Approach to Symbolic Execution - Inria - Institut national de recherche en sciences et technologies du numérique Accéder directement au contenu
Rapport (Rapport De Recherche) Année : 2012

A Generic Approach to Symbolic Execution

Résumé

We propose a generic, language-independent symbolic execution approach for languages endowed with a formal operational semantics based on term rewriting. Starting from the definition of a language $\cal L$, a new definition ${\cal L}^{\it sym}$ is automatically generated, which has the same syntax, but whose semantics extends ${\cal L}$'s data domains with symbolic values and adapts the semantical rules of $\cal L$ to deal with the new domains. Then, the symbolic execution of ${\cal L}$ programs is the concrete execution of the corresponding ${\cal L}^{\it sym}$ programs, i.e., the application of the rewrite rules in the semantics of ${\cal L}^{\it sym}$. We prove that the symbolic execution thus defined has the adequate properties normally expected from it, and illustrate the approach on a simple imperative language defined in the $\mathbb{\K}$ framework. A prototype symbolic execution engine also written in $\mathbb{\K}$ is presented.
Nous proposons un cadre général pour l'exécution symbolique de programmes écrits dans des langages munis de sémantiques formelles définies par réécriture de termes. Partant d'une définition d'un langage $\cal L$, on construit automatiquement la définition d'un nouveau langage ${\cal L}^{\it sym}$ qui a la même syntaxe que $\cal L$ mais qui étend les types de données de $\cal L$ avec des valeurs symboliques, et dont les régles sémantiques sont adaptées pour traiter les valeurs symboliques. L'exécution symbolique des programmes de $\cal L$ est alors définie comme l'exécution habituelle des programmes de ${\cal L}^{\it sym}$, c'est á dire, l'application des régles de la sémantique de ${\cal L}^{\it sym}$ aux programmes de $\cal L$ plongés dans ${\cal L}^{\it sym}$. Nous démontrons que l'exécution symbolique posséde les propriétés attendues, et illustrons l'approche sur un langage impératif simple défini dans la \emph{$\mathbb{\K}$ framework}. Nous présentons également un prototype de moteur symbolique implémenté en $\mathbb{\K}$.
Fichier principal
Vignette du fichier
symbexec-techreport.pdf (990.97 Ko) Télécharger le fichier
Origine : Fichiers produits par l'(les) auteur(s)

Dates et versions

hal-00766220 , version 1 (17-12-2012)
hal-00766220 , version 2 (20-12-2012)
hal-00766220 , version 3 (21-06-2013)
hal-00766220 , version 4 (15-03-2014)
hal-00766220 , version 5 (21-03-2014)
hal-00766220 , version 6 (06-04-2014)
hal-00766220 , version 7 (01-09-2015)
hal-00766220 , version 8 (03-09-2015)

Identifiants

  • HAL Id : hal-00766220 , version 1

Citer

Andrei Arusoaie, Dorel Lucanu, Vlad Rusu. A Generic Approach to Symbolic Execution. [Research Report] RR-8189, 2012, pp.21. ⟨hal-00766220v1⟩
565 Consultations
1240 Téléchargements

Partager

Gmail Facebook X LinkedIn More