Alessandro Di Federico
1e55635b65
Introduce efa::FunctionEdgeType::Unexpected
2025-10-24 18:23:23 +02:00
Alessandro Di Federico
fb80f4b8bd
FunctionCallIdentification: handle delay slot
2025-10-24 18:21:07 +02:00
Alessandro Di Federico
ed3fc26166
MaterializedValue: handle loading mutable data
2025-10-24 18:20:54 +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
2ba5ca3e3d
Suppress selected IRBuilder checks
2025-10-21 19:17:37 +03:00
Ivan Krysak
3561c2b907
Adopt IRBuilder wrapper
2025-10-21 19:17:01 +03:00
Ivan Krysak
50823caaf6
Introduce IRBuilder wrapper
2025-10-21 19:16:58 +03:00
Lauri Vasama
7980e57fb5
Add Clift C legalization pass
2025-10-21 09:15:40 +02:00
Lauri Vasama
02d3c82887
Add support for Clift for-loop initializers
2025-10-21 09:15:40 +02:00
Lauri Vasama
bf5adce413
Overhaul Clift loop syntax, add break/continue
2025-10-21 09:15:40 +02:00
Lauri Vasama
16589c935c
Add BranchOpInterface for if and switch
2025-10-21 09:15:40 +02:00
Lauri Vasama
3d9df0f50d
Add then marker for Clift if-statement assembly
2025-10-21 09:15:40 +02:00
Lauri Vasama
34cd63e60c
Add CliftOpHelpers.h
2025-10-21 09:15:40 +02:00
Lauri Vasama
7da5792f0a
Add Clift label and jump operation interfaces
2025-10-21 09:15:40 +02:00
Lauri Vasama
f3be99f317
Use keyword for attr dicts of ops with regions
2025-10-21 09:15:40 +02:00
Lauri Vasama
26e6b9086c
Simplify Clift pass declarations
2025-10-21 09:15:40 +02:00
Giacomo Vercesi
6abba05d7e
Introduce ImportFiles pipe
...
Introduce the `ImportFiles` pipe which leverages the newly-introduced
`FileStorage` to fetch the required files and store them in the
`BinariesContainer`.
2025-10-16 17:48:45 +02:00
Giacomo Vercesi
b622fe8f19
Implement FileProvider interface
...
Implement the `FileProvider` interface, this allows pipes to request
files given a `FileRequest` (hash and optional size/name).
2025-10-16 17:48:45 +02:00
Giacomo Vercesi
40da49548b
Add Binaries list to the model
...
Add to the model an entry detailing the list of input binaries under
`Binaries`. This will be referenced by `Segments` when needed.
2025-10-16 17:48:45 +02:00
Giacomo Vercesi
e57442fafe
Introduce Tar.h
...
Split off the `GzipTarReader` into `Tar.h`, include a normal
`TarWriter` class which leverages libarchive to generate the tar file.
2025-10-16 16:08:05 +02:00
Giacomo Vercesi
2f83d8f5c9
Introduce CUniquePtr
...
Add a helper using of `std::unique_ptr` that allows easier wrapping of
C pointer with destructors.
2025-10-16 16:08:05 +02:00
Giacomo Vercesi
ca0f312b1e
Pipebox: remove const from ArrayRef
...
Remove the `const` from `ArrayRef<const char>` as the `ArrayRef` already
implies the underlying type will be accessed only in `const`.
2025-10-16 16:07:09 +02:00
Giacomo Vercesi
18f0bd88f9
pypeline::Model: fix serialize
...
The `serialize` function of `revng::pypeline::Model` erroneously
returned a buffer instead of `bytes`, fix the function so that `bytes`
are returned instead.
2025-10-16 12:51:52 +02:00
Giacomo Vercesi
f165f99392
pypeline.Model: make deserialize to static
...
Change the `Model.deserialize` to a static function, which will return
a new instance of the Model.
2025-10-16 10:30:01 +02:00
Giacomo Vercesi
d92f4cdca3
ObjectID: introduce byte (de)serialization
...
Add the `to_bytes` and `from_bytes` to `ObjectID`. This allows
serializing an `ObjectID` instance to raw bytes with a specific binary
format.
2025-10-15 11:58:41 +02:00
Giacomo Vercesi
10a396a3b5
PipeboxCommon: rework {Analysis,Pipe}Runner
...
Rework the `AnalysisRunner` and `PipeRunner` structs into single
functions, these do not need to have a template parameter specifying how
to extract containers as that logic has been delegated to a newly
introduced trait called `ExtractContainerFromList`.
2025-10-15 11:58:41 +02:00
Giacomo Vercesi
bb0709effc
Introduce compile_time::callWithIndexSequence
...
Add a helper function that given a `size_t` or a tuple-like type, allows
calling a lambda with the expanded sequence pack. This avoids having to
manually create the index sequence and defining the lambda accepting it.
2025-10-15 11:58:41 +02:00
Ivan Krysak
ecb9d76c64
Model: drop obsolete default value handling
2025-10-13 18:33:10 +03:00
Ivan Krysak
855f929041
Yield: set default values where viable
2025-10-13 18:33:10 +03:00
Ivan Krysak
52e556f53e
ABI: set default values where viable
2025-10-13 18:33:10 +03:00
Ivan Krysak
a0cd3c78ca
EFA: set default values where viable
2025-10-13 18:33:10 +03:00
Ivan Krysak
fd1c9115c0
Model: set default values where viable
2025-10-13 18:33:10 +03:00
Ivan Krysak
4607741630
TrackingContainer: allow construction from T &&
2025-10-13 18:33:10 +03:00
Ivan Krysak
782fb1d747
Yield: make TTG verification more strict
...
Some stuff that was before implicitly checked during deserialization
now need explicit checks, those are introduced here.
2025-10-13 18:33:10 +03:00
Ivan Krysak
cc57e57fd1
TTG: remove support for optional: true fields
...
After this commit, every non-key field is treated as if it was optional
while every key field (plus every auto-generated `Kind` field) - as if
it was required.
2025-10-13 18:33:10 +03:00
Ivan Krysak
b38185c979
Model: rewrite TTG documentation
...
Big chunks of this file were outdated or otherwise awkward,
this brings it up-to-date with the current state of the TTG.
2025-10-13 18:33:10 +03:00
Ivan Krysak
10ca432cb2
TTG: simplify reference field usage
...
This allows to avoid having to specify the `rootType` (stable within
the entire tree) manually each time a reference is introduced.
Thanks to that, a much nicer syntax of:
```yaml
- name: MyTypeField
reference-to: TypeDefinition
```
can replace the current one:
```yaml
- name: MyTypeField
reference:
pointeeType: TypeDefinition
rootType: Binary
```
2025-10-13 18:33:10 +03:00
Ivan Krysak
480443f358
TTG: drop upcastable: configuration option
...
Instead, detect whether `UpcastablePointer` wrapping is needed or not
based on the type.
2025-10-13 18:33:10 +03:00
Ivan Krysak
d9ee804211
Do not use std::vector in model TTG docs
...
Currently, using `std::vector` in these breaks invalidation, so to
avoid potential confusion, we shouldn't use it in docs either.
Note that it's fine to use `std::vector` in non-invalidation-enabled
TTG instances.
2025-10-13 18:33:10 +03:00
Ivan Krysak
0dba3e0c69
Yield: improve TTG-schema formatting
2025-10-13 18:33:10 +03:00
Ivan Krysak
de6db68394
EFA: improve TTG-schema formatting
2025-10-13 18:33:10 +03:00
Ivan Krysak
89282f31da
Minor improvements
2025-10-13 18:33:10 +03:00
Lauri Vasama
22d6f70ee2
Clift directory structure overhaul
2025-10-13 15:08:20 +02:00
Lauri Vasama
3c191122dc
Rename Clift to CliftDialect, CliftOps to Clift
2025-10-13 15:08:20 +02: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
a8e326f4d7
UpcastablePointer: improve documentation
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
5717d835f8
Add missing llvm::Error checks
2025-10-13 10:26:37 +03:00
Ivan Krysak
c11761ceb5
Pipes: drop unused invalidateFromDiff
2025-10-08 12:22:34 +03:00