This is the mail archive of the
mailing list for the binutils project.
Re: [committed, PATCH] PR binutis/18386: callw with 0x66 prefix incorrectly disassembled in 64-bit mode
- From: "Jan Beulich" <JBeulich at suse dot com>
- To: "H.J. Lu" <hjl dot tools at gmail dot com>
- Cc: <binutils at sourceware dot org>
- Date: Mon, 11 May 2015 08:28:50 +0100
- Subject: Re: [committed, PATCH] PR binutis/18386: callw with 0x66 prefix incorrectly disassembled in 64-bit mode
- Authentication-results: sourceware.org; auth=none
- References: <20150509135213 dot GA720 at gmail dot com>
>>> On 09.05.15 at 15:52, <firstname.lastname@example.org> wrote:
> The operand size prefix (0x66) is ignored for 32-bit PC-relative call,
> jmp and jcc in 64-bit mode.
Now that's again a change that should have been discussed
before committing: While it is correct for the Intel implementation
of x86-64, it isn't for AMD's original (and I'd tend to say that the
latter is more correct, since afaik there's nowhere that exceptions
are being made for the meaning of the operand size prefix).
Apart from that I find it odd that you mention only 32-bit PC-relative
branches when the same behavioral difference also applies to 8-bit
displacement ones as well as near branches to absolute addresses
(including returns). And of course there are more differences
elsewhere. Perhaps this should be hidden behind an option to
select the flavor, defaulting (imo) to the original AMD behavior.