Alessandro Di Federico
b7f5884f8c
DynamicFunction::name: no OriginalName direct use
2022-02-14 17:54:32 +01:00
Ivan Krysak
1df6bbc6d6
Introduce ABI testing infrastructure
2022-02-14 13:35:37 +01:00
Ivan Krysak
a122ff0431
Introduce register state deduction unit tests
2022-02-14 13:35:37 +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
5c671e8446
Add abi::Trait specialization for s390x ABI
2022-02-14 13:35:36 +01:00
Ivan Krysak
75c00f5112
Add abi::Trait specialization for mips ABI
2022-02-14 13:35:36 +01:00
Ivan Krysak
c9daab2ce4
Add abi::Trait specializations for arm ABIs
2022-02-14 13:35:36 +01:00
Ivan Krysak
4069d547b6
Add abi::Trait specializations for x86 ABIs
2022-02-14 13:35:36 +01:00
Ivan Krysak
756d0f7376
Add abi::Trait specializations for x86_64 ABIs
2022-02-14 13:35:36 +01:00
Ivan Krysak
d30c4c54fb
Introduce trait to describe ABIs
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
d108f7f049
Extend model::ABI enumeration
2022-02-14 11:28:36 +01:00
Ivan Krysak
c14567e3d0
Make TupleTree::visitReferences public
2022-02-14 11:28:36 +01:00
Ivan Krysak
fd3e7243c1
Remove an unused parameter from TupleTree::clone
2022-02-14 11:28:36 +01:00
Ivan Krysak
ec625e8533
Define architecture-specific register access
2022-02-14 11:28:36 +01:00
Ivan Krysak
9b7eb76ac4
Introduce enumSwitch
2022-02-14 11:28:36 +01:00
Ivan Krysak
a67bc8d1a6
revng-model-diff: return error on mismatch
2022-02-14 10:57:30 +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
Ivan Krysak
3bb266125c
Add always_true and always_false traits
2022-02-14 10:57:10 +01:00
Ivan Krysak
a21dff02de
Add additional registers to the model
2022-02-14 10:57:00 +01:00
Ivan Krysak
7151c587f9
Prevent TupleTreeReference::isValid() asserts
2022-02-14 10:56:50 +01:00
Ivan Krysak
dfeb437b45
Fix a minor convertible_to concept issue
2022-02-14 10:56:40 +01:00
Alessandro Di Federico
a38819d8d9
revng-pipeline tests: cleanup temporary files
...
Certain revng-pipeline tests did not clean up temporary files leading to
weird effects running the tests twice in the same build directory.
2022-02-14 10:56:30 +01:00
Alessandro Di Federico
ec6d4dbe74
Ensure all files end with a newline
2022-02-14 10:56:15 +01:00
Alessandro Di Federico
806f076709
Minor changes
2022-02-14 09:39:44 +01:00
Alvise de Faveri
7593d4da23
PromoteCSVs: promote PC CSVs
2022-02-12 12:04:14 +01:00
Massimo Fioravanti
ef1b59158f
revng-translate: propagate arguments after --
2022-02-11 18:45:13 +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
3baf3323ed
Merge branch 'feature/pipeline-improvements'
2022-02-08 18:35:03 +01:00
Alessandro Di Federico
8f73438a8b
Ban tabs and spaces at end of lines
2022-02-08 17:54:07 +01:00
Alessandro Di Federico
e80d159944
revng-pipline: simplify Kinds.h
2022-02-08 17:44:33 +01:00
Alessandro Di Federico
9788c49529
Fix pipeline test suite names
2022-02-08 17:44:26 +01:00
Alessandro Di Federico
fa8061b805
Drop dead Kinds
2022-02-08 17:44:19 +01:00
Alessandro Di Federico
80d92e2fed
Drop FunctionCounter-related files
2022-02-08 17:44:08 +01:00
Alessandro Di Federico
c8026ac401
Minor changes
2022-02-08 17:40:09 +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
Alessandro Di Federico
d9c893547f
Merge branch 'feature/revng-pipes'
2022-02-08 08:45:17 +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
67f9cbdf4c
Introduce the revng-pipeline CLI tool
2022-02-08 00:05:03 +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
3b7d7c5f7e
Don't use llvm::outs
2022-02-07 22:24:39 +01:00