Commit Graph

6113 Commits

Author SHA1 Message Date
Alessandro Di Federico aaba2f7d0f segregate-stack-accesses.yml: adopt --debug-names 2024-06-26 12:21:58 +02:00
Alessandro Di Federico f231e19a5f decompilation.yml: remove test duplication 2024-06-26 12:21:58 +02:00
Alessandro Di Federico a7ec300b16 MLIRContainer::mergeBack: only purge definitions 2024-06-26 12:21:58 +02:00
Alessandro Di Federico 988af25a7d Adopt UniquedBy* FunctionTags for deduplication 2024-06-26 12:21:58 +02:00
Alessandro Di Federico 398681c5ce Introduce tests for invalidation 2024-06-25 09:50:38 +02:00
Alessandro Di Federico e90dd20b69 Introduce revng analyze --save-invalidations 2024-06-20 10:24:51 +02:00
Alessandro Di Federico 3e8764093e RawFunctionType return type: adopt literal struct 2024-06-20 10:24:51 +02:00
Alessandro Di Federico 71135a56ab Make Target and friends YAML serializable 2024-06-20 10:24:51 +02:00
Alessandro Di Federico 32e6f3e303 Fix handling of -path version of analysis flags
Before this commit, the `*-path` flags required the non-`-path` flag
too.
2024-06-20 10:24:51 +02:00
Alessandro Di Federico b62bc8df91 s/FunctionMetadata/ControlFlowGraph/g 2024-06-20 10:24:51 +02:00
Alessandro Di Federico 276a6e0efb s|ControlFlowGraph.h|CFGHelpers.h|g 2024-06-20 10:24:51 +02:00
Alessandro Di Federico 6e49fed965 FunctionMetadata::{ControlFlowGraph,Blocks} 2024-06-20 10:24:51 +02:00
Alessandro Di Federico f60c1bb4ad s/TrackGuard/DisableTracking/ 2024-06-20 10:24:51 +02:00
Alessandro Di Federico c3733f293a s/RevngPasses/FunctionPass/g 2024-06-20 10:24:51 +02:00
Alessandro Di Federico 553d869d03 Drop Pipe::print method 2024-06-20 10:24:51 +02:00
Alessandro Di Federico 148e6b1979 Rename all LLVMContainer arguments 2024-06-20 10:24:51 +02:00
Alessandro Di Federico 036e9282fe Disable invalidation on const containers 2024-06-20 10:24:51 +02:00
Alessandro Di Federico d859db08a4 Fix tests 2024-06-20 10:24:51 +02:00
Alessandro Di Federico bce1d6c0f3 Adopt invalidation along the core pipeline 2024-06-20 10:24:50 +02:00
Alessandro Di Federico b5f7576573 Rework TupleTreeGenerator tracking 2024-06-20 10:24:50 +02:00
Alessandro Di Federico f8776ef8b5 Introduce revng tar-to-yaml 2024-06-20 10:24:50 +02:00
Alessandro Di Federico 51292f3d32 Improve --debug-log=pipeline 2024-06-20 10:24:50 +02:00
Alessandro Di Federico 831ed0db91 TaggedFunctionKind: fix tracking-related issues 2024-06-20 10:24:50 +02:00
Alessandro Di Federico 879b48669d Contract::deduceRequirements: fix Kind-related bug
Preserving contracts kinds logic moved targets to source container
instead of preserving them in the original container.
2024-06-20 10:24:50 +02:00
Alessandro Di Federico d25d53e711 RootAnalyzer: use generic preserved registers
Before this commit, when outlining parts of `root` for analysis
purposes, we used to replace calls with a set of instructions clobbering
the set of register *not* preserved by such call, or, in case the
prototype was not available, by the default prototype.

This commit forces the usage of the default prototype.

