Properly check address mode for SIB
gas/testsuite/ * gas/i386/addr32.s: Add an SIB test. * gas/i386/addr32.d: Updated. opcodes/ * i386-dis.c (get_sib): Add the sizeflag argument. Properly check address mode. (print_insn): Pass sizeflag to get_sib.
This commit is contained in:
parent
ec21308c43
commit
55cf16e10c
5 changed files with 17 additions and 4 deletions
|
@ -1,3 +1,8 @@
|
|||
2013-03-27 H.J. Lu <hongjiu.lu@intel.com>
|
||||
|
||||
* gas/i386/addr32.s: Add an SIB test.
|
||||
* gas/i386/addr32.d: Updated.
|
||||
|
||||
2013-03-27 Alexis Deruelle <alexis.deruelle@gmail.com>
|
||||
|
||||
PR binutils/15068
|
||||
|
|
|
@ -12,4 +12,5 @@ Disassembly of section .text:
|
|||
[ ]*13:[ ]+67 a2 98 08 60 00[ ]+addr32[ ]+mov[ ]+%al,0x600898
|
||||
[ ]*19:[ ]+67 a3 98 08 60 00[ ]+addr32[ ]+mov[ ]+%ax,0x600898
|
||||
[ ]*1f:[ ]+67 66 a3 98 08 60 00[ ]+addr32[ ]+mov[ ]+%eax,0x600898
|
||||
[ ]*26:[ ]+67 66 c7 04 24 01 00 00 00[ ]+movl[ ]+\$0x1,\(%esp\)
|
||||
#pass
|
||||
|
|
|
@ -6,3 +6,4 @@
|
|||
addr32 mov %al,0x600898
|
||||
addr32 mov %ax,0x600898
|
||||
addr32 mov %eax,0x600898
|
||||
addr32 movl $0x1,(%esp)
|
||||
|
|
|
@ -1,3 +1,9 @@
|
|||
2013-03-27 H.J. Lu <hongjiu.lu@intel.com>
|
||||
|
||||
* i386-dis.c (get_sib): Add the sizeflag argument. Properly
|
||||
check address mode.
|
||||
(print_insn): Pass sizeflag to get_sib.
|
||||
|
||||
2013-03-27 Alexis Deruelle <alexis.deruelle@gmail.com>
|
||||
|
||||
PR binutils/15068
|
||||
|
|
|
@ -11285,11 +11285,11 @@ get_valid_dis386 (const struct dis386 *dp, disassemble_info *info)
|
|||
}
|
||||
|
||||
static void
|
||||
get_sib (disassemble_info *info)
|
||||
get_sib (disassemble_info *info, int sizeflag)
|
||||
{
|
||||
/* If modrm.mod == 3, operand must be register. */
|
||||
if (need_modrm
|
||||
&& address_mode != mode_16bit
|
||||
&& ((sizeflag & AFLAG) || address_mode == mode_64bit)
|
||||
&& modrm.mod != 3
|
||||
&& modrm.rm == 4)
|
||||
{
|
||||
|
@ -11574,7 +11574,7 @@ print_insn (bfd_vma pc, disassemble_info *info)
|
|||
|
||||
if (dp->name == NULL && dp->op[0].bytemode == FLOATCODE)
|
||||
{
|
||||
get_sib (info);
|
||||
get_sib (info, sizeflag);
|
||||
dofloat (sizeflag);
|
||||
}
|
||||
else
|
||||
|
@ -11582,7 +11582,7 @@ print_insn (bfd_vma pc, disassemble_info *info)
|
|||
dp = get_valid_dis386 (dp, info);
|
||||
if (dp != NULL && putop (dp->name, sizeflag) == 0)
|
||||
{
|
||||
get_sib (info);
|
||||
get_sib (info, sizeflag);
|
||||
for (i = 0; i < MAX_OPERANDS; ++i)
|
||||
{
|
||||
obufp = op_out[i];
|
||||
|
|
Loading…
Reference in a new issue