Alessandro Di Federico
98f5304c54
InlineHelpers: do not inline recursive functions
...
Also, turn it into a ModulePass.
2023-12-12 12:04:33 +01:00
Alessandro Di Federico
0e7d3a9a71
Pass PlainMetaAddress by pointer
2023-12-12 10:20:51 +01:00
Alessandro Di Federico
e63feda848
Outliner::getCallSiteInfo: drop unused argument
2023-12-12 10:05:30 +01:00
Alessandro Di Federico
28a0fa5b7d
DetectABI: run to fixed point and more
...
This commit switches the approach with which we run the ABI analyses: we
now run them until we reach a fixed point. This enables proper
interprocedural propagation of arguments and return values.
Basically, we now inject reads before call sites, so that, if a function
immediately calls another one, the arguments of the callee are
propagated to the caller.
This commit also updates the logic with which we propagate function
prototypes (and names) to callers. The main advantage of this, is that
function wrappers (in particular, PLT entries) now have the same name as
the function they wrap.
2023-12-12 10:05:22 +01:00
Alessandro Di Federico
d8e41028b7
RegisterClobberer -> OpaqueRegisterUser
...
Extend RegisterClobberer to support also performing opaque reads.
Also, record all the generated instructions for easy purging.
2023-12-11 16:29:13 +01:00
Alessandro Di Federico
02458724b0
Drop CallSummarizer::RegistersClobberedPool
2023-12-11 16:29:13 +01:00
Giacomo Vercesi
8504a96020
RawFunctionType: use NamedTypedRegister for return
...
Use the `NamedTypedRegister` type for return values in
`RawFunctionType`. This allows return values to be renamed at the user's
discretion.
2023-12-11 12:03:45 +01:00
Alessandro Di Federico
10dcb7be11
Fix semantics of model::Types purging passes
...
One of the two passes to purge unused types from the model had a
ill-defined semantics.
This commit simplifies them in two passes: one that purges all the types
unreachable from outside `Binary::Types` and one that does the same but
also preserves types with a `CustomName` or an `OriginalName`.
2023-12-05 16:19:39 +01:00
Pietro Fezzardi
bbcb4df839
TypeSystemPrinter: print segment types
2023-12-05 16:19:39 +01:00
Pietro Fezzardi
1285c6e7af
Make RawFunctionType::StackArgumentsType a TTR
...
This is homogeneous with all other nullable references to types in the
model, such as the StackFrameType in model::Function, and others.
2023-12-05 16:19:38 +01:00
Pietro Fezzardi
48b27af795
Make Segment::Type a TupleTreeReference
...
This is homogeneous with all other nullable reference to types in the
model, like the StackFrameType in model::Function, and others.
2023-12-05 16:19:38 +01:00
Giacomo Vercesi
da144f1fee
revng trace run: allow providing resume directory
...
Allow the `revng trace run` to provide a resume directory from the
command line to use when creating the first manager.
2023-11-03 18:29:10 +01:00
Giacomo Vercesi
6d03b5874e
InitRevng: HideUnrelatedOptions only when provided
...
Avoid calling `HideUnrelatedOptions` in InitRevng if the
`CategoriesToHide` option is empty.
2023-11-03 18:29:10 +01:00
Giacomo Vercesi
94efdc142a
Drop model::editPath helpers
...
With the introduction of `data-action-context-location` the helpers in
the `model::editPath` namespace are no longer needed.
2023-11-03 16:31:02 +01:00
Giacomo Vercesi
db1691b03f
Adopt new PTML tags
...
Change the emitted disassembly to include the
`data-action-context-location` and `data-name-of` tags.
2023-11-03 16:30:40 +01:00
Giacomo Vercesi
94aa2b51d2
Add Context Global Index
2023-11-03 12:13:58 +01:00
Giacomo Vercesi
04698bb550
Return invalidations when deserializing container
...
When deserializing a container in the pipeline, return the invalidations
that have been caused by the container changing content.
2023-11-03 12:13:58 +01:00
Giacomo Vercesi
56af9c1f9d
Propagate errors from Analysis/Pipes to daemon
...
Leverage the `rp_error` mechanism to propagate errors from analyses and
pipes to the GraphQL schema.
2023-11-03 12:13:58 +01:00
Giacomo Vercesi
3b0d708a2f
Drop custom globals mutator from PipelineC
...
Remove globals mutator from PipelineC api, as there are analyses present
that allow changing them.
2023-11-03 12:13:58 +01:00
Giacomo Vercesi
4f94988a4d
Add Globals Analyses
...
Add analyses that allow the modification of globals via the analysis
mechanism of Pipeline.
2023-11-03 12:13:58 +01:00
Giacomo Vercesi
37adeb7eeb
Pipeline options: introduce -path options
...
In the case of string options, the pipeline will also create a `-path`
option, which makes the option contents from reading the specified file.
2023-11-03 12:13:58 +01:00
Giacomo Vercesi
acd498bf25
Pipeline options: restrict to int and strings
...
Restrict the type of pipeline options to integers and strings. Rework
the CLOpt mechanism to avoid parsing the string twice.
2023-11-03 12:13:57 +01:00
Giacomo Vercesi
fec3d1d92e
StorageClient.h: remove mention of dummy client
2023-11-03 12:13:57 +01:00
Giacomo Vercesi
94eb1a1d43
Prototypes.h: drop old LENGTH_HINTS
...
Remove `LENGTH_HINTS` that are no longer applicable to the API exposed
by PipelineC.
2023-11-03 12:13:57 +01:00
Giacomo Vercesi
ca0a6f82eb
Global.h: remove dead code
...
Remove the `HasVerify` concept as it is a leftover that's currently
unused.
2023-11-03 12:13:57 +01:00
Giacomo Vercesi
6f4fa9853a
Assert.h: drop dead code
...
The `AbortHook` functionality has been dropped since `7fda1ef4`, but the
header declarations were not removed.
2023-11-03 12:13:57 +01:00
Ivan Krysak
65fa67df84
YAMLTraits: specialize for std::byte
2023-11-02 17:10:04 +01:00
Ivan Krysak
775852c6c9
ABI: fix a problem with return value location
...
If the location was not also used a normal argument, it would get lost
when sorting argument registers.
2023-11-02 17:10:04 +01:00
Ivan Krysak
dbc99ff587
ABI: improve a register sorting error message
2023-11-02 17:10:03 +01:00
Ivan Krysak
cfe28d8e56
Stop using std:: prefix for u?int\d+_t types
2023-11-02 17:10:03 +01:00
Giacomo Vercesi
0cb3e497a4
Fix typos
2023-11-02 16:48:33 +01:00
Andrea Gussoni
d2db8d4cfa
ControlFlowEdgesGraph: improve at method
...
Improve the `at` method by giving it a coherent semantics with a
standard `at` map method semantics.
2023-10-09 10:33:48 +02:00
Andrea Gussoni
e2090b8746
GraphAlgorithms: nodesBetween double DFS
...
We now implement the `nodesBetween` primitive with a double DFS visit.
Specifically, we have:
1) A forward DFS that starts from the `Source`, and stops at `Target`.
2) A backward DFS that starts from the `Target`, and stops at `Source`.
The final result is then the intersection of the nodes found by the two
above DFS visits.
A new `findReachableNodes` primitive is also added to perform a DFS from
a `Source` node, which stops at the `Stop` parameter node, if present.
Added unit tests to improve the coverage.
2023-10-09 10:33:48 +02:00
Alessandro Di Federico
d8147aa62e
Introduce TupleTreeReference::dump
2023-10-05 10:19:44 +02:00
Alessandro Di Federico
c6425b2618
TupleTree::verify: more fine grained assertions
2023-10-05 10:19:44 +02:00
Alessandro Di Federico
2cbf3a8313
TypeCopier: minor rework
2023-10-05 10:19:44 +02:00
Alessandro Di Federico
456b916bcc
Move TypePath definition
2023-10-05 10:19:44 +02:00
Alessandro Di Federico
bf66ecc389
{,Dynamic}Function::Prototype: support typedefs
2023-10-05 10:19:44 +02:00
Giacomo Vercesi
e2504dd6f2
Implement storage credentials update
...
Add the functionality to rev.ng's infrastructure to allow to dynamically
update the credentials of the underlying storage provider at runtime.
2023-09-14 17:32:08 +02:00
Giacomo Vercesi
0c5bc8c120
Drop unused functions from PipelineC
...
Remove all the functions that are no longer needed by `revng.api`.
2023-09-14 15:44:33 +02:00
Giacomo Vercesi
f710af9f2f
Cleanup revng.daemon graphql API
...
Drop autogenerated queries from the GraphQL API and switch `revng.api`
to use `PipelineDescriptor`.
2023-09-14 15:44:33 +02:00
Giacomo Vercesi
2a239ddf47
Introduce PipelineDescription
...
Add the PipelineDescription object that describes the structure of a
pipeline. This will be used by all the downstream users instead of
pipeline accessor methods via PipelineC.
2023-09-14 15:44:33 +02:00
Giacomo Vercesi
6b6bfd2693
pipeline::Option: fix TypeName
...
Fix the `getTypeName` function needed to report the type of an Analysis'
option.
2023-09-14 15:44:32 +02:00
Giacomo Vercesi
29b229455f
Tuple Tree: rename Parent in struct.h.tpl
...
Rename the Parent attribute of a struct to BaseClass to avoid conflicts
with Tuple Tree structs that might need that attribute.
2023-09-14 15:44:32 +02:00
Giacomo Vercesi
d2967d2a49
Tuple Tree Generator: remove Model headers
...
This commit removes the inclusion of the `Binary.h` header in
Tuple-Tree Generator files, allowing Model-independent Tuple Trees to be
generated.
2023-09-14 15:44:32 +02:00
Giacomo Vercesi
dab9369942
ContainerFactory: expose mime type
...
Allow retrieving the mimetype of a container without having to
materialize it in the pipeline.
2023-09-14 15:44:32 +02:00
Alessandro Di Federico
26310efc1c
TypeCopier::copyTypeInto: fix returning wrong type
...
TypeCopier::copyTypeInto used to return a random type among those just
created instead of the new version of the originally requested type.
2023-09-11 14:15:37 +02:00
Giacomo Vercesi
0b2754c824
pipeline: drop Disk from storage methods
...
This commit changes the following method names across the codebase:
* `storeToDisk` -> `store`
* `loadFromDisk` -> `load`
This has been done since the storage is no longer bound to the local
storage.
2023-09-06 15:23:43 +02:00
Giacomo Vercesi
ca82e47f79
FunctionStringMap: switch to using GzipTarFile
...
Change the serialization and deserialzation functions of
`FunctionStringMap` to use the GzipTarFile. Also change che filename
of the underlying containers accordingly.
2023-09-06 15:23:43 +02:00
Giacomo Vercesi
4a2cd259e3
Introduce GzipTarFile
...
Add the GzipTarFileWriter and GzipTarReader classes that allow reading a
slightly custom `.tar.gz`.
2023-09-06 15:23:43 +02:00