This trades off precision with accuracy but we get the lift pipe not to
depend on any model::Function prototype.
2024-06-20 10:24:50 +02:00
Alessandro Di Federico 6cff5416d6 InvokeIsolatedFunctions should add IsolatedRoot
Before this commit, it was added by `IsolateFunctions` instead.
2024-06-20 10:24:50 +02:00
Alessandro Di Federico 9fce67eee9 Reduce IRBuilder usage in favor of IRBuilderBase 2024-06-20 10:24:50 +02:00
Alessandro Di Federico 7553e2acf8 Introduce UniquedBy{Prototype,Metadata}
This commit introduces new tags to specify how LLVMContainer should
deduplicate sets of equivalent functions, typically managed by an
`OpaqueFunctionPool`.
2024-06-20 10:24:50 +02:00
Alessandro Di Federico a47c6e81dd FunctionKind::appendAllTargets: disable tracking 2024-06-20 10:24:50 +02:00
Alessandro Di Federico c3751a8c5a Introduce Pipe::invalidate
This method enables pipes to specify a custom invalidation logic.  This
change enables us to supress automatic model tracking in certain parts
and then handle the consequences by hand.

Make sure you read the TODO before using this.
2024-06-20 10:24:50 +02:00
Alessandro Di Federico 3ea5efdc93 Various minor Python improvements 2024-06-20 10:24:49 +02:00
Alessandro Di Federico a6cf3fbb83 Centralize computation of llvm::Function names
This commit introduces a function to obtain the name assigned to a
`llvm::Function` associated to a `model::Function`. This simplifies the
codebase but also enables us to introduce an option to produce
human-friendly names for debugging/testing purposes.
2024-06-20 10:24:49 +02:00
Alessandro Di Federico 3097e94a0d Enable fetching call site prototype without CFG
Before this commit, we used to attach to call site a metadata to trace
back the call site to the CFG (i.e., `FunctionMetadata`).

This led several passes in revng-c to depend on `FunctionMetadata` just
for this.

This commit, attaches to call sites a reference to the prototype itself
(on the `revng.prototype` metadata), breaking many of such dependencies.
2024-06-20 10:24:49 +02:00
Alessandro Di Federico fd68c25aee Implement ContainerBase::dump{,ToDisk} 2024-06-20 10:24:49 +02:00
Alessandro Di Federico b350d12ad2 TTG: spread some optional: true around 2024-06-20 10:24:49 +02:00
Alessandro Di Federico e44fe36539 Make GCBI::getJTReasons static 2024-06-20 10:24:49 +02:00
Alessandro Di Federico 2925b11f6a Model: adopt getConst where appropriate 2024-06-20 10:24:49 +02:00
Alessandro Di Federico 7001d96b97 Implement TagsSet::{operator<,operator==} 2024-06-20 10:24:49 +02:00
Alessandro Di Federico b0d897b87d Minor changes 2024-06-20 10:24:49 +02:00
Alessandro Di Federico d07d6c4f1f Drop leftover Section.h 2024-06-20 10:24:49 +02:00
Massimo Fioravanti db15f7df9a Propagate info about inputs and outputs of pipes
This comit propagates the deduced info about inputs and outputs of pipes
all the way up to the runner, so that the requested output of a pipe can
be passed to its invocation.
2024-06-20 10:24:49 +02:00
Alessandro Di Federico 0ac71816a6 revng daemon: improve detection of interpreter
This ensures we wait for the right process.
2024-06-20 10:24:49 +02:00
Alessandro Di Federico 9a35d6da40 revng graphql: improve error reporting 2024-06-20 10:24:49 +02:00
Massimo Fioravanti f0244bc689 Target names: handle : 2024-06-20 09:57:36 +02:00
Massimo Fioravanti f783868dde Model: adopt tryGet instead of find() != end() 2024-06-20 09:57:36 +02:00
Massimo Fioravanti 43349943a7 Stop serializing the model in the IR 2024-06-20 09:57:36 +02:00
Massimo Fioravanti 7ee8c8000d Introduce revng pipe 2024-06-20 09:57:36 +02:00
Alessandro Di Federico 33cb4232f4 BinaryImporter: bail out if we have segments 2024-06-19 17:50:51 +02:00
Alessandro Di Federico 5186a58053 s/FunctionMetadata/ControlFlowGraph/ 2024-06-18 17:56:24 +02:00
Alessandro Di Federico a6759b9231 LLVMIRForMLIR: name structs with growing numbers 2024-06-18 17:56:24 +02:00