Djordje Todorovic
961f9e5461
Model: search debug info locally upon import
...
Also find prototypes in Models of dynamic libs for both PE and ELF.
2022-12-13 11:26:54 +01:00
Djordje Todorovic
cad68a9876
Instroduce LDDTree
2022-12-13 11:26:25 +01:00
Massimo Fioravanti
0d3133cfc9
Fix missing includes
...
This ensures headers make sense on their own, without implicit
assumption about includers to also include other headers before them.
2022-12-09 18:09:39 +01:00
Alessandro Di Federico
3a7b78584f
Externalize cl::opt generations in Debug.h
...
These have a significant impact on build times.
2022-12-09 09:07:59 +01:00
Pietro Fezzardi
764c7efbb8
Make isCallTo accept any llvm::Value *
2022-11-22 10:12:34 +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
Giacomo Vercesi
bf4122ed0a
Introduce v2 of revng-check-conventions
2022-09-29 15:21:59 +02:00
Alessandro Di Federico
02c69b0421
TemporaryFile: use RemoveFileOnSignal
2022-09-26 18:05:38 +02:00
Pietro Fezzardi
c7105cda4d
GraphAlgorithms: generic entry point detection
2022-09-26 10:33:43 +02:00
Ivan Krysak
53ae25bcde
MetaAddress: improve constexpr-friendliness
2022-09-26 10:33:43 +02:00
Giacomo Vercesi
e443cd3766
YAMLTraits.h: add traits for std::tuple<T>
...
This commit introduces a YAML trait for `std:tuple`s of a single
scalar that allows their serialization/deserialization generically.
2022-09-01 17:46:35 +02:00
Massimo Fioravanti
85a9c9637f
revng-pipeline: rework logging
2022-08-10 09:49:24 +02:00
Alessandro Di Federico
6a6cd939db
Rework EarlyFunctionAnalysis
2022-08-08 13:55:34 +02:00
Alessandro Di Federico
a844589739
ProgramCounterHandler: align PC address
...
ProgramCounterHandler now emits code masked with an alignment mask to
ease the job of various analyses.
2022-08-08 13:55:26 +02:00
Alessandro Di Federico
4d69437548
Split moveBlocksInto off moveToNewFunctionType
2022-08-08 13:55:25 +02:00
Alessandro Di Federico
c4ca2e5d14
Introduce MetaAddress::isIn
2022-08-08 13:54:41 +02:00
Ivan Krysak
65d1a016d4
Standardize concept naming across the codebase
2022-08-05 17:27:56 +03:00
Ivan Krysak
9610051df9
Fix yaml traits to correctly [de]serialize scalars
2022-08-05 17:27:56 +03:00
Giacomo Vercesi
09009836a1
PipelineC: expose globals verification
2022-07-28 08:47:46 +02:00
Davide Depau
4c0576c1e4
Set custom crash error message
2022-07-22 21:04:03 +02:00
Davide Depau
4f06a26105
Introduce CLI initialization utility
2022-07-22 21:04:03 +02:00
Alessandro Di Federico
f4684e244d
Switch to new testsuite
2022-06-20 19:04:18 +02:00
Ivan Krysak
257bcb9b3c
Make MetaAddress constexpr constructible
2022-06-14 12:40:11 +03:00
Ivan Krysak
42c1461b9f
Add MetaAddressType::getLLVMCPUFeatures
2022-05-06 18:51:47 +02:00
Ivan Krysak
20ccb79dd1
Add constant module tag-based filters
2022-05-06 18:51:47 +02:00
Ivan Krysak
2a6a7943f4
Fix a couple of minor typos
2022-05-06 18:51:47 +02:00
Alessandro Di Federico
0f3c29fa1b
Split moveToNewFunctionType off changeFunctionType
2022-04-29 17:57:49 +02:00
Alessandro Di Federico
4904f8cbe1
GeneratorIterator: simplify iterators
2022-04-29 17:57:49 +02:00
Giacomo Vercesi
168eab6cc5
Use /proc/self/maps to determine root
...
Use the path of the mapped librevngSupport.so to determine the root
directory.
2022-04-28 22:18:08 +02:00
Antonio Frighetto
c2815949c7
Adopt std::same_as of libcxx
2022-04-15 18:25:08 +02:00
Massimo Fioravanti
38a3c5a086
Introduce TupleTree::deserialize
2022-04-15 15:14:02 +02:00
Massimo Fioravanti
a75eaae66a
Introduce Logger::getAsLLVMStream
2022-04-15 15:13:43 +02:00
Antonio Frighetto
9980fc8c67
EFA: support dynamic function calls
...
EarlyFunctionAnalysis now can handle calls to
dynamically linked functions.
2022-04-05 15:37:57 +02:00
Antonio Frighetto
20cdfe668a
EFA: take the control-flow graph out of the model
...
The control-flow graph and all its hierarchy components
have been moved from `model` to `efa`. The CFG is now
serialized onto the LLVM IR module as a metadata.
2022-04-05 15:37:57 +02:00
Alessandro Di Federico
f6c9b04c81
Adopt clang-tidy: readability-identifier-naming
2022-04-04 21:15:52 +02:00
Alessandro Di Federico
1a2a729e92
Rework FunctionTags::Tag
2022-03-31 12:51:24 +02:00
Alessandro Di Federico
30febba0ab
mv revng/{Pipeline,Support}/DynamicHierarchy.h
2022-03-31 12:50:12 +02:00
Pietro Fezzardi
32cf3fc3cf
OpaqueFunctionsPool: remove redundant LLVMContext
2022-03-30 17:21:48 +02:00
Pietro Fezzardi
838c5f7319
Load type-based OpaqueFunctionsPool from Module
...
This commit adds two method for OpaqueFunctionsPool that use
a pointer to `llvm::Type` (or a class derived from `llvm::Type`) as key.
Both methods are used to initialize the pool with pre-existing functions
inside an `llvm::Module` that match a specific `FunctionTags::Tag`:
- `initializeFromReturnType` uses the return `llvm::Type` of the
function as key in the pool
- `initializeFromNthArgType` takes an additional argument which is an
index N, and uses the return `llvm::Type` of the N-th argument as a
key in the pool
These methods are useful for avoiding unnecessary proliferation of
opaque functions in an `llvm::Module`, re-using the existing ones
instead if they are already present.
2022-03-30 17:21:48 +02:00
Pietro Fezzardi
b4c733ab57
Move Concepts.h into include/ADT for better reuse
2022-03-30 17:09:24 +02:00
Ivan Krysak
a77f648775
Introduce std::ranges::{,sized_}range
2022-03-28 15:36:51 +02:00
Massimo Fioravanti
bb23892df7
Fix detail namespaces
...
Some `revng::detail` namespace were already inside a different namespace
which lead to the `revng::revng` namespace.
2022-03-28 12:17:05 +02:00
Alvise de Faveri
16b7c61940
Add writeToLog() for types that have dump()
2022-03-17 18:52:18 +01:00
Alvise de Faveri
45784cce8c
YAMLTraits: Add serializeToString()
2022-03-17 18:34:09 +01:00
Giacomo Vercesi
e237ee75b0
Add custom traceback support
2022-03-17 18:33:59 +01:00
Alessandro Di Federico
00ce580362
Introduce EnforceABI and PromoteCSV pipes
2022-03-17 14:10:50 +01:00
Alessandro Di Federico
fa3206b26d
Rename Lifted tag to Isolated
2022-03-17 14:10:50 +01:00
Alessandro Di Federico
da7701bd4e
Move all executables except revng to libexec/revng
...
We used to collect all binaries into the `bin/` directory. However this
led to confusions since certain commands where available both as
`revng-command` and `revng command`.
This commit moves all the executables except `revng` into
`libexec/revng`, which, according to FHS, is dedicated to "internal
binaries that are not intended to be executed directly by users or shell
scripts".
2022-03-17 14:10:50 +01:00
Alessandro Di Federico
0793e4afcb
Turn lifting into a pass
2022-03-11 15:37:12 +01:00