mirror of
https://github.com/revng/revng
synced 2026-06-21 14:07:57 +00:00
b1feb5b989db2b5ba8aae9f4795b489ab965151f
This commit drops libptc in favor of its new form libtcg. It brings several improvements, among which: * The QEMU version we work on has been upgraded. * CPUStateAccessAnalysis has been reimplemented in a way that makes it easier to debug and solves some limitations (e.g., tracking leaking pointers). * Identification of pieces of the CPU state that are read by each helper and fixing access to the CPU state is now performed at build-time. * We no longer mmap the code we need to translate, dropping all the issues related to code that needed to be mapped where something is already present. * We now have two distinct flavors of helper modules: the full one and the "slim" one. The latter contains the definition only of functions we intend to inline. It is used in most of the pipeline, a good thing since we spend less time optimizing code we don't really care about. The full module is only used on the re-compilation branch of the pipeline. * We no longer split the `cpu_loop` function. * We change MetaAddress to rely on architectures from `model::` as opposed to the LLVM ones. * We no longer attach debug info to LLVM IR containing the original assembly. * We now verify that the lifted code only contains code we expect.
The rev.ng binary analysis framework and decompiler
Welcome to the rev.ng project!
rev.ng is an open source binary analysis framework based on LLVM and QEMU. It features a full-fledged decompiler. It's developed by rev.ng Labs in the open.
Getting started
Head to the online documentation to get started (source).
Getting in touch
You can get in touch with us through the following means:
- X/Twitter, for the latest news about the project;
- Discord, a place for chatting for users and developers;
- Discourse, for user discussions;
- GitHub, for development issues and PRs;
- E-mail, for anything else;
License
The rev.ng binary analysis framework and decompiler is Free Software.
rev.ng depends on certain on GPLv2 components (in particular, QEMU), so the project is GPLv2-licensed as a whole. However, the individual files are licensed under the MIT license.
Languages
C++
77.1%
Python
12.6%
MLIR
4.4%
CMake
1.9%
LLVM
1.4%
Other
2.5%