This is the mail archive of the mailing list for the GCC 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: -fpatchable-function-entry: leverage multi-byte NOP on x86

On 1/4/20 9:48 PM, Fangrui Song wrote:
-fpatchable-function-entry is used by Linux kernel arm64/parisc. The
feature works for x86, but does not leverage multi-byte NOP.

% cat a.c
int foo() { return 0; }
% gcc -fpatchable-function-entry=5,0 -c a.c
% objdump -d a.o
0000000000000000 <foo>:
    0:   90                      nop
    1:   90                      nop
    2:   90                      nop
    3:   90                      nop
    4:   90                      nop
    5:   55                      push   %rbp
    6:   48 89 e5                mov    %rsp,%rbp
    9:   b8 00 00 00 00          mov    $0x0,%eax
    e:   5d                      pop    %rbp
    f:   c3                      retq

(I am not sure who should be notified. I CCed x86-64-port maintainer
(Jan Hubicka <>), as listed on gcc/MAINTAINERS.)


You are right, we do not leverage multi-byte NOPs. Note that the support depends
on a CPU model (-march) and the similar code is quite complex in binutils:;a=blob;f=gas/config/tc-i386.c;h=d0b8f2624a1885d83d2595474bfd78ae844f48f2;hb=HEAD#l1441

I'm not sure how worthy would it be to implement that?

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