Commit Graph

2487 Commits

Author SHA1 Message Date
Antonio Frighetto 17f799e3c2 Move ProcessCallGraph pipe within Isolate
`CrossRelations` container needs to be available
just as `FunctionIsolation` has executed.
2023-02-06 09:37:23 +01:00
Antonio Frighetto 2d086e04a1 Context: fix entry in containsReadOnlyContainer
`ReadOnlyContainers` is defined to be a `llvm::StringMap`
of a further `llvm::StringMap` of `std::unique_ptr`s of
`ContainerBase`. A logic issue has been addressed by
properly dereferincing the inner map.
2023-02-06 09:37:23 +01:00
Antonio Frighetto 8ca4c4c6ea Runner: bail out with no requests target 2023-02-06 09:37:23 +01:00
Antonio Frighetto 308d8ee8a3 Loader: associate container name to its role
`Container` names were mistakenly associated to the name
of their declaration. This has been fixed by associating
them to their `Role`.
2023-02-06 09:37:23 +01:00
Antonio Frighetto c91a44363a Yield: split internal pipes off
A cyclic dependency between shared objects `revngYield` and
`revngFunctionIsolation` could exist if `FunctionIsolation`
were to use `yield`-defined methods. This has been prevented
by splitting pipes off within `Yield`.
2023-02-06 09:37:23 +01:00
Massimo Fioravanti 9432399254 Introduce ApplyDiffAnalysis 2023-02-06 09:37:23 +01:00
Antonio Frighetto ea0a06a876 revng.daemon: accept no arguments for analysis
Let GraphQL accept zero or more parameters for analyses.
2023-02-06 09:37:23 +01:00
Massimo Fioravanti dad043027d Rework and EFA yield cross relations
Yield and EFA shared the same namespace, this commits splits them and
introduces tuple tree containers as well.
2023-02-06 09:37:23 +01:00
Antonio Frighetto c5d9a4d787 Introduce helper for location conversion 2023-02-06 09:37:23 +01:00
Antonio Frighetto c3480b6f9b CLOption: improve isSet for a cl::opt<T>
A logic issue existed when validating whether a `cl::opt<T>`
was set. This has been addressed by replacing `isDefaultOption`
method with `getNumOccurrences`, as the former one was not
meant to be used for checking if the option was set or not.
Likewise, the default Option itself is written to a `std::string`,
in method `get`; the latter is leveraged by `Invokable`.
2023-02-06 09:37:23 +01:00
Alessandro Di Federico c7ade9595c Merge branch 'feature/debug-info' 2023-02-02 15:27:01 +01:00
Djordje Todorovic a48e518467 Introduce AttachDebugInfo pass 2023-02-02 15:26:44 +01:00
Djordje Todorovic eb6849045d FunctionMetadataCache: split an assert 2023-02-02 15:26:26 +01:00
Djordje Todorovic 3365a626df LLVMContainer: avoid copying !dbg to declarations 2023-02-02 15:26:18 +01:00
Pietro Fezzardi 04d877a992 TypeSystemPrint: fix print without stack type 2023-02-02 14:49:46 +01:00
Giacomo Vercesi f3f04ef891 daemon/test.py: improve daemon log handling
Improve the handling of the daemon process when running tests.
print.
2023-02-01 17:46:21 +01:00
Giacomo Vercesi b4c1cd94e1 revng-daemon: preserve more signals
Add more signals to be handled from python rather than LLVM.
2023-02-01 17:46:19 +01:00
Alessandro Di Federico 4a7ccfd68e Merge branch 'feature/fix-fetch-debuginfo' 2023-01-27 21:52:42 +01:00
Djordje Todorovic 8f95f14f12 CrossModelFindType: consider ExportedNames 2023-01-27 17:54:08 +01:00
Djordje Todorovic fec0ec7034 Model: add ExportedNames for local Functions 2023-01-27 17:54:06 +01:00
Djordje Todorovic 55d098b994 DwarfImporter: parse DW_AT_ranges 2023-01-27 17:54:03 +01:00
Djordje Todorovic 83905cf5ed Fix the level for FetchDebugInfo 2023-01-27 17:53:47 +01:00
Alessandro Di Federico 925fae4c4f Merge branch 'feature/fix-idb-importer' 2023-01-27 17:51:46 +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
Djordje Todorovic 3e75c09da0 dropTypesDependingOnTypes: purge from Function too
This commit ensure that, not only we drop `model::DynamicFunction`s
depending on an invalid type, but `model::Function`s are dropped too.
2023-01-27 17:48:19 +01:00
Djordje Todorovic 0f7c473cf3 FixModel: factor out logic of type deletion 2023-01-27 17:46:23 +01:00
Djordje Todorovic 5be245c971 FixModel: filter zero-sized fields 2023-01-27 17:46:21 +01:00
Djordje Todorovic e1b070f2da FixModel: filter out empty arrays 2023-01-27 17:46:18 +01:00
Alessandro Di Federico e590afb38e CMake: use LIBRARY_OUTPUT_DIRECTORY for libaries
This ensure we don't have to `cmake -E copy`.
2023-01-21 18:56:43 +01:00
Alessandro Di Federico bf20a83268 revng-pipeline: reduce dependencies 2023-01-21 18:56:22 +01:00
Alessandro Di Federico 4929f201d1 script/revng: fix detection of packages directory 2023-01-21 16:46:35 +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
Alessandro Di Federico 70e4f24d9f revng-check-conventions: fix mypy if no normal_files 2023-01-21 16:46:35 +01:00
Alessandro Di Federico c6630a2414 eraseIfNoUse: check if WeakVH is dead 2023-01-03 20:51:45 +01:00
Alessandro Di Federico a4f4906ba7 Lift: re-enable InstCombine upon harvesting
InstCombine was disabled in favor of some more basic constant
propagation, but it turns that under certain circumstances this leads to
direct branches appearing as indirect branches until we run InstCombine
during finalization, which triggers an assertion, since we do not expect
any direct jump there.

