Commit Graph

143 Commits

Author SHA1 Message Date
Ivan Krysak bac670a38a monotone_framework_lattice: move generation notice
It made it look like the template was autogenerated.
2022-02-14 10:57:20 +01:00
Alessandro Di Federico ec6d4dbe74 Ensure all files end with a newline 2022-02-14 10:56:15 +01:00
Massimo Fioravanti ef1b59158f revng-translate: propagate arguments after -- 2022-02-11 18:45:13 +01:00
Alessandro Di Federico 8f73438a8b Ban tabs and spaces at end of lines 2022-02-08 17:54:07 +01:00
Massimo Fioravanti d696197597 scripts/revng: adopt revng-pipeline
The revng-translate tool is now a driver for revng-pipeline to perform
the translation.

This commit also drops computing the `-load` "roots". It shouldn't
really be necessary.
2022-02-08 00:05:03 +01:00
Massimo Fioravanti fe9686be03 revng-pipeline: introduce C API 2022-02-08 00:05:03 +01:00
Alessandro Di Federico 0f084ed620 Minor changes 2022-02-07 16:55:46 +01:00
Alessandro Di Federico 60b2dbab72 revng: support model subcommands 2022-01-31 16:28:26 +01:00
Alessandro Di Federico 78be0e9268 Explode TupleTree.h 2022-01-31 16:28:26 +01:00
Alessandro Di Federico c0f8110e4e s/revng-compare-yaml/revng-model-compare/ 2022-01-31 16:28:17 +01:00
Alessandro Di Federico 0d7decccb3 s/revng-dump-model/revng-model-to-json/ 2022-01-31 16:28:17 +01:00
Alessandro Di Federico f3634e165f Introduce model::Type::localCompare 2022-01-27 11:51:03 +01:00
Alessandro Di Federico 54fcc1d7fe struct_impl.cpp.tpl: include headers in any case 2022-01-27 11:51:03 +01:00
Alessandro Di Federico 0a0b546bdc Speed up Python dependency checks
Checking Python dependencies has significantly slown down CMake
configuration phase.

