Giacomo Vercesi
5169a13e58
Automatically assign Kind in constructor
...
Assign Kind in the default constructor and
(if needed) key constructor for derived classes
2022-04-06 17:37:45 +02:00
Giacomo Vercesi
0eeb3bdd5b
Fix python model
2022-04-06 17:37:45 +02:00
Giacomo Vercesi
7746ab04e5
Autogenerate Kind
2022-04-06 17:37:37 +02:00
Giacomo Vercesi
56beb7d809
Use Kind field for upcasting in YAML
2022-04-06 17:21:15 +02:00
Ivan Krysak
326624f517
Fix TupleTreeCompatible linkage problem
...
Now all the generated `.cpp` include `Binary.h`. This ensures we don't
trigger the wrong concept due to forward declarations.
Also, this commit introduces a couple of `static_assert`s which should
enable us to early identification of similar problems.
2022-03-28 15:33:30 +02:00
Filippo Cremonese
70a460c46a
TupleTreeGenerator: use dataclasses
...
Give up on pydantic.
2022-03-22 17:52:02 +01:00
Alessandro Di Federico
2b55d1df22
Adopt cmake-format
2022-03-17 18:52:18 +01:00
Alessandro Di Federico
da7701bd4e
Move all executables except revng to libexec/revng
...
We used to collect all binaries into the `bin/` directory. However this
led to confusions since certain commands where available both as
`revng-command` and `revng command`.
This commit moves all the executables except `revng` into
`libexec/revng`, which, according to FHS, is dedicated to "internal
binaries that are not intended to be executed directly by users or shell
scripts".
2022-03-17 14:10:50 +01:00
Alessandro Di Federico
69cd0db81f
tuple_tree_generator: make Key strongly typed
2022-03-08 12:25:47 +01:00
Alvise de Faveri
9e326682bc
Check-conventions: handle dirs with 0 python files
2022-03-02 15:40:27 +01:00
Filippo Cremonese
6672eb8dbc
Turn Python scripts into modules
2022-02-23 18:02:42 +01:00
Filippo Cremonese
d5e5e16887
Apply and enforce python formatting with black
2022-02-23 18:02:39 +01:00
Filippo Cremonese
1dc7efe2b0
tuple_tree_generator: emit jsonschema
2022-02-23 17:37:03 +01:00
Filippo Cremonese
2877ead7ed
revng-model-to-json: handle SIGINT
2022-02-23 17:36:38 +01:00
Filippo Cremonese
8511cbf40b
tuple_tree_generator: drop tags
...
They were more harmful than beneficial.
2022-02-23 17:36:34 +01:00
Alessandro Di Federico
10dc6744b4
mv include/revng/{Model,TupleTree}/EnumTraits.h
...
`EnumTraits.h` is not model-specific.
2022-02-23 17:32:50 +01:00
Alessandro Di Federico
cca7e5b443
check-revng-conventions: improve performance
...
We used to run `clang-format` and the other checks twice, but it was not
strictly necessary.
2022-02-23 17:31:41 +01:00
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