glibc:hjl/pr23240/fw

Last commit made on 2018-06-06
Get this branch:
git clone -b hjl/pr23240/fw https://git.launchpad.net/glibc

Branch merges

Branch information

Name:
hjl/pr23240/fw
Repository:
lp:glibc

Recent commits

3bc6d30... by "H.J. Lu" <email address hidden>

Check non-lazy binding with LD_PRELOAD and weak reference

Check non-lazy binding with

1. Reference to unrelocated IFUNC function with LD_PRELOAD.
2. Weak reference.

 [BZ #23176]
 [BZ #23240]
 * elf/Makefile (tests): Add reldep6a.
 (tests-internal): Add ifuncpreload1
 (modules-names): Add ifuncpreloadmod1a and ifuncpreloadmod1b.
 ($(objpfx)reldep6a): New.
 ($(objpfx)reldep6a.out): Likewise.
 (reldep6a-ENV): Likewise.
 ($(objpfx)ifuncpreload1): Likewise.
 ($(objpfx)ifuncpreload1.out): Likewise.
 (ifuncpreload1-ENV): Likewise.
 * elf/ifuncpreload1.c: New file.
 * elf/ifuncpreloadmod1a.c: Likewise.
 * elf/ifuncpreloadmod1b.c: Likewise.
 * elf/reldep6a.c: Likewise.

3fe2b14... by Florian Weimer

ld.so: Introduce delayed relocation processing

This makes it possible to use IFUNC resolvers which depend
on relocations themselves, as long as these reloctions do
not depend on IFUNCs.

So far, delayed relocation processing is only implemented for
x86-64.

14b9b6e... by Florian Weimer

ld.so: Defer applying RELRO protection

This is a prerequisite of a future change which applies additional
cross-object relocations after _dl_relocate_object has been called.

ab3a0da... by Joseph Myers <email address hidden>

Use Linux 4.17 in build-many-glibcs.py.

 * scripts/build-many-glibcs.py (Context.checkout): Default Linux
 version to 4.17

d2d9dfb... by Samuel thibault

hurd: Fix shmid_ds's shm_segsz field type

 * bits/shm.h (struct shmid_ds): Make shm_segsz field size_t instead of
 int.
 * sysdeps/gnu/bits/shm.h (struct shmid_ds): Likewise.

a650b05... by Leonardo Sandoval <email address hidden>

benchtests: Catch exceptions in input arguments

Catch runtime exceptions in case the user provided: wrong base
function, attribute(s) or input file. In any of the latter, quit
immediately with non-zero return code.

 * benchtests/scripts/compare_string.py: (process_results) Catch
 exception in non-existent base_func and catch exception in
 non-existent attribute.
 (parse_file) Catch exception in non-existent input file.

195abbf... by Leonardo Sandoval <email address hidden>

benchtests: Add --no-diff and --no-header options

Having a string comparison report with neither diff numbers nor header
yields a more useful output to be consumed by other tools.

 * benchtests/scripts/compare_string.py: Add --no-diff and --no-header
 options to avoid diff calculation and omit header, respectively.
 (main): process --no-diff and --no-header

1457016... by Leonardo Sandoval <email address hidden>

x86-64: Optimize strcmp/wcscmp and strncmp/wcsncmp with AVX2

Optimize x86-64 strcmp/wcscmp and strncmp/wcsncmp with AVX2. It uses vector
comparison as much as possible. Peak performance observed on a SkyLake
machine: 9x, 3x, 2.5x and 5.5x for strcmp, strncmp, wcscmp and wcsncmp,
respectively. The larger the comparison length, the more benefit using
avx2 functions, except on the strcmp, where peak is observed at length
== 32 bytes. Select AVX2 strcmp/wcscmp on AVX2 machines where vzeroupper
is preferred and AVX unaligned load is fast.

NB: It uses TZCNT instead of BSF since TZCNT produces the same result
as BSF for non-zero input. TZCNT is faster than BSF and is executed
as BSF if machine doesn't support TZCNT.

 * sysdeps/x86_64/multiarch/Makefile (sysdep_routines): Add
 strcmp-avx2, strncmp-avx2, wcscmp-avx2, wcscmp-sse2, wcsncmp-avx2 and
 wcsncmp-sse2.
 * sysdeps/x86_64/multiarch/ifunc-impl-list.c
 (__libc_ifunc_impl_list): Add tests for __strcmp_avx2,
 __strncmp_avx2, __wcscmp_avx2, __wcsncmp_avx2, __wcscmp_sse2
 and __wcsncmp_sse2.
 * sysdeps/x86_64/multiarch/strcmp.c (OPTIMIZE (avx2)):
 (IFUNC_SELECTOR): Return OPTIMIZE (avx2) on AVX 2 machines if
 AVX unaligned load is fast and vzeroupper is preferred.
 * sysdeps/x86_64/multiarch/strncmp.c: Likewise.
 * sysdeps/x86_64/multiarch/strcmp-avx2.S: New file.
 * sysdeps/x86_64/multiarch/strncmp-avx2.S: Likewise.
 * sysdeps/x86_64/multiarch/wcscmp-avx2.S: Likewise.
 * sysdeps/x86_64/multiarch/wcscmp-sse2.S: Likewise.
 * sysdeps/x86_64/multiarch/wcscmp.c: Likewise.
 * sysdeps/x86_64/multiarch/wcsncmp-avx2.S: Likewise.
 * sysdeps/x86_64/multiarch/wcsncmp-sse2.c: Likewise.
 * sysdeps/x86_64/multiarch/wcsncmp.c: Likewise.
 * sysdeps/x86_64/wcscmp.S (__wcscmp): Add alias only if __wcscmp
 is undefined.

e02c026... by Florian Weimer

math: Update i686 ulps (--disable-multi-arch configuration)

The results are from configuring with --disable-multi-arch, building
with “-march=x86-64 -mtune=generic -mfpmath=sse” and running the
testsuite on a Haswell-era CPU.

d8c1927... by Florian Weimer

math: Update i686 ulps

The results are from building with “-march=x86-64 -mtune=generic
-mfpmath=sse” and running the testsuite on a Haswell-era CPU.