This is the mail archive of the binutils@sourceware.org mailing list for the binutils project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [committed, PATCH] Remove Disp16|Disp32 from 64-bit direct branches


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.

  Maciej


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]