Ivan Krysak
ccb7c41e9e
Introduce automatic names for dynamic functions
2025-04-24 12:00:21 +02:00
Ivan Krysak
0836143181
Bring name mangling out into a support helper
2025-04-24 12:00:14 +02:00
Giacomo Vercesi
d428eb597d
Fix codespell errors
...
Fix erros detected by the new version of `codespell`.
2025-04-23 14:13:03 +02:00
Ivan Krysak
79964eac74
Avoid ' misuse in error messages and comments
2025-04-17 16:41:21 +02:00
Ivan Krysak
83324fcf07
NameBuilder: improve documentation
2025-04-17 11:19:17 +03:00
Ivan Krysak
c8de226f56
DwarfImporter: remove an input-dependent assert
...
Not checking for primitives there doesn't change anything anyway, as
`purge-invalid-types` model pass will clean anything invalid still
left after the importer.
2025-04-17 11:19:17 +03:00
Ivan Krysak
ae3f19664a
ModelPasses: introduce fix-model
2025-04-17 11:19:17 +03:00
Ivan Krysak
76ed261375
Use revng_undefined_ instead of init_
...
Current `init_` prefix used to set the default values of SCVs
is very common in typical code, hence it would cause a lot of
collisions.
2025-04-17 11:19:17 +03:00
Ivan Krysak
c6e38cd485
Return to using constant name builders
...
Because of how name builders used to lazy gather namespaces on the first
requested name, the objects were self mutating. As such only non-const
references could be used to pass them around.
Since that is no longer the case, this restores most of lost const
qualifiers.
2025-04-17 11:19:17 +03:00
Ivan Krysak
61f2c122b1
Canonicalize: adopt helper registry
2025-04-17 11:19:17 +03:00
Ivan Krysak
18829dc7e4
RestructureCFG: adopt helper registry
2025-04-17 11:19:17 +03:00
Ivan Krysak
8a8e0ce4ae
PromoteStackPointer: adopt helper registry
2025-04-17 11:19:17 +03:00
Ivan Krysak
2c8e0d68c8
FunctionCallIdentification: adopt helper registry
2025-04-17 11:19:17 +03:00
Ivan Krysak
274e0f298a
EFA: adopt helper registry
2025-04-17 11:19:17 +03:00
Ivan Krysak
5d0986c315
FunctionIsolation: adopt helper registry
2025-04-17 11:19:17 +03:00
Ivan Krysak
e1c8c370f7
Lift: adopt helper registry
2025-04-17 11:19:17 +03:00
Ivan Krysak
0af6eaf494
BasicAnalyses: adopt helper registry
2025-04-17 11:19:17 +03:00
Ivan Krysak
514e6c56e0
ProgramCounterHandler: adopt helper registry
2025-04-17 11:19:17 +03:00
Ivan Krysak
48a7822923
FunctionTags: adopt helper registry
2025-04-17 11:19:17 +03:00
Ivan Krysak
dc7d08555e
Decompile: verify helper names are consistent
2025-04-17 11:19:17 +03:00
Ivan Krysak
b72bcd7dd2
Introduce a basic problem name reporting system
2025-04-17 11:19:17 +03:00
Ivan Krysak
aa15d8ca21
Standardize abort-like function usage
2025-04-17 11:19:17 +03:00
Ivan Krysak
154287b5d5
init_local_sp: drop leading _
2025-04-17 11:19:17 +03:00
Ivan Krysak
cdd9004feb
StringLiteral: do not escape HTML in non-HTML mode
2025-04-17 11:19:17 +03:00
Ivan Krysak
e96e64f035
CNameBuilder: ban known llvm intrinsic names
2025-04-17 11:19:17 +03:00
Ivan Krysak
29554ef303
CNameBuilder: ban known helper names
2025-04-17 11:19:17 +03:00
Ivan Krysak
57b5eb7f98
NameBuilder: allow different name checkers
2025-04-17 11:19:17 +03:00
Ivan Krysak
a3c8ced826
getUniqueString: use hash for empty strings
2025-04-17 11:19:17 +03:00
Ivan Krysak
93e44460bf
ptml::CTypeBuilder: drop getPlainTypeName
2025-04-17 11:19:17 +03:00
Ivan Krysak
c4f071dfe3
Importers: adopt primitive typedef flattening
2025-04-17 11:19:17 +03:00
Ivan Krysak
acb7d595ef
Model: introduce a primitive typedef removal pass
2025-04-17 11:19:17 +03:00
Ivan Krysak
1383b0a40a
Importers: replace .s in section names
2025-04-17 11:19:17 +03:00
Ivan Krysak
c9ade8d458
NameBuilder: report reason when renaming something
2025-04-17 11:19:17 +03:00
Ivan Krysak
355d4f634c
NameBuilder: prevent collisions with macros
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
cf78106d54
Model: introduce a name deduplication pass
2025-04-17 11:19:17 +03:00
Ivan Krysak
dce5c1a02c
NamingConfiguration: pull more prefixes inside
...
Unify additional values that used to be hardcoded in the old backend
under the same naming configuration root.
2025-04-17 11:19:17 +03:00
Ivan Krysak
af79a289d8
NamingConfiguration: add a new option
...
It's `ReserveNamesStartingWithUnderscore`.
2025-04-17 11:19:17 +03:00
Ivan Krysak
f070f1f1e1
Model: sunset double name system
2025-04-17 11:19:17 +03:00
Ivan Krysak
25790b5a78
NameBuilder: change automatic segment name
...
Use index within the binary instead of address in order to make these
shorter.
2025-04-15 16:35:42 +03:00
Ivan Krysak
645cf7fc2e
NameBuilder: sunset deduplication
...
This reworks NameBuilder to ease the transition to the system where
the model will be guaranteed to never contain any name collisions, both
between user-specified names and the automatic ones.
2025-04-15 16:35:42 +03:00
Ivan Krysak
6ea75f02b3
Model: switch to the new namespace verifier
2025-04-15 16:35:42 +03:00
Ivan Krysak
c9d9b00bb0
Model: introduce generic namespace processing
2025-04-15 16:35:42 +03:00
Ivan Krysak
6710dacfed
Model: give path helpers a home
2025-04-15 16:35:42 +03:00
Ivan Krysak
169383daa8
MetaAddress: introduce toIdentifier() method
...
It's equivalent to the existing `toString()` except for the fact that
it uses an identifier-friendly separator (`_`).
2025-04-15 16:35:42 +03:00
Ivan Krysak
3edb6cbb9b
Minor improvements
2025-04-15 16:35:42 +03:00
Alessandro Di Federico
c5c657d11b
Lift: increase determinism
2025-04-15 15:31:10 +02:00
Alessandro Di Federico
de2a96c34c
AVI: set the extremal value ot top
2025-04-15 15:31:10 +02:00
Giacomo Vercesi
11f1e532c6
Implement dirty bit on Container
...
Add a `Dirty` boolean to the `ContainerBase` class. This will be set to
true when the container mutates itself (e.g. remove, mergeBack, clear).
The dirty bit is reset when running `PipelineManager.store`.
2025-04-03 15:59:18 +02:00
Giacomo Vercesi
f740badd68
PipelineManager: drop storeContext
...
The `storeContext` function was a misguided attempt to performance
optimization. Without storing all the containers and the invalidation
metadata the resume directory would be corrupt by just storing the
context.
2025-04-03 15:59:18 +02:00