Alessandro Di Federico
31b1b66f44
Reorder model::Binary fields
2024-05-22 10:25:25 +02:00
Alessandro Di Federico
c061f1f971
Make Pipe::checkPrecondition mandatory
2024-05-22 10:25:25 +02:00
Alessandro Di Federico
25c7834b21
Introduce test_adt
...
This should reduce build times.
2024-05-03 21:52:40 +02:00
Alessandro Di Federico
0459b9d084
Introduce RegisterUsageAnalyses
2024-04-19 18:33:00 +02:00
Alessandro Di Federico
a1b0ba752c
GenericGraph: implement Edge::operator==
...
This fixes a subtle bug in GenericGraph. Basically, if the label of an
Edge was the Empty data structure, whose `operator==` always returns
`true`, the comparison between edges was broken.
2024-04-18 17:50:32 +02:00
Alessandro Di Federico
dae9f33544
Minor changes
2024-04-18 17:50:31 +02:00
Ivan Krysak
8ecdd76e68
ABI-tests: improve ABI mismatch error message
2024-03-15 19:05:10 +01:00
Alessandro Di Federico
0da9d1e1a4
Model: fix handling of 0-sized arguments
...
We used to support having a single `void` argument. It was for some
C-compatibility ambitions, but just omitting the argument is perfectly
fine.
Also, the DWARF importer has been fixed to handle typedef'd void as
arguments.
More in general, arguments are now required to always have a size.
2024-03-01 14:53:06 +01:00
Ivan Krysak
b73d4934c8
ABI-tests: extend register comparison
...
It now accounts for endianness.
2024-02-09 15:09:37 +00:00
Ivan Krysak
52c9ae0b4d
ABI-tests: fix vector-less MIPS tests
2024-02-09 15:09:37 +00:00
Ivan Krysak
bd6ab10454
ABI-tests: stop using unsupported primitives
2024-02-09 15:09:37 +00:00
Ivan Krysak
16feb420c3
ABI-tests: handle stack argument offset gracefully
2024-02-09 15:09:37 +00:00
Ivan Krysak
654e0958e9
ABI-tests: remove obsolete abi replacement
...
See the `replace-abi.py` script for how it's done now.
2024-02-09 15:09:37 +00:00
Ivan Krysak
b75406f711
ABI-tests: make ID matching more robust
2024-02-09 15:09:37 +00:00
Ivan Krysak
5fcdfebbaf
ABI-tests: support pointers-to-copy on the stack
2024-02-09 15:09:37 +00:00
Ivan Krysak
24e907525e
ABI-tests: support pointers-to-copy in registers
2024-02-09 15:09:37 +00:00
Ivan Krysak
a1ddbe5d83
ABI-tests: improve reported errors
2024-02-09 15:09:37 +00:00
Ivan Krysak
d1a78d903b
ABI-tests: make tested function set leaner
2024-02-09 15:09:37 +00:00
Ivan Krysak
43c6780baf
ABI-tests: introduce ID list deduplication
2024-02-09 15:09:37 +00:00
Ivan Krysak
f08d1a2f81
ABI-tests: prefer model::Type::Key to RFT *
2024-02-09 15:09:37 +00:00
Ivan Krysak
cf0ce66674
ABI-tests: use updated stdout.yml file format
...
This also allows to simplify the resulting datastructure somewhat.
2024-02-09 15:09:37 +00:00
Ivan Krysak
4a8455e994
ABI-tests: separate value preservation verifier
2024-02-09 15:09:37 +00:00
Ivan Krysak
d13e83163d
Minor improvements
2024-02-09 15:09:37 +00:00
Alessandro Di Federico
03642de797
Standardize unit test names
2024-02-09 10:04:27 +01:00
Alessandro Di Federico
aaa1b26468
AAPCS ABI: drop support for int128_t
2024-02-09 10:04:26 +01:00
Alessandro Di Federico
d9367954a4
Convert all public strings to kebab-case
2024-02-09 10:04:24 +01:00
Alessandro Di Federico
5fbb5ff503
Minor changes
2024-02-09 10:04:17 +01:00
Ivan Krysak
a52243037b
Model: add basic unit tests for TypeBucket
2024-01-29 11:57:54 +02:00
Ivan Krysak
77b1acaf00
Prefer uint64_t to size_t wherever relevant
2024-01-29 11:57:54 +02:00
Ivan Krysak
b25a32de2a
Stop using std:: prefix for std::size_t
2024-01-29 11:57:54 +02:00
Massimo Fioravanti
c276a439b5
Add pipeline invalidation
...
Replace the stub implementation of invalidation with the proper
implementation. A ReadPathCache is added to each global so that it can
keep tracks of what target are associated to which read paths.
2024-01-02 11:14:56 +01:00
Alessandro Di Federico
d648f9b970
s/Layout::returnsAggregateType/Layout::hasSPTAR/
2023-12-12 12:04:34 +01:00
Giacomo Vercesi
8504a96020
RawFunctionType: use NamedTypedRegister for return
...
Use the `NamedTypedRegister` type for return values in
`RawFunctionType`. This allows return values to be renamed at the user's
discretion.
2023-12-11 12:03:45 +01:00
Alessandro Di Federico
10dcb7be11
Fix semantics of model::Types purging passes
...
One of the two passes to purge unused types from the model had a
ill-defined semantics.
This commit simplifies them in two passes: one that purges all the types
unreachable from outside `Binary::Types` and one that does the same but
also preserves types with a `CustomName` or an `OriginalName`.
2023-12-05 16:19:39 +01:00
Pietro Fezzardi
1285c6e7af
Make RawFunctionType::StackArgumentsType a TTR
...
This is homogeneous with all other nullable references to types in the
model, such as the StackFrameType in model::Function, and others.
2023-12-05 16:19:38 +01:00
Giacomo Vercesi
acd498bf25
Pipeline options: restrict to int and strings
...
Restrict the type of pipeline options to integers and strings. Rework
the CLOpt mechanism to avoid parsing the string twice.
2023-11-03 12:13:57 +01:00
Ivan Krysak
f3acdcdef3
ABI: rewrite the testing suite documentation
2023-11-02 17:10:04 +01:00
Ivan Krysak
ca3d3fe5f1
ABI-testing: rework the layout verification
...
Following the switch in the testing approach on the revng-qa side,
the logic here also needed to be updated.
2023-11-02 17:10:04 +01:00
Ivan Krysak
65fa67df84
YAMLTraits: specialize for std::byte
2023-11-02 17:10:04 +01:00
Ivan Krysak
dcc8fd16c5
ABI-testing: rename the parser file
...
Since `artifact` is so ambiguous, a more explicit name was given.
2023-11-02 17:10:04 +01:00
Ivan Krysak
cfe28d8e56
Stop using std:: prefix for u?int\d+_t types
2023-11-02 17:10:03 +01:00
Giacomo Vercesi
0cb3e497a4
Fix typos
2023-11-02 16:48:33 +01:00
Andrea Gussoni
e2090b8746
GraphAlgorithms: nodesBetween double DFS
...
We now implement the `nodesBetween` primitive with a double DFS visit.
Specifically, we have:
1) A forward DFS that starts from the `Source`, and stops at `Target`.
2) A backward DFS that starts from the `Target`, and stops at `Source`.
The final result is then the intersection of the nodes found by the two
above DFS visits.
A new `findReachableNodes` primitive is also added to perform a DFS from
a `Source` node, which stops at the `Stop` parameter node, if present.
Added unit tests to improve the coverage.
2023-10-09 10:33:48 +02:00
Alessandro Di Federico
8ab26f8d7f
Adopt TupleTreeReference::empty()
2023-10-05 10:19:44 +02:00
Alessandro Di Federico
b67e2ac13a
Minor changes
2023-10-04 17:47:50 +02:00
Giacomo Vercesi
0c5bc8c120
Drop unused functions from PipelineC
...
Remove all the functions that are no longer needed by `revng.api`.
2023-09-14 15:44:33 +02:00
Giacomo Vercesi
90ea42b695
model/_util.py: move into tupletree.py
...
Move the contents of `model/_util.py` into `tupletree.py` as it's
model-agnostic and used by all generated Python tuple-tree wrappers.
2023-09-14 15:44:32 +02:00
Giacomo Vercesi
0b2754c824
pipeline: drop Disk from storage methods
...
This commit changes the following method names across the codebase:
* `storeToDisk` -> `store`
* `loadFromDisk` -> `load`
This has been done since the storage is no longer bound to the local
storage.
2023-09-06 15:23:43 +02:00
Giacomo Vercesi
4a2cd259e3
Introduce GzipTarFile
...
Add the GzipTarFileWriter and GzipTarReader classes that allow reading a
slightly custom `.tar.gz`.
2023-09-06 15:23:43 +02:00
Giacomo Vercesi
93d3a6238d
revng: introduce S3 support
...
Add the capability for all revng tooling to run with an S3-backed
workdir.
2023-09-06 15:23:43 +02:00