On Wed, May 8, 2024 at 1:33 AM Kewen.Lin <li...@linux.ibm.com> wrote: > > Hi Richi, > > >> diff --git a/gcc/doc/invoke.texi b/gcc/doc/invoke.texi > >> index c584664e168..58e48f7dc55 100644 > >> --- a/gcc/doc/invoke.texi > >> +++ b/gcc/doc/invoke.texi > >> @@ -18363,11 +18363,11 @@ If @code{N=0}, no pad location is recorded. > >> The NOP instructions are inserted at---and maybe before, depending on > >> @var{M}---the function entry address, even before the prologue. On > >> PowerPC with the ELFv2 ABI, for a function with dual entry points, > >> -the local entry point is this function entry address. > >> +@var{M} NOP instructions are inserted before the global entry point and > >> +@var{N} - @var{M} NOP instructions are inserted after the local entry > >> +point, which means the NOP instructions may not be consecutive. > > > > Isn't it @var{M-1} NOP instructions before the global entry? I suppose > > No, the existing documentation is a bit confusing, sigh ... > > > the existing > > > > "... with the function entry point before the @var{M}th NOP. > > If @var{M} is omitted, it defaults to @code{0} so the > > function entry points to the address just at the first NOP." > > > > wording is self-contradicting in a way since before the 0th NOP (default) > > to me is the same as before the 1st NOP (M == 1). So maybe that should > > be _after_ the @var{M}th NOP instead which would be consistent with your > > ELFv2 docs? Maybe the sentence should be re-worded similar to your > > ELVv2 one, specifying the number of NOPs before and after the entry point. > > > > ... the current "with the function entry point before the Mth NOP." > has the 0th NOP assumption, so the default (0th) NOP and 1st NOP (M == 1) > are actually different, such as: > > -fpatchable-function-entry=3,0 > > foo: > nop > nop > nop > > -fpatchable-function-entry=3,1 > > nop > foo: > nop > nop > > Alan also had the similar concern on this wording before: > https://gcc.gnu.org/bugzilla/show_bug.cgi?id=99888#c8 > > " Alan Modra 2022-08-12 03:00:29 UTC > " > "(In reply to Segher Boessenkool from comment #7) > "> '-fpatchable-function-entry=N[,M]' > "> Generate N NOPs right at the beginning of each function, with the > "> function entry point before the Mth NOP. > " > " Bad doco. Should be "after the Mth NOP" I think. > " Or better written to avoid the concept of a 0th nop. > " Default for M is zero, placing all nops after the function entry and > " before normal function prologue code. > > BR, > Kewen > > >> -The maximum value of @var{N} and @var{M} is 65535. On PowerPC with the > >> -ELFv2 ABI, for a function with dual entry points, the supported values > >> -for @var{M} are 0, 2, 6 and 14. > >> +The maximum value of @var{N} and @var{M} is 65535. > >> @end table > >>
> So this patch is to change the current implementation by > emitting the "before" NOPs before global entry point and > the "after" NOPs after local entry point. The new behavior Thanks. This looks good to me :) https://gcc.gnu.org/bugzilla/show_bug.cgi?id=99888#c5 -- 宋方睿