[PATCH 2/8] s390: Refactor ifunc resolvers due to false debuginfo.

Florian Weimer fweimer@redhat.com
Mon Jul 4 08:37:00 GMT 2016


On 06/23/2016 01:55 PM, Stefan Liebler wrote:
> This patch adjusts the s390 specific ifunc helper macros in ifunc-resolve.h to
> use the common __ifunc macro, which uses gcc attribute ifunc to get rid of the
> false debuginfo. Therefore the redirection construct is applied where needed.
>
> Perhaps in future we can switch some of the internal symbols __GI_* from the
> fallback variant to the ifunc function. But this change is not
> straightforward due to a segmentation fault while linking libc.so with older
> binutils on s390.
>
> ChangeLog:
>
> 	* sysdeps/s390/multiarch/ifunc-resolve.h
> 	(s390_vx_libc_ifunc2, s390_libc_ifunc): Use __ifunc from libc-symbols.h
> 	to create ifunc symbols.
> 	(s390_vx_libc_ifunc_init, s390_libc_ifunc_init): New define.
> 	* sysdeps/s390/multiarch/memchr.c: Redirect ifunced function in header
> 	and create a copy of the prototype for using as ifunc function.
> 	Add appropiate aliases to the real symbol names.

“appropriate”

> +  __ifunc (FUNC,							\
> +	   __glibc_likely (S390_IS_Z196 (stfle_bits))			\
> +	   ? RESOLVERFUNC##_z196 :					\
> +	     __glibc_likely (S390_IS_Z10 (stfle_bits))			\
> +	     ? RESOLVERFUNC##_z10 :					\
> +	     RESOLVERFUNC##_default					\
> +	   , unsigned long int dl_hwcap, s390_libc_ifunc_init);

I don't think GNU style allows starting a line with a comma, and “:” 
should be at the start of the line, not the end.

Otherwise, the changes look reasonable.

Thanks,
Florian



More information about the Libc-alpha mailing list