Commit Graph

860 Commits

Author SHA1 Message Date
Giacomo Vercesi 81d25f9805 PipelineC: expose invalidation logic 2022-10-30 09:13:14 +01:00
Alessandro Di Federico 53616b34ea LinkForTranslation: use ld, not c++
This change enables us to depend on the linker only, not on the
compiler.
2022-10-29 12:11:17 +02:00
Massimo Fioravanti d55aa9b9e6 Pipeline: remove * from targets
Now * is just a pipeline frontend shorthand.
2022-10-20 14:20:12 +02:00
Alessandro Di Federico 5a99154196 Put Python packages into lib/python*/site-packages 2022-10-11 19:08:10 +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
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
Pietro Fezzardi 43cb77e6a3 TypeSystemPrinter: route edge to the top of nodes 2022-10-06 17:53:47 +02:00
Giacomo Vercesi d7265ff160 PipelineC: allow signal masking
Some users of PipelineC might be interested in preserving
pre-existing signals, this commits adds this functionality.
2022-10-04 14:13:56 +02:00
Giacomo Vercesi 7fda1ef459 PipelineC: drop AbortHook
Handle crashes via signal handlers. Switch python's revng.api from
a normal python function to faulthandler, which works also in the
case of harsher interruptions (e.g. SIGABRT).
2022-10-04 14:13:56 +02:00
Massimo Fioravanti 049ba69d43 Pipeline: containers can now enumerate their kinds 2022-09-29 15:55:30 +02:00
Massimo Fioravanti dc23473d85 Introduce Loader::getRegistered{Pipes,Analyses} 2022-09-29 15:55:16 +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
Alessandro Di Federico 9dd0b139c0 PromoteCSVs: helpers no longer return structs
PromteCSVs creates wrappers around helpers. These helpers used to return
a struct in case the helper was changing a CSV.

In order to simplify the downstream pipeline, we now use out arguments
instead of returning a struct.
2022-09-29 10:53:47 +02:00
Alessandro Di Federico 5a7c120433 Translator: stop translation if leaving +x page
If a basic block is starting in a traslated page, but it extends out of
it, stop translation.
2022-09-29 09:02:52 +02:00
Alessandro Di Federico 8d4b3833ec InvokeIsolatedFunctions: adopt splitBasicBlockBefore 2022-09-26 18:10:12 +02:00
Alessandro Di Federico df17c199c8 s/object..o/object.o/ 2022-09-26 18:09:01 +02:00
Alessandro Di Federico f6d5cd24dd Give pretty names to temporary files 2022-09-26 18:09:01 +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
Massimo Fioravanti 3ed1ce9902 Read-only containers: support multiple readers 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
Ivan Krysak a5f97fc215 Pipes: prevent non-root ranked file containers 2022-09-26 10:33:43 +02:00
Ivan Krysak 247710648f Minor changes 2022-09-26 10:33:43 +02:00
Alessandro Di Federico 07ff20585c pipeline-analysis: handle 0 functions 2022-09-22 17:43:56 +02:00
Alessandro Di Federico 8cf981fbf8 JTM: no assert on indirect jump to invalid address 2022-09-22 17:43:56 +02:00
Alessandro Di Federico cf62e6dce7 Minor changes 2022-09-22 17:43:55 +02:00
Alessandro Di Federico d1bc0405dc LinkForTranslation: add .note.GNU-stack
In LinkForTranslation we create an object file for each segment in the
input binary. In order to do this, we use `objcopy`. However, an object
file without a `.note.GNU-stack` section will trigger the linked program
to have the stack executable, which we don't want.

This led the linker to complain as follows:

    ld.bfd: warning: object.o: missing .note.GNU-stack section implies
    executable stack
    ld.bfd: NOTE: This behaviour is deprecated and will be removed in a
    future version of the linker

This commit adds to the `objcopy` invocation a flag to create the
`.note.GNU-stack` section.
2022-09-21 18:39:25 +02:00
Djordje Todorovic 5559d8431b Introduce fix-model model pass 2022-09-21 18:37:36 +02:00
Alvise de Faveri 999df25246 Add revng model export type-graph tool
This tools dumps a type, a function or an entire type-system to a
dot file,representing dependencies between types as edges.
2022-09-19 08:35:06 +02:00
Pietro Fezzardi 12ab345848 SubGraph: make getEntryNode more const-correct
GraphTraits<SubGraph<InnerNodeType>>::getEntryNode now takes a const
GraphType &, not just a GraphType &.
2022-09-19 08:33:45 +02:00