summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRusty Wagner <rusty.wagner@gmail.com>2025-10-23 13:42:08 -0400
committerRusty Wagner <rusty.wagner@gmail.com>2025-10-23 14:42:50 -0400
commitdb6d95ea565c75d01192160ce34675a831cb4103 (patch)
treedd0984cb301540ef1922cceca81e35580f2a0d63
parentb638ca2598b64d4b8b29cd919e7fbaf126cb749e (diff)
Fix lost type attributes in TypeBulider Python API
-rw-r--r--binaryninjacore.h5
-rw-r--r--python/types.py36
2 files changed, 10 insertions, 31 deletions
diff --git a/binaryninjacore.h b/binaryninjacore.h
index 3736e97c..3e6f60fd 100644
--- a/binaryninjacore.h
+++ b/binaryninjacore.h
@@ -37,7 +37,7 @@
// Current ABI version for linking to the core. This is incremented any time
// there are changes to the API that affect linking, including new functions,
// new types, or modifications to existing functions or types.
-#define BN_CURRENT_CORE_ABI_VERSION 141
+#define BN_CURRENT_CORE_ABI_VERSION 142
// Minimum ABI version that is supported for loading of plugins. Plugins that
// are linked to an ABI version less than this will not be able to load and
@@ -7003,6 +7003,7 @@ extern "C"
BINARYNINJACOREAPI BNNamedTypeReferenceClass BNGetTypeReferenceBuilderClass(BNNamedTypeReferenceBuilder* nt);
BINARYNINJACOREAPI char* BNGetTypeReferenceBuilderId(BNNamedTypeReferenceBuilder* nt);
BINARYNINJACOREAPI BNQualifiedName BNGetTypeReferenceBuilderName(BNNamedTypeReferenceBuilder* nt);
+ BINARYNINJACOREAPI void BNSetNamedTypeReferenceBuilder(BNTypeBuilder* type, BNNamedTypeReferenceBuilder* nt);
BINARYNINJACOREAPI BNStructureBuilder* BNCreateStructureBuilder(void);
BINARYNINJACOREAPI BNStructureBuilder* BNCreateStructureBuilderWithOptions(BNStructureVariant type, bool packed);
@@ -7012,6 +7013,7 @@ extern "C"
BINARYNINJACOREAPI BNStructure* BNNewStructureReference(BNStructure* s);
BINARYNINJACOREAPI void BNFreeStructure(BNStructure* s);
BINARYNINJACOREAPI void BNFreeStructureBuilder(BNStructureBuilder* s);
+ BINARYNINJACOREAPI void BNSetStructureBuilder(BNTypeBuilder* type, BNStructureBuilder* s);
BINARYNINJACOREAPI BNStructureMember* BNGetStructureMemberByName(BNStructure* s, const char* name);
BINARYNINJACOREAPI BNStructureMember* BNGetStructureMemberAtOffset(BNStructure* s, int64_t offset, size_t* idx);
@@ -7083,6 +7085,7 @@ extern "C"
BINARYNINJACOREAPI BNEnumeration* BNNewEnumerationReference(BNEnumeration* e);
BINARYNINJACOREAPI void BNFreeEnumeration(BNEnumeration* e);
BINARYNINJACOREAPI void BNFreeEnumerationBuilder(BNEnumerationBuilder* e);
+ BINARYNINJACOREAPI void BNSetEnumerationBuilder(BNTypeBuilder* type, BNEnumerationBuilder* e);
BINARYNINJACOREAPI BNEnumerationMember* BNGetEnumerationMembers(BNEnumeration* e, size_t* count);
BINARYNINJACOREAPI BNInstructionTextToken* BNGetEnumerationTokensForValue(BNEnumeration* e, uint64_t value,
diff --git a/python/types.py b/python/types.py
index 222f256e..fcc99aeb 100644
--- a/python/types.py
+++ b/python/types.py
@@ -621,9 +621,9 @@ class TypeBuilder:
TypeClass.IntegerTypeClass: IntegerType, TypeClass.FloatTypeClass: FloatType,
TypeClass.PointerTypeClass: PointerType, TypeClass.ArrayTypeClass: ArrayType,
TypeClass.FunctionTypeClass: FunctionType, TypeClass.WideCharTypeClass: WideCharType,
- # TypeClass.StructureTypeClass:StructureType,
- # TypeClass.EnumerationTypeClass:EnumerationType,
- # TypeClass.NamedTypeReferenceClass:NamedTypeReferenceType,
+ TypeClass.StructureTypeClass: StructureType,
+ TypeClass.EnumerationTypeClass: EnumerationType,
+ TypeClass.NamedTypeReferenceClass: NamedTypeReferenceType,
}
return Types[self.type_class](self.finalized, self.platform, self.confidence)
@@ -1450,14 +1450,6 @@ class StructureBuilder(TypeBuilder):
assert type_builder_handle is not None, "core.BNCreateStructureTypeBuilderWithBuilder returned None"
return cls(type_builder_handle, structure_builder_handle, platform, confidence)
- def immutable_copy(self) -> 'StructureType':
- assert self.builder_handle is not None
- structure_handle = core.BNFinalizeStructureBuilder(self.builder_handle)
- assert structure_handle is not None, "core.BNFinalizeStructureBuilder returned None"
- handle = core.BNCreateStructureType(structure_handle)
- assert handle is not None, "core.BNCreateStructureType returned None"
- return StructureType(handle, self.platform, self.confidence)
-
@property
def members(self) -> List[StructureMember]:
"""Structure member list (read-only)"""
@@ -1683,14 +1675,6 @@ class EnumerationBuilder(TypeBuilder):
assert type_builder_handle is not None, "core.BNCreateEnumerationTypeBuilderWithBuilder returned None"
return cls(type_builder_handle, enum_builder_handle, platform, confidence)
- def immutable_copy(self) -> 'EnumerationType':
- enum_handle = core.BNFinalizeEnumerationBuilder(self.enum_builder_handle)
- assert enum_handle is not None, "core.BNFinalizeEnumerationBuilder returned None"
- _signed = BoolWithConfidence.get_core_struct(self.signed)
- handle = core.BNCreateEnumerationType(None, enum_handle, self.width, _signed)
- assert handle is not None, "core.BNCreateEnumerationType returned None"
- return EnumerationType(handle, self.platform, self.confidence)
-
@property
def members(self) -> List[EnumerationMember]:
"""Enumeration member list (read-only)"""
@@ -1808,17 +1792,6 @@ class NamedTypeReferenceBuilder(TypeBuilder):
assert type_builder_handle is not None, "core.BNCreateNamedTypeReferenceBuilderWithBuilder returned None"
return cls(type_builder_handle, ntr_builder_handle, platform, confidence)
- def immutable_copy(self) -> 'NamedTypeReferenceType':
- ntr_handle = core.BNFinalizeNamedTypeReferenceBuilder(self.ntr_builder_handle)
- assert ntr_handle is not None, "core.BNFinalizeEnumerationBuilder returned None"
-
- _const = BoolWithConfidence.get_core_struct(self.const)
- _volatile = BoolWithConfidence.get_core_struct(self.volatile)
-
- handle = core.BNCreateNamedTypeReference(ntr_handle, self.width, self.alignment, _const, _volatile)
- assert handle is not None, "core.BNCreateEnumerationType returned None"
- return NamedTypeReferenceType(handle, self.platform, self.confidence)
-
@property
def name(self) -> QualifiedName:
return QualifiedName._from_core_struct(core.BNGetTypeReferenceBuilderName(self.ntr_builder_handle))
@@ -2603,6 +2576,7 @@ class StructureType(Type):
assert structure_handle is not None, "core.BNGetTypeStructure returned None"
structure_builder_handle = core.BNCreateStructureBuilderFromStructure(structure_handle)
assert structure_builder_handle is not None, "core.BNCreateStructureBuilderFromStructure returned None"
+ core.BNSetStructureBuilder(type_builder_handle, structure_builder_handle)
return StructureBuilder(type_builder_handle, structure_builder_handle, self.platform, self.confidence)
@classmethod
@@ -2912,6 +2886,7 @@ class EnumerationType(IntegerType):
assert enumeration_handle is not None, "core.BNGetTypeEnumeration returned None"
enumeration_builder_handle = core.BNCreateEnumerationBuilderFromEnumeration(enumeration_handle)
assert enumeration_builder_handle is not None, "core.BNCreateEnumerationBuilderFromEnumeration returned None"
+ core.BNSetEnumerationBuilder(type_builder_handle, enumeration_builder_handle)
return EnumerationBuilder(type_builder_handle, enumeration_builder_handle, self.platform, self.confidence)
def generate_named_type_reference(self, guid: str, name: QualifiedNameType):
@@ -3253,6 +3228,7 @@ class NamedTypeReferenceType(Type):
self.named_type_class, self.type_id, self.name._to_core_struct()
)
assert ntr_builder_handle is not None, "core.BNCreateNamedTypeBuilder returned None"
+ core.BNSetNamedTypeReferenceBuilder(type_builder_handle, ntr_builder_handle)
return NamedTypeReferenceBuilder(type_builder_handle, ntr_builder_handle, self.platform, self.confidence)
@classmethod