Giacomo Vercesi
59175e9925
daemon-self-test: do not fail() twice
...
There was a codepath in `revng-check-conventions` that would cause
`fail(e)` to be called twice. This would cause an exception on the
second invocation due to the undelying process being already terminated.
2023-04-20 14:43:11 +02:00
Giacomo Vercesi
87543f835a
revng.cli._commands: drop shebangs
...
Remove leftover shebangs from python files in `revng.cli._commands` as
those files are no longer executable on their own
2023-04-20 14:43:11 +02:00
Alessandro Di Federico
416c59c43b
support.py: rework get_command
...
We introduce two paths where we can hard code search prefixes
(`/additional-search-prefixes`) and additional binaries paths
(`/share/revng/additional-bin-paths`).
This enables us to add to `additional-bin-paths` the configure-time
specified path of the preferred LLVM installation, instead of relying on
`PATH` to look up, e.g., `opt` at run-time.
2023-04-13 18:11:48 +02:00
Alessandro Di Federico
1fa34fff9e
revng opt: force legacy pass manager
2023-04-08 08:42:24 +02:00
Alessandro Di Federico
79bbd8b260
commands_registry.py: drop dict comprehension
2023-04-08 08:42:23 +02:00
Kacper Kołodziej
d281d1fa05
Add --binary argument to llvm_pipeline.py
2023-04-04 09:30:08 +02:00
Giacomo Vercesi
2e96e09f63
Drop analyze-all
...
Drop all the uses of analyzeAll and swap its use with the invocation of
the appropriate analysesList
2023-03-22 17:50:02 +01:00
Ivan Krysak
3687869795
Model: make AddPrimitiveTypes a pure analysis
2023-03-15 10:19:01 +01:00
Giacomo Vercesi
7751143aad
revng daemon: add timeout-keep-alive option
...
Add the `--timeout-keep-alive` option for all invocations of `revng
daemon`. This avoids some edge cases where connections are abruply
closed.
2023-03-14 20:50:28 +01:00
Giacomo Vercesi
23b8ed8dbe
revng.daemon: allow extra middlewares
...
Introduce the environment variable `STARLETTE_MIDDLEWARES` that
allows adding additional middlewares at startup to the startlette
server.
2023-02-07 16:54:35 +01:00
Giacomo Vercesi
aa344d4122
revng daemon: add -b none
...
Add the `-b none` option to `revng daemon` that allows disabling any
automatic bind
2023-02-07 16:54:35 +01:00
Djordje Todorovic
22ba1800c5
idb: fix generation of empty structs and unions
...
There was a log message that we are creating typedef void* for empty
structs, but we have missed that piece of code. This patch adds that
logic.
In the case of unions, we completely ignored empty ones, and also
there was not handling if the type was generated by ordinal (as
in the case of structs). This patch also fixes it.
2023-01-27 17:49:11 +01:00
Alessandro Di Federico
7913bf9e58
Disable LeakSanitizer
2023-01-21 16:46:35 +01:00
Alessandro Di Federico
47fd084c88
revng --verbose: shorten paths only if beneficial
2023-01-21 16:46:35 +01:00
Djordje Todorovic
0d6ffa7504
Introduce revng fetch-debuginfo
2022-12-13 11:25:36 +01:00
Antonio Frighetto
b2d24875e6
override-by-name.py: compare to bytes
2022-11-30 15:06:54 +01:00
Alessandro Di Federico
838d9a5992
revng model override-by-name: fix args doc
2022-11-30 15:06:54 +01:00
Massimo Fioravanti
044071435e
Fix handling of binaries with no functions
...
Fix various edge cases when a binary with no functions was analyzed.
2022-11-22 16:19:28 +01:00
Giacomo Vercesi
48cd3aad42
revng.cli: init commands_registry once
...
Only init commands_registry once, this is to avoid commands being
re-registered and allow quicker execution of nested commands.
2022-11-02 11:50:40 +01:00
Giacomo Vercesi
4af389c703
daemon-self-test: fix daemon output
...
Fix the `fail` function, to properly capture the output of the daemon
process in case of failure.
2022-11-02 11:50:40 +01:00
Giacomo Vercesi
a6a7a09606
daemon-self-test: fix dumping of daemon output
...
Fix the `fail` function, to properly capture the output of the daemon
process in case of failure.
2022-10-30 09:12:33 +01:00
Giacomo Vercesi
e4adbe8134
revng.support: add get_root
...
Add the get_root function which will return the absolute path of the
root, relatively to the file location in support
2022-10-24 09:58:55 +02:00
Alessandro Di Federico
5a99154196
Put Python packages into lib/python*/site-packages
2022-10-11 19:08:10 +02:00
Giacomo Vercesi
ff48b9de75
Introduce revng daemon-self-test
...
This new command will, given an executable, try to produce all
artifacts. By default it will run `revng daemon`, however an external
address can be provided to test remote daemons, e.g. running inside a
container.
2022-10-06 15:12:36 +02:00
Giacomo Vercesi
a935cc3073
revng daemon: switch from hypercorn to uvicorn
...
Hypercorn is experiencing weird behaviour when running tests and
receiving SIGPIPEs when a couple of F5s are issued from the browser.
The switch to uvicorn fixed these issues.
2022-10-04 14:13:55 +02:00
Giacomo Vercesi
df68b2c7c0
revng ptml: merge cat and strip
...
Merge the cat and strip subcommands within `revng ptml`
Refactor codebase so that both color and plaintext output are handled
in a unified manner.
2022-09-29 15:43:17 +02:00
Giacomo Vercesi
bf4122ed0a
Introduce v2 of revng-check-conventions
2022-09-29 15:21:59 +02:00
Alessandro Di Federico
f6d5cd24dd
Give pretty names to temporary files
2022-09-26 18:09:01 +02:00
Alessandro Di Federico
011c65d8ab
merge-dynamic: drop a default argument
2022-09-22 17:43:55 +02:00
Djordje Todorovic
753a50895c
Introduce revng model import-idb
2022-09-21 18:39:10 +02:00
Giacomo Vercesi
67e970e1e8
Fix revng cli invocation with namespaces
...
When revng cli was invoked with a bare namespace, e.g. `revng ptml`
it would produce an ugly exception.
Fix this behavior by instead rerunning the command with `--help`
appended.
2022-09-02 03:49:56 +02:00
Giacomo Vercesi
07c2457a16
revng.cli: various improvements
...
This commit introduces some miscellaneous fixes to revng.cli:
* Remove useless subclasses in pipeline_tools.py;
* Improve type annotations in _commands/ptml and fix a help string;
* Add some extra type annotations for `Command`;
* Remove useless namespaces in `commands_registry` and add help text
for the ones in use;
2022-09-01 17:45:44 +02:00
Giacomo Vercesi
bbbcbd080a
revng ptml cat: add C highlighting
2022-09-01 15:49:44 +02:00
Alessandro Di Federico
b14b40b1eb
revng: do not print failing command
2022-08-31 18:07:47 +02:00
Alessandro Di Federico
178b58b9d5
ImportBinary: turn into an analysis
2022-08-26 09:50:42 +02:00
Alessandro Di Federico
38d91a793b
AddPrimitiveTypes: turn into an analysis
2022-08-26 09:50:42 +02:00
Massimo Fioravanti
42b623db06
Pipeline: rework CLI organization
2022-08-10 09:49:24 +02:00
Massimo Fioravanti
261a114d6d
Pipeline: corner-case fix in backward deduction
2022-08-10 09:49:24 +02:00
Massimo Fioravanti
0bb115a4f3
revng-pipeline: rework syntax for targets
...
Was: step:container:p/a/t/h:kind
Now: step/container/p/a/t/h:kind
2022-08-10 09:49:24 +02:00
Massimo Fioravanti
4cd5abe2b0
revng-pipeline: introduce --produce and --analyze
2022-08-10 09:49:24 +02:00
Massimo Fioravanti
9c13f8dbdd
Introduce revng-artifact
2022-08-10 09:49:24 +02:00
Massimo Fioravanti
96bd5835d8
revng-pipeline: rework file-to-container syntax
2022-08-10 09:49:24 +02:00
Giacomo Vercesi
e23d238e85
revng.cli: explicitly initialize Commands
...
Commands now require a `setup` function, where the will register the
command instance manually
2022-08-10 09:49:24 +02:00
Alessandro Di Federico
45d563bc15
revng: use ld.so --preload instead of LD_PRELOAD
2022-08-08 13:55:25 +02:00
Alessandro Di Federico
82771be9b5
revng-model-dump: emit YAML
2022-08-08 13:55:25 +02:00
Djordje Todorovic
1243d1061c
Introduce revng model hard-purge
...
In addition, introduce a new model Pass:
revng model opt -prune-unsused-types
2022-07-28 15:02:55 +02:00
Djordje Todorovic
fdb12947a2
Introduce revng model download-pdb
2022-07-28 14:52:50 +02:00
Giacomo Vercesi
7a9c88e9e7
Introduce revng ptml
...
This Oython tool will be used to easily work with PTML.
It currently features two subcommands:
* `cat` prints a PTML to the terminal, with color formatting if
possible;
* `strip` will strip a file of the PTML markup;
2022-07-28 08:49:09 +02:00
Giacomo Vercesi
1a7503183a
revng.cli: dynamically load commands
...
Now `revng.cli` houses the core command-line driver while the individual
commands have been moved to `revng.cli._commands` and are dynamically
loaded.
2022-07-28 08:48:30 +02:00
Giacomo Vercesi
df72bb68b0
GraphQL: introduce CORS headers
...
Add CORS headers to the graphql api. These are set via the REVNG_ORIGINS
environment variable.
2022-06-29 14:50:58 +02:00