From eb0d736eb83d8b4e91d99cf68c614cda86f572bb Mon Sep 17 00:00:00 2001 From: jonschz Date: Sat, 8 Jun 2024 12:51:58 +0200 Subject: [PATCH] refactor: db access from pdb_extraction.py --- tools/ghidra_scripts/lego_util/pdb_extraction.py | 2 +- tools/isledecomp/isledecomp/compare/core.py | 10 ++++------ 2 files changed, 5 insertions(+), 7 deletions(-) diff --git a/tools/ghidra_scripts/lego_util/pdb_extraction.py b/tools/ghidra_scripts/lego_util/pdb_extraction.py index 80e71303..6e5dae12 100644 --- a/tools/ghidra_scripts/lego_util/pdb_extraction.py +++ b/tools/ghidra_scripts/lego_util/pdb_extraction.py @@ -126,7 +126,7 @@ def handle_matched_function( self, match_info: MatchInfo ) -> Optional[tuple[MatchInfo, FunctionSignature]]: assert match_info.orig_addr is not None - match_options = self.compare.db.get_match_options(match_info.orig_addr) + match_options = self.compare.get_match_options(match_info.orig_addr) assert match_options is not None if match_options.get("skip", False) or match_options.get("stub", False): return None diff --git a/tools/isledecomp/isledecomp/compare/core.py b/tools/isledecomp/isledecomp/compare/core.py index 70b2af9c..b065e044 100644 --- a/tools/isledecomp/isledecomp/compare/core.py +++ b/tools/isledecomp/isledecomp/compare/core.py @@ -4,7 +4,7 @@ import struct import uuid from dataclasses import dataclass -from typing import Callable, Iterable, List, Optional +from typing import Any, Callable, Iterable, List, Optional from isledecomp.bin import Bin as IsleBin, InvalidVirtualAddressError from isledecomp.cvdump.demangler import demangle_string_const from isledecomp.cvdump import Cvdump, CvdumpAnalysis @@ -88,11 +88,6 @@ def __init__( self._match_thunks() self._find_vtordisp() - @property - def db(self): - """Newer code needs to access this field, legacy code uses _db""" - return self._db - def _load_cvdump(self): logger.info("Parsing %s ...", self.pdb_file) self.cv = ( @@ -745,6 +740,9 @@ def get_vtables(self) -> List[MatchInfo]: def get_variables(self) -> List[MatchInfo]: return self._db.get_matches_by_type(SymbolType.DATA) + def get_match_options(self, addr: int) -> Optional[dict[str, Any]]: + return self._db.get_match_options(addr) + def compare_address(self, addr: int) -> Optional[DiffReport]: match = self._db.get_one_match(addr) if match is None: