Alessandro Di Federico
5820908675
Remove and ban \file
2025-12-16 17:41:55 +01:00
Giacomo Vercesi
56ab47bfd2
Outline mergeBackImpl in IRHelpers
...
Move the body of `LLVMContainer::mergeBackImpl` in
`Support/IRHelpers.cpp` under the name `linkFunctionModules`.
2025-12-10 16:16:14 +01:00
Giacomo Vercesi
a39906ca85
Factor out cloneFiltered from LLVMContainer
...
Move the body of `cloneFiltered` from `LLVMContainer` into a free
function in `IRHelpers.h`.
2025-11-17 10:04:13 +01:00
Alessandro Di Federico
c883bed765
Drop Logger's StaticEnabled feature
2025-10-31 17:25:03 +01:00
Alessandro Di Federico
ee0060bb16
LLVMContainer: fix metadata handling
...
The way we were saving metadata during cloneFiltered was incorrect and
led to subtle corruptions due to reattaching metadata coming from one
module to the other.
We now collect all the metadata we want to preserve in a named metadata
(a "global" metadata), so that it will get properly copied.
2025-10-24 18:33:41 +02:00
Alessandro Di Federico
4fb6b5f4e1
Minor changes
2025-10-24 18:20:48 +02:00
Alessandro Di Federico
f8bd4c3bac
Move around some files in preparation for libtcg
...
* Make the following private headers public:
* Lift/CPUStateAccessAnalysisPass.h
* Lift/CSVOffsets.h
* Lift/PTCDump.h
* Lift/VariableManager.h
* Move from revngSupport to revngLift:
* IRAnnotators.{h,cpp}
* SelfReferencingDbgAnnotationWriter.{h,cpp}
* Move from revngSupport to revngModel:
* FunctionTags.{h,cpp}
* ProgramCounterHandler.{h,cpp}
* Move from revngSupport to revngRecompile:
* OriginalAssemblyAnnotationWriter.{h,cpp}
2025-10-24 15:34:11 +02:00
Ivan Krysak
3561c2b907
Adopt IRBuilder wrapper
2025-10-21 19:17:01 +03:00
Ivan Krysak
25538385c8
Avoid using !! unless necessary
...
The only necessary place is when passing it into the `BOOST_TEST`
macro, which doesn't convert its argument to `bool` internally.
2025-10-13 10:26:41 +03:00
Ivan Krysak
e56f543b1a
Split module.bc.zstd
2025-10-13 10:26:41 +03:00
Ivan Krysak
16985c37ea
Add comments clarifying error-related behavior
2025-10-13 10:26:41 +03:00
Ivan Krysak
5717d835f8
Add missing llvm::Error checks
2025-10-13 10:26:37 +03:00
Ivan Krysak
77ea07c364
Minor improvements
2025-10-08 12:22:30 +03:00
Giacomo Vercesi
d62b7b6b1a
TTG: inline root type in schema
...
Move the root type inside the schema definition, as it is a property of
it and not of the generator.
2025-06-25 15:40:13 +02:00
Ivan Krysak
31068f3d43
Pipeline: introduce an optional model path
2025-05-07 10:48:49 +02:00
Giacomo Vercesi
e3074ec29a
revng artifact: omit kind
...
When working with `revng artifact`, omit the kind in both the output of
`--list` and the parameters taken specifying which targets to produce.
2025-05-07 10:48:48 +02:00
Alessandro Di Federico
3db971b8b4
Pipeline: invalidate if *any* input is invalidated
...
We used to invalidate only if *all* inputs were invalidated.
2025-05-07 08:36:44 +02:00
Giacomo Vercesi
50caf5ef9e
Pipeline: allow analyses to not be available
...
An analysis can implement the `isAvailable` function which can tell
users if the analysis is available or not to be run.
2025-05-05 17:28:48 +02:00
Khaled Ismaeel
a52f1f17c2
Add automatic migrations in PipelineManager
2025-04-30 15:08:45 +02:00
Khaled Ismaeel
531d9b866c
Remove the now-redundant HEADERS list
2025-04-30 15:08:45 +02:00
Khaled Ismaeel
63469c9cd6
Use unified YAML schemas in the build process
...
In this commit we instruct the build system to use the unified schema
files instead of collecting the `TUPLE-TREE-YAML` comments.
The fixes to C++ files are necessary because they depend on the order
of the fields in the schema, which was changed.
2025-04-30 15:08:45 +02:00
Giacomo Vercesi
11f1e532c6
Implement dirty bit on Container
...
Add a `Dirty` boolean to the `ContainerBase` class. This will be set to
true when the container mutates itself (e.g. remove, mergeBack, clear).
The dirty bit is reset when running `PipelineManager.store`.
2025-04-03 15:59:18 +02:00
Giacomo Vercesi
87872f9fc5
PipelineManager: add save-after-every-analysis
...
Add a command-line option to pipeline that saves after every analysis is
run.
2025-03-13 18:03:50 +01:00
Giacomo Vercesi
f666c70358
storeInvalidationMetadata: avoid file corruption
...
Wrap `ZstdCompressedOstream` in a scope, as this forces flushing its
output when destroyed. Without flushing the output, the invalidation
metadata could end up being half-written, resulting in a parsing error
and crash on the next startup of the pipeline.
2025-02-25 09:17:25 +01:00
Ivan Krysak
705e4a5955
auto [...] -> auto &&[...]
2025-02-13 13:10:51 +02:00
Alessandro Di Federico
2128a80cc8
Preserve metadata after Function::deleteBody
...
Also, introduce and adopt a simple helper class to get this right.
2025-01-28 12:19:16 +01:00
Giacomo Vercesi
05041a302a
PipelineManager: save after running analyses
...
Save the context after an analysis (or analyses-list) has run. This
guarantees that at least the model is preserved in case of crash.
2024-12-20 12:24:28 +01:00
Alessandro Di Federico
1e2a55e372
Minor changes
2024-11-28 13:58:28 +01:00
Ivan Krysak
1eb80ecd2d
Introduce an error creation helper
2024-11-06 15:20:37 +02:00
Giacomo Vercesi
8e65716ad8
Use zstd compression in pipeline
...
Use the zstd compression for:
* The `LLVMContainer` when serializing
* The invalidation cache when writing to disk
2024-10-30 21:57:55 +01:00
Alessandro Di Federico
a0c670652c
Improve usages of Expected<T>
2024-10-10 14:50:26 +02:00
Alessandro Di Federico
865ffb9892
Minor changes
2024-09-27 20:45:22 +02:00
Alessandro Di Federico
4a14c0abb2
UpdateContract: fix uninitialized Context *
2024-09-27 12:07:18 +02:00
Alessandro Di Federico
33cae7de12
Pipeline: reduce usage of Context
2024-09-27 12:07:18 +02:00
Alessandro Di Federico
bc064244d6
s/deserialize/fromString/g
2024-09-27 12:07:17 +02:00
Alessandro Di Federico
c1cbb4e9a0
Initialize pointers to nullptr
2024-09-27 12:07:17 +02:00
Alessandro Di Federico
2cdedc71f4
s/serialize/toString/
...
We keep serialize for method dealing with streams.
If it returns a `std::string`, let's use `toString`.
2024-09-27 12:07:17 +02:00
Alessandro Di Federico
c8d4381297
s/Context &Ctx/Context &Context/g
2024-09-27 12:07:17 +02:00
Alessandro Di Federico
9bdce8e5c4
s/ExecutionContext &Ctx/ExecutionContext &EC/g
2024-09-27 12:07:17 +02:00
Alessandro Di Federico
12a0a89e15
Ensure every pipe commits what it should
...
This commit is the final step in ensuring all the pipes commit what they
should. It also asserts this actually happens, enabling us to easily
catch future problems.
2024-09-27 12:07:16 +02:00
Alessandro Di Federico
850276f5c8
Minor changes
2024-09-27 12:07:16 +02:00
Alessandro Di Federico
024c9abda2
Step: fix use-after-free
2024-08-07 16:07:59 +02:00
Alessandro Di Federico
09bc315448
Pipeline: improve invalidation logging
2024-08-07 16:07:59 +02:00
Alessandro Di Federico
3c839cb821
Pipe::mutableContainers: use running containers
2024-07-09 08:58:51 +02:00
Alessandro Di Federico
966caa4137
revng artifact: fix handling of target arguments
...
This commit adds to `revng artifact` help the part of the command line
accepting a list of targets.
Also, it fixes the parsing of targets.
2024-07-09 08:58:51 +02:00
Alessandro Di Federico
1981f5a433
Minor changes
2024-07-09 08:58:51 +02:00
Alessandro Di Federico
036e9282fe
Disable invalidation on const containers
2024-06-20 10:24:51 +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