This is the mail archive of the libc-alpha@sourceware.org mailing list for the glibc 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: [PATCH] Remove unnecessary IFUNC dispatch for __memset_chk.


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

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