SymCC Runtime exposes a standard set of functions usable in different Symbolic Execution-related projects as a backend linkable statically and dynamically.
To compile symcc-rt
, run:
$ git submodule update --init --recursive
$ mkdir build && cd build
$ cmake ..
$ ninja
It will compile both libsymcc-rt.so
(shared library) and libsymcc-rt.a
(static library) in the build
directory.
SymCC Runtime was originally a subdirectory of
SymCC under the runtime
directory. It
has been moved out be more easily usable as a library in different projects,
which are not necessarily related to SymCC's compiler pass.
The export of SymCC Runtime was done at the commit pointed by
3f98002a66f18a5c09856c5e66a6c1e48b0ee1a9
. The tag export_runtime_from_symcc
points to the last commit for which symcc-rt
was the runtime
subdirectory of
symcc
. It has some implications:
- Pull request IDs and Issue IDs before this commit refer to SymCC IDs.
symcc-rt
is imported as a submodule in SymCC.
If you wish to use this in your scientific work, please cite the SymCC paper:
@inproceedings {poeplau2020symcc,
author = {Sebastian Poeplau and Aurélien Francillon},
title = {Symbolic execution with {SymCC}: Don't interpret, compile!},
booktitle = {29th {USENIX} Security Symposium ({USENIX} Security 20)},
isbn = {978-1-939133-17-5},
pages = {181--198},
year = 2020,
url = {https://www.usenix.org/conference/usenixsecurity20/presentation/poeplau},
publisher = {{USENIX} Association},
month = aug,
}
More information on the paper is available here.
We welcome Issues and Pull requests. If you wish to contribute, please have a
look to the CONTRIBUTING.md
file.
We appreciate bugs with test cases and steps to reproduce, PR with corresponding test cases. SymCC Runtime is currently understaffed, we hope to catch up and get back to active development at some point.
Feel free to use GitHub issues and pull requests for improvements, bug reports, etc. Alternatively, you can send an email to Sebastian Poeplau (sebastian.poeplau@eurecom.fr) and Aurélien Francillon (aurelien.francillon@eurecom.fr).
SymCC Runtime is free software: you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. See SymCC#114 for the rationale.
SymCC Runtime is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public License along with SymCC Runtime. If not, see https://www.gnu.org/licenses/.
The following pieces of software have additional or alternate copyrights, licenses, and/or restrictions:
Program | Directory |
---|---|
QSYM | backend/qsym/qsym |