From 9dbc09db3ad16db41cddcd98258c00c829924270 Mon Sep 17 00:00:00 2001 From: Mason Reed Date: Mon, 29 Dec 2025 10:07:20 -0500 Subject: [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. --- plugins/pdb-ng/src/parser.rs | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) (limited to 'plugins/pdb-ng/src/parser.rs') 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, /// QName -> Binja Type for finished types - pub(crate) named_types: BTreeMap>, + pub(crate) named_types: BTreeMap>, /// Raw (mangled) name -> TypeIndex for resolving forward references pub(crate) full_type_indices: BTreeMap, /// Stack of types we're currently parsing pub(crate) type_stack: Vec, /// Stack of parent types we're parsing nested types inside of - pub(crate) namespace_stack: QualifiedName, + pub(crate) namespace_stack: Vec, /// Type Index -> Does it return on the stack pub(crate) type_default_returnable: BTreeMap, @@ -291,9 +291,9 @@ impl<'a, S: Source<'a> + 'a> PDBParserInstance<'a, S> { fn collect_name( &self, name: &NamedTypeReference, - unknown_names: &mut HashMap, + unknown_names: &mut HashMap, ) { - 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, + unknown_names: &mut HashMap, ) { 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::>(); for ty in &self.named_types { -- cgit v1.3.1