[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