Ivan Krysak
66c96fb128
ABI: improve RegisterStateDeductions
...
Split the interface into two functions: `enforce.*` returning the map by
value and `tryApply.*` returning an `std::optional`.
Improve non-positional single deduction function to better reflect
some corner cases (for example how a required `NoOrDead` register
argument is handled).
Enforce a position-based deduction corner case where it's impossible to
deduce whether the argument is passed in the GPR or the vector one -
now GPR takes precedence in those cases.
2022-04-15 18:25:11 +02:00
Ivan Krysak
c374f8013a
ABI: separate mips and mipsel ABIs
2022-04-15 18:25:11 +02:00
Ivan Krysak
ddd2968faa
ABI: make abi::RegisterState::Map assignable
2022-04-15 18:25:11 +02:00
Pietro Fezzardi
b4c733ab57
Move Concepts.h into include/ADT for better reuse
2022-03-30 17:09:24 +02:00
Ivan Krysak
59b5d3dce4
Add runtime ABI trait access
2022-03-28 15:43:34 +02:00
Ivan Krysak
a10415fd0b
Make the function layout argument type aware
2022-03-28 15:43:34 +02:00
Ivan Krysak
1b03adca5e
Make function type convertions self-sufficient
2022-03-28 15:38:04 +02:00
Ivan Krysak
20bb0a2b90
Fix some minor abi::FunctionType issues
2022-03-28 15:37:59 +02:00
Ivan Krysak
5108c3e50f
Introduce ABI-based register sorting
2022-03-28 15:37:55 +02:00
Ivan Krysak
522b760a12
Fix a problem with SystemV_x86_64 abi::Trait
2022-03-28 15:34:42 +02:00
Ivan Krysak
c6370816f7
Drop the abi::revng namespace
2022-03-28 15:32:06 +02:00
Alessandro Di Federico
ea6383c476
mv {d,registerD}efaultFunctionPrototype
2022-03-17 14:10:50 +01:00
Alessandro Di Federico
5e38805063
Rename detail namespaces into revng::detail
2022-03-11 15:37:12 +01:00
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
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
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