Ivan Krysak
f536ba46f0
Separate process-assembly from yield-assembly
2022-06-15 15:52:25 +03:00
Ivan Krysak
832a8d0baa
Use TTG-based assembly to weaken dependency on efa
2022-06-15 15:52:23 +03:00
Ivan Krysak
74764f9729
Switch to TTG-based assembly description
2022-06-15 15:52:00 +03:00
Ivan Krysak
f26ee02029
Use tuple tree generator for assembly description
2022-06-15 15:51:23 +03:00
Ivan Krysak
49d0c316a0
Implement GenericGraph-based CFG exporter
2022-06-15 15:51:18 +03:00
Ivan Krysak
04efcb8ed8
Drop the revng yield .* tools
2022-06-14 18:55:59 +03:00
Ivan Krysak
bc775a91b4
Improve the String wrapper
2022-06-14 18:55:59 +03:00
Ivan Krysak
150fab6bbc
Fix a minor pipeline::Target construction issue
2022-06-14 12:40:11 +03:00
Ivan Krysak
257bcb9b3c
Make MetaAddress constexpr constructible
2022-06-14 12:40:11 +03:00
Ivan Krysak
dffe311ad8
Add efa::FunctionEdgeType::needsFallthrough
2022-06-14 12:40:11 +03:00
Massimo Fioravanti
22bce466b1
revng-pipeline: support handles multiple branches
...
This commit introduces the possibility to have multiple pipeline
branches in a single YAML pipeline file.
2022-06-13 18:34:03 +02:00
Giacomo Vercesi
7052f2a8a0
Support analyses and globals in Python
...
This commit adds the newly implemented functionality in PipelineC both
in revng.api and the graphql api, allowing:
* retrieval of global variable names
* unwrapping of a single target
* execution of analyses
2022-05-24 10:56:02 +02:00
Massimo Fioravanti
1508a1bc72
revng-pipeline: support out of line analyses
2022-05-24 08:59:08 +02:00
Massimo Fioravanti
e38dfc74cc
PipelineC: introduce run_all_analyses
2022-05-24 08:59:08 +02:00
Massimo Fioravanti
f0a5ffe3b3
revng-pipeline: globals, extractOne and analyses
2022-05-24 08:58:48 +02:00
Massimo Fioravanti
2c48713af9
Make TupleTreeDiff compatible with regular vectors
2022-05-24 08:50:24 +02:00
Pietro Fezzardi
1bb5bd6eee
ModelGlobal: don't move the underlying model::Binary
...
Moving it was causing the address of the model to change, while for the
functionality of revng-pipeline we need it to be stable.
So we pay the price of expensive copy, for the sake of downstream
stability.
2022-05-12 16:59:47 +02:00
Pietro Fezzardi
741d55279b
TupleTree: add copy-constructor and -assignment
...
The copy of a TupleTree is potentially very expensive, so it was
disabled until now and only allowed via the explict method clone().
We have now decided to make TupleTree copiable.
This commit adds a copy-constructor and a copy-assignment, killing the
clone() method that was already unused and is now effectively useless.
2022-05-11 16:16:49 +02:00
Pietro Fezzardi
b190f1a47c
Refactor logic to compact function targets
...
This commit introduces a reusable function to compact
pipeline::TargetLists that represent functions.
Initially this reasoning was only needed by TaggedFunctionKind, but now
also FunctionStringMap needs it, and potentially others in the future,
so it makes sense to keep only a single implementation for it instead of
duplicating code (and likely bugs).
2022-05-11 16:16:49 +02:00
Pietro Fezzardi
ca566a76f0
Rename StringMapContainer to FunctionStringMap
...
This new naming more closely describes the fact that each element in the
map must be associated with a model::Function
2022-05-11 16:16:32 +02:00
Pietro Fezzardi
bce0bd70b1
StringMapContainer: fix enumeration for * target
2022-05-11 14:52:22 +02:00
Pietro Fezzardi
2dea29d926
StringMapContainer: use multiline strings in YAML
2022-05-11 14:39:31 +02:00
Pietro Fezzardi
0f4df96ad6
Mark some dump() methods as debug_function
2022-05-11 14:39:31 +02:00
Pietro Fezzardi
bfe67413d3
StringMapContainer: find() and contains() methods
2022-05-11 14:39:31 +02:00
Pietro Fezzardi
1c6dac225a
Add dedicated non-generated TypeKind.h header
...
This is necessary because now QualifiedType.h needs TypeKind, but
including Type.h directly would result in a circular dependency between
Type.h and QualifiedType.h
2022-05-11 14:39:31 +02:00
Giacomo Vercesi
8a61d7c2b9
Model/ABI.h: make doc fields multiline
2022-05-09 13:35:10 +02:00
Ivan Krysak
282b4e238d
Add yield-assembly pipeline
2022-05-06 18:51:47 +02:00
Ivan Krysak
cf3845b78d
Add a way to output assembly as plain text
2022-05-06 18:51:47 +02:00
Ivan Krysak
1adc74e660
Import an assembly to html converter from caliban
2022-05-06 18:51:47 +02:00
Ivan Krysak
6e81dbe06c
Add a disassembly helper
2022-05-06 18:51:47 +02:00
Ivan Krysak
36c63c1bb9
Implement the disassembler interface
2022-05-06 18:51:47 +02:00
Ivan Krysak
6125ad4a71
Define internal assembly representation
2022-05-06 18:51:47 +02:00
Ivan Krysak
cfc9915b39
Add ModelInModule::getModule.
2022-05-06 18:51:47 +02: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
4737efd763
Add a non-pass binary loader
2022-05-06 18:51:47 +02:00
Ivan Krysak
6ba8010507
Add a missing include
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
92d3b95fba
Model: make more things optional
2022-04-29 17:57:49 +02:00
Alessandro Di Federico
291ed672b4
Introduce FunctionType::Layout::dump
2022-04-29 17:57:49 +02:00
Alessandro Di Federico
83f08249d7
Introduce Layout::Argument::StackSpan::operator+
2022-04-29 17:57:49 +02:00
Alessandro Di Federico
9e46d4fdcc
Introduce getLLVMTypeForScalar(QualifiedType)
2022-04-29 17:57:49 +02:00
Alessandro Di Federico
0f3c29fa1b
Split moveToNewFunctionType off changeFunctionType
2022-04-29 17:57:49 +02:00
Alessandro Di Federico
a355a90c7e
model::Binary::getPointerTo(model::QualifiedType)
2022-04-29 17:57:49 +02:00
Alessandro Di Federico
85e031c218
FunctionType::Layout: construct from model::Type
2022-04-29 17:57:49 +02:00
Alessandro Di Federico
4904f8cbe1
GeneratorIterator: simplify iterators
2022-04-29 17:57:49 +02:00
Massimo Fioravanti
016a9464b8
Model diff: handle UpcastablePointer correctly
2022-04-29 17:57:49 +02:00
Alessandro Di Federico
e6f6010cfd
Build with -fvisibility-inlines-hidden
...
`-fvisibility-inlines-hidden` ensures that each dynamic library uses its
own version of each `inline` function.
This reduces the number of exported symbols and resolves issues related
to picking a version of a weak symbol that has already been deleted upon
`dlclose`.
The downside of this flag is that the address of `inline` functions can
be different across different libraries. This commit drops certain
assertions that were relying on this behavior.
2022-04-29 16:40:24 +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
Pietro Fezzardi
e9470d031d
Add std::map-like methods to StringMapContainer
2022-04-27 17:40:21 +02:00