Commit Graph

82 Commits

Author SHA1 Message Date
Alessandro Di Federico b91c0f88c6 tmp 2025-09-10 17:59:45 +02:00
Alessandro Di Federico b532b0674a tmp 2025-09-10 13:57:46 +02:00
Tommaso Fontana d0dad4a4cb Apply revng check-conventions --force-format 2025-09-10 13:57:46 +02:00
Tommaso Fontana 680f5cacf2 Apply revng check-conventions --force-format 2025-09-10 12:05:14 +02:00
Giacomo Vercesi 62421eeaa2 fetch debuginfo: switch default servers
Switch the default servers used by `fetch debuginfo` to revng-managed
ones, as especially the elfutils.org once has been spotty in the past.
2025-08-08 17:52:57 +02:00
Giacomo Vercesi 78e66e0d08 cli: move model import idb in separate dir
Move the two python scripts that compose the `revng model import idb`
command into a separate subdirectory.
2025-07-18 09:30:56 +02:00
Giacomo Vercesi 38b50c2977 tupletree: fix Reference class
Fix the `Reference` class, make it work with the new model and allow it
to be dereferences via the `_accessor` attribute.
2025-07-18 09:30:55 +02:00
Ivan Krysak 452612eaea import-idb: fix misuse of PrimitiveType object 2025-06-27 17:42:27 +03:00
Giacomo Vercesi d62b7b6b1a TTG: inline root type in schema
Move the root type inside the schema definition, as it is a property of
it and not of the generator.
2025-06-25 15:40:13 +02:00
Giacomo Vercesi 087192cac4 mass-testing: add max_rss to database
Add the `max_rss` column to the database generated by the `revng
mass-testing generate-report` command.
2025-06-04 13:30:42 +02:00
Giacomo Vercesi deeae6d904 mass-testing run: auto-detect max-jobs
With the information propagated by `meta.yml`, compute the maximum
number of jobs based on the max memory limit.
2025-06-04 13:30:42 +02:00
Giacomo Vercesi f63cd5ff6f mass-testing configure: add env to sample
Add an environment variable to the `revng mass-testing configure`
command that allows sampling the inputs to a limited amount.
2025-06-04 13:30:42 +02:00
Giacomo Vercesi 6e59f45c89 mass-testing configure: add env for seed
Add an environment variable that allows setting the seed of the RNG for
`revng mass-testing configure`. Drop the `--seed` command line option.
2025-06-04 13:30:42 +02:00
Giacomo Vercesi 14f951effe mass-testing configure: change input format
Change the input format accepted by the `revng mass-testing configure`
command. This allows knowing in `meta.yml` the limits (ram, time)
imposed on each test set.
2025-06-04 13:30:41 +02:00
Giacomo Vercesi 8b9aad7292 mass-testing generate-report: fix exception
Fix an exception that happened when generating the report. In some cases
the `stacktrace.json` file has a line like this:
```
{"Address":"0x7f7","Error":{"Message":"No such file or directory"},"ModuleName":"linux-vdso.so.1"}
```
This is a valid line that maps to `(linux-vdso.so.1+0x7f7)`, however
this was not properly handled in the code. This commits fixes it so that
a dummy line is added and the line is skipped.
2025-06-04 13:30:41 +02:00
Ivan Krysak f3cce00c3f Migrations: fix the template 2025-05-08 15:42:01 +02:00
Giacomo Vercesi 890a735610 test_docs: add ignoreoutput option for python
Sometimes the output of a command is not important, in these cases
`doctest` complains nonetheless. This commit introduces a
`IGNORE_OUTPUT` option which still allows checking that the command
executes correctly but skips the checking of the output with the
expected one. In addition to this the `test_docs` command now can parse
a `ignoreoutput` option in the python block which will:
* if numbers are specified (e.g. `ignoreoutput=1,2`): the specified
  line numbers will have `# doctest: +IGNORE_OUTPUT` added at the end
  of the specified line numbers.
* Without numbers (e.g. `{python ignoreoutput}`) then all lines will
  have a `# doctest: +IGNORE_OUTPUT` appended.
2025-05-07 10:48:54 +02:00
Giacomo Vercesi 0f6b6e00bd Add revng init
Add a new `revng` command that allows to initialize a resume directory.
2025-05-07 10:48:49 +02:00
Jurij Srebrnič 3bc63b833e Fixed python and typescript doc-test not executing 2025-05-07 10:48:23 +02:00
Giacomo Vercesi e95ad01ff8 Implement revng llm-rename 2025-05-05 17:28:48 +02:00
Giacomo Vercesi 591107cdce Overhaul PTML functionality
The logic of the `revng ptml` command was too tightly coupled with the
parsing of the xml. Overhaul the structure of the ptml code and split it
in two locations:
* `revng.ptml`: this module contains functions that allow easy
  manipulation of PTML, both for printing it and for obtaining the split
  metadata/text version.
* `revng.internal.cli._commands.ptml`: this implements the actual `revng
  ptml` command. This leverages the new logic in the `revng.ptml` module
  while maintaining the same functionality.
2025-05-05 17:28:48 +02:00
Giacomo Vercesi bfed42ed1e Add revng.support.get_llvmcpy helper
Add the `get_llvmcpy` helper function which returns an instance of
`LLVMCPy` which uses the `llvm-config` that's present in the search
paths.
2025-05-05 16:02:40 +02:00
Giacomo Vercesi 6fc6d38228 Remove argparse.FileType
Python 3.14 will deprecate `argparse.FileType` [1]. This is due to a
variety of factors, one of which is that the class leaks file
descriptors when used. Remove all usages in the codebase and instead
use a wrapper function for `open`.

