Alessandro Di Federico
b7f5884f8c
DynamicFunction::name: no OriginalName direct use
2022-02-14 17:54:32 +01:00
Ivan Krysak
242b885a78
Remove obsolete ABI utilities
2022-02-14 13:35:37 +01:00
Ivan Krysak
371f5c4555
Implement ABI-based register state deductions
...
This will help EarlyFunctionAnalysis in providing more accurate results,
in case assumptions about the ABI can be made.
2022-02-14 13:35:37 +01:00
Ivan Krysak
9771ae29d6
Move RegisterState to ABI
2022-02-14 13:35:37 +01:00
Ivan Krysak
cafe44097b
ABI: introduce default function type generation
2022-02-14 13:35:37 +01:00
Ivan Krysak
8d876b0def
ABI: introduce bulk function conversion
2022-02-14 13:35:37 +01:00
Ivan Krysak
e20e65ca9a
Require a description when registering a pass
2022-02-14 13:35:36 +01:00
Ivan Krysak
7369e49eba
Implement "best effort" function type convertion
2022-02-14 13:35:36 +01:00
Ivan Krysak
68129c9221
Add model::Binary::DefaultABI field
2022-02-14 13:35:36 +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
Alvise de Faveri
7593d4da23
PromoteCSVs: promote PC CSVs
2022-02-12 12:04:14 +01:00
Alvise de Faveri
812b73f2a2
Remove opaquepc()
...
We can set the PC to the expected value after each call instead
of creating an `opaquepc()` call.
2022-02-11 13:42:29 +01:00
Alessandro Di Federico
e80d159944
revng-pipline: simplify Kinds.h
2022-02-08 17:44:33 +01:00
Alessandro Di Federico
fa8061b805
Drop dead Kinds
2022-02-08 17:44:19 +01:00
Pietro Fezzardi
29c50fa909
Model: reserve names defined in stdint.h
...
This commit adds a bunch of type names and macro names to the set of
reserved keywords that cannot be used for names in the revng Model.
These are the names defined in the stdint.h standard C header, that is
included automatically by the decompiler in decompiled code.
We need to reserve these names otherwise it would be possible to add
things to the revng Model with names that clash with the names defined
in stdint.h, which would in turn break recompilation of decompiled code
because of conflicting definitions.
2022-02-08 15:54:02 +01:00
Massimo Fioravanti
fe9686be03
revng-pipeline: introduce C API
2022-02-08 00:05:03 +01:00
Massimo Fioravanti
a8a8da3bae
Introduce revng pipes
...
This commit imports all the revng pipes (and other support utilities) to
be used with `revng-pipeline`. In particular, the pipes necessary for
binary translations have been introduced.
2022-02-08 00:05:03 +01:00
Massimo Fioravanti
6f0d0c4f9d
CodeGenerator: accept an external model
2022-02-07 22:24:39 +01:00
Massimo Fioravanti
98ecd38162
Drop PureLLVMPipe
...
Now LLVM passes can be used directly in an LLVMPipe without specifying a
contract for it.
2022-02-07 22:24:39 +01:00
Alessandro Di Federico
fec5f3537b
s/Granularity/Rank/
2022-02-07 22:24:39 +01:00
Alessandro Di Federico
e2cd7cbcdf
Pipeline: simplify LLVMContainer
2022-02-07 20:11:37 +01:00
Massimo Fioravanti
396095706f
Minor changes to revngPipeline
2022-02-07 20:11:15 +01:00
Alessandro Di Federico
0f084ed620
Minor changes
2022-02-07 16:55:46 +01:00
Alessandro Di Federico
280848484e
SerializeModelPass: verify model
2022-01-31 16:28:17 +01:00
Alessandro Di Federico
a353e00ac1
Introduce model passes
2022-01-31 16:28:14 +01:00
Alessandro Di Federico
b3d6c721ad
Introduce purgeUnnamedAndUnreachableTypes
2022-01-27 11:51:03 +01:00
Alessandro Di Federico
f14e722c86
Introduce deduplicateEquivalentTypes
2022-01-27 11:51:03 +01:00
Alessandro Di Federico
d0bb3d4c2c
CodeGenerator.cpp: use OriginalName for symbols
2022-01-27 11:51:03 +01:00
Alessandro Di Federico
445066bd0a
CodeGenerator.cpp: posticipate DWARF import
...
This way we apply the optimization passes.
2022-01-27 11:51:03 +01:00
Alessandro Di Federico
2d08050220
DwarfImporter: adopt OriginalName
2022-01-27 11:51:03 +01:00
Alessandro Di Federico
dd7477664c
Update CustomName verification criteria
...
This commit ensures `CustomName` is unambiguous according to C symbols
rules.
2022-01-27 11:51:03 +01:00
Alessandro Di Federico
74a7496020
deduplicateNames -> promoteOriginalName
...
This commit switches from `deduplicateNames`, which changed certain
`CustomName` values, to `promoteOriginalName`, which updates empty
`CustomName` using non-ambiguous versions of `OriginalName`.
2022-01-27 11:51:03 +01:00
Alessandro Di Federico
863652f480
Introduce OriginalName in the type system
...
The goal of `OriginalName` is to keep track of the original name of a
symbol upon import.
In future, this will also be used to promote it to `CustomName`.
2022-01-27 11:51:03 +01:00
Alessandro Di Federico
8d22c5205f
Push CustomName to model::Type
...
Before this commit `CustomName` was in each inheritor, except for
`model::PrimitiveType`.
2022-01-27 11:51:03 +01:00
Alessandro Di Federico
680924b643
CodeGenerator.cpp: drop some outdated assertions
...
Drop some outdated checks for `model::Binary::ImportedDynamicFunctions`
being sorted.
2022-01-27 11:51:03 +01:00
Alessandro Di Federico
b31e7b1f5e
Introduce model::Type::edges()
...
This makes building a graph for the type system very easy.
2022-01-27 11:51:03 +01:00
Alessandro Di Federico
80ed065206
model::Type: move makeTypeWithID to .cpp
...
It needs to see the full declaration of all concrete types.
2022-01-27 11:51:03 +01:00
Alessandro Di Federico
92ea78b0a8
Fix ReservedKeywords list
...
Commas were missing.
2022-01-27 11:51:03 +01:00
Alessandro Di Federico
c9d47d4ee7
Drop model::EnumEntry::Aliases
...
They turn out to be problematic to handle in the model and not very
usable in practice.
2022-01-27 11:51:03 +01:00
Alessandro Di Federico
1ce1f1cbd6
model::Function::verify: relax assumptions
...
Now `model::Function` can miss the CFG, the `Prototype` and have
`Invalid` type.
2022-01-27 11:51:03 +01:00
Alessandro Di Federico
3799f1e973
Whitespace and other minor changes
2022-01-25 21:27:05 +01:00
Alessandro Di Federico
3ab32cd2ef
tuple_tree_generator: make fully standalone
2022-01-21 18:05:51 +01:00
Massimo Fioravanti
70ec456078
Introduce revng-pipeline
2022-01-17 18:17:54 +01:00
Massimo Fioravanti
afbebaf531
ProgramRunner: fix misuse of executable path
...
ProgramRunner was using garbage data instead of correctly using the path
to the current executable directory.
2022-01-17 18:17:54 +01:00
Massimo Fioravanti
6421aeed3e
Support: depend on generated model headers
...
renvg.h should not use model headers, however, currently it does. This,
combined with the fact that the revngSupport library did not depend on
revngModel or the header generation led to non-deterministic build
failures.
Before this commit the bug can be found by:
orc clean revng
orc uninstall revng
orc configure revng
orc shell -c revng ninja renvgSupport
The error should manifest itself as some generated headers missing.
The proper fix would be to rewrite revng.h so that it does not uses the
model.
2022-01-17 18:17:45 +01:00
Alessandro Di Federico
d19879d4e8
Minor changes
2022-01-17 16:30:42 +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
Filippo Cremonese
fbeee896e1
Rename model::abi -> model::ABI
2022-01-10 10:31:27 +01:00
Alessandro Di Federico
546efa345a
More verbose model verification failures
2022-01-09 19:00:57 +01:00