This is the mail archive of the 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] i686: Add missing IS_IN (libc) guards to vectorized strcspn

On 06/14/2017 02:32 PM, Carlos O'Donell wrote:
> On 06/14/2017 02:19 AM, Florian Weimer wrote:
>> Since commit d957c4d3fa48d685ff2726c605c988127ef99395 (i386: Compile
>> rtld-*.os with -mno-sse -mno-mmx -mfpmath=387), vector intrinsics can
>> no longer be used in, even if the compiled code never makes it
>> into the final link.  This commit adds the missing IS_IN (libc)
>> guard to the SSE 4.2 strcspn implementation, so that it can be used from
>> in the future.
>> 2017-06-14  Florian Weimer  <>
>> 	* sysdeps/i386/i686/multiarch/strcspn-c.c: Add IS_IN (libc) guard.
>> 	* sysdeps/i386/i686/multiarch/varshift.c: Likewise.
> This looks good to me.


> We have struggled with these issues for years. I wish there was a more
> automatic way to enable new functions for use in, but there isn't.
> Out of curiosity, if you don't apply this patch, and use strcspn, does
> the test fail?

No.  The files containing IFUNC resolvers are compiled in rtld mode
(!IS_IN (libc)), and they do not reference the definitions in
strcpsn-c.c anymore.  But the list of objects is constructed based on
the contents of libc-pic.a, and that obviously contains strcspn-c.o.
With current upstream, after adding a reference to strcspn within,
we attempt to recompile strcspn-c.c, but that fails with GCC errors due
to -mno-sse etc. added as a safeguard.  Prior to commit
d957c4d3fa48d685ff2726c605c988127ef99395, strcspn-c.c would compile
successfully, but since the IFUNC resolver is compiled out due to !IS_IN
(libc), the link editor will not pick up strcspn-c.o, although it is
present in rtld-libc.a.


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