2014-02-21 03:43:48

by H. Peter Anvin

[permalink] [raw]
Subject: Re: "m" constraints, jumps, and alternatives

On 02/20/2014 07:30 PM, Brian Gerst wrote:
> The percpu code uses %P to force absolute addressing mode, instead of
> rip-relative.

P -- if PIC, print an @PLT suffix.

Clearly it has more effects than that... as the code does reveal:

/* Avoid (%rip) for call operands. */
if (CONSTANT_ADDRESS_P (x) && code == 'P'
&& !CONST_INT_P (x))

That should work... in the probably extremely rare case that any of
these references go to global addresses then they spend an extra byte
(and a little more work during kASLR relocation or module insertion).