glibc:hjl/pr21913/master

Last commit made on 2017-08-07
Get this branch:
git clone -b hjl/pr21913/master https://git.launchpad.net/glibc

Branch merges

Branch information

Name:
hjl/pr21913/master
Repository:
lp:glibc

Recent commits

99dd284... by "H.J. Lu" <email address hidden>

i386: Add <startup.h> [BZ #21913]

On Linux/i386, there are 3 ways to make a system call:

1. call *%gs:SYSINFO_OFFSET. This requires TLS initialization.
2. call *_dl_sysinfo. This requires relocation of _dl_sysinfo.
3. int $0x80. This is slower than #2 and #3, but works everywhere.

When an object file is compiled with PIC, #1 is prefered since it is
faster than #3 and doesn't require relocation of _dl_sysinfo. For
dynamic executables, ld.so initializes TLS. However, for static
executables, before TLS is initialized by __libc_setup_tls, #3 should
be used for syscalls.

This patch adds <startup.h> which defines _startup_fatal and defaults
it to __libc_fatal. It replaces __libc_fatal with _startup_fatal in
static executables where it is called before __libc_setup_tls is called.
This header file is included in all files containing functions which are
called before __libc_setup_tls is called. On Linux/i386, when PIE is
enabled by default, _startup_fatal is turned into ABORT_INSTRUCTION and
I386_USE_SYSENTER is defined to 0 so that "int $0x80" is used for system
calls before __libc_setup_tls is called.

 [BZ #21913]
 * config.h.in (BUILD_PIE_DEFAULT): New.
 * csu/libc-tls.c: Include <startup.h>.
 * elf/dl-tunables.c: Likewise.
 * sysdeps/unix/sysv/linux/i386/brk.c: Likewise.
 * csu/libc-tls.c: Include <startup.h>.
 (__libc_setup_tls): Call _startup_fatal instead of __libc_fatal.
 * sysdeps/generic/startup.h: New file.
 * sysdeps/unix/sysv/linux/i386/startup.h: Likewise.

57a72fa... by "H.J. Lu" <email address hidden>

x86-64: Add FMA multiarch functions to libm

This patch adds multiarch functions optimized with -mfma -mavx2 to libm.
e_pow-fma.c is compiled with $(config-cflags-nofma) due to PR 19003.

 * sysdeps/x86_64/fpu/multiarch/Makefile (libm-sysdep_routines):
 Add e_exp-fma, e_log-fma, e_pow-fma, s_atan-fma, e_asin-fma,
 e_atan2-fma, s_sin-fma, s_tan-fma, mplog-fma, mpa-fma,
 slowexp-fma, slowpow-fma, sincos32-fma, doasin-fma, dosincos-fma,
 halfulp-fma, mpexp-fma, mpatan2-fma, mpatan-fma, mpsqrt-fma,
 and mptan-fma.
 (CFLAGS-doasin-fma.c): New.
 (CFLAGS-dosincos-fma.c): Likewise.
 (CFLAGS-e_asin-fma.c): Likewise.
 (CFLAGS-e_atan2-fma.c): Likewise.
 (CFLAGS-e_exp-fma.c): Likewise.
 (CFLAGS-e_log-fma.c): Likewise.
 (CFLAGS-e_pow-fma.c): Likewise.
 (CFLAGS-halfulp-fma.c): Likewise.
 (CFLAGS-mpa-fma.c): Likewise.
 (CFLAGS-mpatan-fma.c): Likewise.
 (CFLAGS-mpatan2-fma.c): Likewise.
 (CFLAGS-mpexp-fma.c): Likewise.
 (CFLAGS-mplog-fma.c): Likewise.
 (CFLAGS-mpsqrt-fma.c): Likewise.
 (CFLAGS-mptan-fma.c): Likewise.
 (CFLAGS-s_atan-fma.c): Likewise.
 (CFLAGS-sincos32-fma.c): Likewise.
 (CFLAGS-slowexp-fma.c): Likewise.
 (CFLAGS-slowpow-fma.c): Likewise.
 (CFLAGS-s_sin-fma.c): Likewise.
 (CFLAGS-s_tan-fma.c): Likewise.
 * sysdeps/x86_64/fpu/multiarch/doasin-fma.c: New file.
 * sysdeps/x86_64/fpu/multiarch/dosincos-fma.c: Likewise.
 * sysdeps/x86_64/fpu/multiarch/e_asin-fma.c: Likewise.
 * sysdeps/x86_64/fpu/multiarch/e_atan2-fma.c: Likewise.
 * sysdeps/x86_64/fpu/multiarch/e_exp-fma.c: Likewise.
 * sysdeps/x86_64/fpu/multiarch/e_log-fma.c: Likewise.
 * sysdeps/x86_64/fpu/multiarch/e_pow-fma.c: Likewise.
 * sysdeps/x86_64/fpu/multiarch/halfulp-fma.c: Likewise.
 * sysdeps/x86_64/fpu/multiarch/ifunc-avx-fma4.h: Likewise.
 * sysdeps/x86_64/fpu/multiarch/ifunc-fma4.h: Likewise.
 * sysdeps/x86_64/fpu/multiarch/mpa-fma.c: Likewise.
 * sysdeps/x86_64/fpu/multiarch/mpatan-fma.c: Likewise.
 * sysdeps/x86_64/fpu/multiarch/mpatan2-fma.c: Likewise.
 * sysdeps/x86_64/fpu/multiarch/mpexp-fma.c: Likewise.
 * sysdeps/x86_64/fpu/multiarch/mplog-fma.c: Likewise.
 * sysdeps/x86_64/fpu/multiarch/mpsqrt-fma.c: Likewise.
 * sysdeps/x86_64/fpu/multiarch/mptan-fma.c: Likewise.
 * sysdeps/x86_64/fpu/multiarch/s_atan-fma.c: Likewise.
 * sysdeps/x86_64/fpu/multiarch/s_sin-fma.c: Likewise.
 * sysdeps/x86_64/fpu/multiarch/s_tan-fma.c: Likewise.
 * sysdeps/x86_64/fpu/multiarch/sincos32-fma.c: Likewise.
 * sysdeps/x86_64/fpu/multiarch/slowexp-fma.c: Likewise.
 * sysdeps/x86_64/fpu/multiarch/slowpow-fma.c: Likewise.
 * sysdeps/x86_64/fpu/multiarch/e_asin.c: Rewrite.
 * sysdeps/x86_64/fpu/multiarch/e_atan2.c: Likewise.
 * sysdeps/x86_64/fpu/multiarch/e_exp.c: Likewise.
 * sysdeps/x86_64/fpu/multiarch/e_log.c: Likewise.
 * sysdeps/x86_64/fpu/multiarch/e_pow.c: Likewise.
 * sysdeps/x86_64/fpu/multiarch/s_atan.c: Likewise.
 * sysdeps/x86_64/fpu/multiarch/s_sin.c: Likewise.
 * sysdeps/x86_64/fpu/multiarch/s_tan.c: Likewise.

219dd32... by Joseph Myers <email address hidden>

Reimplement min_of_type using __MATH_TG.

This patch reimplements the libm-internal min_of_type macro to use
__MATH_TG instead of its own local type-generic implementation, so
simplifying the code and reducing the number of different type-generic
implementation variants in use in glibc.

Tested for x86_64.

 * sysdeps/generic/math_private.h (__EXPR_FLT128): Remove macro.
 (min_of_type_f): New macro.
 (min_of_type_): Likewise.
 (min_of_type_l): Likewise.
 (min_of_type_f128): Likewise.
 (min_of_type): Define using __MATH_TG and taking an expression
 argument.
 (math_check_force_underflow): Pass expression instead of type to
 min_of_type.
 (math_check_force_underflow_nonneg): Likewise.

64d4dea... by "H.J. Lu" <email address hidden>

x86: Remove assembly versions of HAS_CPU_FEATURE/HAS_ARCH_FEATURE

Since all x86 IFUNC selectors are implemented in C, assembly versions of
HAS_CPU_FEATURE and HAS_ARCH_FEATURE can be removed.

 * sysdeps/x86/cpu-features.h [__ASSEMBLER__]
 (LOAD_RTLD_GLOBAL_RO_RDX, HAS_FEATURE, LOAD_FUNC_GOT_EAX,
 HAS_CPU_FEATURE, HAS_ARCH_FEATURE): Removed.

973da22... by "H.J. Lu" <email address hidden>

i686: Implement IFUNC selectors in C

 * sysdeps/i386/i686/multiarch/Makefile (sysdep_routines): Add
 bcopy-ia32, bzero-ia32, rawmemchr-ia32 memchr-ia32,
 memcmp-ia32, memcpy-ia32, memmove-ia32, mempcpy-ia32,
 memset-ia32, strcat-ia32, strchr-ia32, strrchr-ia32,
 strcpy-ia32, strcmp-ia32, strcspn-ia32, strpbrk-ia32,
 strspn-ia32, strlen-ia32, stpcpy-ia32, stpncpy-ia32,
 memcpy_chk-nonshared, mempcpy_chk-nonshared,
 memmove_chk-nonshared and memset_chk-nonshared
 * sysdeps/i386/i686/multiarch/bcopy-ia32.S: New file.
 * sysdeps/i386/i686/multiarch/bcopy.c: Likewise.
 * sysdeps/i386/i686/multiarch/bzero-ia32.S: Likewise.
 * sysdeps/i386/i686/multiarch/bzero.c: Likewise.
 * sysdeps/i386/i686/multiarch/ifunc-memmove.h: Likewise.
 * sysdeps/i386/i686/multiarch/ifunc-memset.h: Likewise.
 * sysdeps/i386/i686/multiarch/ifunc-sse2-bsf.h: Likewise.
 * sysdeps/i386/i686/multiarch/ifunc-sse2-ssse3.h: Likewise.
 * sysdeps/i386/i686/multiarch/ifunc-sse2.h: Likewise.
 * sysdeps/i386/i686/multiarch/ifunc-sse4_2.h: Likewise.
 * sysdeps/i386/i686/multiarch/ifunc-ssse3-sse4_2.h: Likewise.
 * sysdeps/i386/i686/multiarch/memchr-ia32.S: Likewise.
 * sysdeps/i386/i686/multiarch/memchr.c: Likewise.
 * sysdeps/i386/i686/multiarch/memcmp-ia32.S: Likewise.
 * sysdeps/i386/i686/multiarch/memcmp.c: Likewise.
 * sysdeps/i386/i686/multiarch/memcpy-ia32.S: Likewise.
 * sysdeps/i386/i686/multiarch/memcpy.c: Likewise.
 * sysdeps/i386/i686/multiarch/memcpy_chk-nonshared.S: Likewise.
 * sysdeps/i386/i686/multiarch/memcpy_chk.c: Likewise.
 * sysdeps/i386/i686/multiarch/memmove-ia32.S: Likewise.
 * sysdeps/i386/i686/multiarch/memmove.c: Likewise.
 * sysdeps/i386/i686/multiarch/memmove_chk-nonshared.S: Likewise.
 * sysdeps/i386/i686/multiarch/memmove_chk.c: Likewise.
 * sysdeps/i386/i686/multiarch/mempcpy-ia32.S: Likewise.
 * sysdeps/i386/i686/multiarch/mempcpy.c: Likewise.
 * sysdeps/i386/i686/multiarch/mempcpy_chk-nonshared.S: Likewise.
 * sysdeps/i386/i686/multiarch/mempcpy_chk.c: Likewise.
 * sysdeps/i386/i686/multiarch/memrchr.c: Likewise.
 * sysdeps/i386/i686/multiarch/memset-ia32.S: Likewise.
 * sysdeps/i386/i686/multiarch/memset.c: Likewise.
 * sysdeps/i386/i686/multiarch/memset_chk-nonshared.S: Likewise.
 * sysdeps/i386/i686/multiarch/rawmemchr-ia32.S: Likewise.
 * sysdeps/i386/i686/multiarch/rawmemchr.c: Likewise.
 * sysdeps/i386/i686/multiarch/stpcpy-ia32.S: Likewise.
 * sysdeps/i386/i686/multiarch/stpcpy-ia32.S: Likewise.
 * sysdeps/i386/i686/multiarch/stpcpy.c: Likewise.
 * sysdeps/i386/i686/multiarch/stpncpy-ia32.S: Likewise.
 * sysdeps/i386/i686/multiarch/stpncpy.c: Likewise.
 * sysdeps/i386/i686/multiarch/strcasecmp.c: Likewise.
 * sysdeps/i386/i686/multiarch/strcasecmp_l.c: Likewise.
 * sysdeps/i386/i686/multiarch/strcat-ia32.S: Likewise.
 * sysdeps/i386/i686/multiarch/strcat.c: Likewise.
 * sysdeps/i386/i686/multiarch/strchr-ia32.S: Likewise.
 * sysdeps/i386/i686/multiarch/strchr.c: Likewise.
 * sysdeps/i386/i686/multiarch/strcmp-ia32.S: Likewise.
 * sysdeps/i386/i686/multiarch/strcmp.c: Likewise.
 * sysdeps/i386/i686/multiarch/strcpy-ia32.S: Likewise.
 * sysdeps/i386/i686/multiarch/strcpy.c: Likewise.
 * sysdeps/i386/i686/multiarch/strcspn-ia32.S: Likewise.
 * sysdeps/i386/i686/multiarch/strcspn.c: Likewise.
 * sysdeps/i386/i686/multiarch/strlen-ia32.S: Likewise.
 * sysdeps/i386/i686/multiarch/strlen.c: Likewise.
 * sysdeps/i386/i686/multiarch/strncase.c: Likewise.
 * sysdeps/i386/i686/multiarch/strncase_l.c: Likewise.
 * sysdeps/i386/i686/multiarch/strncat.c: Likewise.
 * sysdeps/i386/i686/multiarch/strncmp.c: Likewise.
 * sysdeps/i386/i686/multiarch/strncpy.c: Likewise.
 * sysdeps/i386/i686/multiarch/strnlen.c: Likewise.
 * sysdeps/i386/i686/multiarch/strpbrk-ia32.S: Likewise.
 * sysdeps/i386/i686/multiarch/strpbrk.c: Likewise.
 * sysdeps/i386/i686/multiarch/strrchr-ia32.S: Likewise.
 * sysdeps/i386/i686/multiarch/strrchr.c: Likewise.
 * sysdeps/i386/i686/multiarch/strspn-ia32.S: Likewise.
 * sysdeps/i386/i686/multiarch/strspn.c: Likewise.
 * sysdeps/i386/i686/multiarch/wcschr.c: Likewise.
 * sysdeps/i386/i686/multiarch/wcscmp.c: Likewise.
 * sysdeps/i386/i686/multiarch/wcscpy.c: Likewise.
 * sysdeps/i386/i686/multiarch/wcslen.c: Likewise.
 * sysdeps/i386/i686/multiarch/wcsrchr.c: Likewise.
 * sysdeps/i386/i686/multiarch/wmemcmp.c: Likewise.
 * sysdeps/i386/i686/multiarch/bcopy.S: Removed.
 * sysdeps/i386/i686/multiarch/bzero.S: Likewise.
 * sysdeps/i386/i686/multiarch/memchr.S: Likewise.
 * sysdeps/i386/i686/multiarch/memcmp.S: Likewise.
 * sysdeps/i386/i686/multiarch/memcpy.S: Likewise.
 * sysdeps/i386/i686/multiarch/memcpy_chk.S: Likewise.
 * sysdeps/i386/i686/multiarch/memmove.S: Likewise.
 * sysdeps/i386/i686/multiarch/memmove_chk.S: Likewise.
 * sysdeps/i386/i686/multiarch/mempcpy.S: Likewise.
 * sysdeps/i386/i686/multiarch/mempcpy_chk.S: Likewise.
 * sysdeps/i386/i686/multiarch/memrchr.S: Likewise.
 * sysdeps/i386/i686/multiarch/memset.S: Likewise.
 * sysdeps/i386/i686/multiarch/memset_chk.S: Likewise.
 * sysdeps/i386/i686/multiarch/rawmemchr.S: Likewise.
 * sysdeps/i386/i686/multiarch/stpcpy.S: Likewise.
 * sysdeps/i386/i686/multiarch/stpncpy.S: Likewise.
 * sysdeps/i386/i686/multiarch/strcasecmp.S: Likewise.
 * sysdeps/i386/i686/multiarch/strcasecmp_l.S: Likewise.
 * sysdeps/i386/i686/multiarch/strcat.S: Likewise.
 * sysdeps/i386/i686/multiarch/strcmp.S: Likewise.
 * sysdeps/i386/i686/multiarch/strcpy.S: Likewise.
 * sysdeps/i386/i686/multiarch/strcspn.S: Likewise.
 * sysdeps/i386/i686/multiarch/strlen.S: Likewise.
 * sysdeps/i386/i686/multiarch/strncase.S: Likewise.
 * sysdeps/i386/i686/multiarch/strncase_l.S: Likewise.
 * sysdeps/i386/i686/multiarch/strncat.S: Likewise.
 * sysdeps/i386/i686/multiarch/strncmp.S: Likewise.
 * sysdeps/i386/i686/multiarch/strncpy.S: Likewise.
 * sysdeps/i386/i686/multiarch/strnlen.S: Likewise.
 * sysdeps/i386/i686/multiarch/strpbrk.S: Likewise.
 * sysdeps/i386/i686/multiarch/strrchr.S: Likewise.
 * sysdeps/i386/i686/multiarch/strspn.S: Likewise.
 * sysdeps/i386/i686/multiarch/wcschr.S: Likewise.
 * sysdeps/i386/i686/multiarch/wcscmp.S: Likewise.
 * sysdeps/i386/i686/multiarch/wcscpy.S: Likewise.
 * sysdeps/i386/i686/multiarch/wcslen.S: Likewise.
 * sysdeps/i386/i686/multiarch/wcsrchr.S: Likewise.
 * sysdeps/i386/i686/multiarch/wmemcmp.S: Likewise.

8537e0f... by "H.J. Lu" <email address hidden>

x86-64: Implement libmathvec IFUNC selectors in C

 * sysdeps/x86_64/fpu/multiarch/Makefile (libmvec-sysdep_routines)
 Add svml_d_cos2_core-sse2, svml_d_cos4_core-sse,
 svml_d_cos8_core-avx2, svml_d_exp2_core-sse2,
 svml_d_exp4_core-sse, svml_d_exp8_core-avx2,
 svml_d_log2_core-sse2, svml_d_log4_core-sse,
 svml_d_log8_core-avx2, svml_d_pow2_core-sse2,
 svml_d_pow4_core-sse, svml_d_pow8_core-avx2
 svml_d_sin2_core-sse2, svml_d_sin4_core-sse,
 svml_d_sin8_core-avx2, svml_d_sincos2_core-sse2,
 svml_d_sincos4_core-sse, svml_d_sincos8_core-avx2,
 svml_s_cosf16_core-avx2, svml_s_cosf4_core-sse2,
 svml_s_cosf8_core-sse, svml_s_expf16_core-avx2,
 svml_s_expf4_core-sse2, svml_s_expf8_core-sse,
 svml_s_logf16_core-avx2, svml_s_logf4_core-sse2,
 svml_s_logf8_core-sse, svml_s_powf16_core-avx2,
 svml_s_powf4_core-sse2, svml_s_powf8_core-sse,
 svml_s_sincosf16_core-avx2, svml_s_sincosf4_core-sse2,
 svml_s_sincosf8_core-sse, svml_s_sinf16_core-avx2,
 svml_s_sinf4_core-sse2 and svml_s_sinf8_core-sse.
 * sysdeps/x86_64/fpu/multiarch/ifunc-mathvec-avx2.h: New file.
 * sysdeps/x86_64/fpu/multiarch/ifunc-mathvec-avx512.h: Likewise.
 * sysdeps/x86_64/fpu/multiarch/ifunc-mathvec-sse4_1.h: Likewise.
 * sysdeps/x86_64/fpu/multiarch/svml_d_cos2_core.c: Likewise.
 * sysdeps/x86_64/fpu/multiarch/svml_d_cos4_core.c: Likewise.
 * sysdeps/x86_64/fpu/multiarch/svml_d_cos8_core.c: Likewise.
 * sysdeps/x86_64/fpu/multiarch/svml_d_exp2_core.c: Likewise.
 * sysdeps/x86_64/fpu/multiarch/svml_d_exp4_core.c: Likewise.
 * sysdeps/x86_64/fpu/multiarch/svml_d_exp8_core.c: Likewise.
 * sysdeps/x86_64/fpu/multiarch/svml_d_log2_core.c: Likewise.
 * sysdeps/x86_64/fpu/multiarch/svml_d_log4_core.c: Likewise.
 * sysdeps/x86_64/fpu/multiarch/svml_d_log8_core.c: Likewise.
 * sysdeps/x86_64/fpu/multiarch/svml_d_pow2_core.c: Likewise.
 * sysdeps/x86_64/fpu/multiarch/svml_d_pow4_core.c: Likewise.
 * sysdeps/x86_64/fpu/multiarch/svml_d_pow8_core.c: Likewise.
 * sysdeps/x86_64/fpu/multiarch/svml_d_sin2_core.c: Likewise.
 * sysdeps/x86_64/fpu/multiarch/svml_d_sin4_core.c: Likewise.
 * sysdeps/x86_64/fpu/multiarch/svml_d_sin8_core.c: Likewise.
 * sysdeps/x86_64/fpu/multiarch/svml_d_sincos2_core.c: Likewise.
 * sysdeps/x86_64/fpu/multiarch/svml_d_sincos4_core.c: Likewise.
 * sysdeps/x86_64/fpu/multiarch/svml_d_sincos8_core.c: Likewise.
 * sysdeps/x86_64/fpu/multiarch/svml_d_cosf16_core.c: Likewise.
 * sysdeps/x86_64/fpu/multiarch/svml_d_cosf4_core.c: Likewise.
 * sysdeps/x86_64/fpu/multiarch/svml_d_cosf8_core.c: Likewise.
 * sysdeps/x86_64/fpu/multiarch/svml_d_expf16_core.c: Likewise.
 * sysdeps/x86_64/fpu/multiarch/svml_d_expf4_core.c: Likewise.
 * sysdeps/x86_64/fpu/multiarch/svml_d_expf8_core.c: Likewise.
 * sysdeps/x86_64/fpu/multiarch/svml_d_logf16_core.c: Likewise.
 * sysdeps/x86_64/fpu/multiarch/svml_d_logf4_core.c: Likewise.
 * sysdeps/x86_64/fpu/multiarch/svml_d_logf8_core.c: Likewise.
 * sysdeps/x86_64/fpu/multiarch/svml_d_powf16_core.c: Likewise.
 * sysdeps/x86_64/fpu/multiarch/svml_d_powf4_core.c: Likewise.
 * sysdeps/x86_64/fpu/multiarch/svml_d_powf8_core.c: Likewise.
 * sysdeps/x86_64/fpu/multiarch/svml_d_sincosf16_core.c: Likewise.
 * sysdeps/x86_64/fpu/multiarch/svml_d_sincosf4_core.c: Likewise.
 * sysdeps/x86_64/fpu/multiarch/svml_d_sincosf8_core.c: Likewise.
 * sysdeps/x86_64/fpu/multiarch/svml_d_sinf16_core.c: Likewise.
 * sysdeps/x86_64/fpu/multiarch/svml_d_sinf4_core.c: Likewise.
 * sysdeps/x86_64/fpu/multiarch/svml_d_sinf8_core.c: Likewise.
 * sysdeps/x86_64/fpu/multiarch/svml_d_cos2_core.S: Renamed to
 ...
 * sysdeps/x86_64/fpu/multiarch/svml_d_cos2_core-sse2.S: This.
 Don't include <sysdep.h> nor <init-arch.h>.
 (_ZGVbN2v_cos): Removed.
 * sysdeps/x86_64/fpu/multiarch/svml_d_cos4_core.S: Renamed to
 ...
 * sysdeps/x86_64/fpu/multiarch/svml_d_cos4_core-sse.S: This.
 Don't include <sysdep.h> nor <init-arch.h>.
 (_ZGVdN4v_cos): Removed.
 * sysdeps/x86_64/fpu/multiarch/svml_d_cos8_core.S: Renamed to
 ...
 * sysdeps/x86_64/fpu/multiarch/svml_d_cos8_core-avx2.S: This.
 Don't include <sysdep.h> nor <init-arch.h>.
 (_ZGVeN8v_cos): Removed.
 * sysdeps/x86_64/fpu/multiarch/svml_d_exp2_core.S: Renamed to
 ...
 * sysdeps/x86_64/fpu/multiarch/svml_d_exp2_core-sse2.S: This.
 Don't include <sysdep.h> nor <init-arch.h>.
 (_ZGVbN2v_exp): Removed.
 * sysdeps/x86_64/fpu/multiarch/svml_d_exp4_core.S: Renamed to
 ...
 * sysdeps/x86_64/fpu/multiarch/svml_d_exp4_core-sse.S: This.
 Don't include <sysdep.h> nor <init-arch.h>.
 (_ZGVdN4v_exp): Removed.
 * sysdeps/x86_64/fpu/multiarch/svml_d_exp8_core.S: Renamed to
 ...
 * sysdeps/x86_64/fpu/multiarch/svml_d_exp8_core-avx2.S: This.
 Don't include <sysdep.h> nor <init-arch.h>.
 (_ZGVeN8v_exp): Removed.
 * sysdeps/x86_64/fpu/multiarch/svml_d_log2_core.S: Renamed to
 ...
 * sysdeps/x86_64/fpu/multiarch/svml_d_log2_core-sse2.S: This.
 Don't include <sysdep.h> nor <init-arch.h>.
 (_ZGVbN2v_log): Removed.
 * sysdeps/x86_64/fpu/multiarch/svml_d_log4_core.S: Renamed to
 ...
 * sysdeps/x86_64/fpu/multiarch/svml_d_log4_core-sse.S: This.
 Don't include <sysdep.h> nor <init-arch.h>.
 (_ZGVdN4v_log): Removed.
 * sysdeps/x86_64/fpu/multiarch/svml_d_log8_core.S: Renamed to
 ...
 * sysdeps/x86_64/fpu/multiarch/svml_d_log8_core-avx2.S: This.
 Don't include <sysdep.h> nor <init-arch.h>.
 (_ZGVeN8v_log): Removed.
 * sysdeps/x86_64/fpu/multiarch/svml_d_pow2_core.S: Renamed to
 ...
 * sysdeps/x86_64/fpu/multiarch/svml_d_pow2_core-sse2.S: This.
 Don't include <sysdep.h> nor <init-arch.h>.
 (_ZGVbN2vv_pow): Removed.
 * sysdeps/x86_64/fpu/multiarch/svml_d_pow4_core.S: Renamed to
 ...
 * sysdeps/x86_64/fpu/multiarch/svml_d_pow4_core-sse.S: This.
 Don't include <sysdep.h> nor <init-arch.h>.
 (_ZGVdN4vv_pow): Removed.
 * sysdeps/x86_64/fpu/multiarch/svml_d_pow8_core.S: Renamed to
 ...
 * sysdeps/x86_64/fpu/multiarch/svml_d_pow8_core-avx2.S: This.
 Don't include <sysdep.h> nor <init-arch.h>.
 (_ZGVeN8vv_pow): Removed.
 * sysdeps/x86_64/fpu/multiarch/svml_d_sin2_core.S: Renamed to
 ...
 * sysdeps/x86_64/fpu/multiarch/svml_d_sin2_core-sse2.S: This.
 Don't include <sysdep.h> nor <init-arch.h>.
 (_ZGVbN2v_sin): Removed.
 * sysdeps/x86_64/fpu/multiarch/svml_d_sin4_core.S: Renamed to
 ...
 * sysdeps/x86_64/fpu/multiarch/svml_d_sin4_core-sse.S: This.
 Don't include <sysdep.h> nor <init-arch.h>.
 (_ZGVbN4v_sin): Removed.
 * sysdeps/x86_64/fpu/multiarch/svml_d_sin8_core.S: Renamed to
 ...
 * sysdeps/x86_64/fpu/multiarch/svml_d_sin8_core-avx2.S: This.
 Don't include <sysdep.h> nor <init-arch.h>.
 (_ZGVbN8v_sin): Removed.
 * sysdeps/x86_64/fpu/multiarch/svml_d_sincos2_core.S: Renamed to
 ...
 * sysdeps/x86_64/fpu/multiarch/svml_d_sincos2_core-sse2.S: This.
 Don't include <sysdep.h> nor <init-arch.h>.
 (_ZGVbN2vvv_sincos): Removed.
 * sysdeps/x86_64/fpu/multiarch/svml_d_sincos4_core.S: Renamed to
 ...
 * sysdeps/x86_64/fpu/multiarch/svml_d_sincos4_core-sse.S: This.
 Don't include <sysdep.h> nor <init-arch.h>.
 (_ZGVdN4vvv_sincos): Removed.
 * sysdeps/x86_64/fpu/multiarch/svml_d_sincos8_core.S: Renamed to
 ...
 * sysdeps/x86_64/fpu/multiarch/svml_d_sincos8_core-avx2.S: This.
 Don't include <sysdep.h> nor <init-arch.h>.
 (_ZGVeN8vvv_sincos): Removed.
 * sysdeps/x86_64/fpu/multiarch/svml_d_cosf16_core.S: Renamed to
 ...
 * sysdeps/x86_64/fpu/multiarch/svml_d_cosf16_core-avx2.S: This.
 Don't include <sysdep.h> nor <init-arch.h>.
 (_ZGVeN16v_cosf): Removed.
 * sysdeps/x86_64/fpu/multiarch/svml_d_cosf4_core.S: Renamed to
 ...
 * sysdeps/x86_64/fpu/multiarch/svml_d_cosf4_core-sse2.S: This.
 Don't include <sysdep.h> nor <init-arch.h>.
 (_ZGVbN4v_cosf): Removed.
 * sysdeps/x86_64/fpu/multiarch/svml_d_cosf8_core.S: Renamed to
 ...
 * sysdeps/x86_64/fpu/multiarch/svml_d_cosf8_core-sse.S: This.
 Don't include <sysdep.h> nor <init-arch.h>.
 (_ZGVdN8v_cosf): Removed.
 * sysdeps/x86_64/fpu/multiarch/svml_d_expf16_core.S: Renamed to
 ...
 * sysdeps/x86_64/fpu/multiarch/svml_d_expf16_core-avx2.S: This.
 Don't include <sysdep.h> nor <init-arch.h>.
 (_ZGVeN16v_expf): Removed.
 * sysdeps/x86_64/fpu/multiarch/svml_d_expf4_core.S: Renamed to
 ...
 * sysdeps/x86_64/fpu/multiarch/svml_d_expf4_core-sse2.S: This.
 Don't include <sysdep.h> nor <init-arch.h>.
 (_ZGVbN4v_expf): Removed.
 * sysdeps/x86_64/fpu/multiarch/svml_d_expf8_core.S: Renamed to
 ...
 * sysdeps/x86_64/fpu/multiarch/svml_d_expf8_core-sse.S: This.
 Don't include <sysdep.h> nor <init-arch.h>.
 (_ZGVdN8v_expf): Removed.
 * sysdeps/x86_64/fpu/multiarch/svml_d_logf16_core.S: Renamed to
 ...
 * sysdeps/x86_64/fpu/multiarch/svml_d_logf16_core-avx2.S: This.
 Don't include <sysdep.h> nor <init-arch.h>.
 (_ZGVeN16v_logf): Removed.
 * sysdeps/x86_64/fpu/multiarch/svml_d_logf4_core.S: Renamed to
 ...
 * sysdeps/x86_64/fpu/multiarch/svml_d_logf4_core-sse2.S: This.
 Don't include <sysdep.h> nor <init-arch.h>.
 (_ZGVbN4v_logf): Removed.
 * sysdeps/x86_64/fpu/multiarch/svml_d_logf8_core.S: Renamed to
 ...
 * sysdeps/x86_64/fpu/multiarch/svml_d_logf8_core-sse.S: This.
 Don't include <sysdep.h> nor <init-arch.h>.
 (_ZGVdN8v_logf): Removed.
 * sysdeps/x86_64/fpu/multiarch/svml_d_powf16_core.S: Renamed to
 ...
 * sysdeps/x86_64/fpu/multiarch/svml_d_powf16_core-avx2.S: This.
 Don't include <sysdep.h> nor <init-arch.h>.
 (_ZGVeN16vv_powf): Removed.
 * sysdeps/x86_64/fpu/multiarch/svml_d_powf4_core.S: Renamed to
 ...
 * sysdeps/x86_64/fpu/multiarch/svml_d_powf4_core-sse2.S: This.
 Don't include <sysdep.h> nor <init-arch.h>.
 (_ZGVbN4vv_powf): Removed.
 * sysdeps/x86_64/fpu/multiarch/svml_d_powf8_core.S: Renamed to
 ...
 * sysdeps/x86_64/fpu/multiarch/svml_d_powf8_core-sse.S: This.
 Don't include <sysdep.h> nor <init-arch.h>.
 (_ZGVdN8vv_powf): Removed.
 * sysdeps/x86_64/fpu/multiarch/svml_d_sincosf16_core.S: Renamed to
 ...
 * sysdeps/x86_64/fpu/multiarch/svml_d_sincosf16_core-avx2.S: This.
 Don't include <sysdep.h> nor <init-arch.h>.
 (_ZGVeN16vvv_sincosf): Removed.
 * sysdeps/x86_64/fpu/multiarch/svml_d_sincosf4_core.S: Renamed to
 ...
 * sysdeps/x86_64/fpu/multiarch/svml_d_sincosf4_core-sse2.S: This.
 Don't include <sysdep.h> nor <init-arch.h>.
 (_ZGVbN4vvv_sincosf): Removed.
 * sysdeps/x86_64/fpu/multiarch/svml_d_sincosf8_core.S: Renamed to
 ...
 * sysdeps/x86_64/fpu/multiarch/svml_d_sincosf8_core-sse.S: This.
 Don't include <sysdep.h> nor <init-arch.h>.
 (_ZGVdN8vvv_sincosf): Removed.
 * sysdeps/x86_64/fpu/multiarch/svml_d_sinf16_core.S: Renamed to
 ...
 * sysdeps/x86_64/fpu/multiarch/svml_d_sinf16_core-avx2.S: This.
 Don't include <sysdep.h> nor <init-arch.h>.
 (_ZGVeN16v_sinf): Removed.
 * sysdeps/x86_64/fpu/multiarch/svml_d_sinf4_core.S: Renamed to
 ...
 * sysdeps/x86_64/fpu/multiarch/svml_d_sinf4_core-sse2.S: This.
 Don't include <sysdep.h> nor <init-arch.h>.
 (_ZGVbN4v_sinf): Removed.
 * sysdeps/x86_64/fpu/multiarch/svml_d_sinf8_core.S: Renamed to
 ...
 * sysdeps/x86_64/fpu/multiarch/svml_d_sinf8_core-sse.S: This.
 Don't include <sysdep.h> nor <init-arch.h>.
 (_ZGVdN8v_sinf): Removed.

10a87ca... by "H.J. Lu" <email address hidden>

x86-64: Implement libm IFUNC selectors in C

 * sysdeps/x86_64/fpu/multiarch/Makefile (libm-sysdep_routines):
 Add s_ceil-sse4_1, s_ceilf-sse4_1, s_floor-sse4_1,
 s_floorf-sse4_1, s_nearbyint-sse4_1, s_nearbyintf-sse4_1,
 s_rint-sse4_1 and s_rintf-sse4_1.
 * sysdeps/x86_64/fpu/multiarch/ifunc-sse4_1.h: New file.
 * sysdeps/x86_64/fpu/multiarch/s_ceil.c: Likewise.
 * sysdeps/x86_64/fpu/multiarch/s_ceilf.c: Likewise.
 * sysdeps/x86_64/fpu/multiarch/s_floor.c: Likewise.
 * sysdeps/x86_64/fpu/multiarch/s_floorf.c: Likewise.
 * sysdeps/x86_64/fpu/multiarch/s_nearbyint.c: Likewise.
 * sysdeps/x86_64/fpu/multiarch/s_nearbyintf.c: Likewise.
 * sysdeps/x86_64/fpu/multiarch/s_rint.c: Likewise.
 * sysdeps/x86_64/fpu/multiarch/s_rintf.c: Likewise.
 * sysdeps/x86_64/fpu/multiarch/s_ceil.S: Renamed to ...
 * sysdeps/x86_64/fpu/multiarch/s_ceil-sse4_1.S: This. Don't
 include <machine/asm.h> nor <init-arch.h>. Include <sysdep.h>.
 (__ceil): Removed.
 * sysdeps/x86_64/fpu/multiarch/s_ceilf.S: Renamed to ...
 * sysdeps/x86_64/fpu/multiarch/s_ceilf-sse4_1.S: This. Don't
 include <machine/asm.h> nor <init-arch.h>. Include <sysdep.h>.
 (__ceilf): Removed.
 * sysdeps/x86_64/fpu/multiarch/s_floor.S: Renamed to ...
 * sysdeps/x86_64/fpu/multiarch/s_floor-sse4_1.S: This. Don't
 include <machine/asm.h> nor <init-arch.h>. Include <sysdep.h>.
 (__floor): Removed.
 * sysdeps/x86_64/fpu/multiarch/s_floorf.S: Renamed to ...
 * sysdeps/x86_64/fpu/multiarch/s_floorf-sse4_1.S: This. Don't
 include <machine/asm.h> nor <init-arch.h>. Include <sysdep.h>.
 (__floorf): Removed.
 * sysdeps/x86_64/fpu/multiarch/s_nearbyint.S: Renamed to ...
 * sysdeps/x86_64/fpu/multiarch/s_nearbyint-sse4_1.S: This. Don't
 include <machine/asm.h> nor <init-arch.h>. Include <sysdep.h>.
 (__nearbyint): Removed.
 * sysdeps/x86_64/fpu/multiarch/s_nearbyintf.S: Renamed to ...
 * sysdeps/x86_64/fpu/multiarch/s_nearbyintf-sse4_1.S: This. Don't
 include <machine/asm.h> nor <init-arch.h>. Include <sysdep.h>.
 (__nearbyintf): Removed.
 * sysdeps/x86_64/fpu/multiarch/s_rint.S: Renamed to ...
 * sysdeps/x86_64/fpu/multiarch/s_rint-sse4_1.S: This. Don't
 include <machine/asm.h> nor <init-arch.h>. Include <sysdep.h>.
 (__rint): Removed.
 * sysdeps/x86_64/fpu/multiarch/s_rintf.S: Renamed to ...
 * sysdeps/x86_64/fpu/multiarch/s_rintf-sse4_1.S: This. Don't
 include <machine/asm.h> nor <init-arch.h>. Include <sysdep.h>.
 (__rintf): Removed.

1e8e527... by "H.J. Lu" <email address hidden>

i386: Support static PIE in start.S

Since start.o may be compiled as PIC, we should check PIC instead of
SHARED. Also avoid dynamic relocation against main in static PIE since
_start is the entry point before the executable is relocated.

 * sysdeps/i386/start.S (_start): Check Check PIC instead of
 SHARED. Avoid dynamic relocation against main in static PIE.

e13daad... by "H.J. Lu" <email address hidden>

Compile tst-prelink.c without PIE [BZ #21815]

tst-prelink.c checks for conflict with GLOB_DAT relocation against stdio.
On i386, there is no GLOB_DAT relocation against stdio with PIE. We
should compile tst-prelink.c without PIE.

 [BZ #21815]
 * elf/Makefile (CFLAGS-tst-prelink.c): New.
 (LDFLAGS-tst-prelink): Likewise.

627c69c... by "H.J. Lu" <email address hidden>

i386: Update I386_USE_SYSENTER for early PIC syscall

Define I386_USE_SYSENTER to 0 or 1 so that special versions of syscalls
with "int $0x80" can be provided for static PIE during self relocation.
Also check PIC instead SHARED for PIC version of syscall macros.

 * sysdeps/unix/sysv/linux/i386/sysdep.h (I386_USE_SYSENTER):
 Define to I386_USE_SYSENTER to 0 or 1 if not defined.
 (ENTER_KERNEL): Check if I386_USE_SYSENTER is 1 and check PIC.
 (INTERNAL_SYSCALL_MAIN_INLINE): Likewise.
 (INTERNAL_SYSCALL_NCS): Likewise.
 (LOADARGS_1): Likewise.
 (LOADARGS_5): Likewise.
 (RESTOREARGS_1): Likewise.
 (RESTOREARGS_5): Likewise.