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
Giacomo Vercesi
93d3a6238d
revng: introduce S3 support
...
Add the capability for all revng tooling to run with an S3-backed
workdir.
2023-09-06 15:23:43 +02:00
Giacomo Vercesi
a84ebd0e51
revng.daemon: trim Eventmanager's functionality
...
Drop most of the functionality provided by EventManager. Add the
functionality that allows saving the working directory after a period of
inactivity.
2023-09-06 15:23:43 +02:00
Giacomo Vercesi
7f0bea6f6a
Improve TemporaryFile
...
This commit adds the following enhancements to `TemporaryFile`:
* Adds TemporaryFile::make to allow catching the error if the temporary
file creation fails
* Fix the move assignment, as it would leak the original file until shutdown
* Fix the destructor, as it would be called even on a moved object
2023-09-06 15:23:43 +02:00
Giacomo Vercesi
dc90bca33e
revng/Support: split part of Statistics in OnQuit
...
Split the OnQuit functionality of Statistics as a separate header and
object file. Rework the interface to use lambdas instead of the
OnQuitInterface.
2023-09-06 15:23:43 +02:00
Pietro Fezzardi
6addadcda7
DynamicHierarchy.h: drop unused include
2023-09-05 15:53:43 +02:00
Giacomo Vercesi
e719b3b7e5
Add components to revng cli driver
...
This commit introduces the concept of `Component` to a pipeline step.
This, in turn, can be used by clients to figure out which artifacts are
produced by which revng component.
Additionally, this commit overhauls the `revng daemon-self-test`
command, renaming it to `revng graphql` and adding extra flexibility.
2023-08-23 17:45:36 +02:00