3016 Commits

Author SHA1 Message Date
Lauri Vasama 9c5338913d Add TargetABI field in the model 2026-05-04 10:48:03 +03:00
Lauri Vasama 0ab9f769dd Add CDataModel in ABI definition 2026-05-02 17:21:47 +03:00
Lauri Vasama 27fb305c5a Add revng/Support/CDataModel
This structure describes the data model used by a C ABI.
2026-04-30 15:09:16 +03:00
Lauri Vasama 7f2bf61d10 Move cast collapsing rewrite to a separate set 2026-04-30 15:09:16 +03:00
Lauri Vasama 5a538c0f84 Add (*x).m -> x->m expression rewrite 2026-04-30 15:09:16 +03:00
Lauri Vasama e5fb446430 Rename BooleanNegations.h to Expressions.h 2026-04-30 15:09:16 +03:00
Lauri Vasama be564f8944 Migrate isIntegerType users to unwrapped_isa 2026-04-30 15:09:16 +03:00
Lauri Vasama 9dced83bd6 Add Clift IntegralType interface 2026-04-30 15:09:16 +03:00
Lauri Vasama b6283c8684 Add ExpressionRegionOpInterface on loops, branches 2026-04-30 15:09:16 +03:00
Lauri Vasama 7126513af8 Add CallOp::getFunctionType 2026-04-30 15:09:16 +03:00
Lauri Vasama 49cc67db11 Make DefinedType implement AddressableType 2026-04-30 15:09:16 +03:00
Lauri Vasama 5b13b6948c Add ScopedExchange::commit to persist the mutation 2026-04-30 15:09:16 +03:00
Lauri Vasama 4c97c6e7ab Make CAttributeListBuilder conversion explicit 2026-04-30 15:09:16 +03:00
Lauri Vasama c56742770b Use const ArrayRef in emitHelperHeader 2026-04-30 15:09:16 +03:00
Lauri Vasama b30b4feec9 Remove MLIRContext from TypeDefinitionEmitter API 2026-04-30 15:09:16 +03:00
Lauri Vasama 90e5dfd4c9 Pass MLIRContext by address
Passing by address is more conventional. This is what MLIR does most of
the time, and it avoids dereferences and addressofs everywhere.
2026-04-30 15:09:16 +03:00
Lauri Vasama ac5000b194 Add ModuleVisitor visitModuleOp call 2026-04-30 15:09:16 +03:00
Lauri Vasama 3d8d88096d Fix CIdentifierAttr formatting 2026-04-30 15:09:16 +03:00
Lauri Vasama 31c80b0625 Fix (&x)->m -> x.m expression rewrite 2026-04-30 15:09:16 +03:00
Lauri Vasama a338194eb7 Move namespace mlir::clift out of namespace mlir 2026-04-27 12:48:24 +03:00
Lauri Vasama 4b4d5a2c28 Fix clift::getOnlyUser 2026-04-27 12:48:24 +03:00
Alessandro Di Federico c1b3f23cf5 Uniform Binary::get{Definition,Binary}Reference 2026-04-24 17:54:09 +02:00
Alessandro Di Federico 2629f95dd1 Introduce ImportPrototypesFromDatabase
This commit introduces an analysis to import prototypes from a SQLite
database of well-known prototypes, typically built from debug info of
operating systems.

This analysis supersedes import-well-known-models.
2026-04-24 17:54:09 +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 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 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 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 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 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 fd16a6afc6 TupleTreeDiff: s/detail::/revng::detail::/g 2026-04-23 13:40:41 +02:00
Alessandro Di Federico 7049f61baa Minor changes 2026-04-23 13:40:41 +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 5f511d8e17 verify-against-model: split into two
The resulting pipes are:
1. binary-granularity one with the name unchanged
2. function-granularity one called `verify-function-against-model`.
2026-04-22 08:19:30 +00:00
Ivan Krysak e693cdbd53 model-verify-clift -> verify-against-model 2026-04-22 08:19:30 +00:00
Ivan Krysak 3de5b009e7 Clift: introduce simple passes for header tests 2026-04-22 08:19:29 +00:00
Ivan Krysak c5130ce689 Clift: factor common ptml pass options out 2026-04-22 08:19:28 +00:00