diff options
| author | Mason Reed <mason@vector35.com> | 2025-12-29 10:07:20 -0500 |
|---|---|---|
| committer | Mason Reed <mason@vector35.com> | 2025-12-29 10:13:21 -0500 |
| commit | 9dbc09db3ad16db41cddcd98258c00c829924270 (patch) | |
| tree | 2b33a728adc9295aadb1507f2d66a5e2c3ad0e78 /plugins/pdb-ng/src/parser.rs | |
| parent | f80ecd096f75eb3f412e36219c5e83dc94dd4896 (diff) | |
[PDB] Remove `QualifiedName` state
Apart of fixes for https://github.com/Vector35/binaryninja-api/issues/7827
This also makes vtable type names refer to base class vtable type name, this was the original behavior, but it should be revisited later.
Diffstat (limited to 'plugins/pdb-ng/src/parser.rs')
| -rw-r--r-- | plugins/pdb-ng/src/parser.rs | 16 |
1 files changed, 8 insertions, 8 deletions
diff --git a/plugins/pdb-ng/src/parser.rs b/plugins/pdb-ng/src/parser.rs index 2ca8e209..defdedd6 100644 --- a/plugins/pdb-ng/src/parser.rs +++ b/plugins/pdb-ng/src/parser.rs @@ -32,8 +32,8 @@ use binaryninja::platform::Platform; use binaryninja::rc::Ref; use binaryninja::settings::{QueryOptions, Settings}; use binaryninja::types::{ - EnumerationBuilder, NamedTypeReference, NamedTypeReferenceClass, QualifiedName, - StructureBuilder, StructureType, Type, TypeClass, + EnumerationBuilder, NamedTypeReference, NamedTypeReferenceClass, StructureBuilder, + StructureType, Type, TypeClass, }; use binaryninja::variable::NamedDataVariableWithType; @@ -69,13 +69,13 @@ pub struct PDBParserInstance<'a, S: Source<'a> + 'a> { /// TypeIndex -> ParsedType enum used during parsing pub(crate) indexed_types: BTreeMap<TypeIndex, ParsedType>, /// QName -> Binja Type for finished types - pub(crate) named_types: BTreeMap<QualifiedName, Ref<Type>>, + pub(crate) named_types: BTreeMap<String, Ref<Type>>, /// Raw (mangled) name -> TypeIndex for resolving forward references pub(crate) full_type_indices: BTreeMap<String, TypeIndex>, /// Stack of types we're currently parsing pub(crate) type_stack: Vec<TypeIndex>, /// Stack of parent types we're parsing nested types inside of - pub(crate) namespace_stack: QualifiedName, + pub(crate) namespace_stack: Vec<String>, /// Type Index -> Does it return on the stack pub(crate) type_default_returnable: BTreeMap<TypeIndex, bool>, @@ -291,9 +291,9 @@ impl<'a, S: Source<'a> + 'a> PDBParserInstance<'a, S> { fn collect_name( &self, name: &NamedTypeReference, - unknown_names: &mut HashMap<QualifiedName, NamedTypeReferenceClass>, + unknown_names: &mut HashMap<String, NamedTypeReferenceClass>, ) { - let used_name = name.name(); + let used_name = name.name().to_string(); if let Some(&found) = unknown_names.get(&used_name) { if found != name.class() { // Interesting case, not sure we care @@ -314,7 +314,7 @@ impl<'a, S: Source<'a> + 'a> PDBParserInstance<'a, S> { fn collect_names( &self, ty: &Type, - unknown_names: &mut HashMap<QualifiedName, NamedTypeReferenceClass>, + unknown_names: &mut HashMap<String, NamedTypeReferenceClass>, ) { match ty.type_class() { TypeClass::StructureTypeClass => { @@ -366,7 +366,7 @@ impl<'a, S: Source<'a> + 'a> PDBParserInstance<'a, S> { .bv .types() .iter() - .map(|qnat| qnat.name) + .map(|qnat| qnat.name.to_string()) .collect::<HashSet<_>>(); for ty in &self.named_types { |
