Commit Graph

444 Commits

Author SHA1 Message Date
Ivan Krysak ac587cbb4f Model: rename Type into TypeDefinition 2024-06-27 11:05:48 +02:00
Ivan Krysak b2959e36df Minor improvements 2024-06-27 11:05:48 +02:00
Alessandro Di Federico b5f7576573 Rework TupleTreeGenerator tracking 2024-06-20 10:24:50 +02:00
Alessandro Di Federico b0d897b87d Minor changes 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
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
Lauri Vasama 9f7117fe81 Move ModelType test into an .inc file for sharing 2024-05-29 15:42:15 +02:00
Lauri Vasama 3e33a300d5 Introduce RawFunctionType::Architecture 2024-05-29 15:42:15 +02:00
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