diff options
| author | Glenn Smith <glenn@vector35.com> | 2022-04-06 15:32:20 -0400 |
|---|---|---|
| committer | Glenn Smith <glenn@vector35.com> | 2022-04-06 15:43:45 -0400 |
| commit | 5f32696a955fc2c80a799de4c3f74fc72e75d817 (patch) | |
| tree | 96446eaf3524f87fa3f8f340c845e189df0d03de | |
| parent | 73a14dc8b316c697eab1f8862126bad3302936ae (diff) | |
Test for fix for Vector35/arch-x86#29
| -rw-r--r-- | suite/testcommon.py | 22 |
1 files changed, 22 insertions, 0 deletions
diff --git a/suite/testcommon.py b/suite/testcommon.py index dec973cc..dda6f82b 100644 --- a/suite/testcommon.py +++ b/suite/testcommon.py @@ -1291,6 +1291,28 @@ class TestBuilder(Builder): self.delete_package("array_test.bndb") return fixOutput(sorted(retinfo)) + def test_x87_uniqueness(self): + """ + Verify fix for fmul: that different assembly strings do not disassemble the same + Vector35/arch-x86#29 + """ + pairs = [ + ("x86", "fadd st0, st1", "fadd st1, st0"), + ("x86", "fsub st0, st1", "fsub st1, st0"), + ("x86", "fsubr st0, st1", "fsubr st1, st0"), + ("x86", "fmul st0, st1", "fmul st1, st0"), + ("x86", "fdiv st0, st1", "fdiv st1, st0"), + ("x86", "fdivr st0, st1", "fdivr st1, st0"), + ] + for (arch, asm1, asm2) in pairs: + a = binja.Architecture[arch] + code1 = a.assemble(asm1) + code2 = a.assemble(asm2) + text1 = ''.join(str(t) for t in a.get_instruction_text(code1, 0)[0]) + text2 = ''.join(str(t) for t in a.get_instruction_text(code2, 0)[0]) + assert code1 != code2 + assert text1 != text2, f"{asm1} and {asm2} are different but both disassemble to {text1}" + class VerifyBuilder(Builder): """ The VerifyBuilder is for tests that verify |
