Artifacts#
This page reports the list of all the artifacts that can be produced by rev.ng.
lift artifact#
revng project artifact lift
Branch: lift
File name: lifted.bc
The root function produced by the lifting phase.
It's a single large function containing all of the executable code
identified in the binary.
emit-cfg artifact#
revng project artifact emit-cfg
Branch: collect-cfg
This artifact is an archive containing one YAML file for each function. Each document contains the control-flow graph of a function, plus the control-flow graph of each of the functions that need to be inlined into it.
isolate artifact#
revng project artifact isolate
Branch: isolate
File name: isolated.bc
This artifact contains one single-function module per function in the input program. The functions still employ global variables (CSVs) to pass and return data. Therefore, they lack arguments and return values.
enforce-abi artifact#
revng project artifact enforce-abi
Branch: segregate-stack-accesses
File name: abi_enforced.bc
This artifact contains one single-function module per function in the input program. The functions no longer use global variables (CSVs) to communicate: each register is promoted to a local variable, an argument and/or a return value.
This means that, for instance, a function using the SystemV ABI for
x86-64 that has two uint8_t arguments, will have two 64-bits
registers, not two 8-bits registers.
This reflects the fact that in the considered ABI, two uint8_t
arguments are passed on the rdi and rsi registers.
The stack pointer is an exception: it's still used as a CSV. As a consequence, stack arguments are not promoted to actual arguments: they are accessed with pointer arithmetic w.r.t. the stack pointer CSV.
simplify-switch artifact#
revng project artifact simplify-switch
Branch: segregate-stack-accesses
File name: simplify-switch.bc
This artifact contains one single-function module per function in the input program. The stack pointer has been promoted to a local variable and initialized with the result of an opaque function call.
segregate-stack-accesses artifact#
revng project artifact segregate-stack-accesses
Branch: segregate-stack-accesses
File name: stack_accesses_segregated.bc
clifter-input artifact#
revng project artifact clifter-input
Branch: clift-functions
File name: clifter_input.bc
clift-unoptimized artifact#
revng project artifact clift-unoptimized
Branch: clift-functions
File name: clifter_unoptimized.mlir.bc
pre-backend-clift artifact#
revng project artifact pre-backend-clift
Branch: clift-functions
File name: pre_backend_clift.mlir.bc
emit-c artifact#
revng project artifact emit-c
Branch: single-file
File name: decompiled.c
This artifact contains a C function for each function in the input program.
emit-c-as-single-file artifact#
revng project artifact emit-c-as-single-file
Branch: single-file
File name: binary_decompiled.c
This artifact is a single PTML file representing the decompiled C code of the whole program, including the body of all of program's functions. (Clift backend)
emit-helper-header artifact#
revng project artifact emit-helper-header
Branch: helpers
File name: helpers.h
This artifact contains all the declarations of llvm and qemu helpers that survived until the decompiled code.
emit-tagless-c artifact#
revng project artifact emit-tagless-c
Branch: tagless-single-file
File name: decompiled.c
emit-tagless-c-as-single-file artifact#
revng project artifact emit-tagless-c-as-single-file
Branch: tagless-single-file
File name: binary_decompiled.c
emit-tagless-helper-header artifact#
revng project artifact emit-tagless-helper-header
Branch: tagless-single-file
File name: helpers.h
emit-tagless-type-and-global-header artifact#
revng project artifact emit-tagless-type-and-global-header
Branch: tagless-single-file
File name: types-and-globals.h
emit-recompilable-archive artifact#
revng project artifact emit-recompilable-archive
Branch: tagless-single-file
File name: recompilable_archive.tar
hexdump artifact#
revng project artifact hexdump
Branch: hexdump
File name: hex_dump.hex
This artifact contains a hex dump of each segment in the input binary.
disassemble artifact#
revng project artifact disassemble
Branch: disassemble
File name: disassembly.S
This artifact is an archive of PTML files. Each file represents the disassembly of the given function.
recompile artifact#
revng project artifact recompile
Branch: recompile
File name: translated-binary
This artifact is translated version of the input binary.
Specifically, it's an ELF executable for Linux x86-64 containing the
root function plus the required runtime.
recompile-isolated artifact#
revng project artifact recompile-isolated
Branch: recompile-isolated
File name: isolated-translated-binary
This artifact is translated version of the input binary.
Specifically, it's an ELF executable for Linux x86-64 containing the
root function, all the isolated functions plus the required
runtime.
cleanup-ir artifact#
revng project artifact cleanup-ir
Branch: cleanup-ir
File name: clean-ir.bc
This artifact contains one single-function module per function defined in this binary.
The output is similar to the output of make-segment-ref but it's
cleaned up from rev.ng-specific artifacts in order to be more easily
consumed as standard LLVM IR.
This is an appropriate artifact on top of which write analyses, such as a taint analysis.
cross-relations artifact#
revng project artifact cross-relations
Branch: process-call-graph
File name: cross-relations.yml
render-svg-call-graph artifact#
revng project artifact render-svg-call-graph
Branch: yield-call-graph
File name: call-graph.svg
This artifact is an SVG representing the call graph of the input program.
render-svg-call-graph-slice artifact#
revng project artifact render-svg-call-graph-slice
Branch: yield-call-graph-slice
File name: call-graph-slice.svg
This artifact is an archive of SVG files. Each file represents a subset of the call graph considering only the functions called/calling, directly or indirectly, the given function.
render-svg-cfg artifact#
revng project artifact render-svg-cfg
Branch: yield-cfg
File name: cfg.svg
This artifact is an archive of SVG files. Each file represents the CFG of the given function.
import-types artifact#
revng project artifact import-types
Branch: import-types
File name: types.mlir
This artifact contains all the declarations of non-primitive types without any name or comment information.
type-and-global-header-clift artifact#
revng project artifact type-and-global-header-clift
Branch: emit-type-and-global-header
File name: type-and-global-header.mlir.bc
emit-type-and-global-header artifact#
revng project artifact emit-type-and-global-header
Branch: emit-type-and-global-header
File name: types-and-globals.h
This artifact is a header containing all the declarations of non-primitive types, functions and segments.
emit-single-type-definition artifact#
revng project artifact emit-single-type-definition
Branch: emit-single-type-definition
File name: type.h
This artifact is an archive of plain C headers.
Each file contains the declaration of a type defined for this
binary.
This artifact is designed to be used as the initial input of the
edit-c-type analysis. In fact, this artifact is designed to be
easily editable by the end-user; it's not designed to represent
valid C code, unlike the emit-type-and-global-header artifact.