From 41cd5cceeab0dae2da4bad0a778b590c4f556d97 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?L=C3=A9o=20Lam?= Date: Sun, 1 Nov 2020 16:57:58 +0100 Subject: [PATCH] tools/check: Fix adrp_pair_registers not being updated for identical instructions --- ...4ksys3res11DamageParam10DamageSize5text_Ei.bin | Bin 416 -> 0 bytes ...sys3res11DamageParam12DamageSource5text_Ei.bin | Bin 404 -> 0 bytes tools/check.py | 14 ++++++++++++++ 3 files changed, 14 insertions(+) delete mode 100644 expected/_ZN4ksys3res11DamageParam10DamageSize5text_Ei.bin delete mode 100644 expected/_ZN4ksys3res11DamageParam12DamageSource5text_Ei.bin diff --git a/expected/_ZN4ksys3res11DamageParam10DamageSize5text_Ei.bin b/expected/_ZN4ksys3res11DamageParam10DamageSize5text_Ei.bin deleted file mode 100644 index 9520df422f9b87b87ebf6c1ec6a5ff1472d3451e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 416 zcmXYuJ4gdT6h+_c7aNc_~&tVie`*~zLGR#(1 zZGBjV>4F5Wtf+}E^pwJLytod$LVYG%1YVc`qb3gq3O$hD&e(d>JEDn)R#nsqTuhC( zbH{frxnFQ5ZYad=@V?0Tve+VOsD^wJ@-a7XC9xBXlfI-%Am%6Gw`b&62+KxXYRJ)_ z?B5u3LAT?_J*C*A<`oyL`H4HpE;IeU1NGzy-y9ihM?SAvMaC><$nVYsn_PREa9HY? z!^t_BkVP_T>z{beVXiYt6|6%Q&MuIJ(kW)}9s#e?p@5^^VsBmwIQN*^e|J#cw;HKs V?0*UWA#7OjMMKCd)(wr9{s7H~qRs#S diff --git a/expected/_ZN4ksys3res11DamageParam12DamageSource5text_Ei.bin b/expected/_ZN4ksys3res11DamageParam12DamageSource5text_Ei.bin deleted file mode 100644 index 590639447cebe57b7cdcb611cfbc67a1ffe12ce1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 404 zcmX9*J4ixN82-<>nCB`DMM<<+LsEB+9#C{Np>U~0u+3=Fnxd_U9u)LgIyBt5&3hrJ zK}hH!)Syi*2~BB})>5SAp}h6q8qfDQ=li}>k6jqGC^0Hi)M%_KM&ky=hXUHV50(-D zk%HniqX2E66z)H_Mn%cR<)jNzOS_g{QNYx$E&UHuAyt?M!M>kZ+zEp#)0W=lg#Ijr zHI4JOL1vuDPs@2XYZy{ zI;JeWisuyeN>b#TxwO4N#`4G5p-PDekd3g7&EZ~E7a-qe7O(y{gU981V|5(258xm8 Mje6`hnNec-Uz*RLDgXcg diff --git a/tools/check.py b/tools/check.py index cf432319..542a244a 100755 --- a/tools/check.py +++ b/tools/check.py @@ -54,6 +54,20 @@ def check_function_ex(addr: int, size: int, base_fn: bytes, my_fn: bytes) -> boo for i1, i2 in zip(md.disasm(base_fn, addr), md.disasm(my_fn, addr)): if i1.bytes == i2.bytes: + if i1.mnemonic == 'adrp': + adrp_pair_registers.add(i1.operands[0].reg) + elif i1.mnemonic == 'ldr': + reg = i1.operands[1].value.mem.base + if reg in adrp_pair_registers: + adrp_pair_registers.remove(reg) + elif i1.mnemonic == 'ldp': + reg = i1.operands[2].value.mem.base + if reg in adrp_pair_registers: + adrp_pair_registers.remove(reg) + elif i1.mnemonic == 'add': + reg = i1.operands[1].reg + if reg in adrp_pair_registers: + adrp_pair_registers.remove(reg) continue if i1.mnemonic != i2.mnemonic: