On x86_64 the 0x90 opcode can be prefixed with a rexB prefix allowing it to
access the extended register r8 (see AMD64 V3, pg. 289 and 378). However,
objdump incorrectly displays this as a prefixed nop:
11: 41 90 rexZ nop
This should read:
11: 41 90 xchg %r8, %rax
If prefixed with 0x66 as well 0x41, then the instruction is accessing the word
register r8w. Again, objdump displays:
11: 66 data16
12: 41 90 rexZ nop
instead of:
11: 66 41 90 xchg %r8w, %ax
Other xchg opcodes 0x91-0x97 do not appear to be affected, so this is probably
a bug related to the processor's special handling of 0x90 (e.g. no zero
extension of the 64-bit registers for 0x90 to ensure a nop).
--
Summary: objdump on AMD64 fails to decode prefixed 0x90 opcode
properly.
Product: binutils
Version: 2.17
Status: NEW
Severity: normal
Priority: P2
Component: binutils
AssignedTo: unassigned at sources dot redhat dot com
ReportedBy: fruffell at cs dot uwaterloo dot ca
CC: bug-binutils at gnu dot org
GCC build triplet: x86_64-linux-gnu
GCC host triplet: x86_64-linux-gnu
GCC target triplet: x86_64-linux-gnu
http://sourceware.org/bugzilla/show_bug.cgi?id=4218
------- You are receiving this mail because: -------
You are on the CC list for the bug, or are watching someone who is.
_______________________________________________
bug-binutils mailing list
[email protected]
http://lists.gnu.org/mailman/listinfo/bug-binutils