mirror of
https://github.com/espressif/binutils-gdb.git
synced 2025-06-27 22:48:57 +08:00
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:

committed by
Nick Clifton

parent
77c365df78
commit
5f40e14d76
@ -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>
|
2015-08-21 Nick Clifton <nickc@redhat.com>
|
||||||
|
|
||||||
PR gas/18581
|
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]+: 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 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]+: 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
|
#pass
|
||||||
|
@ -698,3 +698,14 @@ fidivr dword ptr [ebx]
|
|||||||
cmovpo edx, 0x90909090[eax]
|
cmovpo edx, 0x90909090[eax]
|
||||||
cmovpe dx, 0x90909090[eax]
|
cmovpe dx, 0x90909090[eax]
|
||||||
cmovpo 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>
|
2015-08-21 Alexander Fomin <alexander.fomin@intel.com>
|
||||||
|
|
||||||
PR binutils/18257
|
PR binutils/18257
|
||||||
|
@ -13438,8 +13438,10 @@ print_insn (bfd_vma pc, disassemble_info *info)
|
|||||||
if (*codep == 0x0f)
|
if (*codep == 0x0f)
|
||||||
{
|
{
|
||||||
unsigned char threebyte;
|
unsigned char threebyte;
|
||||||
FETCH_DATA (info, codep + 2);
|
|
||||||
threebyte = *++codep;
|
codep++;
|
||||||
|
FETCH_DATA (info, codep + 1);
|
||||||
|
threebyte = *codep;
|
||||||
dp = &dis386_twobyte[threebyte];
|
dp = &dis386_twobyte[threebyte];
|
||||||
need_modrm = twobyte_has_modrm[*codep];
|
need_modrm = twobyte_has_modrm[*codep];
|
||||||
codep++;
|
codep++;
|
||||||
|
Reference in New Issue
Block a user