summaryrefslogtreecommitdiff
path: root/plugins/pdb-ng/src/parser.rs
diff options
context:
space:
mode:
authorMason Reed <mason@vector35.com>2025-12-29 10:07:20 -0500
committerMason Reed <mason@vector35.com>2025-12-29 10:13:21 -0500
commit9dbc09db3ad16db41cddcd98258c00c829924270 (patch)
tree2b33a728adc9295aadb1507f2d66a5e2c3ad0e78 /plugins/pdb-ng/src/parser.rs
parentf80ecd096f75eb3f412e36219c5e83dc94dd4896 (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.rs16
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 {