Alessandro Di Federico
bc4872f2f4
DwarfImporter: handle STT_GNU_IFUNC symbols
...
In DWARF, `STT_GNU_IFUNC` symbols are associated to a function prototype
returning the actual prototype.
2026-06-03 13:59:53 +02:00
Alessandro Di Federico
6894862ef2
Implement platform roots support
...
Refactor the binary import and dependency resolution infrastructure to
support multiple platforms (Linux, Windows, macOS) via a
configuration-driven root system.
Major changes:
* Overhaul PDB and DWARF importers for platform-aware debug info
loading.
* Refactor LDDTree into a template-based architecture with
platform-specific implementations (ELF, PE/COFF).
* Mostly rewrite the PDB importer, which had significant limitations.
2026-04-24 17:54:09 +02:00
Alessandro Di Federico
d9123fcd49
PECOFFImporter: fix handling of relocations
...
This commit ensures relocations imported from PE/COFF binaries have
generic `Address`. The fact that this was not the case lead to not
detecting dynamic calls.
The commit also improves logging and fixes the handling of maximum depth
visit of the PDB importer.
2025-12-19 14:44:07 +01:00
Giacomo Vercesi
265af3768f
Binary importers: fix debug info detection
...
Fix the behavior of binary importers by propagating the path of the
input binary from revng2 downwards, allowing finding `.debug` files in
the correct paths.
2025-12-19 10:28:29 +01:00
Alessandro Di Federico
5820908675
Remove and ban \file
2025-12-16 17:41:55 +01:00
Alessandro Di Federico
c883bed765
Drop Logger's StaticEnabled feature
2025-10-31 17:25:03 +01:00
Ivan Krysak
df681aa573
Ensure consumed errors are printed somewhere
2025-10-13 10:26:41 +03:00
Ivan Krysak
9bf93d3a30
Importers: add TODOs on diagnostic candidates
2025-10-13 10:26:41 +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
6cdf6b9eda
DebugInfo: do --verbose if logger is enabled
...
Enable running `fetch-debuginfo` in verbose mode if the logger is
enabled.
2025-03-13 18:03:50 +01:00
Ivan Krysak
705e4a5955
auto [...] -> auto &&[...]
2025-02-13 13:10:51 +02:00
Alessandro Di Federico
832840c307
Importers: ignore unmapped code
...
This commit ensures that parts of the model that must point to code
(specifically `Binary::EntryPoint`, `Binary::ExtraCodeAddresses` and
`Function::Entry`) actually point to a segment mapped as +x.
2024-11-28 15:22:10 +01:00
Alessandro Di Federico
a0c670652c
Improve usages of Expected<T>
2024-10-10 14:50:26 +02:00
Ivan Krysak
4bdc7f83b5
ABI: drop incomplete pascal support
2024-10-08 13:53:53 +02:00
Ivan Krysak
99e016f120
ABI: reorganize default ABI helpers
2024-10-08 13:53:52 +02:00
Giacomo Vercesi
f8ffe38687
Unify cache directory logic
...
Make the cache directory logic uniform in Python and C++, move the
respective implementations under support since it's project-wide logic
and not exclusive to debug-info.
2024-10-01 13:38:13 +02:00
Alessandro Di Federico
5c9b6ed9b3
Rename DILogger into Log
2024-08-16 13:27:00 +02:00
Alessandro Di Federico
cba1d6fa51
PDBImporter: fix .pdb path lookup
2024-08-16 13:01:57 +02:00
Alessandro Di Federico
7b00473859
PDBImporter: rework .pdb search
2024-08-05 17:41:34 +02:00
Ivan Krysak
4a2db0ba4f
UpcastablePointer: streamline empty behavior
2024-06-27 11:05:52 +02:00
Ivan Krysak
dfa7478685
Adopt reworked model::Type
2024-06-27 11:05:51 +02:00
Ivan Krysak
927e8006b9
Model: rename TypePath to DefinitionReference
2024-06-27 11:05:49 +02:00
Ivan Krysak
ac587cbb4f
Model: rename Type into TypeDefinition
2024-06-27 11:05:48 +02:00
Alessandro Di Federico
fe1dffcffd
Add some missing includes
...
This is in preparation of reducing headers in Debug.h.
2024-05-03 21:52:40 +02:00
Alessandro Di Federico
d9e649d272
Importer/Binary: improve logging
2024-03-01 14:53:06 +01:00
Alessandro Di Federico
aa882f1bef
Importer/Binary: fix default XDG cache path
2024-03-01 14:53:06 +01:00
Ivan Krysak
e708a3655b
ABI: drop incomplete clrcall support
2024-02-09 15:09:37 +00:00
Ivan Krysak
af6f9367b2
ImportPE: remove i386-specific values
2024-02-09 15:09:37 +00:00
Djordje Todorovic
79460c6933
PDBImport: Handle forward referenced types
...
A class or a struct type A can be a forward declaration and refer
to another type B in PDB, so we need to follow the references.
We pre-create type for B, when we face type A, and then, when we
visit type B, we populate the fields for the model::type we
pre-created.
In addition, this patch fixes some minor/side bugs:
- Handle SHORT/Int16Short simple type
- Do not delete model::Function if Prototype is invalid.
2024-02-09 15:09:37 +00:00
Ivan Krysak
77b1acaf00
Prefer uint64_t to size_t wherever relevant
2024-01-29 11:57:54 +02:00
Ivan Krysak
2136e05115
Fix a nasty issue caused by an uninitialized flag
2023-07-21 17:25:24 +02:00
Ivan Krysak
7d235f4fd0
Enforce licence header consistency
...
Also do some basic cleanup: capitalize first letters, add `.`
at the end of the sentences, and so on.
2023-07-03 15:23:10 +00:00
Ivan Krysak
9f1d9fd5d0
Use Container::contains() where appropriate
2023-07-02 15:06:11 +00:00
Ivan Krysak
bc98e0079f
Formatting: change PenaltyReturnTypeOnItsOwnLine
...
The new value is 21.
2023-07-02 13:20:49 +02:00
Giacomo Vercesi
31cd2b53f9
rcc: add codespell
...
Add codespell to the list of checks performed by
revng-check-conventions. This should reduce the amount of typos present
in the revng codebase.
2023-05-11 10:05:32 +02:00
Alessandro Di Federico
6564fc0568
Minor changes
2023-04-08 08:42:24 +02:00
Alessandro Di Federico
71f754f811
PDBImporter: declare our own FilterOptions
2023-04-08 08:42:24 +02:00
Alessandro Di Federico
394111ed40
Add missing includes
2023-04-08 08:42:24 +02:00
Alessandro Di Federico
dbcdad0a4d
Switch from llvm::Optional to std::optional
2023-04-08 08:42:24 +02:00
Ivan Krysak
64856306c4
BinaryImporter: rework command line interface
2023-03-15 10:19:03 +01:00
Ivan Krysak
7c360eb8d1
PDBImporter: preserve x64 vector and clr ABIs
2023-03-15 10:19:03 +01:00
Ivan Krysak
0b1aaeaede
Minor improvements
2023-03-15 10:19:01 +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
Massimo Fioravanti
742e1a0c56
TupleTree: switch from public fields to accessors
2022-12-12 18:36:57 +01:00
Djordje Todorovic
46bc14bc73
Model: Add an opt for user defined paths of PDB
2022-07-28 14:52:50 +02:00
Djordje Todorovic
a36e22729f
Model: Add PDB support
2022-07-28 14:52:50 +02:00