From: Peter Johnson Date: Fri, 8 Nov 2002 08:48:30 +0000 (-0000) Subject: Fix typo/bug in handling of OPA_AdSizeR (using wrong insn_info *). X-Git-Tag: v0.2.0~52 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=0975ab9dc1efe4b9f24b0d2c34791ddd3e5218eb;p=yasm Fix typo/bug in handling of OPA_AdSizeR (using wrong insn_info *). svn path=/trunk/yasm/; revision=805 --- diff --git a/modules/arch/x86/tests/loopadsz.asm b/modules/arch/x86/tests/loopadsz.asm new file mode 100644 index 00000000..4d344fd9 --- /dev/null +++ b/modules/arch/x86/tests/loopadsz.asm @@ -0,0 +1,7 @@ +[bits 16] +foo: a32 loop foo ; 67 E2 FE +bar: loop bar, ecx ; 67 E2 FD + +[bits 32] +baz: a16 loop baz ; 67 E2 FE +qux: loop qux, cx ; 67 E2 FD diff --git a/modules/arch/x86/tests/loopadsz.errwarn b/modules/arch/x86/tests/loopadsz.errwarn new file mode 100644 index 00000000..e69de29b diff --git a/modules/arch/x86/tests/loopadsz.hex b/modules/arch/x86/tests/loopadsz.hex new file mode 100644 index 00000000..b47e4711 --- /dev/null +++ b/modules/arch/x86/tests/loopadsz.hex @@ -0,0 +1,12 @@ +67 +e2 +fd +67 +e2 +fd +67 +e2 +fd +67 +e2 +fd diff --git a/modules/arch/x86/x86id.re b/modules/arch/x86/x86id.re index b57ea32a..12a9cfd3 100644 --- a/modules/arch/x86/x86id.re +++ b/modules/arch/x86/x86id.re @@ -1345,7 +1345,7 @@ x86_new_jmprel(const unsigned long data[4], int num_operands, /* Check for address size setting in second operand, if present */ if (jrinfo->num_operands > 1 && (jrinfo->operands[1] & OPA_MASK) == OPA_AdSizeR) - d.addrsize = (unsigned char)size_lookup[(info->operands[1] & + d.addrsize = (unsigned char)size_lookup[(jrinfo->operands[1] & OPS_MASK)>>OPS_SHIFT]; else d.addrsize = 0; diff --git a/src/arch/x86/tests/loopadsz.asm b/src/arch/x86/tests/loopadsz.asm new file mode 100644 index 00000000..4d344fd9 --- /dev/null +++ b/src/arch/x86/tests/loopadsz.asm @@ -0,0 +1,7 @@ +[bits 16] +foo: a32 loop foo ; 67 E2 FE +bar: loop bar, ecx ; 67 E2 FD + +[bits 32] +baz: a16 loop baz ; 67 E2 FE +qux: loop qux, cx ; 67 E2 FD diff --git a/src/arch/x86/tests/loopadsz.errwarn b/src/arch/x86/tests/loopadsz.errwarn new file mode 100644 index 00000000..e69de29b diff --git a/src/arch/x86/tests/loopadsz.hex b/src/arch/x86/tests/loopadsz.hex new file mode 100644 index 00000000..b47e4711 --- /dev/null +++ b/src/arch/x86/tests/loopadsz.hex @@ -0,0 +1,12 @@ +67 +e2 +fd +67 +e2 +fd +67 +e2 +fd +67 +e2 +fd diff --git a/src/arch/x86/x86id.re b/src/arch/x86/x86id.re index b57ea32a..12a9cfd3 100644 --- a/src/arch/x86/x86id.re +++ b/src/arch/x86/x86id.re @@ -1345,7 +1345,7 @@ x86_new_jmprel(const unsigned long data[4], int num_operands, /* Check for address size setting in second operand, if present */ if (jrinfo->num_operands > 1 && (jrinfo->operands[1] & OPA_MASK) == OPA_AdSizeR) - d.addrsize = (unsigned char)size_lookup[(info->operands[1] & + d.addrsize = (unsigned char)size_lookup[(jrinfo->operands[1] & OPS_MASK)>>OPS_SHIFT]; else d.addrsize = 0;