Ivan Krysak
769e5c1cbe
ABI: add a natural alignment calculation helper
2023-03-15 10:19:02 +01:00
Ivan Krysak
6fc300d6d4
ABI: forbid using XMM registers to return values
...
This should be reverted once the vector register support is introduced
2023-03-15 10:19:02 +01:00
Ivan Krysak
8b675e131e
ABI: introduce runtime abi definition
2023-03-15 10:19:02 +01:00
Ivan Krysak
58b33ea7af
ABI-testing: make rtf-equivalence id-independent
2023-03-15 10:19:02 +01:00
Ivan Krysak
7daa187107
ABI-testing: support returning values as a pointer
2023-03-15 10:19:02 +01:00
Ivan Krysak
ad0fc079b8
ABI-testing: rename verify-abi
...
The new name is `check-compatibility-with-abi`
2023-03-15 10:19:02 +01:00
Ivan Krysak
f4cbbaa365
ABI-testing: remove an extra tag redefinition
2023-03-15 10:19:02 +01:00
Ivan Krysak
87bded80d3
ABI: rename RegisterList into RegisterVector
2023-03-15 10:19:02 +01:00
Ivan Krysak
3d3348b84a
ABI: rename Converter into ToCABIConverter
...
This also moves members definitions outside the class boundaries
2023-03-15 10:19:02 +01:00
Ivan Krysak
b1b9453585
ABI: rename Converter into ToRawConverter
...
This also moves members definitions outside the class boundaries
2023-03-15 10:19:02 +01:00
Ivan Krysak
0e8aee95e9
ABI: rename ArgumentContainer into ArgumentSet
2023-03-15 10:19:02 +01:00
Ivan Krysak
395191cdf1
ABI: use replaceReferencesIf when updating types
2023-03-15 10:19:02 +01:00
Ivan Krysak
bcca3ac8b7
TupleTree: introduce replaceReferencesIf
2023-03-15 10:19:02 +01:00
Ivan Krysak
9eb55f363b
STLExtras: introduce some c++20 invocable concepts
2023-03-15 10:19:02 +01:00
Ivan Krysak
01a05e2037
ABI: separate convertions based on the direction
2023-03-15 10:19:02 +01:00
Ivan Krysak
2f3128cb43
ABI: separate reused helpers into Support.h
2023-03-15 10:19:02 +01:00
Ivan Krysak
67bc7f8331
ABI: rename TheBinary into Binary
2023-03-15 10:19:02 +01:00
Ivan Krysak
0b0aab2161
ImportDebugInfo: explicitly depend on libABI
2023-03-15 10:19:02 +01:00
Ivan Krysak
f5679262e9
DwarfImporter: prevent removal of valid arrays
...
The algorithm was looking for any array qualifier on a zero-sized
type, which led to some valid types being discarded in the case
when there was a pointer qualifier in-between.
`void a[100]` is not a valid type, while void *a[100]` is.
2023-03-15 10:19:02 +01:00
Ivan Krysak
8521f6bedc
YAML: enable manual [de]serialization of enums
2023-03-15 10:19:02 +01:00
Ivan Krysak
eb67826da6
PathList: accept non-owning strings as arguments
2023-03-15 10:19:02 +01:00
Ivan Krysak
75feff6186
model::Register: introduce isUsedInArchitecture
2023-03-15 10:19:02 +01:00
Ivan Krysak
058807ca00
model::Register: rename getArchitecture
...
The new name is `getReferenceArchitecture`
2023-03-15 10:19:02 +01:00
Ivan Krysak
9148f70b24
model::Register::getSize: leave a TODO
2023-03-15 10:19:02 +01:00
Ivan Krysak
7442bdc4a9
Model: introduce model::ABI::getPointerSize
2023-03-15 10:19:02 +01:00
Ivan Krysak
c45b7778c1
Model: introduce copyMetadata and moveMetadata
2023-03-15 10:19:02 +01:00
Ivan Krysak
3c0c49c785
Model: add ABI::getRegisterArchitecture
2023-03-15 10:19:02 +01:00
Ivan Krysak
07837d9b9b
Model: add model::Binary::recordNewTypes
2023-03-15 10:19:02 +01:00
Ivan Krysak
b0e481cdef
Model: add model::Binary::makeType
2023-03-15 10:19:02 +01:00
Ivan Krysak
726baf5318
Model: make Binary::recordNewType stricter
2023-03-15 10:19:02 +01:00
Ivan Krysak
69c292102d
Pipeline: improve InvokableWrapperImpl::dump()
2023-03-15 10:19:02 +01:00
Ivan Krysak
3904e525b0
SortedVector: improve new element insertion
...
This introduces `emplace` and `emplace_or_assign` members
allowing population of the container without copying values in.
It also reworks the batch insertion. On top of adding the ability
to move the elements in (without making a copy) and constructing
them in place, it also makes the non-assign version of the inserter
a lot safer by explicitly asserting the fact that while it was
in use no duplicates were added to the vector. Before now,
the duplicates were just silently removed from the container.
It also optimizes the batch insertion somewhat by using non-stable
`std::sort` for unique case as well as replacing `std::unique`
invocation with `std::find_adjacent`.
2023-03-15 10:19:02 +01:00
Ivan Krysak
64a4672f32
STLExtras: introduce ranges::views::as_rvalue
2023-03-15 10:19:01 +01:00
Ivan Krysak
a06d9fedbd
STLExtras: extend revng::find family
2023-03-15 10:19:01 +01:00
Ivan Krysak
e79870e7c6
STLExtras: rework the skip range modifier
...
Note that all this is going to be obsolete once we can start using
the compiler with c++20 `views` support.
2023-03-15 10:19:01 +01:00
Ivan Krysak
1248f8532d
TTG: enable vectors of enumerations
2023-03-15 10:19:01 +01:00
Ivan Krysak
3687869795
Model: make AddPrimitiveTypes a pure analysis
2023-03-15 10:19:01 +01:00
Ivan Krysak
03be19fab8
Pipeline: fix pure (model only) analysis support
...
Because of a missing function overload, no container-less analysis
could have been created. This adds the said overload.
2023-03-15 10:19:01 +01:00
Giacomo Vercesi
15da250710
api/daemon: fix single analysis handling
...
* Let GraphQL accept zero or more parameters for analyses
* Handle the general case of analyses using zero or more containers with
a variable ammount of targets
2023-03-15 10:19:01 +01:00
Ivan Krysak
11c0d7f02e
Stop using \brief doxygen command
2023-03-15 10:19:01 +01:00
Ivan Krysak
1c44e492af
yield: improve command-less pipe error messages
2023-03-15 10:19:01 +01:00
Ivan Krysak
0b1aaeaede
Minor improvements
2023-03-15 10:19:01 +01:00
Pietro Fezzardi
40cf837713
Merge branch 'feature/fix-llvm-linking'
2023-03-15 07:55:08 +01:00
Alessandro Di Federico
c40c22fdef
Merge branch 'feature/fix-llvm-linking'
2023-03-14 20:50:59 +01:00
Giacomo Vercesi
7751143aad
revng daemon: add timeout-keep-alive option
...
Add the `--timeout-keep-alive` option for all invocations of `revng
daemon`. This avoids some edge cases where connections are abruply
closed.
2023-03-14 20:50:28 +01:00
Alessandro Di Federico
bd61df1ddd
PromoteCSVs::getUsedCSVs: fix non-helpers
2023-03-13 22:53:44 +01:00
Alessandro Di Federico
6b166bf0b9
Import TaggedFunctionPass
2023-03-13 22:53:44 +01:00
Alessandro Di Federico
09541be398
getUniqueString: do not rely on named metadata
...
`getUniqueString` returns a dedup'd char array `GlobalVariable` given a
string. We used to rely on named metadata to dedup them. However, this
lead to issues with `LLVMContainer` cloning and linking.
The new implementation uses the name of the variable as the
de-decuplication key, circumventing the problem entirely and improving
performance.
2023-03-13 22:53:44 +01:00
Alessandro Di Federico
6f47231695
LLVMContainer: pruneDICompileUnits pre linking
2023-03-13 22:53:44 +01:00
Alessandro Di Federico
8d813e169a
LLVMContainer: drop certain named MD pre linking
2023-03-13 22:53:44 +01:00