Alessandro Di Federico
bc8e6a6a24
Minor changes
2022-03-16 22:10:15 +01:00
Alessandro Di Federico
edaf468c7c
Merge branch 'feature/dematerialize-revng-lift'
2022-03-11 15:37:21 +01:00
Alessandro Di Federico
7d48059800
Turn revng-lift into a script
2022-03-11 15:37:12 +01:00
Alessandro Di Federico
0793e4afcb
Turn lifting into a pass
2022-03-11 15:37:12 +01:00
Alessandro Di Federico
5e38805063
Rename detail namespaces into revng::detail
2022-03-11 15:37:12 +01:00
Alessandro Di Federico
857f3afcf6
Merge branch 'feature/reorganize-frontend'
2022-03-10 15:54:53 +01:00
Alessandro Di Federico
cd7f1fced5
Update test results
2022-03-08 20:57:46 +01:00
Alessandro Di Federico
ee0b8f44c1
Introduce BinaryImporter
...
This is a big step to split revng-lift in two parts: one that only
writes the model and one that actually lifts to LLVM IR.
* Introduce `revng import binary`
* Split off `BinaryFile.h`
* Drop `revng.h`
* `GeneratedCodeBasicInfo`: use model
* Reduce role of `GeneratedCodeBasicInfo` in favor of
`model::Architecture` and `model::Register` methods
* `CodeGenerator`: adopt `RawBinaryView` and model
* `JumpTargetManager`: adopt `RawBinaryView` and model
* `ExternalJumpsHandler`: adopt model
* `InstructionTranslator`: discard `Architecture` in favor of
`EndianessMismatch`
* Many other changes
2022-03-08 15:15:24 +01:00
Alessandro Di Federico
e9b1879067
Handle invalid model::DynamicFunction::Prototype
2022-03-08 15:04:34 +01:00
Alessandro Di Federico
ad7e6d9388
EFA: always perform stack adjustment
2022-03-08 15:04:34 +01:00
Alessandro Di Federico
60cce26768
Support streaming llvm::Errors to Loggers
2022-03-08 15:04:34 +01:00
Alessandro Di Federico
0a5d2c04a7
Rework LoadModelPass
2022-03-08 15:04:34 +01:00
Alessandro Di Federico
1a57229693
Introduce model::Binary::DefaultPrototype
2022-03-08 15:04:34 +01:00
Alessandro Di Federico
b3bfd5c64d
Introduce RawBinaryView
2022-03-08 15:04:34 +01:00
Alessandro Di Federico
1d1ae3f7d4
Add model::Binary::ExtraCodeAddresses
2022-03-08 15:04:34 +01:00
Alessandro Di Federico
7a35ef21be
Extend model::Register
...
This is done in order to get rid of `BinaryFile`.
2022-03-08 15:04:29 +01:00
Alessandro Di Federico
b65dc65037
Extend model::Architecture
...
This is done in order to get rid of `BinaryFile`.
2022-03-08 13:06:49 +01:00
Alessandro Di Federico
a88a9e52c3
Improve model::Segment
2022-03-08 13:06:47 +01:00
Alessandro Di Federico
97f0941aee
Introduce model::Section
2022-03-08 12:26:07 +01:00
Alessandro Di Federico
8570923d64
Introduce model::Relocation
2022-03-08 12:25:59 +01:00
Alessandro Di Federico
69cd0db81f
tuple_tree_generator: make Key strongly typed
2022-03-08 12:25:47 +01:00
Alessandro Di Federico
39ace7dc56
mv revng{DwarfImporter,ModelImporterDwarf}
2022-03-08 12:25:47 +01:00
Alessandro Di Federico
81f21ae21d
Make model::Binary::EntryPoint optional
2022-03-08 12:25:47 +01:00
Alessandro Di Federico
1cd17a13e8
readFromPointer: use bool IsLittleEndian
2022-03-08 12:25:47 +01:00
Alessandro Di Federico
75b5620703
Introduce OverflowSafeInt
2022-03-08 12:25:47 +01:00
Alessandro Di Federico
f44363f621
Introduce TemporaryFile
2022-03-08 12:25:47 +01:00
Alessandro Di Federico
0589697dca
CMake: sort headers for tuple_tree_generator
2022-03-08 12:25:35 +01:00
Alessandro Di Federico
af79107b8b
Move Integral concept to Concepts.h
2022-03-08 12:25:35 +01:00
Alessandro Di Federico
7c515ff997
Use std::string for MaterializedValue::SymbolName
2022-03-08 12:25:35 +01:00
Alessandro Di Federico
c1ed018786
Fix a revng_assert meant to be a revng_abort
2022-03-08 12:25:22 +01:00
Alessandro Di Federico
d5843e807f
Merge branch 'feature/various-improvements'
2022-03-02 16:11:32 +01:00
Alvise de Faveri
9e326682bc
Check-conventions: handle dirs with 0 python files
2022-03-02 15:40:27 +01:00
Pietro Fezzardi
269d729554
FilteredGraphs: add filter() method
...
The method allows to access the filter function and is useful for
templating.
2022-03-02 15:40:27 +01:00
Alvise de Faveri
0659e6b6a3
Model: Improve getCallSitePrototype() helper
...
1. Hoist the logic to retrieve a model CallEdge from an llvm::CallInst
out of `getCallSitePrototype()`, in a separate `getCallEdge()`
function.
2. Modify `getCallSitePrototype()` so that the parent function's type is
optional.
2022-03-02 15:40:27 +01:00
Alvise de Faveri
ea53846fa0
Add Qualifier::createPointer(Architecture)
2022-03-02 15:40:27 +01:00
Alvise de Faveri
62b5ec38cd
Add CallEdge::isDirect()
2022-03-02 15:40:27 +01:00
Antonio Frighetto
e798131082
O2Pipe: fix pipe name
2022-03-02 15:40:27 +01:00
Massimo Fioravanti
b982b69c5d
revng-model-inject: support model-less modules
...
Inject is meant to inject a model into an `llvm::Module`, but it fails
when operating on a Module that had no model metadata.
This commit fixes the bug.
2022-03-02 15:40:27 +01:00
Alessandro Di Federico
9608b337c6
Python formatting: switch to black 22
2022-03-02 15:40:27 +01:00
Alessandro Di Federico
24e6873d20
Merge branch 'feature/describe-function-type'
2022-02-25 08:21:49 +01:00
Alessandro Di Federico
984aea88ae
Minor changes
2022-02-25 00:32:46 +01:00
Ivan Krysak
bc0e6d1392
ABI: preliminary FinalStackOffset computation
2022-02-25 00:32:24 +01:00
Ivan Krysak
868970c5e7
ABI: specify stack alignment
2022-02-25 00:32:01 +01:00
Ivan Krysak
fca0df8dd2
ABI: specify who's responsible for stack cleanup
2022-02-25 00:31:37 +01:00
Ivan Krysak
2c35fc87d5
Conversion to RawFunctionType cannot fail
2022-02-25 00:31:14 +01:00
Ivan Krysak
11989b316b
Ensure model is untouched RawToCABI
...
It's now guaranteed to leave the model unmodified if the converstion
from `RawFunctionType` to `CABIFunctionType` fails.
2022-02-25 00:30:51 +01:00
Ivan Krysak
d811321538
InvokeIsolatedFunctions: adopt Layout
2022-02-25 00:30:38 +01:00
Ivan Krysak
f30ed88eb5
EnforceABI: adopt FunctionType::Layout
2022-02-25 00:30:27 +01:00
Ivan Krysak
b14fee7515
Implement abi::FunctionType::layout()
...
The `Layout` data structure works as a common view over
`RawFunctionType` and `CABIFunctionType`.
2022-02-25 00:30:14 +01:00
Ivan Krysak
541643afc3
Move function type conversion to librevngABI
2022-02-24 23:56:30 +01:00