mirror of
https://github.com/revng/revng
synced 2026-06-21 14:07:57 +00:00
Drop revng-lift
This commit is contained in:
@@ -74,8 +74,7 @@ add_custom_command(
|
||||
> "${CMAKE_BINARY_DIR}/lib/python/${PYTHON_GENERATED_MODEL_PATH}"
|
||||
DEPENDS generate-model-tuple-tree-code
|
||||
)
|
||||
add_custom_target(python-model-generated DEPENDS "${CMAKE_BINARY_DIR}/lib/python/${PYTHON_GENERATED_MODEL_PATH}")
|
||||
add_dependencies(revng-lift python-model-generated)
|
||||
add_custom_target(python-model-generated ALL DEPENDS "${CMAKE_BINARY_DIR}/lib/python/${PYTHON_GENERATED_MODEL_PATH}")
|
||||
|
||||
#
|
||||
# Install revng.model (including autogenerated classes)
|
||||
@@ -107,7 +106,6 @@ python_module(
|
||||
TARGET_NAME revng-merge-dynamic
|
||||
MODULE_FILES ${MERGE_DYNAMIC_MODULE_FILES}
|
||||
)
|
||||
add_dependencies(revng-lift revng-merge-dynamic)
|
||||
|
||||
#
|
||||
# Install revng.model_dump
|
||||
@@ -120,7 +118,6 @@ python_module(
|
||||
TARGET_NAME revng-dump-model
|
||||
MODULE_FILES ${DUMP_MODEL_MODULE_FILES}
|
||||
)
|
||||
add_dependencies(revng-lift revng-dump-model)
|
||||
|
||||
#
|
||||
# Install revng.cli.support
|
||||
|
||||
@@ -77,3 +77,77 @@ def run_translate(args, post_dash_dash_args, search_path, search_prefixes, comma
|
||||
to_execute = build_command_with_loads("revng-pipeline", command, search_path, search_prefixes)
|
||||
|
||||
return run(to_execute + post_dash_dash_args, command_prefix)
|
||||
|
||||
|
||||
# WIP: outline
|
||||
def register_lift(subparsers):
|
||||
parser = subparsers.add_parser("lift", description="revng lift wrapper")
|
||||
parser.add_argument("input", type=str, nargs=1, help="Input binary to be lifted")
|
||||
parser.add_argument("output", type=str, nargs=1, help="Output module path")
|
||||
parser.add_argument("--record-asm", action="store_true")
|
||||
parser.add_argument("--record-ptc", action="store_true")
|
||||
parser.add_argument("--external", action="store_true")
|
||||
parser.add_argument("--base", type=str)
|
||||
parser.add_argument("--entry", type=str)
|
||||
parser.add_argument("--debug-info", type=str)
|
||||
parser.add_argument("--import-debug-info", type=str, action="append", default=[])
|
||||
|
||||
|
||||
def run_lift(args, post_dash_dash_args, search_path, search_prefixes, command_prefix):
|
||||
# Run revng model import args.input
|
||||
arg_or_empty = (
|
||||
lambda args, name: [f"--{name}={args.__dict__[name]}"] if args.__dict__[name] else []
|
||||
)
|
||||
|
||||
# WIP
|
||||
from tempfile import NamedTemporaryFile
|
||||
|
||||
with NamedTemporaryFile(suffix=".yml") as model, NamedTemporaryFile(
|
||||
suffix=".ll"
|
||||
) as model_in_module:
|
||||
run(
|
||||
(
|
||||
[
|
||||
get_command("revng-model-import-binary", search_path),
|
||||
args.input[0],
|
||||
"-o",
|
||||
model.name,
|
||||
]
|
||||
+ [f"--import-debug-info={value}" for value in args.import_debug_info]
|
||||
+ arg_or_empty(args, "base")
|
||||
+ arg_or_empty(args, "entry")
|
||||
),
|
||||
command_prefix,
|
||||
)
|
||||
|
||||
run(
|
||||
[
|
||||
get_command("revng-model-inject", search_path),
|
||||
model.name,
|
||||
"/dev/null",
|
||||
"-o",
|
||||
model_in_module.name,
|
||||
],
|
||||
command_prefix,
|
||||
)
|
||||
|
||||
run(
|
||||
(
|
||||
[
|
||||
get_command("revng", search_path),
|
||||
"opt",
|
||||
model_in_module.name,
|
||||
"-o",
|
||||
args.output[0],
|
||||
"-load-binary",
|
||||
f"-binary-path={args.input[0]}",
|
||||
"-lift",
|
||||
]
|
||||
+ arg_or_empty(args, "external")
|
||||
+ arg_or_empty(args, "record_asm")
|
||||
+ arg_or_empty(args, "record_ptc")
|
||||
),
|
||||
command_prefix,
|
||||
)
|
||||
|
||||
# WIP NEXT: debug-info
|
||||
|
||||
@@ -20,6 +20,7 @@ if prev_pythonpath:
|
||||
os.environ["PYTHONPATH"] += ":" + prev_pythonpath
|
||||
|
||||
from revng.cli.translate import register_translate, run_translate
|
||||
from revng.cli.translate import register_lift, run_lift
|
||||
from revng.cli.support import build_command_with_loads, set_verbose, get_command, run, log_error
|
||||
|
||||
search_prefixes = []
|
||||
@@ -126,6 +127,7 @@ def main():
|
||||
subparsers = parser.add_subparsers(dest="command_name", help="sub-commands help")
|
||||
|
||||
register_translate(subparsers)
|
||||
register_lift(subparsers)
|
||||
|
||||
subparsers.add_parser("cc", help="compile, link and translate transparently", add_help=False)
|
||||
subparsers.add_parser("opt", help="LLVM's opt with rev.ng passes", add_help=False)
|
||||
@@ -219,6 +221,8 @@ def run_command(args, unknown_args, post_dash_dash, search_path, search_prefixes
|
||||
return run_cc(all_args, search_path, search_prefixes, command_prefix)
|
||||
elif command == "translate":
|
||||
return run_translate(args, post_dash_dash, search_path, search_prefixes, command_prefix)
|
||||
elif command == "lift":
|
||||
return run_lift(args, post_dash_dash, search_path, search_prefixes, command_prefix)
|
||||
elif command == "model":
|
||||
if not all_args:
|
||||
log_error("No subcommand specified")
|
||||
|
||||
Reference in New Issue
Block a user