mirror of
https://github.com/zeldaret/botw
synced 2026-06-25 17:24:37 -04:00
Check for non-matching functions that now match
This commit is contained in:
@@ -485,7 +485,7 @@
|
||||
0x000000710001257c,nullsub_45,4,
|
||||
0x0000007100012580,_ZNK4sead15RuntimeTypeInfo6DeriveINS_13TaskParameterEE9isDerivedEPKNS0_9InterfaceE,140,
|
||||
0x000000710001260c,j__ZdlPv_6,4,
|
||||
0x0000007100012610,_ZNK4sead14SafeStringBaseIcE9findIndexERKS1_,468,_ZNK4sead14SafeStringBaseIcE9findIndexERKS1_?
|
||||
0x0000007100012610,_ZNK4sead14SafeStringBaseIcE9findIndexERKS1_,468,_ZNK4sead14SafeStringBaseIcE9findIndexERKS1_
|
||||
0x00000071000127e4,_ZN4sead18Matrix34CalcCommonIfE7inverseERNS_9BaseMtx34IfEERKS3_,336,
|
||||
0x0000007100012934,j__ZdlPv_7,4,
|
||||
0x0000007100012938,_ZN4sead19FixedSafeStringBaseIcLi80EEaSERKNS_14SafeStringBaseIcEE,240,
|
||||
@@ -6542,7 +6542,7 @@
|
||||
0x000000710011d8d8,AI_Action_EventOpenMessageTips::init,8,
|
||||
0x000000710011d8e0,AI_Action_EventOpenMessageTips::enter,32,
|
||||
0x000000710011d900,AI_Action_EventOpenMessageTips::calc,604,
|
||||
0x000000710011db5c,_ZNK4sead14SafeStringBaseIcE10rfindIndexERKS1_,460,_ZNK4sead14SafeStringBaseIcE10rfindIndexERKS1_?
|
||||
0x000000710011db5c,_ZNK4sead14SafeStringBaseIcE10rfindIndexERKS1_,460,_ZNK4sead14SafeStringBaseIcE10rfindIndexERKS1_
|
||||
0x000000710011dd28,AI_Action_EventOpenMessageTips::leave,4,
|
||||
0x000000710011dd2c,AI_Action_EventOpenMessageTips::loadParams,164,
|
||||
0x000000710011ddd0,AI_Action_EventOpenMessageTips::rtti1,288,
|
||||
@@ -62225,8 +62225,8 @@
|
||||
0x0000007100b19370,_ZN4sead14DelegateThread5calc_El,32,_ZN4sead14DelegateThread5calc_El
|
||||
0x0000007100b19390,_ZN4sead13ReadWriteLockC2Ev,84,_ZN4sead13ReadWriteLockC1Ev
|
||||
0x0000007100b193e4,sead::ReadWriteLock::dtor,40,_ZN4sead13ReadWriteLockD1Ev
|
||||
0x0000007100b1940c,_ZN4sead13ReadWriteLock8readLockEv,168,_ZN4sead13ReadWriteLock8readLockEv?
|
||||
0x0000007100b194b4,_ZN4sead13ReadWriteLock10readUnlockEv,64,_ZN4sead13ReadWriteLock10readUnlockEv?
|
||||
0x0000007100b1940c,_ZN4sead13ReadWriteLock8readLockEv,168,_ZN4sead13ReadWriteLock8readLockEv
|
||||
0x0000007100b194b4,_ZN4sead13ReadWriteLock10readUnlockEv,64,_ZN4sead13ReadWriteLock10readUnlockEv
|
||||
0x0000007100b194f4,_ZN4sead13ReadWriteLock9writeLockEv,168,_ZN4sead13ReadWriteLock9writeLockEv
|
||||
0x0000007100b1959c,_ZN4sead13ReadWriteLock11writeUnlockEv,200,_ZN4sead13ReadWriteLock11writeUnlockEv?
|
||||
0x0000007100b19664,sead::SpinLock::ctor,12,_ZN4sead8SpinLockC1Ev
|
||||
|
||||
|
Can't render this file because it is too large.
|
+14
-7
@@ -50,14 +50,10 @@ def check_function(addr: int, size: int, name: str) -> bool:
|
||||
try:
|
||||
base_fn = get_fn_from_base_elf(addr, size)
|
||||
except KeyError:
|
||||
utils.print_error(f"couldn't find base function 0x{addr:016x} for {name}")
|
||||
utils.print_error(f"couldn't find base function 0x{addr:016x} for {utils.format_symbol_name_for_msg(name)}")
|
||||
return False
|
||||
|
||||
try:
|
||||
my_fn = get_fn_from_my_elf(name, size)
|
||||
except KeyError:
|
||||
utils.warn(f"couldn't find decompiled function {name}")
|
||||
return True
|
||||
my_fn = get_fn_from_my_elf(name, size)
|
||||
|
||||
md = cs.Cs(cs.CS_ARCH_ARM64, cs.CS_MODE_ARM)
|
||||
md.detail = True
|
||||
@@ -133,10 +129,21 @@ def main() -> None:
|
||||
if not func.decomp_name:
|
||||
continue
|
||||
|
||||
try:
|
||||
get_fn_from_my_elf(func.decomp_name, 0)
|
||||
except KeyError:
|
||||
utils.warn(f"couldn't find {utils.format_symbol_name_for_msg(func.decomp_name)}")
|
||||
continue
|
||||
|
||||
if func.status == utils.FunctionStatus.Matching:
|
||||
if not check_function(func.addr, func.size, func.decomp_name):
|
||||
utils.print_error(f"{func.decomp_name} was marked as matching but does not match")
|
||||
utils.print_error(
|
||||
f"function {utils.format_symbol_name_for_msg(func.decomp_name)} is marked as matching but does not match")
|
||||
failed = True
|
||||
elif func.status == utils.FunctionStatus.Equivalent or func.status == utils.FunctionStatus.NonMatching:
|
||||
if check_function(func.addr, func.size, func.decomp_name):
|
||||
utils.print_note(
|
||||
f"function {utils.format_symbol_name_for_msg(func.decomp_name)} is marked as non-matching but matches")
|
||||
|
||||
if failed:
|
||||
sys.exit(1)
|
||||
|
||||
+17
-6
@@ -60,18 +60,29 @@ def format_symbol_name(name: str) -> str:
|
||||
return name
|
||||
|
||||
|
||||
def format_symbol_name_for_msg(name: str) -> str:
|
||||
try:
|
||||
return f"{Fore.BLUE}{cxxfilt.demangle(name)}{Fore.RESET} {Style.DIM}({name}){Style.RESET_ALL}{Style.BRIGHT}"
|
||||
except:
|
||||
return name
|
||||
|
||||
|
||||
def are_demangled_names_equal(name1: str, name2: str):
|
||||
return cxxfilt.demangle(name1) == cxxfilt.demangle(name2)
|
||||
|
||||
|
||||
def warn(msg: str):
|
||||
sys.stderr.write(f"{Fore.MAGENTA}{Style.BRIGHT}warning:{Fore.RESET} {msg}{Style.RESET_ALL}\n")
|
||||
def print_note(msg: str, prefix: str = ""):
|
||||
sys.stderr.write(f"{Style.BRIGHT}{prefix}{Fore.CYAN}note:{Fore.RESET} {msg}{Style.RESET_ALL}\n")
|
||||
|
||||
|
||||
def print_error(msg: str):
|
||||
sys.stderr.write(f"{Fore.RED}{Style.BRIGHT}error:{Fore.RESET} {msg}{Style.RESET_ALL}\n")
|
||||
def warn(msg: str, prefix: str = ""):
|
||||
sys.stderr.write(f"{Style.BRIGHT}{prefix}{Fore.MAGENTA}warning:{Fore.RESET} {msg}{Style.RESET_ALL}\n")
|
||||
|
||||
|
||||
def fail(msg: str):
|
||||
print_error(msg)
|
||||
def print_error(msg: str, prefix: str = ""):
|
||||
sys.stderr.write(f"{Style.BRIGHT}{prefix}{Fore.RED}error:{Fore.RESET} {msg}{Style.RESET_ALL}\n")
|
||||
|
||||
|
||||
def fail(msg: str, prefix: str = ""):
|
||||
print_error(msg, prefix)
|
||||
sys.exit(1)
|
||||
|
||||
Reference in New Issue
Block a user