Giacomo Vercesi
566cb6310b
PipelineC: make indexed object stably sorted
...
Many Pipeline objects (Globals, Ranks, Kinds, Targets in a TargetList)
were ordered by load order, this makes the playback of traces difficult.
Moreover the order of loading of pipeline files also influences the
ordering of other elements (Step, Analys{is,esLists}). These are also
ordered to prevent incosistent ordering.
2023-04-20 14:43:13 +02:00
Giacomo Vercesi
9a972009d1
PipelineC: size and const-correctness
...
Fix the return type (often mismatched from uint64_t to int) and the
const-correctness of many functions in PipelineC
2023-04-20 14:43:12 +02:00
Alessandro Di Federico
8ef567471b
LLVMContainer::mergeBackImpl: postpone verify
...
This commit moves module verification after cleanup.
2023-04-13 18:11:48 +02:00
Alessandro Di Federico
995d44cf73
Implement Location::{parent,back}
2023-04-08 08:42:24 +02:00
Alessandro Di Federico
6564fc0568
Minor changes
2023-04-08 08:42:24 +02:00
Alessandro Di Federico
52521f8cac
Adopt more standard library's features
2023-04-08 08:42:23 +02:00
Alessandro Di Federico
b2f22c168f
Adopt clang-format 16
2023-04-08 08:42:23 +02:00
Giacomo Vercesi
2e96e09f63
Drop analyze-all
...
Drop all the uses of analyzeAll and swap its use with the invocation of
the appropriate analysesList
2023-03-22 17:50:02 +01:00
Massimo Fioravanti
312e2e8d53
Add analyses lists
...
Introduces the possibility of specifiying lists of analyses as way to
give them coherent names.
2023-03-22 17:31:46 +01:00
Ivan Krysak
69c292102d
Pipeline: improve InvokableWrapperImpl::dump()
2023-03-15 10:19:02 +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
Ivan Krysak
0b1aaeaede
Minor improvements
2023-03-15 10:19:01 +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
Alessandro Di Federico
4353beff22
LLVMContainer: fix how we adjust linkage
...
We used to turn `internal` linkage to the equivalent of C++'s inline.
We need to do the same for `private`. If we don't do this, the number of
`private` variables grows exponentially.
2023-03-13 22:53:44 +01:00
Massimo Fioravanti
95ec36eea3
Fix error messages capitalization
2023-02-09 13:44:22 +01:00
Massimo Fioravanti
4dc2e92782
Introduce DocumentError
...
`DocumentError`s are the inteded way of propagating errors from the
pipeline to the frontend when a location is required to inform the user
of the error whereabouts.
2023-02-09 13:42:50 +01:00
Antonio Frighetto
2d086e04a1
Context: fix entry in containsReadOnlyContainer
...
`ReadOnlyContainers` is defined to be a `llvm::StringMap`
of a further `llvm::StringMap` of `std::unique_ptr`s of
`ContainerBase`. A logic issue has been addressed by
properly dereferincing the inner map.
2023-02-06 09:37:23 +01:00
Antonio Frighetto
308d8ee8a3
Loader: associate container name to its role
...
`Container` names were mistakenly associated to the name
of their declaration. This has been fixed by associating
them to their `Role`.
2023-02-06 09:37:23 +01:00
Antonio Frighetto
ea0a06a876
revng.daemon: accept no arguments for analysis
...
Let GraphQL accept zero or more parameters for analyses.
2023-02-06 09:37:23 +01:00
Antonio Frighetto
c5d9a4d787
Introduce helper for location conversion
2023-02-06 09:37:23 +01:00
Antonio Frighetto
c3480b6f9b
CLOption: improve isSet for a cl::opt<T>
...
A logic issue existed when validating whether a `cl::opt<T>`
was set. This has been addressed by replacing `isDefaultOption`
method with `getNumOccurrences`, as the former one was not
meant to be used for checking if the option was set or not.
Likewise, the default Option itself is written to a `std::string`,
in method `get`; the latter is leveraged by `Invokable`.
2023-02-06 09:37:23 +01:00
Djordje Todorovic
3365a626df
LLVMContainer: avoid copying !dbg to declarations
2023-02-02 15:26:18 +01:00
Alessandro Di Federico
185df966b7
LLVMContainer: s/REVNG/revng./g
2022-11-30 15:06:54 +01:00
Alessandro Di Federico
06d4c3a5ed
LLVMContainer: infect DataLayouts upon linking
2022-11-30 15:06:54 +01:00
Massimo Fioravanti
452d10950e
Pipeline: only remove targets in the container
...
This commit ensures that only content that is actually inside a
container is elegible to be removed.
2022-11-30 15:06:54 +01:00
Massimo Fioravanti
044071435e
Fix handling of binaries with no functions
...
Fix various edge cases when a binary with no functions was analyzed.
2022-11-22 16:19:28 +01:00
Giacomo Vercesi
7526d72492
Kinds: exposed locations produced
...
Expose the locations that can be found in each kind
2022-11-11 13:43:55 +01:00
Giacomo Vercesi
d185fc80ac
Rank: fix RankConvertibleTo with RootRank
...
RankConvertibleTo would be erroneously fail when used with a RootRank
either in the From or To template parameter.
2022-11-11 13:43:55 +01:00
Giacomo Vercesi
0b80801b2b
TupleTreeDiff: applyDiff uses ErrorList
...
Change how TupleTreeDiff and Visitor work so they can populate an
ErrorList in case the deserialization/apply of a diff fails.
2022-10-30 09:13:44 +01:00
Giacomo Vercesi
81d25f9805
PipelineC: expose invalidation logic
2022-10-30 09:13:14 +01:00
Pietro Fezzardi
f371c03e93
Globals.h: evictCachedReferences on clear()
2022-10-29 16:46:19 +02:00
Massimo Fioravanti
d55aa9b9e6
Pipeline: remove * from targets
...
Now * is just a pipeline frontend shorthand.
2022-10-20 14:20:12 +02:00
Massimo Fioravanti
049ba69d43
Pipeline: containers can now enumerate their kinds
2022-09-29 15:55:30 +02:00
Massimo Fioravanti
dc23473d85
Introduce Loader::getRegistered{Pipes,Analyses}
2022-09-29 15:55:16 +02:00
Massimo Fioravanti
445bc2aa8c
Pipeline: introduce registry for container types
2022-09-29 15:52:26 +02:00
Massimo Fioravanti
9363bbd70a
Pipeline: every container type has now a C++ type
2022-09-29 15:51:17 +02:00
Massimo Fioravanti
3ed1ce9902
Read-only containers: support multiple readers
2022-09-26 10:33:43 +02:00
Giacomo Vercesi
8aab66a517
Rank.h: restrict keys to scalars and enums
...
Rank keys so far could be of any type as long as it was
yaml-serializable, however this would introduce problems down the
line if a Location contained for example array or mapping.
This commit restricts the type of keys to only scalars and enums,
to limit the chance that a key serializes in an invalid location.
2022-09-01 17:46:30 +02:00
Massimo Fioravanti
9a4e97d8ea
Pipeline: handle having 0 functions
2022-08-31 18:07:47 +02:00
Massimo Fioravanti
a8a8eda9ac
Pipeline/Invokable.h: split
2022-08-29 14:44:20 +02:00
Massimo Fioravanti
2a996ef666
Pipeline: allow analyses to fail
2022-08-29 14:44:10 +02:00
Massimo Fioravanti
7e75a1a4b8
Pipeline: introduce preconditions for pipes
2022-08-29 14:44:02 +02:00
Massimo Fioravanti
6b099c57e8
Pipeline: introduce options for analyses
2022-08-29 14:43:25 +02:00
Alessandro Di Federico
d81fc9a5f6
getAcceptedKinds: introduce new assertion
2022-08-26 09:50:42 +02:00
Massimo Fioravanti
261a114d6d
Pipeline: corner-case fix in backward deduction
2022-08-10 09:49:24 +02:00
Massimo Fioravanti
4cd5abe2b0
revng-pipeline: introduce --produce and --analyze
2022-08-10 09:49:24 +02:00
Massimo Fioravanti
96bd5835d8
revng-pipeline: rework file-to-container syntax
2022-08-10 09:49:24 +02:00
Massimo Fioravanti
85a9c9637f
revng-pipeline: rework logging
2022-08-10 09:49:24 +02:00
Massimo Fioravanti
aa36cb7127
LLVMContainer: deduplicate linkage-related code
2022-08-10 09:49:24 +02:00