revng

revng: the core repository of the rev.ng project (mirror)

  • Owner: revng/revng
  • Platform:
  • License:: GNU General Public License v2.0
  • Category::
  • Topic:
  • Like:
    0
      Compare:

Github stars Tracking Chart


Purpose


revng is a static binary translator. Given a input ELF binary for one of the
supported architectures (currently MIPS, ARM and x86-64) it will analyze it and
emit an equivalent LLVM IR. To do so, revng employs the QEMU intermediate
representation (a series of TCG instructions) and then translates them to LLVM
IR.


How to build


revng employs CMake as a build system. The build system will try to
automatically detect the QEMU installation and the GCC toolchains require to
build the test binaries.

If everything is in standard locations, you can just run::

mkdir build/
cd build/
cmake ..
make -j$(nproc)
make install

For further build options and more advanced configurations see
docs/BuildSystem.rst (TODO: reference).

To run the test suite simply run::

make test

Example run


The simplest possible example consists in the following::

cd build
cat > hello.c <<EOF
#include <stdio.h>

int main(int argc, char *argv[]) {
  printf("Hello, world!\n");
}
EOF
armv7a-hardfloat-linux-uclibceabi-gcc -static hello.c -o hello.arm
./translate hello.arm
# ...
./hello.arm.translated
Hello, world!

Main metrics

Overview
Name With Ownerrevng/revng
Primary LanguageC++
Program languageCMake (Language Count: 12)
Platform
License:GNU General Public License v2.0
所有者活动
Created At2016-12-15 22:45:48
Pushed At2025-09-04 13:26:48
Last Commit At2025-07-28 12:55:58
Release Count0
用户参与
Stargazers Count1.5k
Watchers Count29
Fork Count116
Commits Count6.4k
Has Issues Enabled
Issues Count137
Issue Open Count33
Pull Requests Count74
Pull Requests Open Count16
Pull Requests Close Count280
项目设置
Has Wiki Enabled
Is Archived
Is Fork
Is Locked
Is Mirror
Is Private