[committed, PATCH] Remove Disp16|Disp32 from 64-bit direct branches
H.J. Lu
hjl.tools@gmail.com
Wed May 13 16:53:00 GMT 2015
On Wed, May 13, 2015 at 9:50 AM, Maciej W. Rozycki <macro@linux-mips.org> wrote:
> On Wed, 13 May 2015, H.J. Lu wrote:
>
>> >> > Well, what do you suggest? Your change is clearly wrong as well.
>> >>
>> >> I won't call it wrong since it implies there is a right.
>> >
>> > Of course there is a right. The x86-64 specification is quite clear what
>> > happens with the prefix on jumps. Intel CPUs are simply buggy in not
>> > implementing it. And you're making binutils follow that buggy behaviour.
>>
>> AMD64 and Intel64 differ in some subtle ways.
>>
>> > And that is wrong. The associated bug report is invalid.
>>
>> How about this
>>
>> 1. Add flavors of AMD64 and Intel64 to assembler. Make the most
>> permissive one as the default. In case of call/jmp, the default will
>> take AMD64.
>> 2. Add -Mintel64/-Mamd64 to objdump, Make the most permissive
>> ones the default.
>
> FWIW I think this will be the right direction, though the exact options
> may have to be discussed yet.
>
> The assembler is a tool, it should not be forcing a use policy upon
> users. Therefore it should allow whatever is encodable given the
> instruction set definition and let users decide themselves how to use
> it, whether implementations follow the rules or not.
>
> And then if you want to add safety traps such as for this difference
> between individual model implementations, then wire them to `-march=' or
> suchlike.
Thanks for your feedbacks. I am waiting for feedbacks from Jan and
Michael before I start investigation.
--
H.J.
More information about the Binutils
mailing list