We were using `pip show` for each dependency, we now do everything in a
single invocation `pip list`.
2022-01-27 11:51:03 +01:00
Alessandro Di Federico 7ea55326e1 tuple_tree_generator: use all_optional_fields 2022-01-27 11:50:37 +01:00
Filippo Cremonese 31354a4cd6 metaschema.yml: actually enforce validation
Previously, we didn't specify the type of the root object, which led to
accept any input.
2022-01-21 18:05:52 +01:00
Filippo Cremonese f10bc1a410 Check pyparsing version at configure time
Otherwise, people will get obscure error messages.
2022-01-21 18:05:51 +01:00
Alessandro Di Federico 3ab32cd2ef tuple_tree_generator: make fully standalone 2022-01-21 18:05:51 +01:00
Filippo Cremonese c7a0d05379 tuple_tree_generator: remove unused include 2022-01-21 18:05:49 +01:00
Filippo Cremonese 610d5112c7 tuple_tree_generator: fix type lookup 2022-01-21 18:03:07 +01:00
Filippo Cremonese 0a70383e12 tuple_tree_generator: Jinja2 compatibility issue
This commit fixes a compatibility issue with Jinja2 2.10.
2022-01-17 16:35:01 +01:00
Filippo Cremonese 6e7439ad6d Check Python requirements at configure time 2022-01-13 14:34:11 +01:00
Filippo Cremonese 74217b4fe5 Generate C++ model from YAML definition
Model classes are now described by a YAML document, which is used to
generate C++ headers containing classes and all the boilerplate
required for YAML serialization/deserialization, usage in
SortedVectors, etc. See the README in include/revng/Model for more
info.
2022-01-13 14:34:11 +01:00
Alessandro Di Federico 6073133545 CodeGenerator: drop IR emission duties 2021-12-22 17:47:54 +01:00
Alessandro Di Federico 777adcbd45 model::Binary: add segments and imported libraries
Now, `scripts/revng` uses the model and we no longer need to emit
.li.csv and .need.csv.
2021-12-22 17:47:54 +01:00
Alessandro Di Federico 1ad2522240 Minor changes 2021-12-22 13:47:21 +01:00
Alessandro Di Federico f1ce1f9980 compare-yaml: handle - as stdin 2021-12-17 18:50:57 +01:00
Alessandro Di Federico c64223a80c mv scripts/{,revng-}compare-yaml 2021-12-17 18:50:49 +01:00
Alessandro Di Federico 7cc2e914d7 compare-yaml: switch to grandiso.find_motifs
We need to use the `interestingness` in order to have good performance.
2021-12-17 18:50:41 +01:00
Alessandro Di Federico 101e7f7e09 compare-yaml: add attribute for references 2021-12-17 18:50:33 +01:00
Alessandro Di Federico fd08154452 compare-yaml: support negation 2021-12-17 18:50:25 +01:00
Alessandro Di Federico 786598d633 compare-yaml: ignore classes upon deserialization 2021-12-17 18:50:16 +01:00
Alessandro Di Federico 8ead934c8e Improve scripts/compare-yaml
* Rename from compare-json.py to compare-yaml
* Handle YAML
* Support certain characteristics of the model
* Use subgraph matching to perform comparisons
* Introduce some testing
* Drop Python 2 support
* Reformat
2021-12-17 18:49:01 +01:00
Qian Matteo Chen 886e58553b Introduce new ABIAnalyses
Architecture-agnostic and ABI-independent data-flow analyses that
traverse the recovered functions in order to detect arguments and
return values registers.
2021-12-15 18:03:30 +01:00
Alessandro Di Federico f4d09bc5ff Improve scripts/compare-yaml
* Rename from compare-json.py to compare-yaml
* Handle YAML
* Support certain characteristics of the model
* Use subgraph matching to perform comparisons
* Introduce some testing
* Drop Python 2 support
* Reformat
2021-12-15 18:03:30 +01:00
Alessandro Di Federico 1d8e274dcd Do not by pass HARD flags 2021-12-15 18:03:28 +01:00
Alessandro Di Federico d3cee7611d revng-dump-model: consider generic MetaAddress too 2021-11-19 10:12:23 +01:00
Alessandro Di Federico 54573608fe revng-dump-model: consume all the input 2021-11-19 10:12:23 +01:00
Alessandro Di Federico e1dadae08d revng-dump-model: ignore YAML tags 2021-11-19 10:12:23 +01:00
Alessandro Di Federico 9b61ad1772 scripts/revng: fix typo in ASan handling 2021-11-08 16:18:27 +01:00
Alessandro Di Federico 93b93a3908 scripts/revng: fix computation of libs dependencies 2021-10-21 15:02:01 +02:00
Andrea Gussoni cd9e4b5df1 check-revng-conventions: improve c files exclusion 2021-10-21 15:02:01 +02:00
Alessandro Di Federico fe2e9427c1 scripts/revng: use gdb -q 2021-10-18 20:44:58 +02:00
Alessandro Di Federico d40c8d4589 scripts/revng: use 4 spaces to indent 2021-10-18 20:44:58 +02:00
Ivan Krysak 5d66973d18 Allow lines to start with .
This rule, even if it prevents weird line-breaks, prevents us to take
full advantage of both designated initializers and method-chaining
idiom.
2021-09-01 16:36:41 +02:00
Alessandro Di Federico 6d10581163 Whitespace and other minor changes 2021-07-15 13:30:25 +02:00
Ivan Krysak bc8c8f82d2 Prevent separation of 'main' headers into group 0
The prevention mechanism uses a dummy suffix:
'_THIS_SEQUENCE_IS_NEVER_GOING_TO_HAPPEN'.
2021-06-09 18:05:20 +02:00
Ivan Krysak 2e214bc661 Add an include category for Qt headers 2021-06-08 17:03:58 +02:00
Alessandro Di Federico 2b9cbb98ec Introduce --invoke-isolated-functions
This commit ensures that FunctionIsolation and EnforceABI do only
thing. This means that they no longer modify `root`.

Instead, we have a new pass, `invoke-isolated-functions` that needs to
be run after them and replaces the entry point of the functions with
invokes to the isolated functions, possibly with the appropriate
arguments.
2021-04-22 14:45:52 +02:00
Alessandro Di Federico c11065c7fd scripts/revng: handle same library multiple times
The `revng` script looks in several paths for analysis
libraries. However, before this commit, in case multiple versions of the
same library were available, you'd get unpredictable results.

This commit ensures that each library is considered at most once, in the
right order.
2021-04-22 14:45:52 +02:00