If this, affects translation performance, we can think to run it less
often.
2023-01-03 13:41:40 +01:00
Alessandro Di Federico 8030f1c909 finalizeNewPCMarkers: do not copy attributes 2023-01-03 13:41:40 +01:00
Alessandro Di Federico dd5914ce61 ProgramCounterHandler: initialize field
The uninitialized field led to SIGSEGVs.
2023-01-02 14:22:56 +01:00
Alessandro Di Federico 991980806e LinkForTranslation: use -l:ld-linux-x86-64.so.2 2023-01-02 10:46:13 +01:00
Alessandro Di Federico 329f610a42 Merge branch 'feature/import-debug-info' 2022-12-13 11:28:16 +01:00
Djordje Todorovic 74c840a9f5 DwarfImporter: set prototype only if available 2022-12-13 11:27:23 +01:00
Djordje Todorovic 8976ab4126 DwarfImporter: handle DW_AT_noreturn 2022-12-13 11:27:16 +01:00
Djordje Todorovic 961f9e5461 Model: search debug info locally upon import
Also find prototypes in Models of dynamic libs for both PE and ELF.
2022-12-13 11:26:54 +01:00
Djordje Todorovic cad68a9876 Instroduce LDDTree 2022-12-13 11:26:25 +01:00
Djordje Todorovic 98a8b8a7a9 Ban identifiers starting with reserved prefixes 2022-12-13 11:25:56 +01:00
Djordje Todorovic 809ea798a6 Introduce revng import debug-info
It supports both PDB and DWARF formats.
We get rid of `import dwarf` tool.
2022-12-13 11:25:46 +01:00
Djordje Todorovic 0d6ffa7504 Introduce revng fetch-debuginfo 2022-12-13 11:25:36 +01:00
Alessandro Di Federico a15428be50 Merge branch 'feature/private-model-accessors' 2022-12-12 18:37:20 +01:00
Massimo Fioravanti 742e1a0c56 TupleTree: switch from public fields to accessors 2022-12-12 18:36:57 +01:00
Massimo Fioravanti 0d3133cfc9 Fix missing includes
This ensures headers make sense on their own, without implicit
assumption about includers to also include other headers before them.
2022-12-09 18:09:39 +01:00