[PATCH] Remove unnecessary IFUNC dispatch for __memset_chk.

Alexander Monakov amonakov@ispras.ru
Tue Aug 11 09:26:00 GMT 2015


On Tue, 11 Aug 2015, Mike Frysinger wrote:
> On 11 Aug 2015 07:55, Ondřej Bílka wrote:
> > On Mon, Aug 10, 2015 at 10:48:03PM -0400, Mike Frysinger wrote:
> > > On 10 Aug 2015 23:12, Ondřej Bílka wrote:
> > > > On Sun, Aug 09, 2015 at 11:09:20PM -0400, Mike Frysinger wrote:
> > > > > On 09 Aug 2015 14:24, Zack Weinberg wrote:
> > > > > > Is an IFUNC's variant-selecting function called only once per process,
> > > > > > or every time?
> > > > > 
> > > > > it's once-per-process.  if it were every time, it'd defeat the point of the
> > > > > optimization.
> > > >
> > > > No, its once per each shared library.
> > > 
> > > it depends on how you're counting.  i'm talking about each ifunc resolver -- it 
> > > only executes once per process.  yes, the overall lookup of ifunc relocs happens
> > > on a per-object basis, but it doesn't mean each resolver runs more than once.
[snip]
> > You should verify, not make guesses. Its clearly
> > called twice in following program.
> 
> yes, once per PLT slot.  once the slot is resolved, it isn't executed again, on 
> a per-process basis.

While Ondřej could indeed engage in a better manner, I'm now compelled to
point out that your previous argumentation looks bad.  Each shared object that
calls an ifunc function will have a PLT slot for it, and the resolver may be
called as many times as there are such PLT slots.  Which means that previously
Ondřej provided a useful clarification: it's once-per-importing-library in
each process, not once-per-process-period.

Unless you were implying something else that both Ondřej and me have missed?
If so, please clarify.

Thanks.
Alexander


More information about the Libc-alpha mailing list