[1] https://docs.python.org/3.14/library/argparse.html#argparse.FileType
2025-05-05 16:02:40 +02:00
Giacomo Vercesi 57c4f89dd3 python: remove relative imports
Remove all the relative imports from the python code that are not
relative to the current module (e.g. `from .<X> import ...`).
2025-05-05 16:02:40 +02:00
Khaled Ismaeel 8b355fc896 Add primitive support for generating migrations 2025-04-30 15:08:45 +02:00
Khaled Ismaeel 9b07b3bcce Add primitive migration support to the CLI 2025-04-30 15:08:45 +02:00
Giacomo Vercesi 6509cad084 test_docs: remove useless global
The `verbose` was is not modified in the `log` function, so the use of
`global` is useless.
2025-04-24 13:22:14 +02:00
Ivan Krysak ae3f19664a ModelPasses: introduce fix-model 2025-04-17 11:19:17 +03:00
Ivan Krysak 0c99d5d5fb IDBImporter: omit unnecessary typedefs 2025-04-17 11:19:17 +03:00
Ivan Krysak 2eed7f2410 IDBImporter: fix an incorrect type check 2025-04-17 11:19:17 +03:00
Ivan Krysak c4f071dfe3 Importers: adopt primitive typedef flattening 2025-04-17 11:19:17 +03:00
Ivan Krysak 433af9ef6e Adopt the new name deduplication pass 2025-04-17 11:19:17 +03:00
Ivan Krysak f070f1f1e1 Model: sunset double name system 2025-04-17 11:19:17 +03:00
Giacomo Vercesi d9e928dce9 fetch debuginfo: provide alternative urls via env
Allow the `fetch debuginfo` command to have the upstream server urls be
provided via environment variables rather than the command-line.
2025-03-13 18:03:50 +01:00
Giacomo Vercesi f6b9e509a3 fetch debuginfo: actually check for PE/COFF
Add the code needed to check if the input file is actually a PE/COFF
file.
2025-03-13 18:03:50 +01:00
Giacomo Vercesi fa44c4cf2f fetch debuginfo: drop self.verbose
The `FetchDebugInfoCommand` contained assignment to `self.verbose` which
was unused. Drop it.
2025-03-13 18:03:50 +01:00
Giacomo Vercesi 74cbb83d10 fetch-debuginfo: add retries
Add retries when fetching debugging symbols via the `revng model
fetch-debuginfo` command. Retries only apply when the status code
returned by the server is within the expected ones.
2025-02-24 18:17:47 +01:00
Giacomo Vercesi 878356bd57 revng ptml: drop c.comparison PTML token
The `c.comparison` token was dropped by commit
0812989cb0, drop it also in the color
conversion table of `revng ptml`.
2024-12-20 12:24:28 +01:00
Alessandro Di Federico 620d142d53 Reroganize and expand documentation 2024-12-11 16:15:37 +01:00
Alessandro Di Federico 0c7c20ad48 Introduce model, artifacts and analyses references 2024-12-11 16:15:27 +01:00
Alessandro Di Federico 5b7703aff3 Minor changes 2024-12-11 16:15:09 +01:00
Giacomo Vercesi 70217f00c9 revng opt: drop unwrapping of zstd modules
Drop support of uncompressing zstd-compressed modules in `revng opt` as
this functionality has been moved within `llvm`.

(This is a revert of commit dd8d158e47)
2024-11-26 11:30:19 +01:00
Giacomo Vercesi 046be11be2 revng graphql: gracefully terminate daemon
When stopping an internal daemon, first try to use SIGINT and then
resort to SIGKILL. This is to avoid the signal handler exiting with a
non-zero return code during shutdown.
2024-11-25 17:52:27 +01:00
Giacomo Vercesi 9ee719f2c2 ptml/common: fix missing kwargs
Add the missing `kwargs` to the invocation of the wrapped `func` in
`suppress_brokenpipe`.
2024-11-22 16:05:16 +01:00
Giacomo Vercesi 38cd15d755 fetch_debuginfo: fix race condition
Fix a possible race condition that could arise if multiple instances of
`fetch-debuginfo` are run in parallel. This avoids the same file being
written by multiple processes and being moved early. This avoids a
`FileNotFoundError` and possibly data corruption due to the concurrent
situation.
2024-11-13 09:28:12 +01:00
Alessandro Di Federico efcea8ae48 importBinary: fix error handling 2024-11-12 18:05:48 +01:00
Alessandro Di Federico ba186a130c s/module.ll/module.bc.zstd/g 2024-11-12 14:58:00 +01:00
Giacomo Vercesi f0a5a48c8e mass-testing: generate crash graphs for OOMs
Add graph/crash statistics generation for the OOM category as well.
2024-10-31 08:58:59 +01:00
Giacomo Vercesi 023b470473 mass-testing: implement cmd/env overrides
Implement override mechanisms via command-line and/or env for the
following aspects:
* The maximum memory set by `test-harness`
* The timeout handled by `test-harness`
* The number of concurrent jobs to spawn while running `revng mass-testing run`
2024-10-31 08:58:59 +01:00
Giacomo Vercesi 208e18cedb revng.internal.cli: unify temporary_file
Unify the logic responsible for the `temporary_file` function, since its
body was duplicated three times over the codebase.
2024-10-31 08:58:59 +01:00