From e5347b29100fc04abfd0eb7aa03ea4ecbf0c3788 Mon Sep 17 00:00:00 2001 From: Massimo Fioravanti Date: Tue, 27 Jun 2023 15:27:56 +0200 Subject: [PATCH] Remove llvm pipeline --- python/CMakeLists.txt | 1 - .../internal/cli/_commands/llvm_pipeline.py | 102 ------------------ .../revng/test/configuration/revng/revng.yml | 10 +- 3 files changed, 8 insertions(+), 105 deletions(-) delete mode 100644 python/revng/internal/cli/_commands/llvm_pipeline.py diff --git a/python/CMakeLists.txt b/python/CMakeLists.txt index 495cca161..dc2925c49 100644 --- a/python/CMakeLists.txt +++ b/python/CMakeLists.txt @@ -163,7 +163,6 @@ python_module(TARGET_NAME revng-python-cli WHEEL revng_internal MODULE_FILES # set(REVNG_CLI_COMMANDS_MODULE_FILES revng/internal/cli/_commands/translate.py - revng/internal/cli/_commands/llvm_pipeline.py revng/internal/cli/_commands/lift.py revng/internal/cli/_commands/idb_converter.py revng/internal/cli/_commands/opt.py diff --git a/python/revng/internal/cli/_commands/llvm_pipeline.py b/python/revng/internal/cli/_commands/llvm_pipeline.py deleted file mode 100644 index 1159694eb..000000000 --- a/python/revng/internal/cli/_commands/llvm_pipeline.py +++ /dev/null @@ -1,102 +0,0 @@ -# -# This file is distributed under the MIT License. See LICENSE.md for details. -# - -import sys -from shutil import copyfileobj -from tempfile import NamedTemporaryFile - -from revng.internal.cli.commands_registry import Command, CommandsRegistry, Options -from revng.internal.cli.revng import run_revng_command -from revng.internal.cli.support import log_error - - -class IRPipelineCommand(Command): - def __init__(self): - super().__init__(("llvm", "pipeline"), "revng-pipeline working on LLVM IR") - - def register_arguments(self, parser): - parser.add_argument("input", type=str, default="/dev/stdin") - parser.add_argument("output", type=str, default="/dev/stdout") - parser.add_argument("from", type=str) - parser.add_argument("to", type=str) - parser.add_argument("target", type=str) - parser.add_argument("--analysis", type=str, default="") - parser.add_argument("--binary", type=str, default="") - - def run(self, options: Options): - if options.remaining_args: - log_error("Unknown arguments passed in") - return 1 - - args = options.parsed_args - - with NamedTemporaryFile( - prefix="revng-llvm-pipeline-", suffix=".yml", delete=not options.keep_temporaries - ) as model, NamedTemporaryFile( - prefix="revng-llvm-pipeline-", suffix=".bc", delete=not options.keep_temporaries - ) as module, open( # noqa: SIM115 - args.input, "rb" - ) if args.input != "-" else sys.stdin.buffer as input_file, NamedTemporaryFile( - prefix="revng-llvm-pipeline-", - suffix=".bc", - delete=not options.keep_temporaries, - mode="wb", - ) as saved_input_file: - # Copy so we can work with stdin too - copyfileobj(input_file, saved_input_file) # type: ignore - saved_input_file.flush() - - # Extract model - result = run_revng_command( - ["model", "dump", saved_input_file.name, "-o", model.name], options - ) - if result != 0: - return result - - # Run revng-pipeline - target = f"--produce={args.to}/module.ll/{args.target}" - if args.analysis: - target = f"--analyze={args.to}/{args.analysis}/module.ll/{args.target}" - - load_binary = [] - if args.binary != "": - from_step = args.__dict__["from"] - load_binary = [ - "-i", - f"{args.binary}:{from_step}/input", - "-i", - f"{args.binary}:begin/input", - ] - - result = run_revng_command( - [ - "pipeline", - "-m", - model.name, - "-i", - f"""{saved_input_file.name}:{args.__dict__["from"]}/module.ll""", - "-o", - f"{module.name}:{args.to}/module.ll", - "--save-model", - model.name, - target, - *load_binary, - ], - options, - ) - if result != 0: - return result - - # Re-inject the model - result = run_revng_command( - ["model", "inject", model.name, module.name, "-o", args.output], options - ) - if result != 0: - return result - - return 0 - - -def setup(commands_registry: CommandsRegistry): - commands_registry.register_command(IRPipelineCommand()) diff --git a/share/revng/test/configuration/revng/revng.yml b/share/revng/test/configuration/revng/revng.yml index 36e6d53bc..184b2e346 100644 --- a/share/revng/test/configuration/revng/revng.yml +++ b/share/revng/test/configuration/revng/revng.yml @@ -11,11 +11,17 @@ commands: command: revng lift "$INPUT" "$OUTPUT" - type: revng.abi-enforced-for-decompilation from: + - type: revng-qa.compiled + filter: one-per-architecture - type: revng.lifted suffix: .bc command: |- - revng llvm pipeline "$INPUT" "$OUTPUT" Lift Lift ":Root" --analysis DetectABI; - revng llvm pipeline "$OUTPUT" "$OUTPUT" Lift EnforceABI "*:CSVsPromoted"; + MODEL="$$(temp)"; + TMP="$$(temp -d)"; + revng model dump "$INPUT2" -o "$$MODEL"; + revng analyze DetectABI "$INPUT1" --resume "$$TMP" -m "$$MODEL" -o /dev/null; + revng artifact EnforceABI "$INPUT1" --resume "$$TMP" -o /dev/null; + revng model inject "$$TMP"/context/model.yml "$$TMP"/EnforceABI/module.ll -o "$OUTPUT"; - type: revng.test-python-model-serialization-roundtrip from: - type: revng.abi-enforced-for-decompilation