Commit Graph

451 Commits

Author SHA1 Message Date
Alessandro Di Federico 984aea88ae Minor changes 2022-02-25 00:32:46 +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 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
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
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 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 806f076709 Minor changes 2022-02-14 09:39:44 +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
Alessandro Di Federico c8026ac401 Minor changes 2022-02-08 17:40:09 +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
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 91fd04079a AllPasses.h: include Verify.h 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 78be0e9268 Explode TupleTree.h 2022-01-31 16:28:26 +01:00
Alessandro Di Federico a353e00ac1 Introduce model passes 2022-01-31 16:28:14 +01:00
Alessandro Di Federico 3980ee3fad Introduce model tools 2022-01-31 16:28:14 +01:00
Alessandro Di Federico 29cf330fc8 TupleTreeDiff: use streams 2022-01-31 14:13:25 +01:00
Alessandro Di Federico 5c89a6a858 callOnPathSteps: fix UpcastablePointer handling
The version of callOnPathSteps without an actual instance was completely
ignoring the upcasted type of `UpcastablePointer`s. We now fix this by
calling the right template specialization, which we choose by inspecting
the key of the `UpcastablePointer`.
2022-01-31 14:13:25 +01:00