Hi,

On Sun, 17 May 2015, H.J. Lu wrote:

> To remove one direct branch to PLT for external function calls:
> 
> https://gcc.gnu.org/ml/gcc-patches/2015-05/msg00001.html
> 
> I am proposing to add 2 new relocations, R_X86_64_RELAX_PC32 and
> R_X86_64_RELAX_GOTPCREL:
> 
> 1. R_X86_64_RELAX_PC32 can only be used on 32-bit direct call/jmp
> instructions with a relax prefix, 0x67, which is the address size
> prefix and is ignored by 32-bit direct call/jmp instructions in both
> 32-bit and 64-bit modes.

Hmm, are we Really Sure, this use of a prefix doesn't hit us over the head 
somewhen?  Why can't we simply use a 0x90 nop for this?  After all, those 
are free in recent pipelines, and new enough binutils supporting this 
scheme will remove it anyway (in one direction), or are free to add any 
one byte padding they require (for direct jumps they can for instance add 
it _after_ the jump making it totally free).


Ciao,
Michael.

Reply via email to