[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