Alessandro Di Federico
47c3dd8f0f
Drop model::Segment::Sections
2024-05-22 10:25:25 +02:00
Alessandro Di Federico
31b1b66f44
Reorder model::Binary fields
2024-05-22 10:25:25 +02:00
Alessandro Di Federico
c061f1f971
Make Pipe::checkPrecondition mandatory
2024-05-22 10:25:25 +02:00
Alessandro Di Federico
bf6cefc05a
Externalize functions to improve build times
2024-05-03 21:52:40 +02:00
Alessandro Di Federico
fe1dffcffd
Add some missing includes
...
This is in preparation of reducing headers in Debug.h.
2024-05-03 21:52:40 +02:00
Alessandro Di Federico
25c7834b21
Introduce test_adt
...
This should reduce build times.
2024-05-03 21:52:40 +02:00
Alessandro Di Federico
8eca2e13fe
Do not use SmallPtrSet with std::includes
2024-05-03 17:59:34 +02:00
Alessandro Di Federico
452036edf1
Purge instructions to save return address
2024-04-30 15:25:53 +02:00
Alessandro Di Federico
0459b9d084
Introduce RegisterUsageAnalyses
2024-04-19 18:33:00 +02:00
Alessandro Di Federico
ba65443293
DetectABI call graph: no multiple identical edges
2024-04-18 17:55:22 +02:00
Alessandro Di Federico
0b4476d824
Introduce FunctionSummary::clone
2024-04-18 17:55:15 +02:00
Alessandro Di Federico
ab3d546b0a
Introduce GenericGraph::dumpGraph()
2024-04-18 17:50:33 +02:00
Alessandro Di Federico
dcfb4621a7
Improve GenericGraph::verify
2024-04-18 17:50:33 +02:00
Alessandro Di Federico
3b135a2a2f
MFP: use the provided GraphTraits for RPOT
2024-04-18 17:50:32 +02:00
Alessandro Di Federico
d36d0184d3
SerializableGraph: fix template usage
2024-04-18 17:50:32 +02:00
Alessandro Di Federico
a1b0ba752c
GenericGraph: implement Edge::operator==
...
This fixes a subtle bug in GenericGraph. Basically, if the label of an
Edge was the Empty data structure, whose `operator==` always returns
`true`, the comparison between edges was broken.
2024-04-18 17:50:32 +02:00
Alessandro Di Federico
dae9f33544
Minor changes
2024-04-18 17:50:31 +02:00
Pietro Fezzardi
df3bd470a1
Enforce determinism on CSV handling
...
Various parts of revng replace `llvm::GlobalVariable`s representing CSVs
with Allocal/Load/Store. In particular, these are PromoteCSV,
RootAnalyzer and PromoteGlobalToLocalVars.
Before this commit, those places were sloppy when replacing CSVs with
Alloca/Load/Store, and did that iterating on a container sorted by
pointers. This caused Alloca/Load/Store to be emitted in different order
accross runs, which in turn caused more non-determinism down the
pipeline.
This commit fixes the non-deterministic behavior, sorting CSVs based on
their names, which should always be present and deterministic.
2024-03-19 09:43:59 +01:00
Pietro Fezzardi
1baec8ff7b
Drop old MonotoneFramework
2024-03-19 09:43:59 +01:00
Pietro Fezzardi
2cd7777030
MFP: add SetIntersectionLattice
2024-03-19 09:43:59 +01:00
Ivan Krysak
64eb2adb7c
Minor improvements
2024-03-18 19:32:34 +01:00
Ivan Krysak
6b7650276e
EFA: split importModel into multiple methods
2024-03-18 19:32:34 +01:00
Ivan Krysak
024e5b931c
STLExtras: introduce revng::to helper
2024-03-18 19:32:34 +01:00
Ivan Krysak
dc16217f6d
Layout: introduce usedRegisters helper
2024-03-18 19:32:34 +01:00
Ivan Krysak
816b49c09f
TrackingContainer: introduce asVector helper
2024-03-18 19:32:34 +01:00
Ivan Krysak
408c37caf2
Layout: introduce finalStackOffset helper
2024-03-18 19:32:34 +01:00
Ivan Krysak
54fd2295ac
Layout: introduce calleeSavedRegisters helper
2024-03-18 19:32:34 +01:00
Ivan Krysak
58e5fffb14
Layout: rework dump
2024-03-18 19:32:34 +01:00
Ivan Krysak
116510cd13
Layout: clean ArgumentKind enum up
2024-03-18 19:32:34 +01:00
Ivan Krysak
ff59c24a3f
Yield: set CommentFontSize to 0
...
Since VSCode does not display instruction comments, accounting for
them was interfering with the graph rendering.
2024-03-18 11:40:32 +00:00
Ivan Krysak
44e5328477
Yield: add explicit directive support
2024-03-18 11:40:32 +00:00
Ivan Krysak
ff436f36bf
SortedVector: add an iterator constructor
2024-03-18 11:02:21 +00:00
Ivan Krysak
77fb7e6e5b
Yield: introduce BasicBlockPrefix option
2024-03-18 10:58:55 +00:00
Ivan Krysak
e5328290c6
Yield: reorder disassembly processing
...
This commit moves stuff around to enforce complete information being
present by the time the "Internal" assembly output is ready.
Because of that, the "Internal" format needed to change, now it uses
tag representation close to PTML as opposed to the one close to LLVM's
used before now.
2024-03-18 10:58:52 +00:00
Ivan Krysak
948d905752
Add PrintFullMetaAddress configuration option
2024-03-18 11:58:11 +01:00
Ivan Krysak
4d7785f0bb
Yield: remove unused 'plain' assembly style
...
When needed similar results can be achieved using `GenerateTagLessPTML`
option of the `PTMLBuilder`.
2024-03-18 11:58:11 +01:00
Ivan Krysak
e2018fa1c3
MetaAddress: add partial serialization option
2024-03-18 11:58:11 +01:00
Ivan Krysak
86fdb19b9f
MetaAddress: pull separator into the header
2024-03-18 11:58:11 +01:00
Ivan Krysak
2bffccaaf6
Move ImmediateStyle configuration to the model
2024-03-18 11:58:11 +01:00
Ivan Krysak
184aa03847
Move AddressStyle configuration to the model
2024-03-18 11:58:11 +01:00
Ivan Krysak
2827c9d7f7
Move UseATTSyntax configuration to the model
2024-03-18 11:58:11 +01:00
Ivan Krysak
d781f3ae79
Yield: make disassembler config-aware
2024-03-18 07:20:41 +00:00
Ivan Krysak
371784afbd
Model: introduce basic disassembly configuration
2024-03-18 07:20:41 +00:00
Ivan Krysak
a150b49c70
Support: remove unused dumper
2024-03-18 07:20:41 +00:00
Alessandro Di Federico
e93d8ba09f
RawBinaryView:getByOffset: fix of by =
2024-03-15 17:13:20 +01:00
Alessandro Di Federico
0da9d1e1a4
Model: fix handling of 0-sized arguments
...
We used to support having a single `void` argument. It was for some
C-compatibility ambitions, but just omitting the argument is perfectly
fine.
Also, the DWARF importer has been fixed to handle typedef'd void as
arguments.
More in general, arguments are now required to always have a size.
2024-03-01 14:53:06 +01:00
Ivan Krysak
e708a3655b
ABI: drop incomplete clrcall support
2024-02-09 15:09:37 +00:00
Ivan Krysak
b1ed3aa959
AccessTracker: make an assertion more obvious
...
It's pretty confusing for a nullptr access to fail on the same line as
an existing assert, which is why it's better to move them to separate
lines.
2024-02-09 15:09:37 +00:00
Ivan Krysak
e62d4f79ef
ABI: remove an obsolete definition parameter
...
Since pointer to copy system got straightenned up, the old way of
marking them (`abi::Definition::UsePointerToCopyForStackArguments`)
is no longer needed.
2024-02-09 15:09:37 +00:00
Ivan Krysak
27491410d6
ABI: introduce a way to disable vector registers
2024-02-09 15:09:37 +00:00