Commit Graph

7328 Commits

Author SHA1 Message Date
Alessandro Di Federico 09dfccec91 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-23 13:40:43 +02:00
Alessandro Di Federico 4a51b67700 TypeCopier: improve performance
This commit refactors `TypeCopier`. Among other things, it ensures we
invoke `initializeReferences` only in `finalize`, as opposed to every
time we invoke `copyTypeInto`.
2026-04-23 13:40:43 +02:00
Alessandro Di Federico 36a1295a8f Introduce Binary.getIdentifierBinaryReference 2026-04-23 13:40:43 +02:00
Alessandro Di Federico 51323c4707 Introduce revng model export sqlite
This tool exports into a SQLite DB the prototypes of the functions in a
given model, along with the closure of its type dependencies.
2026-04-23 13:40:43 +02:00
Alessandro Di Federico 292da676e2 Introduce revng model merge 2026-04-23 13:40:43 +02:00
Alessandro Di Federico eb9e82477a Introduce WindowsApiSetSchemaParser 2026-04-23 13:40:43 +02:00
Alessandro Di Federico f1ab2f7544 Introduce getConfigDirectory 2026-04-23 13:40:43 +02:00
Alessandro Di Federico 0385e4c652 Introduce revng::Configuration 2026-04-23 13:40:43 +02:00
Alessandro Di Federico 5417f8d880 model-schema.yml: move Type fields at the end
It's preferable to have one-line fields at the beginning in the YAML
representation.
2026-04-23 13:40:43 +02:00
Alessandro Di Federico 5b43a23060 BinaryIdentifier: s/.Name/.CanonicalPath/g 2026-04-23 13:40:42 +02:00
Alessandro Di Federico 7b3a80155e Model: introduce OperatingSystem and PlatformName
These are going to be used to select the correct root.
2026-04-23 13:40:42 +02:00
Alessandro Di Federico e928664380 Introduce ImportLogger
`ImportLogger` is a simple support class to report on how many elements
have been imported in the model between the start and the end of its
lifetime.
2026-04-23 13:40:42 +02:00
Alessandro Di Federico 675884b5c9 Introduce sqlite::Database 2026-04-23 13:40:42 +02:00
Alessandro Di Federico 80657806da Introduce findPathCaseInsensitive 2026-04-23 13:40:42 +02:00
Alessandro Di Federico 63851e2f57 Introduce IndexedVector 2026-04-23 13:40:42 +02:00
Alessandro Di Federico 6e5462b3c9 replaceAll: return true if changes are made 2026-04-23 13:40:42 +02:00
Alessandro Di Federico ee9c77b719 appendTo: move to STLExtras.h 2026-04-23 13:40:42 +02:00
Alessandro Di Federico 0742699a81 s/OutputFilename/OutputPath/g 2026-04-23 13:40:42 +02:00
Alessandro Di Federico 3a0bbb00c5 verify-abi-test-binaries.sh: limit --use-pdb usage 2026-04-23 13:40:42 +02:00
Alessandro Di Federico 8bf4923b27 revng fetch debug-info: use lowercase PDB ID 2026-04-23 13:40:42 +02:00
Alessandro Di Federico 456595551a YAMLTraits: improve error reporting
Adopt the proper mechanism for reporting errors, which include line and
column number.
2026-04-23 13:40:42 +02:00
Alessandro Di Federico e352169420 check-conventions: ignore all raw C++ strings
Before, we were just ignoring `R"LLVM(`.
2026-04-23 13:40:42 +02:00
Alessandro Di Federico 58ab09b107 findFileInPaths: do not abort on missing file 2026-04-23 13:40:42 +02:00
Alessandro Di Federico d977f26bce import-from-c test: improve error reporting 2026-04-23 13:40:42 +02:00
Alessandro Di Federico 15816c7559 TupleTree.h: drop DisableTracking
Not needed, no tracking takes place on a non-`const` object.
2026-04-23 13:40:42 +02:00
Alessandro Di Federico 934e2a92f5 Make argv non-const char * 2026-04-23 13:40:42 +02:00
Alessandro Di Federico 6a3a0489a7 Logger::unindent: fix assertion 2026-04-23 13:40:41 +02:00
Alessandro Di Federico 53c4c047d0 AArch64: adopt relocations with addend
This commit fixes a serious bug with AArch64 preventing us from detect
calls to dynamic functions.
2026-04-23 13:40:41 +02:00
Alessandro Di Federico 8bc37d9c8f HelperArgumentsAnalysis: use specific Logger name
Using `Log` as a non-`static` global variable name lead to subtle
linking issues.
2026-04-23 13:40:41 +02:00
Alessandro Di Federico fd16a6afc6 TupleTreeDiff: s/detail::/revng::detail::/g 2026-04-23 13:40:41 +02:00
Alessandro Di Federico 9cd2bffcb4 s/Endianess/Endianess/g 2026-04-23 13:40:41 +02:00
Alessandro Di Federico 7049f61baa Minor changes 2026-04-23 13:40:41 +02:00
Pietro Fezzardi bacd5e9a75 Merge branch 'feature/clift-based-headers-3' 2026-04-22 15:54:10 +02:00
Ivan Krysak 71845dcbbb CliftEmitC: stop using mlir::clift namespace 2026-04-22 08:19:47 +00:00
Ivan Krysak 31b2609ca3 verifyCSemantics: add a TODO 2026-04-22 08:19:35 +00:00
Ivan Krysak 2a401ceb3f DoxygenEmitter: prevent indentation highlighting 2026-04-22 08:19:35 +00:00
Ivan Krysak 490504604c mlir-lit-tests: test forbidden attributes 2026-04-22 08:19:35 +00:00
Ivan Krysak f13748583b verifyAgainstModel: check forbidden attributes 2026-04-22 08:19:35 +00:00
Ivan Krysak f83465eadb mlir-lit-tests: test unknown attributes 2026-04-22 08:19:34 +00:00
Ivan Krysak 8387f8ce17 verifyAgainstModel: check for unknown attributes 2026-04-22 08:19:34 +00:00
Ivan Krysak e1c4ad760f mlir-lit-tests: test function type attributes 2026-04-22 08:19:34 +00:00
Ivan Krysak e4770db1f1 verifyAgainstModel: function type attributes 2026-04-22 08:19:34 +00:00
Ivan Krysak 41c4dcd6ee mlir-lit-tests: add missing _ABI attributes 2026-04-22 08:19:33 +00:00
Ivan Krysak 935208dc43 mlir-lit-tests: test struct attributes 2026-04-22 08:19:33 +00:00
Ivan Krysak 52f41c4c44 verifyAgainstModel: check struct attributes 2026-04-22 08:19:33 +00:00
Ivan Krysak 61c8a44870 mlir-lit-tests: test function attributes 2026-04-22 08:19:32 +00:00
Ivan Krysak d66c54321c verifyAgainstModel: check function attributes 2026-04-22 08:19:32 +00:00
Ivan Krysak 1b6c4c8f45 mlir-lit-tests: test raw function attributes 2026-04-22 08:19:32 +00:00
Ivan Krysak 9675b2d3c9 verifyAgainstModel: greatly improve RFT checks 2026-04-22 08:19:32 +00:00
Ivan Krysak 0a23d51da8 model-verify tests: separate a handles subset 2026-04-22 08:19:31 +00:00