Massimo Fioravanti
742e1a0c56
TupleTree: switch from public fields to accessors
2022-12-12 18:36:57 +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
93872783f7
yield::ControlFlowGraph: use ROOT_TYPE
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
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
0bfb73fe95
FunctionMetadata: introduce cache
...
FunctionMetadata was being deserialized every time they were
inspected. This commit introduces a cache structure to prevent this
excessive deserializations.
2022-11-22 14:15:00 +01:00
Giacomo Vercesi
4ae8df0ad2
Yield disassembler: drop support for AMDGPU
2022-11-02 11:50:40 +01: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
Giacomo Vercesi
0566f5342e
Yield/PTML: make instruction definition 0-sized
...
Instruction definition tags are now generated as a 0-size anchor on
the LHS of the text of the actual instruction, this is to prevent
a potential user asking for the definition/reference of the single
instruction.
2022-10-11 17:10:17 +02:00
Giacomo Vercesi
4d0f72548a
ControlFlow/SVG: switch to simple tree layouter
2022-10-11 17:10:06 +02:00
Ivan Krysak
b94c23cf52
Yield/ControlFlow: stop accounting for footer
2022-10-11 17:09:39 +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
5190f8f6c8
Yield: move PTML out of assembly namespace
...
This fixes an old issue: the headers were moved out out of assembly
a while back while cpp files had been forgotten.
2022-09-26 12:11:20 +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
15f0c816c6
SVG Exporter: adopt ptml::Tag
2022-09-26 12:08:47 +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
0ac31f8e92
Layouter: adopt the new entry detection algorithm
2022-09-26 10:33:43 +02:00
Ivan Krysak
b267868356
CFG: fix calculateViewBox for entryless graphs
2022-09-26 10:33:43 +02:00
Ivan Krysak
0c7785bc38
Layouter & SVG: improve handling of empty graphs
2022-09-26 10:33:43 +02:00
Ivan Krysak
05d1426dca
CrossRelations: drop unnecessary serialization
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
4303ed5da6
Layouter: implement non-orthogonal edge support
2022-09-26 10:33:43 +02:00
Ivan Krysak
8b01cb0da1
Layouter: increase configuration options
2022-09-26 10:33:43 +02:00
Ivan Krysak
7037be8b90
SVG Exporter: improve arrow head customizability
2022-09-26 10:33:43 +02:00
Ivan Krysak
172e07f398
Layouter: improve multiple entry graph support
2022-09-26 10:33:43 +02:00
Giacomo Vercesi
37caa91e6d
Ranks: fix Rank keys
...
Use model::Function::Key for the Function rank instead of the naked
MetaAddress as it allows forward-compatibility if the model::Function
key is ever changed.
Use a std::tuple<uint64_t> for TypeField as it's the current type for
{Struct,Enum,Union}Field.key()
2022-09-01 17:46:57 +02:00
Massimo Fioravanti
9ce7b1e527
Drop Pipe suffix from pipe names
2022-08-29 14:45:45 +02:00
Massimo Fioravanti
633f49c1ef
Introduce dedicated namespace for kinds and ranks
2022-08-29 14:44:53 +02:00
Massimo Fioravanti
915c083661
Pipes: reorganize who defines pipes
2022-08-29 14:44:35 +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
Massimo Fioravanti
96bd5835d8
revng-pipeline: rework file-to-container syntax
2022-08-10 09:49:24 +02:00
Ivan Krysak
b3f9ce7cc2
Use locations in PTML exporter
2022-08-05 21:47:05 +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
Ivan Krysak
65d1a016d4
Standardize concept naming across the codebase
2022-08-05 17:27:56 +03:00
Ivan Krysak
8dce9ef724
Fix the problem with negative node ranks
...
Having the initial rank threshhold too low caused them to sometimes
loop around and become negative, causing problems later down the line.
This sets the rank of the "entry" node to 4 offsetting the possible
causes of this issue quite a bit.
2022-08-05 17:27:56 +03:00
Ivan Krysak
240f334d78
Fix minor wording issues
2022-08-05 17:27:56 +03:00
Ivan Krysak
4ffadb2144
Fix an iteration invalidation caused issue
2022-08-05 17:27:56 +03:00
Giacomo Vercesi
3e9058393e
Rework YieldAssemblyHTML to output PTML
2022-07-28 08:47:34 +02:00
Ivan Krysak
71115c8062
Implement SVG control flow exporter
2022-06-15 16:04:44 +03:00
Ivan Krysak
eb129428a9
Import edge routing from caliban
...
(the following is the original commit message)
The last step is pretty simple. All that's left to do is to take the
ordered edge container and to `append` their points to their `Path`
2022-06-15 16:04:44 +03:00