Another x86_64 disassembler crash

Jan Beulich JBeulich@novell.com
Thu Dec 8 15:18:00 GMT 2005


>> >and
>> >
>> >-ffffffff805be630:      43 17                   rexYZ popq   %dl
>> >+ffffffff805be630:      43 17                   rexYZ popq  
%bp,%si
>> 
>> This one I can't explain at all. Opcode 0x17 is invalid in 64-bit
mode,
>> and clearly marked as such in the tables. Whatever binutils version
I
>> use, I get "rexYZ (bad)" as expected.
>> 
>> Bottom line is, more context might be needed to understand why
things
>> are going wrong...
>
>This should (*crosses fingers*) be trivially easy to reproduce.  Take
>any Linux kernel image, build binutils with --target=x86_64-linux
using
>both 32-bit and 64-bit compilers, feed the kernel through both
objdumps
>with -D, and diff the output.

I did this (actually also with -j .data or -j .rodata), and neither 32-
nor 64-bit compiled objdump ever decoded a pop with a byte operand or
with two operands. Also, with the buffer overflow fixed I don't get any
relevant differences between the two disassemblys anymore.

Jan



More information about the Binutils mailing list