Fix the partial disassembly of a broken three byte instruction at the end of a function.
opcodes * i386-dis.c (print_insn): Fix decoding of three byte operands. tests * gas/i386/intel.s: Add test of disassembly of a potential three byte instuction at the end of a function. * gas/i386/intel.d: Update expected disassembly.
This commit is contained in:
parent
77c365df78
commit
5f40e14d76
5 changed files with 29 additions and 2 deletions
|
@ -1,3 +1,9 @@
|
|||
2015-08-24 Jan Stancek <jstancek@redhat.com>
|
||||
|
||||
* gas/i386/intel.s: Add test of disassembly of a potential
|
||||
three byte instuction at the end of a function.
|
||||
* gas/i386/intel.d: Update expected disassembly.
|
||||
|
||||
2015-08-21 Nick Clifton <nickc@redhat.com>
|
||||
|
||||
PR gas/18581
|
||||
|
|
|
@ -698,4 +698,8 @@ Disassembly of section .text:
|
|||
[ ]*[a-f0-9]+: 0f 4b 90 90 90 90 90 cmovnp -0x6f6f6f70\(%eax\),%edx
|
||||
[ ]*[a-f0-9]+: 66 0f 4a 90 90 90 90 90 cmovp -0x6f6f6f70\(%eax\),%dx
|
||||
[ ]*[a-f0-9]+: 66 0f 4b 90 90 90 90 90 cmovnp -0x6f6f6f70\(%eax\),%dx
|
||||
[ ]*[a-f0-9]+: 24 2f and \$0x2f,%al
|
||||
[ ]*[a-f0-9]+: 0f \.byte 0xf
|
||||
[a-f0-9]+ <barn>:
|
||||
[ ]*[a-f0-9]+: 0f ba e2 03 bt \$0x3,%edx
|
||||
#pass
|
||||
|
|
|
@ -698,3 +698,14 @@ fidivr dword ptr [ebx]
|
|||
cmovpo edx, 0x90909090[eax]
|
||||
cmovpe dx, 0x90909090[eax]
|
||||
cmovpo dx, 0x90909090[eax]
|
||||
|
||||
# Test that disassembly of a partial instruction shows the partial byte:
|
||||
# https://www.sourceware.org/ml/binutils/2015-08/msg00226.html
|
||||
.byte 0x24
|
||||
.byte 0x2f
|
||||
.byte 0x0f
|
||||
barn:
|
||||
.byte 0x0f
|
||||
.byte 0xba
|
||||
.byte 0xe2
|
||||
.byte 0x03
|
||||
|
|
|
@ -1,3 +1,7 @@
|
|||
2015-08-24 Jan Stancek <jstancek@redhat.com>
|
||||
|
||||
* i386-dis.c (print_insn): Fix decoding of three byte operands.
|
||||
|
||||
2015-08-21 Alexander Fomin <alexander.fomin@intel.com>
|
||||
|
||||
PR binutils/18257
|
||||
|
|
|
@ -13438,8 +13438,10 @@ print_insn (bfd_vma pc, disassemble_info *info)
|
|||
if (*codep == 0x0f)
|
||||
{
|
||||
unsigned char threebyte;
|
||||
FETCH_DATA (info, codep + 2);
|
||||
threebyte = *++codep;
|
||||
|
||||
codep++;
|
||||
FETCH_DATA (info, codep + 1);
|
||||
threebyte = *codep;
|
||||
dp = &dis386_twobyte[threebyte];
|
||||
need_modrm = twobyte_has_modrm[*codep];
|
||||
codep++;
|
||||
|
|
Loading…
Add table
Reference in a new issue