Ivan Krysak
fc45885841
Outline sugiyama style layouter interface
2022-06-14 18:55:59 +03:00
Ivan Krysak
a6a2b030db
Implement node size calculation
2022-06-14 18:55:59 +03:00
Ivan Krysak
da4bfb8644
Implement CFG extraction
2022-06-14 18:55:59 +03:00
Ivan Krysak
e7a523162a
Implement GenericGraph-based CFG exporter
2022-06-14 18:55:59 +03:00
Ivan Krysak
4289c8aa74
Outline yield::Graph
2022-06-14 18:55:59 +03:00
Ivan Krysak
d6b3d9f346
Outline yield::cfg::Configuration
2022-06-14 18:55:59 +03:00
Ivan Krysak
b59d5c6cfe
Move delay slot control down to basic block level
2022-06-14 18:55:59 +03:00
Ivan Krysak
3e62ec6d19
Implement labeled block detection
2022-06-14 18:55:59 +03:00
Ivan Krysak
d515ad5c9f
Move fallthrough detection to yield::cfg
2022-06-14 18:55:59 +03:00
Ivan Krysak
9af5429b72
Add a basic CFG pipeline
2022-06-14 18:55:59 +03:00
Ivan Krysak
7b4778302f
Separate process-assembly from yield-assembly
2022-06-14 18:55:59 +03:00
Ivan Krysak
1eebad74cd
Use TTG-based assembly to weaken dependency on efa
2022-06-14 18:55:59 +03:00
Ivan Krysak
4d09dcc351
Switch to TTG-based assembly description
2022-06-14 18:55:59 +03:00
Ivan Krysak
d4585f8ee5
Use tuple tree generator for assembly description
2022-06-14 18:55:59 +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