Antonio Frighetto
5438ddcfbd
ProcessCallGraph: fix access to Metadata
...
A logic issue existed in the Pipe, as it was mistakenly relying on
`IsolatedRoot` instead of the isolated function. That was breaking
things if those functions were to be removed. This issue has been
addressed by correcting the behaviour of the Pipe.
2023-01-31 11:05:34 +01:00
Massimo Fioravanti
f11ed394d1
Rework yield and efa cross relations
...
Yield and efa shared the same namespace, this commits splits them and
introduces tuple tree containers as well.
2023-01-31 10:48:30 +01:00
Massimo Fioravanti
742e1a0c56
TupleTree: switch from public fields to accessors
2022-12-12 18:36:57 +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
974dd0c680
yield::Function: do not use efa::BasicBlock
...
This change introduces some duplication but ensures an important
property of `tuple_tree_generate`d: data structures: all the leaves are
scalars. Previously, yield::Function was using efa::BasicBlock, making
things more difficult under certain conditions.
Specifically, we can rely on the fact that, when generating a visit to
the TupleTree, we know everything about all non-scalars.
2022-12-09 10:11:27 +01:00
Alessandro Di Federico
66b12ad540
Yield: move CrossRelation into its own directory
...
Also, use ROOT_TYPE.
2022-12-09 10:11:27 +01:00
Alessandro Di Federico
e9db913291
Disassembler: fix iterator invalidation issue
...
The index of an element of a `SortedVector<yield::Tag>` was saved, but
`SortedVector` behaves like a set.
The issue has been fixed by creating a temporary `Tag` instead of trying
to keep a reference to an existing one.
2022-12-09 09:00:20 +01:00
Alessandro Di Federico
98025f4dbe
yield::Tag: let TTG emit the key
2022-12-09 08:59:46 +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
Massimo Fioravanti
d55aa9b9e6
Pipeline: remove * from targets
...
Now * is just a pipeline frontend shorthand.
2022-10-20 14:20:12 +02:00
Giacomo Vercesi
025f6d5580
Assembly & CFG: fix MIME type
...
Change the MIME type of the assembly artifact and the svg graphs to the
new naming convention.
2022-10-11 17:11:04 +02:00
Ivan Krysak
b94c23cf52
Yield/ControlFlow: stop accounting for footer
2022-10-11 17:09:39 +02:00
Massimo Fioravanti
049ba69d43
Pipeline: containers can now enumerate their kinds
2022-09-29 15:55:30 +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
Ivan Krysak
6724b6d9cd
revng/Yield/Pipes: streamline file naming
2022-09-26 12:10:47 +02:00
Ivan Krysak
bb37d48dad
Yield: introduce YieldCallGraphSlicePipe
2022-09-26 12:09:28 +02:00
Ivan Krysak
3cd801dbac
SVG: introduce slices-to-SVG converter
2022-09-26 12:09:03 +02:00
Ivan Krysak
63019a3850
Yield: add a Graph keyword to SVG emitters
2022-09-26 12:08:22 +02:00
Ivan Krysak
2e9269caf8
Yield: implement pipes::*::getContract in .h
2022-09-26 12:07:54 +02:00
Ivan Krysak
fd994728bd
Yield: introduce call graph slicing
2022-09-26 12:01:43 +02:00
Ivan Krysak
cf5c010a7c
Layouter: introduce simple tree specialization
2022-09-26 10:33:43 +02:00
Ivan Krysak
7e051e3a23
Layouter: improve configuration documentation
2022-09-26 10:33:43 +02:00
Ivan Krysak
ed8279fe08
Pipes: introduce a call graph emitting pipe
2022-09-26 10:33:43 +02:00
Ivan Krysak
c90a49ec56
SVG Exporter: introduce call graph flavour
2022-09-26 10:33:43 +02:00
Ivan Krysak
db406a8835
PTML: introduce function links
2022-09-26 10:33:43 +02:00
Ivan Krysak
8b01cb0da1
Layouter: increase configuration options
2022-09-26 10:33:43 +02:00
Massimo Fioravanti
9ce7b1e527
Drop Pipe suffix from pipe names
2022-08-29 14:45:45 +02:00
Alessandro Di Federico
1d91ed9beb
tuple_tree_generator: make C++ just a regular backend
...
The `tuple_tree_generator` component was still heavily treating C++ as a
special citizen.
This commit normalizes the situation.
2022-08-11 16:20:42 +02:00
Ivan Krysak
7b7c4c25b9
Standardize the pipe names to use CamelCase
2022-08-05 21:46:46 +03:00
Ivan Krysak
dff7c5f37d
Move yield pipes into revngYield
2022-08-05 21:46:28 +03:00
Ivan Krysak
8f4590bf00
Outline the cross-relation interface
2022-08-05 21:42:58 +03:00
Giacomo Vercesi
3e9058393e
Rework YieldAssemblyHTML to output PTML
2022-07-28 08:47:34 +02:00
Ivan Krysak
7e538776d4
Outline sugiyama style layouter interface
2022-06-15 16:04:44 +03:00
Ivan Krysak
7591788620
Implement node size calculation
2022-06-15 16:04:44 +03:00
Ivan Krysak
840a34c0a4
Implement CFG extraction
2022-06-15 16:04:44 +03:00
Ivan Krysak
71f2ea6b22
Outline yield::Graph
2022-06-15 16:04:44 +03:00
Ivan Krysak
d3afdc47bb
Outline yield::cfg::Configuration
2022-06-15 16:04:43 +03:00
Ivan Krysak
5b49873523
Move delay slot control down to basic block level
2022-06-15 16:04:43 +03:00
Ivan Krysak
b19663e439
Implement labeled block detection
2022-06-15 16:03:45 +03:00
Ivan Krysak
de9861815a
Move fallthrough detection to yield::cfg
2022-06-15 16:02:44 +03:00
Ivan Krysak
80e9243e06
Add a basic CFG pipeline
2022-06-15 15:52:26 +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
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