Some x86-64 assembly codes don't align stack to 16 bytes, which lead to (gdb) r Starting program: /export/build/gnu/glibc-test/build-x86_64-linux/math/test-float-vlen4 testing float vector math (without inline functions) Program received signal SIGSEGV, Segmentation fault. _dl_runtime_resolve () at ../sysdeps/x86_64/dl-trampoline.S:89 89 movaps %xmm0, REGISTER_SAVE_XMM0(%rsp) (gdb) bt #0 _dl_runtime_resolve () at ../sysdeps/x86_64/dl-trampoline.S:89 #1 0x00007ffff7b0d447 in cosf () at ../sysdeps/x86_64/fpu/s_cosf.S:314 #2 0x00007ffff78ba498 in _ZGVbN4v_cosf_sse4 () at ../sysdeps/x86_64/fpu/multiarch/svml_s_cosf4_core_sse4.S:223 #3 0x0000000000403764 in cosf_vlen4 (x=<optimized out>) at ../sysdeps/x86_64/fpu/test-float-vlen4-wrappers.c:24 #4 0x0000000000402f62 in cos_test () at /export/build/gnu/glibc-test/build-x86_64-linux/math/libm-test.c:65576 #5 0x0000000000401aa8 in main (argc=<optimized out>, argv=<optimized out>) at /export/build/gnu/glibc-test/build-x86_64-linux/math/libm-test.c:150244 (gdb) p $rsp $1 = (void *) 0x7fffffffdaa8 (gdb) when this patch: https://sourceware.org/ml/libc-alpha/2015-07/msg00365.html is applied and GCC bug: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=58066 is fixed.
This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "GNU C Library master sources". The branch, hjl/pr18661 has been created at 2e4cca72c25aa2a3a0da59c651ca69320b16bfff (commit) - Log ----------------------------------------------------------------- https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=2e4cca72c25aa2a3a0da59c651ca69320b16bfff commit 2e4cca72c25aa2a3a0da59c651ca69320b16bfff Author: H.J. Lu <hjl.tools@gmail.com> Date: Wed Jul 29 04:49:38 2015 -0700 Use SSE optimized strcmp in x86-64 ld.so Since ld.so preserves vector registers now, we can SSE optimized strcmp in x86-64 ld.so. * sysdeps/x86_64/strcmp.S: Remove "#if !IS_IN (libc)". https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=3600e9c49c921bf4f788fb55321d1fb3824abf2d commit 3600e9c49c921bf4f788fb55321d1fb3824abf2d Author: H.J. Lu <hjl.tools@gmail.com> Date: Wed Jul 29 03:56:14 2015 -0700 Remove x86-64 rtld-xxx.c and rtld-xxx.S Since ld.so preserves vector registers now, we can use the regular, non-ifunc string and memory functions in ld.so. * sysdeps/x86_64/rtld-memcmp.c: Removed. * sysdeps/x86_64/rtld-memset.S: Likewise. * sysdeps/x86_64/rtld-strchr.S: Likewise. * sysdeps/x86_64/rtld-strlen.S: Likewise. * sysdeps/x86_64/multiarch/rtld-memcmp.c: Likewise. * sysdeps/x86_64/multiarch/rtld-memset.S: Likewise. https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=45e6b0f0009e3499f924d003746b6994cb9dff3c commit 45e6b0f0009e3499f924d003746b6994cb9dff3c Author: H.J. Lu <hjl.tools@gmail.com> Date: Wed Jul 29 03:47:54 2015 -0700 Replace %xmm8 with %xmm0 Since ld.so preserves vector registers now, we can use %xmm0 to avoid the REX prefix. * sysdeps/x86_64/memset.S: Replace %xmm8 with %xmm0. https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=8a9d5ef56db422846842aae87be3347382aff070 commit 8a9d5ef56db422846842aae87be3347382aff070 Author: H.J. Lu <hjl.tools@gmail.com> Date: Wed Jul 29 03:44:39 2015 -0700 Replace %xmm[8-12] with %xmm[0-4] Since ld.so preserves vector registers now, we can use %xmm[0-4] to avoid the REX prefix. * sysdeps/x86_64/strlen.S: Replace %xmm[8-12] with %xmm[0-4]. https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=442e00b6d245a40075b9a58e2783c8395abce62c commit 442e00b6d245a40075b9a58e2783c8395abce62c Author: H.J. Lu <hjl.tools@gmail.com> Date: Tue Jul 28 18:56:18 2015 -0700 Don't disable SSE in x86-64 ld.so Since ld.so preserves vector registers now, we can use SSE in ld.so. * sysdeps/i386/Makefile [$(subdir) == elf] (CFLAGS-.os): Add -mno-sse -mno-mmx for $(all-rtld-routines). [$(subdir) == elf] (tests-special): Add $(objpfx)tst-ld-sse-use.out. [$(subdir) == elf] ($(objpfx)tst-ld-sse-use.out): New rule. * sysdeps/x86/Makefile: Removed. * sysdeps/x86_64/Makefile [$(subdir) == elf] (CFLAGS-.os): Add -mno-mmx for $(all-rtld-routines). https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=72185dfbf09bab8333c1245f11af0f7697ca1c03 commit 72185dfbf09bab8333c1245f11af0f7697ca1c03 Author: H.J. Lu <hjl.tools@gmail.com> Date: Sat Jul 11 13:25:25 2015 -0700 Save and restore vector registers in x86-64 ld.so This patch initiaizes GLRO(dl_x86_xstate) in dl_platform_init to indicate if the processor supports SSE, AVX or AVX512. It uses this information to properly save and restore vector registers in ld.so. Now we can use SSE in ld.so and delete FOREIGN_CALL macros. We can also retire the rtld_must_xmm_save field and remove the rtld_savespace_sse field in tcbhead_t. It is safe since they are internal to glibc. [BZ #15128] * sysdeps/unix/sysv/linux/x86_64/dl-procinfo.c: Include <sysdeps/x86_64/dl-procinfo.c> instead of <sysdeps/generic/dl-procinfo.c>. * sysdeps/unix/sysv/linux/x86_64/dl-procinfo.h: Include <sysdeps/x86_64/dl-procinfo.h> instead of <sysdeps/generic/dl-procinfo.h>. * sysdeps/x86_64/Makefile [$(subdir) == elf] (tests): Add ifuncmain8. (modules-names): Add ifuncmod8. ($(objpfx)ifuncmain8): New rule. * sysdeps/x86_64/dl-machine.h: Include <dl-procinfo.h> and <cpuid.h>. (elf_machine_runtime_setup): Use _dl_runtime_resolve_sse, _dl_runtime_resolve_avx, or _dl_runtime_resolve_avx512, _dl_runtime_profile_sse, _dl_runtime_profile_avx, or _dl_runtime_profile_avx512, based on GLRO(dl_x86_xstate). (dl_platform_init): Set GLRO(dl_x86_xstate) based on cpuid. * sysdeps/x86_64/dl-procinfo.c: New file. * sysdeps/x86_64/dl-procinfo.h: Likewise. * sysdeps/x86_64/ifuncmain8.c: Likewise. * sysdeps/x86_64/ifuncmod8.c: Likewise. * sysdeps/x86_64/dl-trampoline.S: Rewrite. * sysdeps/x86_64/dl-trampoline.h: Likewise. * sysdeps/x86_64/nptl/tcb-offsets.sym (RTLD_SAVESPACE_SSE): Removed. * sysdeps/x86_64/nptl/tls.h (__128bits): Removed. (tcbhead_t): CHange rtld_must_xmm_save to __glibc_unused1. Remove rtld_savespace_sse and __padding. (RTLD_CHECK_FOREIGN_CALL): Removed. (RTLD_ENABLE_FOREIGN_CALL): Likewise. (RTLD_PREPARE_FOREIGN_CALL): Likewise. (RTLD_FINALIZE_FOREIGN_CALL): Likewise. https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=a955dc4b8be25f9288dfaad15ef14a083be2ca78 commit a955dc4b8be25f9288dfaad15ef14a083be2ca78 Author: H.J. Lu <hjl.tools@gmail.com> Date: Sun Jul 12 14:41:20 2015 -0700 Align stack when calling __errno_location We should align stack to 16 bytes when calling __errno_location. [BZ #18661] * sysdeps/x86_64/fpu/s_cosf.S (__cosf): Align stack to 16 bytes when calling __errno_location. * sysdeps/x86_64/fpu/s_sincosf.S (__sincosf): Likewise. * sysdeps/x86_64/fpu/s_sinf.S (__sinf): Likewise. https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=16dcea99081d9f4a7fb2fadf13a69ff480feb30f commit 16dcea99081d9f4a7fb2fadf13a69ff480feb30f Author: H.J. Lu <hjl.tools@gmail.com> Date: Sun Jul 12 14:40:25 2015 -0700 Align stack to 16 bytes when calling __gettimeofday Subtract stack by 24 bytes instead of 16 bytes so that stack is aligned to 16 bytes when calling __gettimeofday. [BZ #18661] * sysdeps/unix/sysv/linux/x86_64/lowlevellock.S (__lll_timedwait_tid): Align stack to 16 bytes when calling __gettimeofday. https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=497480af688602f69dc1e49113106d6fcdff3d4d commit 497480af688602f69dc1e49113106d6fcdff3d4d Author: H.J. Lu <hjl.tools@gmail.com> Date: Sun Jul 12 14:38:58 2015 -0700 Align stack to 16 bytes when calling __setcontext Don't use pop to restore %rdi so that stack is aligned to 16 bytes when calling __setcontext. [BZ #18661] * sysdeps/unix/sysv/linux/x86_64/__start_context.S (__start_context): Don't use pop to restore %rdi so that stack is aligned to 16 bytes when calling __setcontext. https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=46c362d7c702b3ea2fb4e4a17cd633671793fa21 commit 46c362d7c702b3ea2fb4e4a17cd633671793fa21 Author: H.J. Lu <hjl.tools@gmail.com> Date: Wed Jul 29 03:41:58 2015 -0700 Compile {memcpy,strcmp}-sse2-unaligned.S only for libc {memcpy,strcmp}-sse2-unaligned.S aren't needed in ld.so. * sysdeps/x86_64/multiarch/memcpy-sse2-unaligned.S: Compile only for libc. * sysdeps/x86_64/multiarch/strcmp-sse2-unaligned.S: Likewise. -----------------------------------------------------------------------
This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "GNU C Library master sources". The branch, hjl/plt/master has been created at e407c803542127581dee0ecd346ce1b239eeb605 (commit) - Log ----------------------------------------------------------------- https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=e407c803542127581dee0ecd346ce1b239eeb605 commit e407c803542127581dee0ecd346ce1b239eeb605 Author: H.J. Lu <hjl.tools@gmail.com> Date: Wed Jul 29 04:49:38 2015 -0700 Use SSE optimized strcmp in x86-64 ld.so Since ld.so preserves vector registers now, we can SSE optimized strcmp in x86-64 ld.so. * sysdeps/x86_64/strcmp.S: Remove "#if !IS_IN (libc)". https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=9c5e89aae33638ac5507601b60a5b09f2acaafa5 commit 9c5e89aae33638ac5507601b60a5b09f2acaafa5 Author: H.J. Lu <hjl.tools@gmail.com> Date: Wed Jul 29 03:56:14 2015 -0700 Remove x86-64 rtld-xxx.c and rtld-xxx.S Since ld.so preserves vector registers now, we can use the regular, non-ifunc string and memory functions in ld.so. * sysdeps/x86_64/rtld-memcmp.c: Removed. * sysdeps/x86_64/rtld-memset.S: Likewise. * sysdeps/x86_64/rtld-strchr.S: Likewise. * sysdeps/x86_64/rtld-strlen.S: Likewise. * sysdeps/x86_64/multiarch/rtld-memcmp.c: Likewise. * sysdeps/x86_64/multiarch/rtld-memset.S: Likewise. https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=5fbc29538eb104ca074fb8bab9aae1d34be20ec6 commit 5fbc29538eb104ca074fb8bab9aae1d34be20ec6 Author: H.J. Lu <hjl.tools@gmail.com> Date: Wed Jul 29 03:47:54 2015 -0700 Replace %xmm8 with %xmm0 Since ld.so preserves vector registers now, we can use %xmm0 to avoid the REX prefix. * sysdeps/x86_64/memset.S: Replace %xmm8 with %xmm0. https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=4ca4b1e1266d624e2a018055d29a129a934fd1e6 commit 4ca4b1e1266d624e2a018055d29a129a934fd1e6 Author: H.J. Lu <hjl.tools@gmail.com> Date: Wed Jul 29 03:44:39 2015 -0700 Replace %xmm[8-12] with %xmm[0-4] Since ld.so preserves vector registers now, we can use %xmm[0-4] to avoid the REX prefix. * sysdeps/x86_64/strlen.S: Replace %xmm[8-12] with %xmm[0-4]. https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=953e8b213c2067664752c02975555c59b80907a8 commit 953e8b213c2067664752c02975555c59b80907a8 Author: H.J. Lu <hjl.tools@gmail.com> Date: Tue Jul 28 18:56:18 2015 -0700 Don't disable SSE in x86-64 ld.so Since ld.so preserves vector registers now, we can use SSE in ld.so. * sysdeps/i386/Makefile [$(subdir) == elf] (CFLAGS-.os): Add -mno-sse -mno-mmx for $(all-rtld-routines). [$(subdir) == elf] (tests-special): Add $(objpfx)tst-ld-sse-use.out. [$(subdir) == elf] ($(objpfx)tst-ld-sse-use.out): New rule. * sysdeps/x86/Makefile [$(subdir) == elf] (CFLAGS-.os): Removed. [$(subdir) == elf] (tests-special): Likewise. [$(subdir) == elf] ($(objpfx)tst-ld-sse-use.out): Likewise. * sysdeps/x86_64/Makefile [$(subdir) == elf] (CFLAGS-.os): Add -mno-mmx for $(all-rtld-routines). https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=dba9bf664566fa3230305bebf02f175eb8b9fb85 commit dba9bf664566fa3230305bebf02f175eb8b9fb85 Author: H.J. Lu <hjl.tools@gmail.com> Date: Sat Jul 11 13:25:25 2015 -0700 Save and restore vector registers in x86-64 ld.so This patch initiaizes GLRO(dl_x86_xstate) in dl_platform_init to indicate if the processor supports SSE, AVX or AVX512. It uses this information to properly save and restore vector registers in ld.so. Now we can use SSE in ld.so and delete FOREIGN_CALL macros. We can also retire the rtld_must_xmm_save field and remove the rtld_savespace_sse field in tcbhead_t. It is safe since they are internal to glibc. [BZ #15128] * sysdeps/x86_64/Makefile [$(subdir) == elf] (tests): Add ifuncmain8. (modules-names): Add ifuncmod8. ($(objpfx)ifuncmain8): New rule. * sysdeps/x86_64/dl-machine.h: Include <dl-procinfo.h> and <cpuid.h>. (elf_machine_runtime_setup): Use _dl_runtime_resolve_sse, _dl_runtime_resolve_avx, or _dl_runtime_resolve_avx512, _dl_runtime_profile_sse, _dl_runtime_profile_avx, or _dl_runtime_profile_avx512, based on HAS_ARCH_FEATURE. * sysdeps/x86_64/dl-trampoline.S: Rewrite. * sysdeps/x86_64/dl-trampoline.h: Likewise. * sysdeps/x86_64/ifuncmain8.c: New file. * sysdeps/x86_64/ifuncmod8.c: Likewise. * sysdeps/x86_64/nptl/tcb-offsets.sym (RTLD_SAVESPACE_SSE): Removed. * sysdeps/x86_64/nptl/tls.h (__128bits): Removed. (tcbhead_t): CHange rtld_must_xmm_save to __glibc_unused1. Remove rtld_savespace_sse and __padding. (RTLD_CHECK_FOREIGN_CALL): Removed. (RTLD_ENABLE_FOREIGN_CALL): Likewise. (RTLD_PREPARE_FOREIGN_CALL): Likewise. (RTLD_FINALIZE_FOREIGN_CALL): Likewise. https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=5e06993a5a4d172d9ab979e98cc0fb5949de16ef commit 5e06993a5a4d172d9ab979e98cc0fb5949de16ef Author: H.J. Lu <hjl.tools@gmail.com> Date: Sun Jul 12 14:41:20 2015 -0700 Align stack when calling __errno_location We should align stack to 16 bytes when calling __errno_location. [BZ #18661] * sysdeps/x86_64/fpu/s_cosf.S (__cosf): Align stack to 16 bytes when calling __errno_location. * sysdeps/x86_64/fpu/s_sincosf.S (__sincosf): Likewise. * sysdeps/x86_64/fpu/s_sinf.S (__sinf): Likewise. https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=e0aa3e3a6f0a2df74265a2219d95624ecf531f81 commit e0aa3e3a6f0a2df74265a2219d95624ecf531f81 Author: H.J. Lu <hjl.tools@gmail.com> Date: Sun Jul 12 14:40:25 2015 -0700 Align stack to 16 bytes when calling __gettimeofday Subtract stack by 24 bytes instead of 16 bytes so that stack is aligned to 16 bytes when calling __gettimeofday. [BZ #18661] * sysdeps/unix/sysv/linux/x86_64/lowlevellock.S (__lll_timedwait_tid): Align stack to 16 bytes when calling __gettimeofday. https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=bc60509483d3ab0d795745e91bcca13c8bccf89e commit bc60509483d3ab0d795745e91bcca13c8bccf89e Author: H.J. Lu <hjl.tools@gmail.com> Date: Sun Jul 12 14:38:58 2015 -0700 Align stack to 16 bytes when calling __setcontext Don't use pop to restore %rdi so that stack is aligned to 16 bytes when calling __setcontext. [BZ #18661] * sysdeps/unix/sysv/linux/x86_64/__start_context.S (__start_context): Don't use pop to restore %rdi so that stack is aligned to 16 bytes when calling __setcontext. https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=9644c9267351b4c286c44fa4111a71c4c78b3ec8 commit 9644c9267351b4c286c44fa4111a71c4c78b3ec8 Author: H.J. Lu <hjl.tools@gmail.com> Date: Wed Jul 29 03:41:58 2015 -0700 Compile {memcpy,strcmp}-sse2-unaligned.S only for libc {memcpy,strcmp}-sse2-unaligned.S aren't needed in ld.so. * sysdeps/x86_64/multiarch/memcpy-sse2-unaligned.S: Compile only for libc. * sysdeps/x86_64/multiarch/strcmp-sse2-unaligned.S: Likewise. https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=fa437015d9c0a0d4628f8b042dcc865dce1ca335 commit fa437015d9c0a0d4628f8b042dcc865dce1ca335 Author: H.J. Lu <hjl.tools@gmail.com> Date: Sat Aug 1 07:47:16 2015 -0700 Update elision-conf.c for cpu-feattures https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=71ed3c9d3f7a099ea19590479edd3fbe41e68a0c commit 71ed3c9d3f7a099ea19590479edd3fbe41e68a0c Author: H.J. Lu <hjl.tools@gmail.com> Date: Fri Jul 31 13:46:05 2015 -0700 Use LOAD_RTLD_GLOBAL_RO_RDX and HAS_XXX in libmvec https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=8627c662750246f16376104de1cd04fb6f287b9e commit 8627c662750246f16376104de1cd04fb6f287b9e Author: H.J. Lu <hjl.tools@gmail.com> Date: Fri Jul 31 16:52:19 2015 -0700 Use LOAD_GOT_AND_RTLD_GLOBAL_RO and HAS_XXX in i686/multiarch https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=90fea981859f96b666d8afadd842159fd83d21c7 commit 90fea981859f96b666d8afadd842159fd83d21c7 Author: H.J. Lu <hjl.tools@gmail.com> Date: Fri Jul 31 13:41:04 2015 -0700 Use LOAD_RTLD_GLOBAL_RO_RDX and HAS_XXX in x86_64/multiarch https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=7eeb9e24373749686c2757cf95b2273c8ec966e9 commit 7eeb9e24373749686c2757cf95b2273c8ec966e9 Author: H.J. Lu <hjl.tools@gmail.com> Date: Fri Jul 31 07:30:04 2015 -0700 _dl_x86_cpu_features to rtld_global for x86 -----------------------------------------------------------------------
This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "GNU C Library master sources". The branch, hjl/pr18661 has been created at 143e564cf5df4bf97ef0be859329b78311182562 (commit) - Log ----------------------------------------------------------------- https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=143e564cf5df4bf97ef0be859329b78311182562 commit 143e564cf5df4bf97ef0be859329b78311182562 Author: H.J. Lu <hjl.tools@gmail.com> Date: Sun Jul 12 14:41:20 2015 -0700 Align stack when calling __errno_location We should align stack to 16 bytes when calling __errno_location. [BZ #18661] * sysdeps/x86_64/fpu/s_cosf.S (__cosf): Align stack to 16 bytes when calling __errno_location. * sysdeps/x86_64/fpu/s_sincosf.S (__sincosf): Likewise. * sysdeps/x86_64/fpu/s_sinf.S (__sinf): Likewise. https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=5958c1784e0f5b6f476f927ac6a449ec6e0f911e commit 5958c1784e0f5b6f476f927ac6a449ec6e0f911e Author: H.J. Lu <hjl.tools@gmail.com> Date: Sun Jul 12 14:40:25 2015 -0700 Align stack to 16 bytes when calling __gettimeofday Subtract stack by 24 bytes instead of 16 bytes so that stack is aligned to 16 bytes when calling __gettimeofday. [BZ #18661] * sysdeps/unix/sysv/linux/x86_64/lowlevellock.S (__lll_timedwait_tid): Align stack to 16 bytes when calling __gettimeofday. https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=fa1f4698c17560f8e2bdaa9b89dafc780b00e3b9 commit fa1f4698c17560f8e2bdaa9b89dafc780b00e3b9 Author: H.J. Lu <hjl.tools@gmail.com> Date: Sun Jul 12 14:38:58 2015 -0700 Align stack to 16 bytes when calling __setcontext Don't use pop to restore %rdi so that stack is aligned to 16 bytes when calling __setcontext. [BZ #18661] * sysdeps/unix/sysv/linux/x86_64/__start_context.S (__start_context): Don't use pop to restore %rdi so that stack is aligned to 16 bytes when calling __setcontext. https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=2504551c12a50fcbe8ce50924ef4df2685ff72b2 commit 2504551c12a50fcbe8ce50924ef4df2685ff72b2 Author: H.J. Lu <hjl.tools@gmail.com> Date: Wed Jul 29 03:41:58 2015 -0700 Compile {memcpy,strcmp}-sse2-unaligned.S only for libc {memcpy,strcmp}-sse2-unaligned.S aren't needed in ld.so. * sysdeps/x86_64/multiarch/memcpy-sse2-unaligned.S: Compile only for libc. * sysdeps/x86_64/multiarch/strcmp-sse2-unaligned.S: Likewise. -----------------------------------------------------------------------
This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "GNU C Library master sources". The branch, hjl/plt/master has been created at 3f43755229a5cab4592180b9a65f80b1cbc91814 (commit) - Log ----------------------------------------------------------------- https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=3f43755229a5cab4592180b9a65f80b1cbc91814 commit 3f43755229a5cab4592180b9a65f80b1cbc91814 Author: H.J. Lu <hjl.tools@gmail.com> Date: Wed Jul 29 04:49:38 2015 -0700 Use SSE optimized strcmp in x86-64 ld.so Since ld.so preserves vector registers now, we can SSE optimized strcmp in x86-64 ld.so. * sysdeps/x86_64/strcmp.S: Remove "#if !IS_IN (libc)". https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=3c48892c007bbcea35575db5896048c6a76974e8 commit 3c48892c007bbcea35575db5896048c6a76974e8 Author: H.J. Lu <hjl.tools@gmail.com> Date: Wed Jul 29 03:56:14 2015 -0700 Remove x86-64 rtld-xxx.c and rtld-xxx.S Since ld.so preserves vector registers now, we can use the regular, non-ifunc string and memory functions in ld.so. * sysdeps/x86_64/rtld-memcmp.c: Removed. * sysdeps/x86_64/rtld-memset.S: Likewise. * sysdeps/x86_64/rtld-strchr.S: Likewise. * sysdeps/x86_64/rtld-strlen.S: Likewise. * sysdeps/x86_64/multiarch/rtld-memcmp.c: Likewise. * sysdeps/x86_64/multiarch/rtld-memset.S: Likewise. https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=2074ac56ffff5c3c076a481bb5d2bf0544edb2d9 commit 2074ac56ffff5c3c076a481bb5d2bf0544edb2d9 Author: H.J. Lu <hjl.tools@gmail.com> Date: Wed Jul 29 03:47:54 2015 -0700 Replace %xmm8 with %xmm0 Since ld.so preserves vector registers now, we can use %xmm0 to avoid the REX prefix. * sysdeps/x86_64/memset.S: Replace %xmm8 with %xmm0. https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=4573d669877bca37699d8074c96c8cfad3d94e38 commit 4573d669877bca37699d8074c96c8cfad3d94e38 Author: H.J. Lu <hjl.tools@gmail.com> Date: Wed Jul 29 03:44:39 2015 -0700 Replace %xmm[8-12] with %xmm[0-4] Since ld.so preserves vector registers now, we can use %xmm[0-4] to avoid the REX prefix. * sysdeps/x86_64/strlen.S: Replace %xmm[8-12] with %xmm[0-4]. https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=aab4fd9789eeaa1359edaa5ab4864967306f9f5a commit aab4fd9789eeaa1359edaa5ab4864967306f9f5a Author: H.J. Lu <hjl.tools@gmail.com> Date: Tue Jul 28 18:56:18 2015 -0700 Don't disable SSE in x86-64 ld.so Since ld.so preserves vector registers now, we can use SSE in ld.so. * sysdeps/i386/Makefile [$(subdir) == elf] (CFLAGS-.os): Add -mno-sse -mno-mmx for $(all-rtld-routines). [$(subdir) == elf] (tests-special): Add $(objpfx)tst-ld-sse-use.out. [$(subdir) == elf] ($(objpfx)tst-ld-sse-use.out): New rule. * sysdeps/x86/Makefile [$(subdir) == elf] (CFLAGS-.os): Removed. [$(subdir) == elf] (tests-special): Likewise. [$(subdir) == elf] ($(objpfx)tst-ld-sse-use.out): Likewise. * sysdeps/x86_64/Makefile [$(subdir) == elf] (CFLAGS-.os): Add -mno-mmx for $(all-rtld-routines). https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=8f16a2ce3066c046fe962fd093235b010c5005e0 commit 8f16a2ce3066c046fe962fd093235b010c5005e0 Author: H.J. Lu <hjl.tools@gmail.com> Date: Sat Jul 11 13:25:25 2015 -0700 Save and restore vector registers in x86-64 ld.so This patch initiaizes GLRO(dl_x86_xstate) in dl_platform_init to indicate if the processor supports SSE, AVX or AVX512. It uses this information to properly save and restore vector registers in ld.so. Now we can use SSE in ld.so and delete FOREIGN_CALL macros. We can also retire the rtld_must_xmm_save field and remove the rtld_savespace_sse field in tcbhead_t. It is safe since they are internal to glibc. [BZ #15128] * sysdeps/x86_64/Makefile [$(subdir) == elf] (tests): Add ifuncmain8. (modules-names): Add ifuncmod8. ($(objpfx)ifuncmain8): New rule. * sysdeps/x86_64/dl-machine.h: Include <dl-procinfo.h> and <cpuid.h>. (elf_machine_runtime_setup): Use _dl_runtime_resolve_sse, _dl_runtime_resolve_avx, or _dl_runtime_resolve_avx512, _dl_runtime_profile_sse, _dl_runtime_profile_avx, or _dl_runtime_profile_avx512, based on HAS_ARCH_FEATURE. * sysdeps/x86_64/dl-trampoline.S: Rewrite. * sysdeps/x86_64/dl-trampoline.h: Likewise. * sysdeps/x86_64/ifuncmain8.c: New file. * sysdeps/x86_64/ifuncmod8.c: Likewise. * sysdeps/x86_64/nptl/tcb-offsets.sym (RTLD_SAVESPACE_SSE): Removed. * sysdeps/x86_64/nptl/tls.h (__128bits): Removed. (tcbhead_t): CHange rtld_must_xmm_save to __glibc_unused1. Remove rtld_savespace_sse and __padding. (RTLD_CHECK_FOREIGN_CALL): Removed. (RTLD_ENABLE_FOREIGN_CALL): Likewise. (RTLD_PREPARE_FOREIGN_CALL): Likewise. (RTLD_FINALIZE_FOREIGN_CALL): Likewise. https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=c0a07e6a2c03d64704027102a9720913182d1d56 commit c0a07e6a2c03d64704027102a9720913182d1d56 Author: H.J. Lu <hjl.tools@gmail.com> Date: Sun Jul 12 14:41:20 2015 -0700 Align stack when calling __errno_location We should align stack to 16 bytes when calling __errno_location. [BZ #18661] * sysdeps/x86_64/fpu/s_cosf.S (__cosf): Align stack to 16 bytes when calling __errno_location. * sysdeps/x86_64/fpu/s_sincosf.S (__sincosf): Likewise. * sysdeps/x86_64/fpu/s_sinf.S (__sinf): Likewise. https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=2ee2f14b2786040bfca1faa1ab9816bd397a4ec7 commit 2ee2f14b2786040bfca1faa1ab9816bd397a4ec7 Author: H.J. Lu <hjl.tools@gmail.com> Date: Sun Jul 12 14:40:25 2015 -0700 Align stack to 16 bytes when calling __gettimeofday Subtract stack by 24 bytes instead of 16 bytes so that stack is aligned to 16 bytes when calling __gettimeofday. [BZ #18661] * sysdeps/unix/sysv/linux/x86_64/lowlevellock.S (__lll_timedwait_tid): Align stack to 16 bytes when calling __gettimeofday. https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=43de4ea949245b79d255ac1d48c81184c57c7396 commit 43de4ea949245b79d255ac1d48c81184c57c7396 Author: H.J. Lu <hjl.tools@gmail.com> Date: Sun Jul 12 14:38:58 2015 -0700 Align stack to 16 bytes when calling __setcontext Don't use pop to restore %rdi so that stack is aligned to 16 bytes when calling __setcontext. [BZ #18661] * sysdeps/unix/sysv/linux/x86_64/__start_context.S (__start_context): Don't use pop to restore %rdi so that stack is aligned to 16 bytes when calling __setcontext. https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=b5cd6d5a870d7641fef40420f221cab4e8050b48 commit b5cd6d5a870d7641fef40420f221cab4e8050b48 Author: H.J. Lu <hjl.tools@gmail.com> Date: Wed Jul 29 03:41:58 2015 -0700 Compile {memcpy,strcmp}-sse2-unaligned.S only for libc {memcpy,strcmp}-sse2-unaligned.S aren't needed in ld.so. * sysdeps/x86_64/multiarch/memcpy-sse2-unaligned.S: Compile only for libc. * sysdeps/x86_64/multiarch/strcmp-sse2-unaligned.S: Likewise. https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=dc3022ec8a22f586925a1a8d7bff208a3c4f82f0 commit dc3022ec8a22f586925a1a8d7bff208a3c4f82f0 Author: H.J. Lu <hjl.tools@gmail.com> Date: Fri Jul 31 07:30:04 2015 -0700 _dl_x86_cpu_features to rtld_global for x86 -----------------------------------------------------------------------
This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "GNU C Library master sources". The branch, hjl/plt/master has been created at 043fcdfc8139d68b27f737063a8e1c2f693c9b2b (commit) - Log ----------------------------------------------------------------- https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=043fcdfc8139d68b27f737063a8e1c2f693c9b2b commit 043fcdfc8139d68b27f737063a8e1c2f693c9b2b Author: H.J. Lu <hjl.tools@gmail.com> Date: Wed Jul 29 04:49:38 2015 -0700 Use SSE optimized strcmp in x86-64 ld.so Since ld.so preserves vector registers now, we can SSE optimized strcmp in x86-64 ld.so. * sysdeps/x86_64/strcmp.S: Remove "#if !IS_IN (libc)". https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=93b2eedb81fd263234d37e5786886f331062f7c7 commit 93b2eedb81fd263234d37e5786886f331062f7c7 Author: H.J. Lu <hjl.tools@gmail.com> Date: Wed Jul 29 03:56:14 2015 -0700 Remove x86-64 rtld-xxx.c and rtld-xxx.S Since ld.so preserves vector registers now, we can use the regular, non-ifunc string and memory functions in ld.so. * sysdeps/x86_64/rtld-memcmp.c: Removed. * sysdeps/x86_64/rtld-memset.S: Likewise. * sysdeps/x86_64/rtld-strchr.S: Likewise. * sysdeps/x86_64/rtld-strlen.S: Likewise. * sysdeps/x86_64/multiarch/rtld-memcmp.c: Likewise. * sysdeps/x86_64/multiarch/rtld-memset.S: Likewise. https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=515cbe2bae3d958687530081cd41860e10d41686 commit 515cbe2bae3d958687530081cd41860e10d41686 Author: H.J. Lu <hjl.tools@gmail.com> Date: Wed Jul 29 03:47:54 2015 -0700 Replace %xmm8 with %xmm0 Since ld.so preserves vector registers now, we can use %xmm0 to avoid the REX prefix. * sysdeps/x86_64/memset.S: Replace %xmm8 with %xmm0. https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=172112aff93a6c01f354195c2ebc4da08caa0cf5 commit 172112aff93a6c01f354195c2ebc4da08caa0cf5 Author: H.J. Lu <hjl.tools@gmail.com> Date: Wed Jul 29 03:44:39 2015 -0700 Replace %xmm[8-12] with %xmm[0-4] Since ld.so preserves vector registers now, we can use %xmm[0-4] to avoid the REX prefix. * sysdeps/x86_64/strlen.S: Replace %xmm[8-12] with %xmm[0-4]. https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=bd0246a67c8224166c81d8779e47d14ae725beb8 commit bd0246a67c8224166c81d8779e47d14ae725beb8 Author: H.J. Lu <hjl.tools@gmail.com> Date: Tue Jul 28 18:56:18 2015 -0700 Don't disable SSE in x86-64 ld.so Since ld.so preserves vector registers now, we can use SSE in ld.so. * sysdeps/i386/Makefile [$(subdir) == elf] (CFLAGS-.os): Add -mno-sse -mno-mmx for $(all-rtld-routines). [$(subdir) == elf] (tests-special): Add $(objpfx)tst-ld-sse-use.out. [$(subdir) == elf] ($(objpfx)tst-ld-sse-use.out): New rule. * sysdeps/x86/Makefile [$(subdir) == elf] (CFLAGS-.os): Removed. [$(subdir) == elf] (tests-special): Likewise. [$(subdir) == elf] ($(objpfx)tst-ld-sse-use.out): Likewise. * sysdeps/x86_64/Makefile [$(subdir) == elf] (CFLAGS-.os): Add -mno-mmx for $(all-rtld-routines). https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=7eb94b3b44ccceb808b9310ec7e732960796f930 commit 7eb94b3b44ccceb808b9310ec7e732960796f930 Author: H.J. Lu <hjl.tools@gmail.com> Date: Sat Jul 11 13:25:25 2015 -0700 Save and restore vector registers in x86-64 ld.so This patch initiaizes GLRO(dl_x86_xstate) in dl_platform_init to indicate if the processor supports SSE, AVX or AVX512. It uses this information to properly save and restore vector registers in ld.so. Now we can use SSE in ld.so and delete FOREIGN_CALL macros. We can also retire the rtld_must_xmm_save field and remove the rtld_savespace_sse field in tcbhead_t. It is safe since they are internal to glibc. [BZ #15128] * sysdeps/x86_64/Makefile [$(subdir) == elf] (tests): Add ifuncmain8. (modules-names): Add ifuncmod8. ($(objpfx)ifuncmain8): New rule. * sysdeps/x86_64/dl-machine.h: Include <dl-procinfo.h> and <cpuid.h>. (elf_machine_runtime_setup): Use _dl_runtime_resolve_sse, _dl_runtime_resolve_avx, or _dl_runtime_resolve_avx512, _dl_runtime_profile_sse, _dl_runtime_profile_avx, or _dl_runtime_profile_avx512, based on HAS_ARCH_FEATURE. * sysdeps/x86_64/dl-trampoline.S: Rewrite. * sysdeps/x86_64/dl-trampoline.h: Likewise. * sysdeps/x86_64/ifuncmain8.c: New file. * sysdeps/x86_64/ifuncmod8.c: Likewise. * sysdeps/x86_64/nptl/tcb-offsets.sym (RTLD_SAVESPACE_SSE): Removed. * sysdeps/x86_64/nptl/tls.h (__128bits): Removed. (tcbhead_t): CHange rtld_must_xmm_save to __glibc_unused1. Remove rtld_savespace_sse and __padding. (RTLD_CHECK_FOREIGN_CALL): Removed. (RTLD_ENABLE_FOREIGN_CALL): Likewise. (RTLD_PREPARE_FOREIGN_CALL): Likewise. (RTLD_FINALIZE_FOREIGN_CALL): Likewise. https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=a018fe7a7229c3048dcd5765716b719905820f64 commit a018fe7a7229c3048dcd5765716b719905820f64 Author: H.J. Lu <hjl.tools@gmail.com> Date: Sun Jul 12 14:41:20 2015 -0700 Align stack when calling __errno_location We should align stack to 16 bytes when calling __errno_location. [BZ #18661] * sysdeps/x86_64/fpu/s_cosf.S (__cosf): Align stack to 16 bytes when calling __errno_location. * sysdeps/x86_64/fpu/s_sincosf.S (__sincosf): Likewise. * sysdeps/x86_64/fpu/s_sinf.S (__sinf): Likewise. https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=dececeb4701899392f987a0d9eb92fe8fd0e9e32 commit dececeb4701899392f987a0d9eb92fe8fd0e9e32 Author: H.J. Lu <hjl.tools@gmail.com> Date: Sun Jul 12 14:40:25 2015 -0700 Align stack to 16 bytes when calling __gettimeofday Subtract stack by 24 bytes instead of 16 bytes so that stack is aligned to 16 bytes when calling __gettimeofday. [BZ #18661] * sysdeps/unix/sysv/linux/x86_64/lowlevellock.S (__lll_timedwait_tid): Align stack to 16 bytes when calling __gettimeofday. https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=18a1650a345418cc2a4c83372cb4402d0da4535d commit 18a1650a345418cc2a4c83372cb4402d0da4535d Author: H.J. Lu <hjl.tools@gmail.com> Date: Sun Jul 12 14:38:58 2015 -0700 Align stack to 16 bytes when calling __setcontext Don't use pop to restore %rdi so that stack is aligned to 16 bytes when calling __setcontext. [BZ #18661] * sysdeps/unix/sysv/linux/x86_64/__start_context.S (__start_context): Don't use pop to restore %rdi so that stack is aligned to 16 bytes when calling __setcontext. https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=1c1d5084bb4de396487418ca2fd96538e489100e commit 1c1d5084bb4de396487418ca2fd96538e489100e Author: H.J. Lu <hjl.tools@gmail.com> Date: Wed Jul 29 03:41:58 2015 -0700 Compile {memcpy,strcmp}-sse2-unaligned.S only for libc {memcpy,strcmp}-sse2-unaligned.S aren't needed in ld.so. * sysdeps/x86_64/multiarch/memcpy-sse2-unaligned.S: Compile only for libc. * sysdeps/x86_64/multiarch/strcmp-sse2-unaligned.S: Likewise. -----------------------------------------------------------------------
This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "GNU C Library master sources". The branch, hjl/plt/2.21 has been created at 555186f0c71fee41e33ad72cb38be974221b2e3c (commit) - Log ----------------------------------------------------------------- https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=555186f0c71fee41e33ad72cb38be974221b2e3c commit 555186f0c71fee41e33ad72cb38be974221b2e3c Author: H.J. Lu <hjl.tools@gmail.com> Date: Wed Jul 29 04:49:38 2015 -0700 Use SSE optimized strcmp in x86-64 ld.so Since ld.so preserves vector registers now, we can SSE optimized strcmp in x86-64 ld.so. * sysdeps/x86_64/strcmp.S: Remove "#if !IS_IN (libc)". https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=40258193697061c87e5cfe285cd04adcf1ae655f commit 40258193697061c87e5cfe285cd04adcf1ae655f Author: H.J. Lu <hjl.tools@gmail.com> Date: Wed Jul 29 03:56:14 2015 -0700 Remove x86-64 rtld-xxx.c and rtld-xxx.S Since ld.so preserves vector registers now, we can use the regular, non-ifunc string and memory functions in ld.so. * sysdeps/x86_64/rtld-memcmp.c: Removed. * sysdeps/x86_64/rtld-memset.S: Likewise. * sysdeps/x86_64/rtld-strchr.S: Likewise. * sysdeps/x86_64/rtld-strlen.S: Likewise. * sysdeps/x86_64/multiarch/rtld-memcmp.c: Likewise. * sysdeps/x86_64/multiarch/rtld-memset.S: Likewise. https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=a687fe847371d763d6fef546bd8efe82a8f88d40 commit a687fe847371d763d6fef546bd8efe82a8f88d40 Author: H.J. Lu <hjl.tools@gmail.com> Date: Wed Jul 29 03:47:54 2015 -0700 Replace %xmm8 with %xmm0 Since ld.so preserves vector registers now, we can use %xmm0 to avoid the REX prefix. * sysdeps/x86_64/memset.S: Replace %xmm8 with %xmm0. https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=5ad67d1f4b30eada1bf262566213dcca2e3893f7 commit 5ad67d1f4b30eada1bf262566213dcca2e3893f7 Author: H.J. Lu <hjl.tools@gmail.com> Date: Wed Jul 29 03:44:39 2015 -0700 Replace %xmm[8-12] with %xmm[0-4] Since ld.so preserves vector registers now, we can use %xmm[0-4] to avoid the REX prefix. * sysdeps/x86_64/strlen.S: Replace %xmm[8-12] with %xmm[0-4]. https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=fb086134f5eba610a4020e655dce46b75302d81c commit fb086134f5eba610a4020e655dce46b75302d81c Author: H.J. Lu <hjl.tools@gmail.com> Date: Tue Jul 28 18:56:18 2015 -0700 Don't disable SSE in x86-64 ld.so Since ld.so preserves vector registers now, we can use SSE in ld.so. * sysdeps/i386/Makefile [$(subdir) == elf] (CFLAGS-.os): Add -mno-sse -mno-mmx for $(all-rtld-routines). [$(subdir) == elf] (tests-special): Add $(objpfx)tst-ld-sse-use.out. [$(subdir) == elf] ($(objpfx)tst-ld-sse-use.out): New rule. * sysdeps/x86/Makefile [$(subdir) == elf] (CFLAGS-.os): Removed. [$(subdir) == elf] (tests-special): Likewise. [$(subdir) == elf] ($(objpfx)tst-ld-sse-use.out): Likewise. * sysdeps/x86_64/Makefile [$(subdir) == elf] (CFLAGS-.os): Add -mno-mmx for $(all-rtld-routines). https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=c229191cffc809ede2574232fd1bef4f03e2c62f commit c229191cffc809ede2574232fd1bef4f03e2c62f Author: H.J. Lu <hjl.tools@gmail.com> Date: Sat Jul 11 13:25:25 2015 -0700 Save and restore vector registers in x86-64 ld.so This patch initiaizes GLRO(dl_x86_xstate) in dl_platform_init to indicate if the processor supports SSE, AVX or AVX512. It uses this information to properly save and restore vector registers in ld.so. Now we can use SSE in ld.so and delete FOREIGN_CALL macros. We can also retire the rtld_must_xmm_save field and remove the rtld_savespace_sse field in tcbhead_t. It is safe since they are internal to glibc. [BZ #15128] * sysdeps/x86_64/Makefile [$(subdir) == elf] (tests): Add ifuncmain8. (modules-names): Add ifuncmod8. ($(objpfx)ifuncmain8): New rule. * sysdeps/x86_64/dl-machine.h: Include <dl-procinfo.h> and <cpuid.h>. (elf_machine_runtime_setup): Use _dl_runtime_resolve_sse, _dl_runtime_resolve_avx, or _dl_runtime_resolve_avx512, _dl_runtime_profile_sse, _dl_runtime_profile_avx, or _dl_runtime_profile_avx512, based on HAS_ARCH_FEATURE. * sysdeps/x86_64/dl-trampoline.S: Rewrite. * sysdeps/x86_64/dl-trampoline.h: Likewise. * sysdeps/x86_64/ifuncmain8.c: New file. * sysdeps/x86_64/ifuncmod8.c: Likewise. * sysdeps/x86_64/nptl/tcb-offsets.sym (RTLD_SAVESPACE_SSE): Removed. * sysdeps/x86_64/nptl/tls.h (__128bits): Removed. (tcbhead_t): CHange rtld_must_xmm_save to __glibc_unused1. Remove rtld_savespace_sse and __padding. (RTLD_CHECK_FOREIGN_CALL): Removed. (RTLD_ENABLE_FOREIGN_CALL): Likewise. (RTLD_PREPARE_FOREIGN_CALL): Likewise. (RTLD_FINALIZE_FOREIGN_CALL): Likewise. https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=bac692ed46c2ff69ac859358b771fd1db6951800 commit bac692ed46c2ff69ac859358b771fd1db6951800 Author: H.J. Lu <hjl.tools@gmail.com> Date: Sun Jul 12 14:41:20 2015 -0700 Align stack when calling __errno_location We should align stack to 16 bytes when calling __errno_location. [BZ #18661] * sysdeps/x86_64/fpu/s_cosf.S (__cosf): Align stack to 16 bytes when calling __errno_location. * sysdeps/x86_64/fpu/s_sincosf.S (__sincosf): Likewise. * sysdeps/x86_64/fpu/s_sinf.S (__sinf): Likewise. https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=b9645f91a56d5892a18cb521e195f924292e1367 commit b9645f91a56d5892a18cb521e195f924292e1367 Author: H.J. Lu <hjl.tools@gmail.com> Date: Sun Jul 12 14:40:25 2015 -0700 Align stack to 16 bytes when calling __gettimeofday Subtract stack by 24 bytes instead of 16 bytes so that stack is aligned to 16 bytes when calling __gettimeofday. [BZ #18661] * sysdeps/unix/sysv/linux/x86_64/lowlevellock.S (__lll_timedwait_tid): Align stack to 16 bytes when calling __gettimeofday. https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=46eaabd373ca3f77a46089dc1b79b7ca3f9a4fcd commit 46eaabd373ca3f77a46089dc1b79b7ca3f9a4fcd Author: H.J. Lu <hjl.tools@gmail.com> Date: Sun Jul 12 14:38:58 2015 -0700 Align stack to 16 bytes when calling __setcontext Don't use pop to restore %rdi so that stack is aligned to 16 bytes when calling __setcontext. [BZ #18661] * sysdeps/unix/sysv/linux/x86_64/__start_context.S (__start_context): Don't use pop to restore %rdi so that stack is aligned to 16 bytes when calling __setcontext. https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=a00a8b1dd3507d69077fbacd2cb2503f0ba2e462 commit a00a8b1dd3507d69077fbacd2cb2503f0ba2e462 Author: H.J. Lu <hjl.tools@gmail.com> Date: Wed Jul 29 03:41:58 2015 -0700 Compile {memcpy,strcmp}-sse2-unaligned.S only for libc {memcpy,strcmp}-sse2-unaligned.S aren't needed in ld.so. * sysdeps/x86_64/multiarch/memcpy-sse2-unaligned.S: Compile only for libc. * sysdeps/x86_64/multiarch/strcmp-sse2-unaligned.S: Likewise. https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=8b34a808a30703b60ab9416979a32fa83c4e86e2 commit 8b34a808a30703b60ab9416979a32fa83c4e86e2 Author: H.J. Lu <hjl.tools@gmail.com> Date: Sat Aug 1 07:47:16 2015 -0700 Update x86 elision-conf.c for <cpu-features.h> This patch updates x86 elision-conf.c to use the newly defined HAS_CPU_FEATURE from <cpu-features.h>. * sysdeps/unix/sysv/linux/x86/elision-conf.c (elision_init): Replace HAS_RTM with HAS_CPU_FEATURE (RTM). https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=2764863736e437eeba3235a13c58202e269dedbb commit 2764863736e437eeba3235a13c58202e269dedbb Author: H.J. Lu <hjl.tools@gmail.com> Date: Fri Jul 31 16:52:19 2015 -0700 Update i686 multiarch functions for <cpu-features.h> This patch updates i686 multiarch functions to use the newly defined HAS_CPU_FEATURE, HAS_ARCH_FEATURE, LOAD_GOT_AND_RTLD_GLOBAL_RO and LOAD_FUNC_GOT_EAX from <cpu-features.h>. * sysdeps/i386/i686/fpu/multiarch/e_expf.c: Replace HAS_XXX with HAS_CPU_FEATURE/HAS_ARCH_FEATURE (XXX). * sysdeps/i386/i686/fpu/multiarch/s_cosf.c: Likewise. * sysdeps/i386/i686/fpu/multiarch/s_cosf.c: Likewise. * sysdeps/i386/i686/fpu/multiarch/s_sincosf.c: Likewise. * sysdeps/i386/i686/fpu/multiarch/s_sinf.c: Likewise. * sysdeps/i386/i686/multiarch/ifunc-impl-list.c: Likewise. * sysdeps/i386/i686/multiarch/s_fma.c: Likewise. * sysdeps/i386/i686/multiarch/s_fmaf.c: Likewise. * sysdeps/i386/i686/multiarch/bcopy.S: Remove __init_cpu_features call. Merge SHARED and !SHARED. Add LOAD_GOT_AND_RTLD_GLOBAL_RO. Use LOAD_FUNC_GOT_EAX to load function address. Replace HAS_XXX with HAS_CPU_FEATURE/HAS_ARCH_FEATURE (XXX). * 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/strcasecmp.S: Likewise. * sysdeps/i386/i686/multiarch/strcat.S: Likewise. * sysdeps/i386/i686/multiarch/strchr.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/strnlen.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. https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=b846eb01242c35fa60a30cf7950f0a28d3ac3f62 commit b846eb01242c35fa60a30cf7950f0a28d3ac3f62 Author: H.J. Lu <hjl.tools@gmail.com> Date: Fri Jul 31 13:41:04 2015 -0700 Update x86_64 multiarch functions for <cpu-features.h> This patch updates x86_64 multiarch functions to use the newly defined HAS_CPU_FEATURE, HAS_ARCH_FEATURE and LOAD_RTLD_GLOBAL_RO_RDX from <cpu-features.h>. * sysdeps/x86_64/fpu/multiarch/e_asin.c: Replace HAS_XXX with HAS_CPU_FEATURE/HAS_ARCH_FEATURE (XXX). * 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_fma.c: Likewise. * sysdeps/x86_64/fpu/multiarch/s_fmaf.c: Likewise. * sysdeps/x86_64/fpu/multiarch/s_sin.c: Likewise. * sysdeps/x86_64/fpu/multiarch/s_tan.c: Likewise. * sysdeps/x86_64/multiarch/ifunc-impl-list.c: Likewise. * sysdeps/x86_64/multiarch/sched_cpucount.c: Likewise. * sysdeps/x86_64/multiarch/strstr.c: Likewise. * sysdeps/x86_64/multiarch/memmove.c: Likewise. * sysdeps/x86_64/multiarch/memmove_chk.c: Likewise. * sysdeps/x86_64/multiarch/test-multiarch.c: Likewise. * sysdeps/x86_64/multiarch/memcmp.S: Remove __init_cpu_features call. Add LOAD_RTLD_GLOBAL_RO_RDX. Replace HAS_XXX with HAS_CPU_FEATURE/HAS_ARCH_FEATURE (XXX). * sysdeps/x86_64/multiarch/memcpy.S: Likewise. * sysdeps/x86_64/multiarch/memcpy_chk.S: Likewise. * sysdeps/x86_64/multiarch/mempcpy.S: Likewise. * sysdeps/x86_64/multiarch/mempcpy_chk.S: Likewise. * sysdeps/x86_64/multiarch/memset.S: Likewise. * sysdeps/x86_64/multiarch/memset_chk.S: Likewise. * sysdeps/x86_64/multiarch/strcat.S: Likewise. * sysdeps/x86_64/multiarch/strchr.S: Likewise. * sysdeps/x86_64/multiarch/strcmp.S: Likewise. * sysdeps/x86_64/multiarch/strcpy.S: Likewise. * sysdeps/x86_64/multiarch/strcspn.S: Likewise. * sysdeps/x86_64/multiarch/strspn.S: Likewise. * sysdeps/x86_64/multiarch/wcscpy.S: Likewise. * sysdeps/x86_64/multiarch/wmemcmp.S: Likewise. https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=d55078bafe0a30062c6dd2d95811c9949e0fbd3b commit d55078bafe0a30062c6dd2d95811c9949e0fbd3b Author: H.J. Lu <hjl.tools@gmail.com> Date: Fri Jul 31 07:30:04 2015 -0700 Add _dl_x86_cpu_features to rtld_global in ld.so This patch adds _dl_x86_cpu_features to rtld_global in x86 ld.so and initializes it early before __libc_start_main is called so that cpu_features is always available when it is used and we can avoid calling __init_cpu_features in IFUNC selectors. * sysdeps/i386/dl-machine.h: Include <cpu-features.c>. (dl_platform_init): Call init_cpu_features. * sysdeps/i386/dl-procinfo.c (_dl_x86_cpu_features): New. * sysdeps/i386/i686/cacheinfo.c (DISABLE_PREFERRED_MEMORY_INSTRUCTION): Removed. * sysdeps/i386/i686/multiarch/ifunc-defines.sym (KIND_OFFSET): Removed. * sysdeps/i386/ldsodefs.h: Include <cpu-features.h>. * sysdeps/unix/sysv/linux/x86_64/dl-procinfo.c: Include <sysdeps/x86_64/dl-procinfo.c> instead of sysdeps/generic/dl-procinfo.c>. * sysdeps/x86/Makefile [$(subdir) == csu] (gen-as-const-headers): Add cpu-features-offsets.sym and rtld-global-offsets.sym. * sysdeps/x86/cpu-features-offsets.sym: New file. * sysdeps/x86/cpu-features.c: Likewise. * sysdeps/x86/cpu-features.h: Likewise. * sysdeps/x86/libc-start.c: Likewise. * sysdeps/x86/rtld-global-offsets.sym: Likewise. * sysdeps/x86_64/dl-procinfo.c: Likewise. * sysdeps/x86_64/cacheinfo.c (__cpuid_count): Removed. Assume USE_MULTIARCH is defined and don't check it. (is_intel): Replace __cpu_features with GLRO(dl_x86_cpu_features). (is_amd): Likewise. (max_cpuid): Likewise. (intel_check_word): Likewise. (__cache_sysconf): Don't call __init_cpu_features. (__x86_preferred_memory_instruction): Removed. (init_cacheinfo): Don't call __init_cpu_features. Replace __cpu_features with GLRO(dl_x86_cpu_features). * sysdeps/x86_64/dl-machine.h: <cpu-features.c>. (dl_platform_init): Call init_cpu_features. * sysdeps/x86_64/ldsodefs.h: Include <cpu-features.h>. * sysdeps/x86_64/multiarch/cacheinfo.c: Removed. * sysdeps/x86_64/multiarch/ifunc-defines.sym (KIND_OFFSET): Removed. * sysdeps/x86_64/multiarch/init-arch.c: Rewrite. * sysdeps/x86_64/multiarch/init-arch.h: Likewise. https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=2702b161faaf048300de5c67dad5d1ca2078db60 commit 2702b161faaf048300de5c67dad5d1ca2078db60 Author: H.J. Lu <hjl.tools@gmail.com> Date: Fri Mar 6 04:55:56 2015 -0800 Replace __attribute__((visibility("protected"))) With copy relocation, address of protected data defined in the shared library may be external. Compiler shouldn't asssume protected data will be local. But due to https://gcc.gnu.org/bugzilla/show_bug.cgi?id=65248 __attribute__((visibility("protected"))) doesn't work correctly, we need to use asm (".protected xxx") instead. Cherry-pick from master: e0ed2fb40a0e29c43cf60addc74741dab15f2e05 * elf/ifuncdep2.c (global): Replace __attribute__((visibility("protected"))) with asm (".protected global"). * elf/ifuncmod1.c (global): Likewise. * elf/ifuncmod5.c (global): Likewise. https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=d8700f7fa9a60def973ccdfad24266d91d9ce667 commit d8700f7fa9a60def973ccdfad24266d91d9ce667 Author: H.J. Lu <hjl.tools@gmail.com> Date: Thu Mar 5 11:36:35 2015 -0800 Add a testcase for copy reloc against protected data Linkers in some versions of binutils 2.25 and 2.26 don't support protected data symbol with error messsage like: /usr/bin/ld: copy reloc against protected `bar' is invalid /usr/bin/ld: failed to set dynamic section sizes: Bad value We check if linker supports copy reloc against protected data symbol to avoid running the test if linker is broken. Cherry-pick from master: 83569fb894050db7430047da2219ca50c68f882a [BZ #17711] * config.make.in (have-protected-data): New. * configure.ac: Check linker support for protected data symbol. * configure: Regenerated. * elf/Makefile (modules-names): Add tst-protected1moda and tst-protected1modb if $(have-protected-data) is yes. (tests): Add tst-protected1a and tst-protected1b if $(have-protected-data) is yes. ($(objpfx)tst-protected1a): New. ($(objpfx)tst-protected1b): Likewise. (tst-protected1modb.so-no-z-defs): Likewise. * elf/tst-protected1a.c: New file. * elf/tst-protected1b.c: Likewise. * elf/tst-protected1mod.h: Likewise. * elf/tst-protected1moda.c: Likewise. * elf/tst-protected1modb.c: Likewise. https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=eaf2df74329942e92928162faa72159f33f040a7 commit eaf2df74329942e92928162faa72159f33f040a7 Author: H.J. Lu <hjl.tools@gmail.com> Date: Tue Mar 31 05:15:43 2015 -0700 Add ELF_RTYPE_CLASS_EXTERN_PROTECTED_DATA to x86 With copy relocation, address of protected data defined in the shared library may be external. When there is a relocation against the protected data symbol within the shared library, we need to check if we should skip the definition in the executable copied from the protected data. This patch adds ELF_RTYPE_CLASS_EXTERN_PROTECTED_DATA and defines it for x86. If ELF_RTYPE_CLASS_EXTERN_PROTECTED_DATA isn't 0, do_lookup_x will skip the data definition in the executable from copy reloc. Cherry-pick from master: 62da1e3b00b51383ffa7efc89d8addda0502e107 [BZ #17711] * elf/dl-lookup.c (do_lookup_x): When UNDEF_MAP is NULL, which indicates it is called from do_lookup_x on relocation against protected data, skip the data definion in the executable from copy reloc. (_dl_lookup_symbol_x): Pass ELF_RTYPE_CLASS_EXTERN_PROTECTED_DATA, instead of ELF_RTYPE_CLASS_PLT, to do_lookup_x for EXTERN_PROTECTED_DATA relocation against STT_OBJECT symbol. * sysdeps/generic/ldsodefs.h * (ELF_RTYPE_CLASS_EXTERN_PROTECTED_DATA): New. Defined to 4 if DL_EXTERN_PROTECTED_DATA is defined, otherwise to 0. * sysdeps/i386/dl-lookupcfg.h (DL_EXTERN_PROTECTED_DATA): New. * sysdeps/i386/dl-machine.h (elf_machine_type_class): Set class to ELF_RTYPE_CLASS_EXTERN_PROTECTED_DATA for R_386_GLOB_DAT. * sysdeps/x86_64/dl-lookupcfg.h (DL_EXTERN_PROTECTED_DATA): New. * sysdeps/x86_64/dl-machine.h (elf_machine_type_class): Set class to ELF_RTYPE_CLASS_EXTERN_PROTECTED_DATA for R_X86_64_GLOB_DAT. -----------------------------------------------------------------------
This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "GNU C Library master sources". The branch, hjl/plt/2.21 has been created at 1d0171e6e5c5a2f80e2e805c89908e7c5e9c78fb (commit) - Log ----------------------------------------------------------------- https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=1d0171e6e5c5a2f80e2e805c89908e7c5e9c78fb commit 1d0171e6e5c5a2f80e2e805c89908e7c5e9c78fb Author: H.J. Lu <hjl.tools@gmail.com> Date: Wed Jul 29 04:49:38 2015 -0700 Use SSE optimized strcmp in x86-64 ld.so Since ld.so preserves vector registers now, we can SSE optimized strcmp in x86-64 ld.so. * sysdeps/x86_64/strcmp.S: Remove "#if !IS_IN (libc)". https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=27299d1fa30a41c8cffd7170702c220f2ef52d0e commit 27299d1fa30a41c8cffd7170702c220f2ef52d0e Author: H.J. Lu <hjl.tools@gmail.com> Date: Wed Jul 29 03:56:14 2015 -0700 Remove x86-64 rtld-xxx.c and rtld-xxx.S Since ld.so preserves vector registers now, we can use the regular, non-ifunc string and memory functions in ld.so. * sysdeps/x86_64/rtld-memcmp.c: Removed. * sysdeps/x86_64/rtld-memset.S: Likewise. * sysdeps/x86_64/rtld-strchr.S: Likewise. * sysdeps/x86_64/rtld-strlen.S: Likewise. * sysdeps/x86_64/multiarch/rtld-memcmp.c: Likewise. * sysdeps/x86_64/multiarch/rtld-memset.S: Likewise. https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=e4f5723190ac2871441093e6cdfe33c556ab4772 commit e4f5723190ac2871441093e6cdfe33c556ab4772 Author: H.J. Lu <hjl.tools@gmail.com> Date: Wed Jul 29 03:47:54 2015 -0700 Replace %xmm8 with %xmm0 Since ld.so preserves vector registers now, we can use %xmm0 to avoid the REX prefix. * sysdeps/x86_64/memset.S: Replace %xmm8 with %xmm0. https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=bb68a9b5305713b3493650bc4c322ab2f45240c5 commit bb68a9b5305713b3493650bc4c322ab2f45240c5 Author: H.J. Lu <hjl.tools@gmail.com> Date: Wed Jul 29 03:44:39 2015 -0700 Replace %xmm[8-12] with %xmm[0-4] Since ld.so preserves vector registers now, we can use %xmm[0-4] to avoid the REX prefix. * sysdeps/x86_64/strlen.S: Replace %xmm[8-12] with %xmm[0-4]. https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=0136a228ed15d5cd267d0c2608c3b06962e8761e commit 0136a228ed15d5cd267d0c2608c3b06962e8761e Author: H.J. Lu <hjl.tools@gmail.com> Date: Tue Jul 28 18:56:18 2015 -0700 Don't disable SSE in x86-64 ld.so Since ld.so preserves vector registers now, we can use SSE in ld.so. * sysdeps/i386/Makefile [$(subdir) == elf] (CFLAGS-.os): Add -mno-sse -mno-mmx for $(all-rtld-routines). [$(subdir) == elf] (tests-special): Add $(objpfx)tst-ld-sse-use.out. [$(subdir) == elf] ($(objpfx)tst-ld-sse-use.out): New rule. * sysdeps/x86/Makefile [$(subdir) == elf] (CFLAGS-.os): Removed. [$(subdir) == elf] (tests-special): Likewise. [$(subdir) == elf] ($(objpfx)tst-ld-sse-use.out): Likewise. * sysdeps/x86_64/Makefile [$(subdir) == elf] (CFLAGS-.os): Add -mno-mmx for $(all-rtld-routines). https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=ba9897f7c66deae4ca166e176e61d25bd88f15cf commit ba9897f7c66deae4ca166e176e61d25bd88f15cf Author: H.J. Lu <hjl.tools@gmail.com> Date: Sat Jul 11 13:25:25 2015 -0700 Save and restore vector registers in x86-64 ld.so This patch initiaizes GLRO(dl_x86_xstate) in dl_platform_init to indicate if the processor supports SSE, AVX or AVX512. It uses this information to properly save and restore vector registers in ld.so. Now we can use SSE in ld.so and delete FOREIGN_CALL macros. We can also retire the rtld_must_xmm_save field and remove the rtld_savespace_sse field in tcbhead_t. It is safe since they are internal to glibc. [BZ #15128] * sysdeps/x86_64/Makefile [$(subdir) == elf] (tests): Add ifuncmain8. (modules-names): Add ifuncmod8. ($(objpfx)ifuncmain8): New rule. * sysdeps/x86_64/dl-machine.h: Include <dl-procinfo.h> and <cpuid.h>. (elf_machine_runtime_setup): Use _dl_runtime_resolve_sse, _dl_runtime_resolve_avx, or _dl_runtime_resolve_avx512, _dl_runtime_profile_sse, _dl_runtime_profile_avx, or _dl_runtime_profile_avx512, based on HAS_ARCH_FEATURE. * sysdeps/x86_64/dl-trampoline.S: Rewrite. * sysdeps/x86_64/dl-trampoline.h: Likewise. * sysdeps/x86_64/ifuncmain8.c: New file. * sysdeps/x86_64/ifuncmod8.c: Likewise. * sysdeps/x86_64/nptl/tcb-offsets.sym (RTLD_SAVESPACE_SSE): Removed. * sysdeps/x86_64/nptl/tls.h (__128bits): Removed. (tcbhead_t): CHange rtld_must_xmm_save to __glibc_unused1. Remove rtld_savespace_sse and __padding. (RTLD_CHECK_FOREIGN_CALL): Removed. (RTLD_ENABLE_FOREIGN_CALL): Likewise. (RTLD_PREPARE_FOREIGN_CALL): Likewise. (RTLD_FINALIZE_FOREIGN_CALL): Likewise. https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=cd6c53d1724cbea49f9988d7427a3d3af3c32a25 commit cd6c53d1724cbea49f9988d7427a3d3af3c32a25 Author: H.J. Lu <hjl.tools@gmail.com> Date: Sun Jul 12 14:41:20 2015 -0700 Align stack when calling __errno_location We should align stack to 16 bytes when calling __errno_location. [BZ #18661] * sysdeps/x86_64/fpu/s_cosf.S (__cosf): Align stack to 16 bytes when calling __errno_location. * sysdeps/x86_64/fpu/s_sincosf.S (__sincosf): Likewise. * sysdeps/x86_64/fpu/s_sinf.S (__sinf): Likewise. https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=587bbbd2d9b6d769bc7857f0ecf0f96ad8e02722 commit 587bbbd2d9b6d769bc7857f0ecf0f96ad8e02722 Author: H.J. Lu <hjl.tools@gmail.com> Date: Sun Jul 12 14:40:25 2015 -0700 Align stack to 16 bytes when calling __gettimeofday Subtract stack by 24 bytes instead of 16 bytes so that stack is aligned to 16 bytes when calling __gettimeofday. [BZ #18661] * sysdeps/unix/sysv/linux/x86_64/lowlevellock.S (__lll_timedwait_tid): Align stack to 16 bytes when calling __gettimeofday. https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=7b796bc60c397093ee02a7079423118c31a0df58 commit 7b796bc60c397093ee02a7079423118c31a0df58 Author: H.J. Lu <hjl.tools@gmail.com> Date: Sun Jul 12 14:38:58 2015 -0700 Align stack to 16 bytes when calling __setcontext Don't use pop to restore %rdi so that stack is aligned to 16 bytes when calling __setcontext. [BZ #18661] * sysdeps/unix/sysv/linux/x86_64/__start_context.S (__start_context): Don't use pop to restore %rdi so that stack is aligned to 16 bytes when calling __setcontext. https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=aa2e81690321aa68c15b744ab999ee8b3dd5efe0 commit aa2e81690321aa68c15b744ab999ee8b3dd5efe0 Author: H.J. Lu <hjl.tools@gmail.com> Date: Wed Jul 29 03:41:58 2015 -0700 Compile {memcpy,strcmp}-sse2-unaligned.S only for libc {memcpy,strcmp}-sse2-unaligned.S aren't needed in ld.so. * sysdeps/x86_64/multiarch/memcpy-sse2-unaligned.S: Compile only for libc. * sysdeps/x86_64/multiarch/strcmp-sse2-unaligned.S: Likewise. https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=620df9822fd48998036a1cd10c0d3149d82db2e6 commit 620df9822fd48998036a1cd10c0d3149d82db2e6 Author: H.J. Lu <hjl.tools@gmail.com> Date: Sat Aug 1 07:47:16 2015 -0700 Update x86 elision-conf.c for <cpu-features.h> This patch updates x86 elision-conf.c to use the newly defined HAS_CPU_FEATURE from <cpu-features.h>. * sysdeps/unix/sysv/linux/x86/elision-conf.c (elision_init): Replace HAS_RTM with HAS_CPU_FEATURE (RTM). https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=9946830a08c1c5506a37f92042be65d7f45d4081 commit 9946830a08c1c5506a37f92042be65d7f45d4081 Author: H.J. Lu <hjl.tools@gmail.com> Date: Fri Jul 31 16:52:19 2015 -0700 Update i686 multiarch functions for <cpu-features.h> This patch updates i686 multiarch functions to use the newly defined HAS_CPU_FEATURE, HAS_ARCH_FEATURE, LOAD_GOT_AND_RTLD_GLOBAL_RO and LOAD_FUNC_GOT_EAX from <cpu-features.h>. * sysdeps/i386/i686/fpu/multiarch/e_expf.c: Replace HAS_XXX with HAS_CPU_FEATURE/HAS_ARCH_FEATURE (XXX). * sysdeps/i386/i686/fpu/multiarch/s_cosf.c: Likewise. * sysdeps/i386/i686/fpu/multiarch/s_cosf.c: Likewise. * sysdeps/i386/i686/fpu/multiarch/s_sincosf.c: Likewise. * sysdeps/i386/i686/fpu/multiarch/s_sinf.c: Likewise. * sysdeps/i386/i686/multiarch/ifunc-impl-list.c: Likewise. * sysdeps/i386/i686/multiarch/s_fma.c: Likewise. * sysdeps/i386/i686/multiarch/s_fmaf.c: Likewise. * sysdeps/i386/i686/multiarch/bcopy.S: Remove __init_cpu_features call. Merge SHARED and !SHARED. Add LOAD_GOT_AND_RTLD_GLOBAL_RO. Use LOAD_FUNC_GOT_EAX to load function address. Replace HAS_XXX with HAS_CPU_FEATURE/HAS_ARCH_FEATURE (XXX). * 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/strcasecmp.S: Likewise. * sysdeps/i386/i686/multiarch/strcat.S: Likewise. * sysdeps/i386/i686/multiarch/strchr.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/strnlen.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. https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=3f6b394498dfcc16cce52a6fcbd121995bcfd2df commit 3f6b394498dfcc16cce52a6fcbd121995bcfd2df Author: H.J. Lu <hjl.tools@gmail.com> Date: Fri Jul 31 13:41:04 2015 -0700 Update x86_64 multiarch functions for <cpu-features.h> This patch updates x86_64 multiarch functions to use the newly defined HAS_CPU_FEATURE, HAS_ARCH_FEATURE and LOAD_RTLD_GLOBAL_RO_RDX from <cpu-features.h>. * sysdeps/x86_64/fpu/multiarch/e_asin.c: Replace HAS_XXX with HAS_CPU_FEATURE/HAS_ARCH_FEATURE (XXX). * 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_fma.c: Likewise. * sysdeps/x86_64/fpu/multiarch/s_fmaf.c: Likewise. * sysdeps/x86_64/fpu/multiarch/s_sin.c: Likewise. * sysdeps/x86_64/fpu/multiarch/s_tan.c: Likewise. * sysdeps/x86_64/multiarch/ifunc-impl-list.c: Likewise. * sysdeps/x86_64/multiarch/sched_cpucount.c: Likewise. * sysdeps/x86_64/multiarch/strstr.c: Likewise. * sysdeps/x86_64/multiarch/memmove.c: Likewise. * sysdeps/x86_64/multiarch/memmove_chk.c: Likewise. * sysdeps/x86_64/multiarch/test-multiarch.c: Likewise. * sysdeps/x86_64/multiarch/memcmp.S: Remove __init_cpu_features call. Add LOAD_RTLD_GLOBAL_RO_RDX. Replace HAS_XXX with HAS_CPU_FEATURE/HAS_ARCH_FEATURE (XXX). * sysdeps/x86_64/multiarch/memcpy.S: Likewise. * sysdeps/x86_64/multiarch/memcpy_chk.S: Likewise. * sysdeps/x86_64/multiarch/mempcpy.S: Likewise. * sysdeps/x86_64/multiarch/mempcpy_chk.S: Likewise. * sysdeps/x86_64/multiarch/memset.S: Likewise. * sysdeps/x86_64/multiarch/memset_chk.S: Likewise. * sysdeps/x86_64/multiarch/strcat.S: Likewise. * sysdeps/x86_64/multiarch/strchr.S: Likewise. * sysdeps/x86_64/multiarch/strcmp.S: Likewise. * sysdeps/x86_64/multiarch/strcpy.S: Likewise. * sysdeps/x86_64/multiarch/strcspn.S: Likewise. * sysdeps/x86_64/multiarch/strspn.S: Likewise. * sysdeps/x86_64/multiarch/wcscpy.S: Likewise. * sysdeps/x86_64/multiarch/wmemcmp.S: Likewise. https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=c15eacc82903a779ff1ee6374ba66594735d5cb1 commit c15eacc82903a779ff1ee6374ba66594735d5cb1 Author: H.J. Lu <hjl.tools@gmail.com> Date: Fri Jul 31 07:30:04 2015 -0700 Add _dl_x86_cpu_features to rtld_global in ld.so This patch adds _dl_x86_cpu_features to rtld_global in x86 ld.so and initializes it early before __libc_start_main is called so that cpu_features is always available when it is used and we can avoid calling __init_cpu_features in IFUNC selectors. * sysdeps/i386/dl-machine.h: Include <cpu-features.c>. (dl_platform_init): Call init_cpu_features. * sysdeps/i386/dl-procinfo.c (_dl_x86_cpu_features): New. * sysdeps/i386/i686/cacheinfo.c (DISABLE_PREFERRED_MEMORY_INSTRUCTION): Removed. * sysdeps/i386/i686/multiarch/ifunc-defines.sym (KIND_OFFSET): Removed. * sysdeps/i386/ldsodefs.h: Include <cpu-features.h>. * sysdeps/unix/sysv/linux/x86_64/dl-procinfo.c: Include <sysdeps/x86_64/dl-procinfo.c> instead of sysdeps/generic/dl-procinfo.c>. * sysdeps/x86/Makefile [$(subdir) == csu] (gen-as-const-headers): Add cpu-features-offsets.sym and rtld-global-offsets.sym. * sysdeps/x86/cpu-features-offsets.sym: New file. * sysdeps/x86/cpu-features.c: Likewise. * sysdeps/x86/cpu-features.h: Likewise. * sysdeps/x86/libc-start.c: Likewise. * sysdeps/x86/rtld-global-offsets.sym: Likewise. * sysdeps/x86_64/dl-procinfo.c: Likewise. * sysdeps/x86_64/cacheinfo.c (__cpuid_count): Removed. Assume USE_MULTIARCH is defined and don't check it. (is_intel): Replace __cpu_features with GLRO(dl_x86_cpu_features). (is_amd): Likewise. (max_cpuid): Likewise. (intel_check_word): Likewise. (__cache_sysconf): Don't call __init_cpu_features. (__x86_preferred_memory_instruction): Removed. (init_cacheinfo): Don't call __init_cpu_features. Replace __cpu_features with GLRO(dl_x86_cpu_features). * sysdeps/x86_64/dl-machine.h: <cpu-features.c>. (dl_platform_init): Call init_cpu_features. * sysdeps/x86_64/ldsodefs.h: Include <cpu-features.h>. * sysdeps/x86_64/multiarch/cacheinfo.c: Removed. * sysdeps/x86_64/multiarch/ifunc-defines.sym (KIND_OFFSET): Removed. * sysdeps/x86_64/multiarch/init-arch.c: Rewrite. * sysdeps/x86_64/multiarch/init-arch.h: Likewise. -----------------------------------------------------------------------
This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "GNU C Library master sources". The branch, hjl/plt/2.21 has been created at 27d21878e6c6c3517f14f758598295161461af2c (commit) - Log ----------------------------------------------------------------- https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=27d21878e6c6c3517f14f758598295161461af2c commit 27d21878e6c6c3517f14f758598295161461af2c Author: H.J. Lu <hjl.tools@gmail.com> Date: Wed Jul 29 04:49:38 2015 -0700 Use SSE optimized strcmp in x86-64 ld.so Since ld.so preserves vector registers now, we can SSE optimized strcmp in x86-64 ld.so. * sysdeps/x86_64/strcmp.S: Remove "#if !IS_IN (libc)". https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=b3139c9c42f6edde9ff40a40d810f7e6312a4a23 commit b3139c9c42f6edde9ff40a40d810f7e6312a4a23 Author: H.J. Lu <hjl.tools@gmail.com> Date: Wed Jul 29 03:56:14 2015 -0700 Remove x86-64 rtld-xxx.c and rtld-xxx.S Since ld.so preserves vector registers now, we can use the regular, non-ifunc string and memory functions in ld.so. * sysdeps/x86_64/rtld-memcmp.c: Removed. * sysdeps/x86_64/rtld-memset.S: Likewise. * sysdeps/x86_64/rtld-strchr.S: Likewise. * sysdeps/x86_64/rtld-strlen.S: Likewise. * sysdeps/x86_64/multiarch/rtld-memcmp.c: Likewise. * sysdeps/x86_64/multiarch/rtld-memset.S: Likewise. https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=42772c4e1a7d51ff3b61fcedb5e3fb3351c9f8b4 commit 42772c4e1a7d51ff3b61fcedb5e3fb3351c9f8b4 Author: H.J. Lu <hjl.tools@gmail.com> Date: Wed Jul 29 03:47:54 2015 -0700 Replace %xmm8 with %xmm0 Since ld.so preserves vector registers now, we can use %xmm0 to avoid the REX prefix. * sysdeps/x86_64/memset.S: Replace %xmm8 with %xmm0. https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=2c35e86459f434d4e8251962ba3ff9d341428ba0 commit 2c35e86459f434d4e8251962ba3ff9d341428ba0 Author: H.J. Lu <hjl.tools@gmail.com> Date: Wed Jul 29 03:44:39 2015 -0700 Replace %xmm[8-12] with %xmm[0-4] Since ld.so preserves vector registers now, we can use %xmm[0-4] to avoid the REX prefix. * sysdeps/x86_64/strlen.S: Replace %xmm[8-12] with %xmm[0-4]. https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=1b98679a9065e1b21a0fed3dde8a1503b16a89fa commit 1b98679a9065e1b21a0fed3dde8a1503b16a89fa Author: H.J. Lu <hjl.tools@gmail.com> Date: Tue Jul 28 18:56:18 2015 -0700 Don't disable SSE in x86-64 ld.so Since ld.so preserves vector registers now, we can use SSE in ld.so. * sysdeps/i386/Makefile [$(subdir) == elf] (CFLAGS-.os): Add -mno-sse -mno-mmx for $(all-rtld-routines). [$(subdir) == elf] (tests-special): Add $(objpfx)tst-ld-sse-use.out. [$(subdir) == elf] ($(objpfx)tst-ld-sse-use.out): New rule. * sysdeps/x86/Makefile [$(subdir) == elf] (CFLAGS-.os): Removed. [$(subdir) == elf] (tests-special): Likewise. [$(subdir) == elf] ($(objpfx)tst-ld-sse-use.out): Likewise. * sysdeps/x86_64/Makefile [$(subdir) == elf] (CFLAGS-.os): Add -mno-mmx for $(all-rtld-routines). https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=a061cf95b023449f79bcd497890a7f6ef95f4a3b commit a061cf95b023449f79bcd497890a7f6ef95f4a3b Author: H.J. Lu <hjl.tools@gmail.com> Date: Sat Jul 11 13:25:25 2015 -0700 Save and restore vector registers in x86-64 ld.so This patch initiaizes GLRO(dl_x86_xstate) in dl_platform_init to indicate if the processor supports SSE, AVX or AVX512. It uses this information to properly save and restore vector registers in ld.so. Now we can use SSE in ld.so and delete FOREIGN_CALL macros. We can also retire the rtld_must_xmm_save field and remove the rtld_savespace_sse field in tcbhead_t. It is safe since they are internal to glibc. [BZ #15128] * sysdeps/x86_64/Makefile [$(subdir) == elf] (tests): Add ifuncmain8. (modules-names): Add ifuncmod8. ($(objpfx)ifuncmain8): New rule. * sysdeps/x86_64/dl-machine.h: Include <dl-procinfo.h> and <cpuid.h>. (elf_machine_runtime_setup): Use _dl_runtime_resolve_sse, _dl_runtime_resolve_avx, or _dl_runtime_resolve_avx512, _dl_runtime_profile_sse, _dl_runtime_profile_avx, or _dl_runtime_profile_avx512, based on HAS_ARCH_FEATURE. * sysdeps/x86_64/dl-trampoline.S: Rewrite. * sysdeps/x86_64/dl-trampoline.h: Likewise. * sysdeps/x86_64/ifuncmain8.c: New file. * sysdeps/x86_64/ifuncmod8.c: Likewise. * sysdeps/x86_64/nptl/tcb-offsets.sym (RTLD_SAVESPACE_SSE): Removed. * sysdeps/x86_64/nptl/tls.h (__128bits): Removed. (tcbhead_t): CHange rtld_must_xmm_save to __glibc_unused1. Remove rtld_savespace_sse and __padding. (RTLD_CHECK_FOREIGN_CALL): Removed. (RTLD_ENABLE_FOREIGN_CALL): Likewise. (RTLD_PREPARE_FOREIGN_CALL): Likewise. (RTLD_FINALIZE_FOREIGN_CALL): Likewise. https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=2fede219d1005f41a04aab125ec49b7c1456236f commit 2fede219d1005f41a04aab125ec49b7c1456236f Author: H.J. Lu <hjl.tools@gmail.com> Date: Sun Jul 12 14:41:20 2015 -0700 Align stack when calling __errno_location We should align stack to 16 bytes when calling __errno_location. [BZ #18661] * sysdeps/x86_64/fpu/s_cosf.S (__cosf): Align stack to 16 bytes when calling __errno_location. * sysdeps/x86_64/fpu/s_sincosf.S (__sincosf): Likewise. * sysdeps/x86_64/fpu/s_sinf.S (__sinf): Likewise. https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=3a538a8e9905c07a3a60b998e31b8c5ac73a4a58 commit 3a538a8e9905c07a3a60b998e31b8c5ac73a4a58 Author: H.J. Lu <hjl.tools@gmail.com> Date: Sun Jul 12 14:40:25 2015 -0700 Align stack to 16 bytes when calling __gettimeofday Subtract stack by 24 bytes instead of 16 bytes so that stack is aligned to 16 bytes when calling __gettimeofday. [BZ #18661] * sysdeps/unix/sysv/linux/x86_64/lowlevellock.S (__lll_timedwait_tid): Align stack to 16 bytes when calling __gettimeofday. https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=69acbbd5ca5a54520cfc107bacc3b71e69ec0d2d commit 69acbbd5ca5a54520cfc107bacc3b71e69ec0d2d Author: H.J. Lu <hjl.tools@gmail.com> Date: Sun Jul 12 14:38:58 2015 -0700 Align stack to 16 bytes when calling __setcontext Don't use pop to restore %rdi so that stack is aligned to 16 bytes when calling __setcontext. [BZ #18661] * sysdeps/unix/sysv/linux/x86_64/__start_context.S (__start_context): Don't use pop to restore %rdi so that stack is aligned to 16 bytes when calling __setcontext. https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=2b58e5d85955174dde6a9304002adb79d2681ca3 commit 2b58e5d85955174dde6a9304002adb79d2681ca3 Author: H.J. Lu <hjl.tools@gmail.com> Date: Wed Jul 29 03:41:58 2015 -0700 Compile {memcpy,strcmp}-sse2-unaligned.S only for libc {memcpy,strcmp}-sse2-unaligned.S aren't needed in ld.so. * sysdeps/x86_64/multiarch/memcpy-sse2-unaligned.S: Compile only for libc. * sysdeps/x86_64/multiarch/strcmp-sse2-unaligned.S: Likewise. https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=5d7a32c16a65d27b73d01556a30fb138338639f1 commit 5d7a32c16a65d27b73d01556a30fb138338639f1 Author: H.J. Lu <hjl.tools@gmail.com> Date: Sat Aug 1 07:47:16 2015 -0700 Update x86 elision-conf.c for <cpu-features.h> This patch updates x86 elision-conf.c to use the newly defined HAS_CPU_FEATURE from <cpu-features.h>. * sysdeps/unix/sysv/linux/x86/elision-conf.c (elision_init): Replace HAS_RTM with HAS_CPU_FEATURE (RTM). https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=da0e27c6c7266df2107c7a4825cf2eb2d6360d28 commit da0e27c6c7266df2107c7a4825cf2eb2d6360d28 Author: H.J. Lu <hjl.tools@gmail.com> Date: Fri Jul 31 16:52:19 2015 -0700 Update i686 multiarch functions for <cpu-features.h> This patch updates i686 multiarch functions to use the newly defined HAS_CPU_FEATURE, HAS_ARCH_FEATURE, LOAD_GOT_AND_RTLD_GLOBAL_RO and LOAD_FUNC_GOT_EAX from <cpu-features.h>. * sysdeps/i386/i686/fpu/multiarch/e_expf.c: Replace HAS_XXX with HAS_CPU_FEATURE/HAS_ARCH_FEATURE (XXX). * sysdeps/i386/i686/fpu/multiarch/s_cosf.c: Likewise. * sysdeps/i386/i686/fpu/multiarch/s_cosf.c: Likewise. * sysdeps/i386/i686/fpu/multiarch/s_sincosf.c: Likewise. * sysdeps/i386/i686/fpu/multiarch/s_sinf.c: Likewise. * sysdeps/i386/i686/multiarch/ifunc-impl-list.c: Likewise. * sysdeps/i386/i686/multiarch/s_fma.c: Likewise. * sysdeps/i386/i686/multiarch/s_fmaf.c: Likewise. * sysdeps/i386/i686/multiarch/bcopy.S: Remove __init_cpu_features call. Merge SHARED and !SHARED. Add LOAD_GOT_AND_RTLD_GLOBAL_RO. Use LOAD_FUNC_GOT_EAX to load function address. Replace HAS_XXX with HAS_CPU_FEATURE/HAS_ARCH_FEATURE (XXX). * 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/strcasecmp.S: Likewise. * sysdeps/i386/i686/multiarch/strcat.S: Likewise. * sysdeps/i386/i686/multiarch/strchr.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/strnlen.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. https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=a7be9410184a405f4f1347302afe0b625146cdab commit a7be9410184a405f4f1347302afe0b625146cdab Author: H.J. Lu <hjl.tools@gmail.com> Date: Fri Jul 31 13:41:04 2015 -0700 Update x86_64 multiarch functions for <cpu-features.h> This patch updates x86_64 multiarch functions to use the newly defined HAS_CPU_FEATURE, HAS_ARCH_FEATURE and LOAD_RTLD_GLOBAL_RO_RDX from <cpu-features.h>. * sysdeps/x86_64/fpu/multiarch/e_asin.c: Replace HAS_XXX with HAS_CPU_FEATURE/HAS_ARCH_FEATURE (XXX). * 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_fma.c: Likewise. * sysdeps/x86_64/fpu/multiarch/s_fmaf.c: Likewise. * sysdeps/x86_64/fpu/multiarch/s_sin.c: Likewise. * sysdeps/x86_64/fpu/multiarch/s_tan.c: Likewise. * sysdeps/x86_64/multiarch/ifunc-impl-list.c: Likewise. * sysdeps/x86_64/multiarch/sched_cpucount.c: Likewise. * sysdeps/x86_64/multiarch/strstr.c: Likewise. * sysdeps/x86_64/multiarch/memmove.c: Likewise. * sysdeps/x86_64/multiarch/memmove_chk.c: Likewise. * sysdeps/x86_64/multiarch/test-multiarch.c: Likewise. * sysdeps/x86_64/multiarch/memcmp.S: Remove __init_cpu_features call. Add LOAD_RTLD_GLOBAL_RO_RDX. Replace HAS_XXX with HAS_CPU_FEATURE/HAS_ARCH_FEATURE (XXX). * sysdeps/x86_64/multiarch/memcpy.S: Likewise. * sysdeps/x86_64/multiarch/memcpy_chk.S: Likewise. * sysdeps/x86_64/multiarch/mempcpy.S: Likewise. * sysdeps/x86_64/multiarch/mempcpy_chk.S: Likewise. * sysdeps/x86_64/multiarch/memset.S: Likewise. * sysdeps/x86_64/multiarch/memset_chk.S: Likewise. * sysdeps/x86_64/multiarch/strcat.S: Likewise. * sysdeps/x86_64/multiarch/strchr.S: Likewise. * sysdeps/x86_64/multiarch/strcmp.S: Likewise. * sysdeps/x86_64/multiarch/strcpy.S: Likewise. * sysdeps/x86_64/multiarch/strcspn.S: Likewise. * sysdeps/x86_64/multiarch/strspn.S: Likewise. * sysdeps/x86_64/multiarch/wcscpy.S: Likewise. * sysdeps/x86_64/multiarch/wmemcmp.S: Likewise. https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=2f99aa146788d958bf202ce51e070c31af84a570 commit 2f99aa146788d958bf202ce51e070c31af84a570 Author: H.J. Lu <hjl.tools@gmail.com> Date: Fri Jul 31 07:30:04 2015 -0700 Add _dl_x86_cpu_features to rtld_global in ld.so This patch adds _dl_x86_cpu_features to rtld_global in x86 ld.so and initializes it early before __libc_start_main is called so that cpu_features is always available when it is used and we can avoid calling __init_cpu_features in IFUNC selectors. * sysdeps/i386/dl-machine.h: Include <cpu-features.c>. (dl_platform_init): Call init_cpu_features. * sysdeps/i386/dl-procinfo.c (_dl_x86_cpu_features): New. * sysdeps/i386/i686/cacheinfo.c (DISABLE_PREFERRED_MEMORY_INSTRUCTION): Removed. * sysdeps/i386/i686/multiarch/ifunc-defines.sym (KIND_OFFSET): Removed. * sysdeps/i386/ldsodefs.h: Include <cpu-features.h>. * sysdeps/unix/sysv/linux/x86_64/dl-procinfo.c: Include <sysdeps/x86_64/dl-procinfo.c> instead of sysdeps/generic/dl-procinfo.c>. * sysdeps/x86/Makefile [$(subdir) == csu] (gen-as-const-headers): Add cpu-features-offsets.sym and rtld-global-offsets.sym. * sysdeps/x86/cpu-features-offsets.sym: New file. * sysdeps/x86/cpu-features.c: Likewise. * sysdeps/x86/cpu-features.h: Likewise. * sysdeps/x86/libc-start.c: Likewise. * sysdeps/x86/rtld-global-offsets.sym: Likewise. * sysdeps/x86_64/dl-procinfo.c: Likewise. * sysdeps/x86_64/cacheinfo.c (__cpuid_count): Removed. Assume USE_MULTIARCH is defined and don't check it. (is_intel): Replace __cpu_features with GLRO(dl_x86_cpu_features). (is_amd): Likewise. (max_cpuid): Likewise. (intel_check_word): Likewise. (__cache_sysconf): Don't call __init_cpu_features. (__x86_preferred_memory_instruction): Removed. (init_cacheinfo): Don't call __init_cpu_features. Replace __cpu_features with GLRO(dl_x86_cpu_features). * sysdeps/x86_64/dl-machine.h: <cpu-features.c>. (dl_platform_init): Call init_cpu_features. * sysdeps/x86_64/ldsodefs.h: Include <cpu-features.h>. * sysdeps/x86_64/multiarch/cacheinfo.c: Removed. * sysdeps/x86_64/multiarch/ifunc-defines.sym (KIND_OFFSET): Removed. * sysdeps/x86_64/multiarch/init-arch.c: Rewrite. * sysdeps/x86_64/multiarch/init-arch.h: Likewise. https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=fdd3aa0b19700ab564da895a2a85bf3fdb0bedf0 commit fdd3aa0b19700ab564da895a2a85bf3fdb0bedf0 Author: H.J. Lu <hjl.tools@gmail.com> Date: Thu Jul 9 09:30:09 2015 -0700 Improve bndmov encoding with zero displacement If x86-64 assembler doesn't support MPX, we encode bndmov instruction by hand. When displacement is zero, assembler generates shorter encoding. This patch improves bndmov encoding with zero displacement so that ld.so is identical when using assemblers with and without MPX support. * sysdeps/x86_64/dl-trampoline.S (_dl_runtime_resolve): Improve bndmov encoding with zero displacement. https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=9e4fc7f67f6695f294ae759a6b540f5d08a56f0c commit 9e4fc7f67f6695f294ae759a6b540f5d08a56f0c Author: Igor Zamyatin <igor.zamyatin@intel.com> Date: Thu Jul 9 06:50:12 2015 -0700 Preserve bound registers for pointer pass/return We need to save/restore bound registers and add a BND prefix before branches in _dl_runtime_profile so that bound registers for pointer pass and return are preserved when LD_AUDIT is used. [BZ #18134] * sysdeps/i386/configure.ac: Set HAVE_MPX_SUPPORT. * sysdeps/i386/configure: Regenerated. * sysdeps/i386/dl-trampoline.S (PRESERVE_BND_REGS_PREFIX): New. (_dl_runtime_profile): Save and restore Intel MPX return bound registers when calling _dl_call_pltexit. Add PRESERVE_BND_REGS_PREFIX before return. * sysdeps/i386/link-defines.sym (LRV_BND0_OFFSET): New. (LRV_BND1_OFFSET): Likewise. * sysdeps/x86/bits/link.h (La_i86_retval): Add lrv_bnd0 and lrv_bnd1. * sysdeps/x86_64/dl-trampoline.S (_dl_runtime_profile): Fix typo in bndmov encoding. * sysdeps/x86_64/dl-trampoline.h: Properly save and restore Intel MPX bound registers. Add PRESERVE_BND_REGS_PREFIX before branch instructions to preserve bounds. https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=b15f277bac14482c8b2dda4931ebf919644932fa commit b15f277bac14482c8b2dda4931ebf919644932fa Author: H.J. Lu <hjl.tools@gmail.com> Date: Mon Mar 16 14:58:43 2015 -0700 Preserve bound registers in _dl_runtime_resolve We need to add a BND prefix before indirect branch at the end of _dl_runtime_resolve to preserve bound registers. [BZ #18134] * sysdeps/x86_64/dl-trampoline.S (PRESERVE_BND_REGS_PREFIX): New. (_dl_runtime_resolve): Add a BND prefix before indirect branch. https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=20f87a053b1e6a9106851f764c205d59fd4b6879 commit 20f87a053b1e6a9106851f764c205d59fd4b6879 Author: H.J. Lu <hjl.tools@gmail.com> Date: Tue Jul 7 05:23:24 2015 -0700 Add and use sysdeps/i386/link-defines.sym Define macros for fields in La_i86_regs and La_i86_retval and use them in dl-trampoline.S, instead of hardcoded values. * sysdeps/i386/Makefile (gen-as-const-headers)[elf]: Add link-defines.sym. * sysdeps/i386/dl-trampoline.S: Include <link-defines.h>. (_dl_runtime_profile): Use LONG_DOUBLE_SIZE, LRV_SIZE, LRV_EAX_OFFSET, LRV_EDX_OFFSET, LRV_ST0_OFFSET, LRV_ST1_OFFSET and LR_SIZE. * sysdeps/i386/link-defines.sym: New file. https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=d6fd297566e2389ab855325754bcb25f604c6b7d commit d6fd297566e2389ab855325754bcb25f604c6b7d Author: H.J. Lu <hjl.tools@gmail.com> Date: Tue Jul 7 05:09:16 2015 -0700 Add a testcase for i386 LD_AUDIT This patch adds a testcase for i386 LD_AUDIT to check function return and parameters passed in registers. * sysdeps/i386/Makefile (tests)[elf]: Add tst-audit3. (modules-names): Add tst-auditmod3a tst-auditmod3b. ($(objpfx)tst-audit3): New rule. ($(objpfx)tst-audit3.out): Likewise. * sysdeps/i386/tst-audit3.c: New file. * sysdeps/i386/tst-audit3.h: Likewise. * sysdeps/i386/tst-auditmod3a.c: Likewise. * sysdeps/i386/tst-auditmod3b.c: Likewise. -----------------------------------------------------------------------
This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "GNU C Library master sources". The branch, hjl/plt/master has been created at d53574deb7a0f49da15eca67d01bc188b4f89948 (commit) - Log ----------------------------------------------------------------- https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=d53574deb7a0f49da15eca67d01bc188b4f89948 commit d53574deb7a0f49da15eca67d01bc188b4f89948 Author: H.J. Lu <hjl.tools@gmail.com> Date: Wed Jul 29 04:49:38 2015 -0700 Use SSE optimized strcmp in x86-64 ld.so Since ld.so preserves vector registers now, we can SSE optimized strcmp in x86-64 ld.so. * sysdeps/x86_64/strcmp.S: Remove "#if !IS_IN (libc)". https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=3b06f9e926254743bcf61a0971841312c737b2f1 commit 3b06f9e926254743bcf61a0971841312c737b2f1 Author: H.J. Lu <hjl.tools@gmail.com> Date: Wed Jul 29 03:56:14 2015 -0700 Remove x86-64 rtld-xxx.c and rtld-xxx.S Since ld.so preserves vector registers now, we can use the regular, non-ifunc string and memory functions in ld.so. * sysdeps/x86_64/rtld-memcmp.c: Removed. * sysdeps/x86_64/rtld-memset.S: Likewise. * sysdeps/x86_64/rtld-strchr.S: Likewise. * sysdeps/x86_64/rtld-strlen.S: Likewise. * sysdeps/x86_64/multiarch/rtld-memcmp.c: Likewise. * sysdeps/x86_64/multiarch/rtld-memset.S: Likewise. https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=5100a9262c79946feddb83ad46d8448312d0a792 commit 5100a9262c79946feddb83ad46d8448312d0a792 Author: H.J. Lu <hjl.tools@gmail.com> Date: Wed Jul 29 03:47:54 2015 -0700 Replace %xmm8 with %xmm0 Since ld.so preserves vector registers now, we can use %xmm0 to avoid the REX prefix. * sysdeps/x86_64/memset.S: Replace %xmm8 with %xmm0. https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=200eb0e798153aa644e6a6c551c685a25f1f0d1f commit 200eb0e798153aa644e6a6c551c685a25f1f0d1f Author: H.J. Lu <hjl.tools@gmail.com> Date: Wed Jul 29 03:44:39 2015 -0700 Replace %xmm[8-12] with %xmm[0-4] Since ld.so preserves vector registers now, we can use %xmm[0-4] to avoid the REX prefix. * sysdeps/x86_64/strlen.S: Replace %xmm[8-12] with %xmm[0-4]. https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=6642aacc2b3f2779448f9878b9a320dd9bd184ab commit 6642aacc2b3f2779448f9878b9a320dd9bd184ab Author: H.J. Lu <hjl.tools@gmail.com> Date: Tue Jul 28 18:56:18 2015 -0700 Don't disable SSE in x86-64 ld.so Since ld.so preserves vector registers now, we can use SSE in ld.so. * sysdeps/i386/Makefile [$(subdir) == elf] (CFLAGS-.os): Add -mno-sse -mno-mmx for $(all-rtld-routines). [$(subdir) == elf] (tests-special): Add $(objpfx)tst-ld-sse-use.out. [$(subdir) == elf] ($(objpfx)tst-ld-sse-use.out): New rule. * sysdeps/x86/Makefile [$(subdir) == elf] (CFLAGS-.os): Removed. [$(subdir) == elf] (tests-special): Likewise. [$(subdir) == elf] ($(objpfx)tst-ld-sse-use.out): Likewise. * sysdeps/x86_64/Makefile [$(subdir) == elf] (CFLAGS-.os): Add -mno-mmx for $(all-rtld-routines). https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=f95bec159176aef22fb9465793b8fa5d354bea31 commit f95bec159176aef22fb9465793b8fa5d354bea31 Author: H.J. Lu <hjl.tools@gmail.com> Date: Sat Jul 11 13:25:25 2015 -0700 Save and restore vector registers in x86-64 ld.so This patch initiaizes GLRO(dl_x86_xstate) in dl_platform_init to indicate if the processor supports SSE, AVX or AVX512. It uses this information to properly save and restore vector registers in ld.so. Now we can use SSE in ld.so and delete FOREIGN_CALL macros. [BZ #15128] * sysdeps/x86_64/Makefile [$(subdir) == elf] (tests): Add ifuncmain8. (modules-names): Add ifuncmod8. ($(objpfx)ifuncmain8): New rule. * sysdeps/x86_64/dl-machine.h: Include <dl-procinfo.h> and <cpuid.h>. (elf_machine_runtime_setup): Use _dl_runtime_resolve_sse, _dl_runtime_resolve_avx, or _dl_runtime_resolve_avx512, _dl_runtime_profile_sse, _dl_runtime_profile_avx, or _dl_runtime_profile_avx512, based on HAS_ARCH_FEATURE. * sysdeps/x86_64/dl-trampoline.S: Rewrite. * sysdeps/x86_64/dl-trampoline.h: Likewise. * sysdeps/x86_64/ifuncmain8.c: New file. * sysdeps/x86_64/ifuncmod8.c: Likewise. * sysdeps/x86_64/nptl/tcb-offsets.sym (RTLD_SAVESPACE_SSE): Removed. * sysdeps/x86_64/nptl/tls.h (__128bits): Removed. (tcbhead_t): Change rtld_must_xmm_save to __glibc_unused1. Change rtld_savespace_sse to __glibc_unused2. (RTLD_CHECK_FOREIGN_CALL): Removed. (RTLD_ENABLE_FOREIGN_CALL): Likewise. (RTLD_PREPARE_FOREIGN_CALL): Likewise. (RTLD_FINALIZE_FOREIGN_CALL): Likewise. Fix tcbhead_t https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=a018fe7a7229c3048dcd5765716b719905820f64 commit a018fe7a7229c3048dcd5765716b719905820f64 Author: H.J. Lu <hjl.tools@gmail.com> Date: Sun Jul 12 14:41:20 2015 -0700 Align stack when calling __errno_location We should align stack to 16 bytes when calling __errno_location. [BZ #18661] * sysdeps/x86_64/fpu/s_cosf.S (__cosf): Align stack to 16 bytes when calling __errno_location. * sysdeps/x86_64/fpu/s_sincosf.S (__sincosf): Likewise. * sysdeps/x86_64/fpu/s_sinf.S (__sinf): Likewise. https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=dececeb4701899392f987a0d9eb92fe8fd0e9e32 commit dececeb4701899392f987a0d9eb92fe8fd0e9e32 Author: H.J. Lu <hjl.tools@gmail.com> Date: Sun Jul 12 14:40:25 2015 -0700 Align stack to 16 bytes when calling __gettimeofday Subtract stack by 24 bytes instead of 16 bytes so that stack is aligned to 16 bytes when calling __gettimeofday. [BZ #18661] * sysdeps/unix/sysv/linux/x86_64/lowlevellock.S (__lll_timedwait_tid): Align stack to 16 bytes when calling __gettimeofday. https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=18a1650a345418cc2a4c83372cb4402d0da4535d commit 18a1650a345418cc2a4c83372cb4402d0da4535d Author: H.J. Lu <hjl.tools@gmail.com> Date: Sun Jul 12 14:38:58 2015 -0700 Align stack to 16 bytes when calling __setcontext Don't use pop to restore %rdi so that stack is aligned to 16 bytes when calling __setcontext. [BZ #18661] * sysdeps/unix/sysv/linux/x86_64/__start_context.S (__start_context): Don't use pop to restore %rdi so that stack is aligned to 16 bytes when calling __setcontext. https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=1c1d5084bb4de396487418ca2fd96538e489100e commit 1c1d5084bb4de396487418ca2fd96538e489100e Author: H.J. Lu <hjl.tools@gmail.com> Date: Wed Jul 29 03:41:58 2015 -0700 Compile {memcpy,strcmp}-sse2-unaligned.S only for libc {memcpy,strcmp}-sse2-unaligned.S aren't needed in ld.so. * sysdeps/x86_64/multiarch/memcpy-sse2-unaligned.S: Compile only for libc. * sysdeps/x86_64/multiarch/strcmp-sse2-unaligned.S: Likewise. -----------------------------------------------------------------------
This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "GNU C Library master sources". The branch, hjl/plt/2.21 has been created at adf2bca6cef858265c67d36fb762ad8d094cf8e6 (commit) - Log ----------------------------------------------------------------- https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=adf2bca6cef858265c67d36fb762ad8d094cf8e6 commit adf2bca6cef858265c67d36fb762ad8d094cf8e6 Author: H.J. Lu <hjl.tools@gmail.com> Date: Wed Jul 29 04:49:38 2015 -0700 Use SSE optimized strcmp in x86-64 ld.so Since ld.so preserves vector registers now, we can SSE optimized strcmp in x86-64 ld.so. * sysdeps/x86_64/strcmp.S: Remove "#if !IS_IN (libc)". https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=ea6b54e9214abaf37faf988eda0b55adf734d7ba commit ea6b54e9214abaf37faf988eda0b55adf734d7ba Author: H.J. Lu <hjl.tools@gmail.com> Date: Wed Jul 29 03:56:14 2015 -0700 Remove x86-64 rtld-xxx.c and rtld-xxx.S Since ld.so preserves vector registers now, we can use the regular, non-ifunc string and memory functions in ld.so. * sysdeps/x86_64/rtld-memcmp.c: Removed. * sysdeps/x86_64/rtld-memset.S: Likewise. * sysdeps/x86_64/rtld-strchr.S: Likewise. * sysdeps/x86_64/rtld-strlen.S: Likewise. * sysdeps/x86_64/multiarch/rtld-memcmp.c: Likewise. * sysdeps/x86_64/multiarch/rtld-memset.S: Likewise. https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=684b6047c2f84671dac9fa790f4cdc1416325e0b commit 684b6047c2f84671dac9fa790f4cdc1416325e0b Author: H.J. Lu <hjl.tools@gmail.com> Date: Wed Jul 29 03:47:54 2015 -0700 Replace %xmm8 with %xmm0 Since ld.so preserves vector registers now, we can use %xmm0 to avoid the REX prefix. * sysdeps/x86_64/memset.S: Replace %xmm8 with %xmm0. https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=9f41fc798f5c830cd909e6a849c676223240efc9 commit 9f41fc798f5c830cd909e6a849c676223240efc9 Author: H.J. Lu <hjl.tools@gmail.com> Date: Wed Jul 29 03:44:39 2015 -0700 Replace %xmm[8-12] with %xmm[0-4] Since ld.so preserves vector registers now, we can use %xmm[0-4] to avoid the REX prefix. * sysdeps/x86_64/strlen.S: Replace %xmm[8-12] with %xmm[0-4]. https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=7d973940b6e8b281cdf53d6f66ac5305a478ebf9 commit 7d973940b6e8b281cdf53d6f66ac5305a478ebf9 Author: H.J. Lu <hjl.tools@gmail.com> Date: Tue Jul 28 18:56:18 2015 -0700 Don't disable SSE in x86-64 ld.so Since ld.so preserves vector registers now, we can use SSE in ld.so. * sysdeps/i386/Makefile [$(subdir) == elf] (CFLAGS-.os): Add -mno-sse -mno-mmx for $(all-rtld-routines). [$(subdir) == elf] (tests-special): Add $(objpfx)tst-ld-sse-use.out. [$(subdir) == elf] ($(objpfx)tst-ld-sse-use.out): New rule. * sysdeps/x86/Makefile [$(subdir) == elf] (CFLAGS-.os): Removed. [$(subdir) == elf] (tests-special): Likewise. [$(subdir) == elf] ($(objpfx)tst-ld-sse-use.out): Likewise. * sysdeps/x86_64/Makefile [$(subdir) == elf] (CFLAGS-.os): Add -mno-mmx for $(all-rtld-routines). https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=07ce37a6da7d00fb331736331031e371cbe753a8 commit 07ce37a6da7d00fb331736331031e371cbe753a8 Author: H.J. Lu <hjl.tools@gmail.com> Date: Sat Jul 11 13:25:25 2015 -0700 Save and restore vector registers in x86-64 ld.so This patch initiaizes GLRO(dl_x86_xstate) in dl_platform_init to indicate if the processor supports SSE, AVX or AVX512. It uses this information to properly save and restore vector registers in ld.so. Now we can use SSE in ld.so and delete FOREIGN_CALL macros. [BZ #15128] * sysdeps/x86_64/Makefile [$(subdir) == elf] (tests): Add ifuncmain8. (modules-names): Add ifuncmod8. ($(objpfx)ifuncmain8): New rule. * sysdeps/x86_64/dl-machine.h: Include <dl-procinfo.h> and <cpuid.h>. (elf_machine_runtime_setup): Use _dl_runtime_resolve_sse, _dl_runtime_resolve_avx, or _dl_runtime_resolve_avx512, _dl_runtime_profile_sse, _dl_runtime_profile_avx, or _dl_runtime_profile_avx512, based on HAS_ARCH_FEATURE. * sysdeps/x86_64/dl-trampoline.S: Rewrite. * sysdeps/x86_64/dl-trampoline.h: Likewise. * sysdeps/x86_64/ifuncmain8.c: New file. * sysdeps/x86_64/ifuncmod8.c: Likewise. * sysdeps/x86_64/nptl/tcb-offsets.sym (RTLD_SAVESPACE_SSE): Removed. * sysdeps/x86_64/nptl/tls.h (__128bits): Removed. (tcbhead_t): Change rtld_must_xmm_save to __glibc_unused1. Change rtld_savespace_sse to __glibc_unused2. (RTLD_CHECK_FOREIGN_CALL): Removed. (RTLD_ENABLE_FOREIGN_CALL): Likewise. (RTLD_PREPARE_FOREIGN_CALL): Likewise. (RTLD_FINALIZE_FOREIGN_CALL): Likewise. Fix tcbhead_t https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=2fede219d1005f41a04aab125ec49b7c1456236f commit 2fede219d1005f41a04aab125ec49b7c1456236f Author: H.J. Lu <hjl.tools@gmail.com> Date: Sun Jul 12 14:41:20 2015 -0700 Align stack when calling __errno_location We should align stack to 16 bytes when calling __errno_location. [BZ #18661] * sysdeps/x86_64/fpu/s_cosf.S (__cosf): Align stack to 16 bytes when calling __errno_location. * sysdeps/x86_64/fpu/s_sincosf.S (__sincosf): Likewise. * sysdeps/x86_64/fpu/s_sinf.S (__sinf): Likewise. https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=3a538a8e9905c07a3a60b998e31b8c5ac73a4a58 commit 3a538a8e9905c07a3a60b998e31b8c5ac73a4a58 Author: H.J. Lu <hjl.tools@gmail.com> Date: Sun Jul 12 14:40:25 2015 -0700 Align stack to 16 bytes when calling __gettimeofday Subtract stack by 24 bytes instead of 16 bytes so that stack is aligned to 16 bytes when calling __gettimeofday. [BZ #18661] * sysdeps/unix/sysv/linux/x86_64/lowlevellock.S (__lll_timedwait_tid): Align stack to 16 bytes when calling __gettimeofday. https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=69acbbd5ca5a54520cfc107bacc3b71e69ec0d2d commit 69acbbd5ca5a54520cfc107bacc3b71e69ec0d2d Author: H.J. Lu <hjl.tools@gmail.com> Date: Sun Jul 12 14:38:58 2015 -0700 Align stack to 16 bytes when calling __setcontext Don't use pop to restore %rdi so that stack is aligned to 16 bytes when calling __setcontext. [BZ #18661] * sysdeps/unix/sysv/linux/x86_64/__start_context.S (__start_context): Don't use pop to restore %rdi so that stack is aligned to 16 bytes when calling __setcontext. https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=2b58e5d85955174dde6a9304002adb79d2681ca3 commit 2b58e5d85955174dde6a9304002adb79d2681ca3 Author: H.J. Lu <hjl.tools@gmail.com> Date: Wed Jul 29 03:41:58 2015 -0700 Compile {memcpy,strcmp}-sse2-unaligned.S only for libc {memcpy,strcmp}-sse2-unaligned.S aren't needed in ld.so. * sysdeps/x86_64/multiarch/memcpy-sse2-unaligned.S: Compile only for libc. * sysdeps/x86_64/multiarch/strcmp-sse2-unaligned.S: Likewise. https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=5d7a32c16a65d27b73d01556a30fb138338639f1 commit 5d7a32c16a65d27b73d01556a30fb138338639f1 Author: H.J. Lu <hjl.tools@gmail.com> Date: Sat Aug 1 07:47:16 2015 -0700 Update x86 elision-conf.c for <cpu-features.h> This patch updates x86 elision-conf.c to use the newly defined HAS_CPU_FEATURE from <cpu-features.h>. * sysdeps/unix/sysv/linux/x86/elision-conf.c (elision_init): Replace HAS_RTM with HAS_CPU_FEATURE (RTM). https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=da0e27c6c7266df2107c7a4825cf2eb2d6360d28 commit da0e27c6c7266df2107c7a4825cf2eb2d6360d28 Author: H.J. Lu <hjl.tools@gmail.com> Date: Fri Jul 31 16:52:19 2015 -0700 Update i686 multiarch functions for <cpu-features.h> This patch updates i686 multiarch functions to use the newly defined HAS_CPU_FEATURE, HAS_ARCH_FEATURE, LOAD_GOT_AND_RTLD_GLOBAL_RO and LOAD_FUNC_GOT_EAX from <cpu-features.h>. * sysdeps/i386/i686/fpu/multiarch/e_expf.c: Replace HAS_XXX with HAS_CPU_FEATURE/HAS_ARCH_FEATURE (XXX). * sysdeps/i386/i686/fpu/multiarch/s_cosf.c: Likewise. * sysdeps/i386/i686/fpu/multiarch/s_cosf.c: Likewise. * sysdeps/i386/i686/fpu/multiarch/s_sincosf.c: Likewise. * sysdeps/i386/i686/fpu/multiarch/s_sinf.c: Likewise. * sysdeps/i386/i686/multiarch/ifunc-impl-list.c: Likewise. * sysdeps/i386/i686/multiarch/s_fma.c: Likewise. * sysdeps/i386/i686/multiarch/s_fmaf.c: Likewise. * sysdeps/i386/i686/multiarch/bcopy.S: Remove __init_cpu_features call. Merge SHARED and !SHARED. Add LOAD_GOT_AND_RTLD_GLOBAL_RO. Use LOAD_FUNC_GOT_EAX to load function address. Replace HAS_XXX with HAS_CPU_FEATURE/HAS_ARCH_FEATURE (XXX). * 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/strcasecmp.S: Likewise. * sysdeps/i386/i686/multiarch/strcat.S: Likewise. * sysdeps/i386/i686/multiarch/strchr.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/strnlen.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. https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=a7be9410184a405f4f1347302afe0b625146cdab commit a7be9410184a405f4f1347302afe0b625146cdab Author: H.J. Lu <hjl.tools@gmail.com> Date: Fri Jul 31 13:41:04 2015 -0700 Update x86_64 multiarch functions for <cpu-features.h> This patch updates x86_64 multiarch functions to use the newly defined HAS_CPU_FEATURE, HAS_ARCH_FEATURE and LOAD_RTLD_GLOBAL_RO_RDX from <cpu-features.h>. * sysdeps/x86_64/fpu/multiarch/e_asin.c: Replace HAS_XXX with HAS_CPU_FEATURE/HAS_ARCH_FEATURE (XXX). * 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_fma.c: Likewise. * sysdeps/x86_64/fpu/multiarch/s_fmaf.c: Likewise. * sysdeps/x86_64/fpu/multiarch/s_sin.c: Likewise. * sysdeps/x86_64/fpu/multiarch/s_tan.c: Likewise. * sysdeps/x86_64/multiarch/ifunc-impl-list.c: Likewise. * sysdeps/x86_64/multiarch/sched_cpucount.c: Likewise. * sysdeps/x86_64/multiarch/strstr.c: Likewise. * sysdeps/x86_64/multiarch/memmove.c: Likewise. * sysdeps/x86_64/multiarch/memmove_chk.c: Likewise. * sysdeps/x86_64/multiarch/test-multiarch.c: Likewise. * sysdeps/x86_64/multiarch/memcmp.S: Remove __init_cpu_features call. Add LOAD_RTLD_GLOBAL_RO_RDX. Replace HAS_XXX with HAS_CPU_FEATURE/HAS_ARCH_FEATURE (XXX). * sysdeps/x86_64/multiarch/memcpy.S: Likewise. * sysdeps/x86_64/multiarch/memcpy_chk.S: Likewise. * sysdeps/x86_64/multiarch/mempcpy.S: Likewise. * sysdeps/x86_64/multiarch/mempcpy_chk.S: Likewise. * sysdeps/x86_64/multiarch/memset.S: Likewise. * sysdeps/x86_64/multiarch/memset_chk.S: Likewise. * sysdeps/x86_64/multiarch/strcat.S: Likewise. * sysdeps/x86_64/multiarch/strchr.S: Likewise. * sysdeps/x86_64/multiarch/strcmp.S: Likewise. * sysdeps/x86_64/multiarch/strcpy.S: Likewise. * sysdeps/x86_64/multiarch/strcspn.S: Likewise. * sysdeps/x86_64/multiarch/strspn.S: Likewise. * sysdeps/x86_64/multiarch/wcscpy.S: Likewise. * sysdeps/x86_64/multiarch/wmemcmp.S: Likewise. https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=2f99aa146788d958bf202ce51e070c31af84a570 commit 2f99aa146788d958bf202ce51e070c31af84a570 Author: H.J. Lu <hjl.tools@gmail.com> Date: Fri Jul 31 07:30:04 2015 -0700 Add _dl_x86_cpu_features to rtld_global in ld.so This patch adds _dl_x86_cpu_features to rtld_global in x86 ld.so and initializes it early before __libc_start_main is called so that cpu_features is always available when it is used and we can avoid calling __init_cpu_features in IFUNC selectors. * sysdeps/i386/dl-machine.h: Include <cpu-features.c>. (dl_platform_init): Call init_cpu_features. * sysdeps/i386/dl-procinfo.c (_dl_x86_cpu_features): New. * sysdeps/i386/i686/cacheinfo.c (DISABLE_PREFERRED_MEMORY_INSTRUCTION): Removed. * sysdeps/i386/i686/multiarch/ifunc-defines.sym (KIND_OFFSET): Removed. * sysdeps/i386/ldsodefs.h: Include <cpu-features.h>. * sysdeps/unix/sysv/linux/x86_64/dl-procinfo.c: Include <sysdeps/x86_64/dl-procinfo.c> instead of sysdeps/generic/dl-procinfo.c>. * sysdeps/x86/Makefile [$(subdir) == csu] (gen-as-const-headers): Add cpu-features-offsets.sym and rtld-global-offsets.sym. * sysdeps/x86/cpu-features-offsets.sym: New file. * sysdeps/x86/cpu-features.c: Likewise. * sysdeps/x86/cpu-features.h: Likewise. * sysdeps/x86/libc-start.c: Likewise. * sysdeps/x86/rtld-global-offsets.sym: Likewise. * sysdeps/x86_64/dl-procinfo.c: Likewise. * sysdeps/x86_64/cacheinfo.c (__cpuid_count): Removed. Assume USE_MULTIARCH is defined and don't check it. (is_intel): Replace __cpu_features with GLRO(dl_x86_cpu_features). (is_amd): Likewise. (max_cpuid): Likewise. (intel_check_word): Likewise. (__cache_sysconf): Don't call __init_cpu_features. (__x86_preferred_memory_instruction): Removed. (init_cacheinfo): Don't call __init_cpu_features. Replace __cpu_features with GLRO(dl_x86_cpu_features). * sysdeps/x86_64/dl-machine.h: <cpu-features.c>. (dl_platform_init): Call init_cpu_features. * sysdeps/x86_64/ldsodefs.h: Include <cpu-features.h>. * sysdeps/x86_64/multiarch/cacheinfo.c: Removed. * sysdeps/x86_64/multiarch/ifunc-defines.sym (KIND_OFFSET): Removed. * sysdeps/x86_64/multiarch/init-arch.c: Rewrite. * sysdeps/x86_64/multiarch/init-arch.h: Likewise. https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=fdd3aa0b19700ab564da895a2a85bf3fdb0bedf0 commit fdd3aa0b19700ab564da895a2a85bf3fdb0bedf0 Author: H.J. Lu <hjl.tools@gmail.com> Date: Thu Jul 9 09:30:09 2015 -0700 Improve bndmov encoding with zero displacement If x86-64 assembler doesn't support MPX, we encode bndmov instruction by hand. When displacement is zero, assembler generates shorter encoding. This patch improves bndmov encoding with zero displacement so that ld.so is identical when using assemblers with and without MPX support. * sysdeps/x86_64/dl-trampoline.S (_dl_runtime_resolve): Improve bndmov encoding with zero displacement. https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=9e4fc7f67f6695f294ae759a6b540f5d08a56f0c commit 9e4fc7f67f6695f294ae759a6b540f5d08a56f0c Author: Igor Zamyatin <igor.zamyatin@intel.com> Date: Thu Jul 9 06:50:12 2015 -0700 Preserve bound registers for pointer pass/return We need to save/restore bound registers and add a BND prefix before branches in _dl_runtime_profile so that bound registers for pointer pass and return are preserved when LD_AUDIT is used. [BZ #18134] * sysdeps/i386/configure.ac: Set HAVE_MPX_SUPPORT. * sysdeps/i386/configure: Regenerated. * sysdeps/i386/dl-trampoline.S (PRESERVE_BND_REGS_PREFIX): New. (_dl_runtime_profile): Save and restore Intel MPX return bound registers when calling _dl_call_pltexit. Add PRESERVE_BND_REGS_PREFIX before return. * sysdeps/i386/link-defines.sym (LRV_BND0_OFFSET): New. (LRV_BND1_OFFSET): Likewise. * sysdeps/x86/bits/link.h (La_i86_retval): Add lrv_bnd0 and lrv_bnd1. * sysdeps/x86_64/dl-trampoline.S (_dl_runtime_profile): Fix typo in bndmov encoding. * sysdeps/x86_64/dl-trampoline.h: Properly save and restore Intel MPX bound registers. Add PRESERVE_BND_REGS_PREFIX before branch instructions to preserve bounds. https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=b15f277bac14482c8b2dda4931ebf919644932fa commit b15f277bac14482c8b2dda4931ebf919644932fa Author: H.J. Lu <hjl.tools@gmail.com> Date: Mon Mar 16 14:58:43 2015 -0700 Preserve bound registers in _dl_runtime_resolve We need to add a BND prefix before indirect branch at the end of _dl_runtime_resolve to preserve bound registers. [BZ #18134] * sysdeps/x86_64/dl-trampoline.S (PRESERVE_BND_REGS_PREFIX): New. (_dl_runtime_resolve): Add a BND prefix before indirect branch. https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=20f87a053b1e6a9106851f764c205d59fd4b6879 commit 20f87a053b1e6a9106851f764c205d59fd4b6879 Author: H.J. Lu <hjl.tools@gmail.com> Date: Tue Jul 7 05:23:24 2015 -0700 Add and use sysdeps/i386/link-defines.sym Define macros for fields in La_i86_regs and La_i86_retval and use them in dl-trampoline.S, instead of hardcoded values. * sysdeps/i386/Makefile (gen-as-const-headers)[elf]: Add link-defines.sym. * sysdeps/i386/dl-trampoline.S: Include <link-defines.h>. (_dl_runtime_profile): Use LONG_DOUBLE_SIZE, LRV_SIZE, LRV_EAX_OFFSET, LRV_EDX_OFFSET, LRV_ST0_OFFSET, LRV_ST1_OFFSET and LR_SIZE. * sysdeps/i386/link-defines.sym: New file. https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=d6fd297566e2389ab855325754bcb25f604c6b7d commit d6fd297566e2389ab855325754bcb25f604c6b7d Author: H.J. Lu <hjl.tools@gmail.com> Date: Tue Jul 7 05:09:16 2015 -0700 Add a testcase for i386 LD_AUDIT This patch adds a testcase for i386 LD_AUDIT to check function return and parameters passed in registers. * sysdeps/i386/Makefile (tests)[elf]: Add tst-audit3. (modules-names): Add tst-auditmod3a tst-auditmod3b. ($(objpfx)tst-audit3): New rule. ($(objpfx)tst-audit3.out): Likewise. * sysdeps/i386/tst-audit3.c: New file. * sysdeps/i386/tst-audit3.h: Likewise. * sysdeps/i386/tst-auditmod3a.c: Likewise. * sysdeps/i386/tst-auditmod3b.c: Likewise. -----------------------------------------------------------------------
This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "GNU C Library master sources". The branch, hjl/plt/2.21 has been created at ee31b78f6a17c08ff274f045b5c694175d0604fe (commit) - Log ----------------------------------------------------------------- https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=ee31b78f6a17c08ff274f045b5c694175d0604fe commit ee31b78f6a17c08ff274f045b5c694175d0604fe Author: H.J. Lu <hjl.tools@gmail.com> Date: Wed Jul 29 04:49:38 2015 -0700 Use SSE optimized strcmp in x86-64 ld.so Since ld.so preserves vector registers now, we can SSE optimized strcmp in x86-64 ld.so. * sysdeps/x86_64/strcmp.S: Remove "#if !IS_IN (libc)". https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=0b130c6106f777b4706985c1b21259cb0b9444de commit 0b130c6106f777b4706985c1b21259cb0b9444de Author: H.J. Lu <hjl.tools@gmail.com> Date: Wed Jul 29 03:56:14 2015 -0700 Remove x86-64 rtld-xxx.c and rtld-xxx.S Since ld.so preserves vector registers now, we can use the regular, non-ifunc string and memory functions in ld.so. * sysdeps/x86_64/rtld-memcmp.c: Removed. * sysdeps/x86_64/rtld-memset.S: Likewise. * sysdeps/x86_64/rtld-strchr.S: Likewise. * sysdeps/x86_64/rtld-strlen.S: Likewise. * sysdeps/x86_64/multiarch/rtld-memcmp.c: Likewise. * sysdeps/x86_64/multiarch/rtld-memset.S: Likewise. https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=208f29ab4507c0fbd05ae7b355b935df28d13bd5 commit 208f29ab4507c0fbd05ae7b355b935df28d13bd5 Author: H.J. Lu <hjl.tools@gmail.com> Date: Wed Jul 29 03:47:54 2015 -0700 Replace %xmm8 with %xmm0 Since ld.so preserves vector registers now, we can use %xmm0 to avoid the REX prefix. * sysdeps/x86_64/memset.S: Replace %xmm8 with %xmm0. https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=4edcc46a4abeb18a2bce77c822a0bbbb591cadb1 commit 4edcc46a4abeb18a2bce77c822a0bbbb591cadb1 Author: H.J. Lu <hjl.tools@gmail.com> Date: Wed Jul 29 03:44:39 2015 -0700 Replace %xmm[8-12] with %xmm[0-4] Since ld.so preserves vector registers now, we can use %xmm[0-4] to avoid the REX prefix. * sysdeps/x86_64/strlen.S: Replace %xmm[8-12] with %xmm[0-4]. https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=110b786b20852ed67e51fc2e17142f2ec7637438 commit 110b786b20852ed67e51fc2e17142f2ec7637438 Author: H.J. Lu <hjl.tools@gmail.com> Date: Tue Jul 28 18:56:18 2015 -0700 Don't disable SSE in x86-64 ld.so Since ld.so preserves vector registers now, we can use SSE in ld.so. * sysdeps/i386/Makefile [$(subdir) == elf] (CFLAGS-.os): Add -mno-sse -mno-mmx for $(all-rtld-routines). [$(subdir) == elf] (tests-special): Add $(objpfx)tst-ld-sse-use.out. [$(subdir) == elf] ($(objpfx)tst-ld-sse-use.out): New rule. * sysdeps/x86/Makefile [$(subdir) == elf] (CFLAGS-.os): Removed. [$(subdir) == elf] (tests-special): Likewise. [$(subdir) == elf] ($(objpfx)tst-ld-sse-use.out): Likewise. * sysdeps/x86_64/Makefile [$(subdir) == elf] (CFLAGS-.os): Add -mno-mmx for $(all-rtld-routines). https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=d90c533eb936ec65456c7a07ed921b5c04c00d2b commit d90c533eb936ec65456c7a07ed921b5c04c00d2b Author: H.J. Lu <hjl.tools@gmail.com> Date: Sat Jul 11 13:25:25 2015 -0700 Save and restore vector registers in x86-64 ld.so This patch initiaizes GLRO(dl_x86_xstate) in dl_platform_init to indicate if the processor supports SSE, AVX or AVX512. It uses this information to properly save and restore vector registers in ld.so. Now we can use SSE in ld.so and delete FOREIGN_CALL macros. [BZ #15128] * sysdeps/x86_64/Makefile [$(subdir) == elf] (tests): Add ifuncmain8. (modules-names): Add ifuncmod8. ($(objpfx)ifuncmain8): New rule. * sysdeps/x86_64/dl-machine.h: Include <dl-procinfo.h> and <cpuid.h>. (elf_machine_runtime_setup): Use _dl_runtime_resolve_sse, _dl_runtime_resolve_avx, or _dl_runtime_resolve_avx512, _dl_runtime_profile_sse, _dl_runtime_profile_avx, or _dl_runtime_profile_avx512, based on HAS_ARCH_FEATURE. * sysdeps/x86_64/dl-trampoline.S: Rewrite. * sysdeps/x86_64/dl-trampoline.h: Likewise. * sysdeps/x86_64/ifuncmain8.c: New file. * sysdeps/x86_64/ifuncmod8.c: Likewise. * sysdeps/x86_64/nptl/tcb-offsets.sym (RTLD_SAVESPACE_SSE): Removed. * sysdeps/x86_64/nptl/tls.h (__128bits): Removed. (tcbhead_t): Change rtld_must_xmm_save to __glibc_unused1. Change rtld_savespace_sse to __glibc_unused2. (RTLD_CHECK_FOREIGN_CALL): Removed. (RTLD_ENABLE_FOREIGN_CALL): Likewise. (RTLD_PREPARE_FOREIGN_CALL): Likewise. (RTLD_FINALIZE_FOREIGN_CALL): Likewise. https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=2fede219d1005f41a04aab125ec49b7c1456236f commit 2fede219d1005f41a04aab125ec49b7c1456236f Author: H.J. Lu <hjl.tools@gmail.com> Date: Sun Jul 12 14:41:20 2015 -0700 Align stack when calling __errno_location We should align stack to 16 bytes when calling __errno_location. [BZ #18661] * sysdeps/x86_64/fpu/s_cosf.S (__cosf): Align stack to 16 bytes when calling __errno_location. * sysdeps/x86_64/fpu/s_sincosf.S (__sincosf): Likewise. * sysdeps/x86_64/fpu/s_sinf.S (__sinf): Likewise. https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=3a538a8e9905c07a3a60b998e31b8c5ac73a4a58 commit 3a538a8e9905c07a3a60b998e31b8c5ac73a4a58 Author: H.J. Lu <hjl.tools@gmail.com> Date: Sun Jul 12 14:40:25 2015 -0700 Align stack to 16 bytes when calling __gettimeofday Subtract stack by 24 bytes instead of 16 bytes so that stack is aligned to 16 bytes when calling __gettimeofday. [BZ #18661] * sysdeps/unix/sysv/linux/x86_64/lowlevellock.S (__lll_timedwait_tid): Align stack to 16 bytes when calling __gettimeofday. https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=69acbbd5ca5a54520cfc107bacc3b71e69ec0d2d commit 69acbbd5ca5a54520cfc107bacc3b71e69ec0d2d Author: H.J. Lu <hjl.tools@gmail.com> Date: Sun Jul 12 14:38:58 2015 -0700 Align stack to 16 bytes when calling __setcontext Don't use pop to restore %rdi so that stack is aligned to 16 bytes when calling __setcontext. [BZ #18661] * sysdeps/unix/sysv/linux/x86_64/__start_context.S (__start_context): Don't use pop to restore %rdi so that stack is aligned to 16 bytes when calling __setcontext. https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=2b58e5d85955174dde6a9304002adb79d2681ca3 commit 2b58e5d85955174dde6a9304002adb79d2681ca3 Author: H.J. Lu <hjl.tools@gmail.com> Date: Wed Jul 29 03:41:58 2015 -0700 Compile {memcpy,strcmp}-sse2-unaligned.S only for libc {memcpy,strcmp}-sse2-unaligned.S aren't needed in ld.so. * sysdeps/x86_64/multiarch/memcpy-sse2-unaligned.S: Compile only for libc. * sysdeps/x86_64/multiarch/strcmp-sse2-unaligned.S: Likewise. https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=5d7a32c16a65d27b73d01556a30fb138338639f1 commit 5d7a32c16a65d27b73d01556a30fb138338639f1 Author: H.J. Lu <hjl.tools@gmail.com> Date: Sat Aug 1 07:47:16 2015 -0700 Update x86 elision-conf.c for <cpu-features.h> This patch updates x86 elision-conf.c to use the newly defined HAS_CPU_FEATURE from <cpu-features.h>. * sysdeps/unix/sysv/linux/x86/elision-conf.c (elision_init): Replace HAS_RTM with HAS_CPU_FEATURE (RTM). https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=da0e27c6c7266df2107c7a4825cf2eb2d6360d28 commit da0e27c6c7266df2107c7a4825cf2eb2d6360d28 Author: H.J. Lu <hjl.tools@gmail.com> Date: Fri Jul 31 16:52:19 2015 -0700 Update i686 multiarch functions for <cpu-features.h> This patch updates i686 multiarch functions to use the newly defined HAS_CPU_FEATURE, HAS_ARCH_FEATURE, LOAD_GOT_AND_RTLD_GLOBAL_RO and LOAD_FUNC_GOT_EAX from <cpu-features.h>. * sysdeps/i386/i686/fpu/multiarch/e_expf.c: Replace HAS_XXX with HAS_CPU_FEATURE/HAS_ARCH_FEATURE (XXX). * sysdeps/i386/i686/fpu/multiarch/s_cosf.c: Likewise. * sysdeps/i386/i686/fpu/multiarch/s_cosf.c: Likewise. * sysdeps/i386/i686/fpu/multiarch/s_sincosf.c: Likewise. * sysdeps/i386/i686/fpu/multiarch/s_sinf.c: Likewise. * sysdeps/i386/i686/multiarch/ifunc-impl-list.c: Likewise. * sysdeps/i386/i686/multiarch/s_fma.c: Likewise. * sysdeps/i386/i686/multiarch/s_fmaf.c: Likewise. * sysdeps/i386/i686/multiarch/bcopy.S: Remove __init_cpu_features call. Merge SHARED and !SHARED. Add LOAD_GOT_AND_RTLD_GLOBAL_RO. Use LOAD_FUNC_GOT_EAX to load function address. Replace HAS_XXX with HAS_CPU_FEATURE/HAS_ARCH_FEATURE (XXX). * 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/strcasecmp.S: Likewise. * sysdeps/i386/i686/multiarch/strcat.S: Likewise. * sysdeps/i386/i686/multiarch/strchr.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/strnlen.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. https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=a7be9410184a405f4f1347302afe0b625146cdab commit a7be9410184a405f4f1347302afe0b625146cdab Author: H.J. Lu <hjl.tools@gmail.com> Date: Fri Jul 31 13:41:04 2015 -0700 Update x86_64 multiarch functions for <cpu-features.h> This patch updates x86_64 multiarch functions to use the newly defined HAS_CPU_FEATURE, HAS_ARCH_FEATURE and LOAD_RTLD_GLOBAL_RO_RDX from <cpu-features.h>. * sysdeps/x86_64/fpu/multiarch/e_asin.c: Replace HAS_XXX with HAS_CPU_FEATURE/HAS_ARCH_FEATURE (XXX). * 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_fma.c: Likewise. * sysdeps/x86_64/fpu/multiarch/s_fmaf.c: Likewise. * sysdeps/x86_64/fpu/multiarch/s_sin.c: Likewise. * sysdeps/x86_64/fpu/multiarch/s_tan.c: Likewise. * sysdeps/x86_64/multiarch/ifunc-impl-list.c: Likewise. * sysdeps/x86_64/multiarch/sched_cpucount.c: Likewise. * sysdeps/x86_64/multiarch/strstr.c: Likewise. * sysdeps/x86_64/multiarch/memmove.c: Likewise. * sysdeps/x86_64/multiarch/memmove_chk.c: Likewise. * sysdeps/x86_64/multiarch/test-multiarch.c: Likewise. * sysdeps/x86_64/multiarch/memcmp.S: Remove __init_cpu_features call. Add LOAD_RTLD_GLOBAL_RO_RDX. Replace HAS_XXX with HAS_CPU_FEATURE/HAS_ARCH_FEATURE (XXX). * sysdeps/x86_64/multiarch/memcpy.S: Likewise. * sysdeps/x86_64/multiarch/memcpy_chk.S: Likewise. * sysdeps/x86_64/multiarch/mempcpy.S: Likewise. * sysdeps/x86_64/multiarch/mempcpy_chk.S: Likewise. * sysdeps/x86_64/multiarch/memset.S: Likewise. * sysdeps/x86_64/multiarch/memset_chk.S: Likewise. * sysdeps/x86_64/multiarch/strcat.S: Likewise. * sysdeps/x86_64/multiarch/strchr.S: Likewise. * sysdeps/x86_64/multiarch/strcmp.S: Likewise. * sysdeps/x86_64/multiarch/strcpy.S: Likewise. * sysdeps/x86_64/multiarch/strcspn.S: Likewise. * sysdeps/x86_64/multiarch/strspn.S: Likewise. * sysdeps/x86_64/multiarch/wcscpy.S: Likewise. * sysdeps/x86_64/multiarch/wmemcmp.S: Likewise. https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=2f99aa146788d958bf202ce51e070c31af84a570 commit 2f99aa146788d958bf202ce51e070c31af84a570 Author: H.J. Lu <hjl.tools@gmail.com> Date: Fri Jul 31 07:30:04 2015 -0700 Add _dl_x86_cpu_features to rtld_global in ld.so This patch adds _dl_x86_cpu_features to rtld_global in x86 ld.so and initializes it early before __libc_start_main is called so that cpu_features is always available when it is used and we can avoid calling __init_cpu_features in IFUNC selectors. * sysdeps/i386/dl-machine.h: Include <cpu-features.c>. (dl_platform_init): Call init_cpu_features. * sysdeps/i386/dl-procinfo.c (_dl_x86_cpu_features): New. * sysdeps/i386/i686/cacheinfo.c (DISABLE_PREFERRED_MEMORY_INSTRUCTION): Removed. * sysdeps/i386/i686/multiarch/ifunc-defines.sym (KIND_OFFSET): Removed. * sysdeps/i386/ldsodefs.h: Include <cpu-features.h>. * sysdeps/unix/sysv/linux/x86_64/dl-procinfo.c: Include <sysdeps/x86_64/dl-procinfo.c> instead of sysdeps/generic/dl-procinfo.c>. * sysdeps/x86/Makefile [$(subdir) == csu] (gen-as-const-headers): Add cpu-features-offsets.sym and rtld-global-offsets.sym. * sysdeps/x86/cpu-features-offsets.sym: New file. * sysdeps/x86/cpu-features.c: Likewise. * sysdeps/x86/cpu-features.h: Likewise. * sysdeps/x86/libc-start.c: Likewise. * sysdeps/x86/rtld-global-offsets.sym: Likewise. * sysdeps/x86_64/dl-procinfo.c: Likewise. * sysdeps/x86_64/cacheinfo.c (__cpuid_count): Removed. Assume USE_MULTIARCH is defined and don't check it. (is_intel): Replace __cpu_features with GLRO(dl_x86_cpu_features). (is_amd): Likewise. (max_cpuid): Likewise. (intel_check_word): Likewise. (__cache_sysconf): Don't call __init_cpu_features. (__x86_preferred_memory_instruction): Removed. (init_cacheinfo): Don't call __init_cpu_features. Replace __cpu_features with GLRO(dl_x86_cpu_features). * sysdeps/x86_64/dl-machine.h: <cpu-features.c>. (dl_platform_init): Call init_cpu_features. * sysdeps/x86_64/ldsodefs.h: Include <cpu-features.h>. * sysdeps/x86_64/multiarch/cacheinfo.c: Removed. * sysdeps/x86_64/multiarch/ifunc-defines.sym (KIND_OFFSET): Removed. * sysdeps/x86_64/multiarch/init-arch.c: Rewrite. * sysdeps/x86_64/multiarch/init-arch.h: Likewise. https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=fdd3aa0b19700ab564da895a2a85bf3fdb0bedf0 commit fdd3aa0b19700ab564da895a2a85bf3fdb0bedf0 Author: H.J. Lu <hjl.tools@gmail.com> Date: Thu Jul 9 09:30:09 2015 -0700 Improve bndmov encoding with zero displacement If x86-64 assembler doesn't support MPX, we encode bndmov instruction by hand. When displacement is zero, assembler generates shorter encoding. This patch improves bndmov encoding with zero displacement so that ld.so is identical when using assemblers with and without MPX support. * sysdeps/x86_64/dl-trampoline.S (_dl_runtime_resolve): Improve bndmov encoding with zero displacement. https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=9e4fc7f67f6695f294ae759a6b540f5d08a56f0c commit 9e4fc7f67f6695f294ae759a6b540f5d08a56f0c Author: Igor Zamyatin <igor.zamyatin@intel.com> Date: Thu Jul 9 06:50:12 2015 -0700 Preserve bound registers for pointer pass/return We need to save/restore bound registers and add a BND prefix before branches in _dl_runtime_profile so that bound registers for pointer pass and return are preserved when LD_AUDIT is used. [BZ #18134] * sysdeps/i386/configure.ac: Set HAVE_MPX_SUPPORT. * sysdeps/i386/configure: Regenerated. * sysdeps/i386/dl-trampoline.S (PRESERVE_BND_REGS_PREFIX): New. (_dl_runtime_profile): Save and restore Intel MPX return bound registers when calling _dl_call_pltexit. Add PRESERVE_BND_REGS_PREFIX before return. * sysdeps/i386/link-defines.sym (LRV_BND0_OFFSET): New. (LRV_BND1_OFFSET): Likewise. * sysdeps/x86/bits/link.h (La_i86_retval): Add lrv_bnd0 and lrv_bnd1. * sysdeps/x86_64/dl-trampoline.S (_dl_runtime_profile): Fix typo in bndmov encoding. * sysdeps/x86_64/dl-trampoline.h: Properly save and restore Intel MPX bound registers. Add PRESERVE_BND_REGS_PREFIX before branch instructions to preserve bounds. https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=b15f277bac14482c8b2dda4931ebf919644932fa commit b15f277bac14482c8b2dda4931ebf919644932fa Author: H.J. Lu <hjl.tools@gmail.com> Date: Mon Mar 16 14:58:43 2015 -0700 Preserve bound registers in _dl_runtime_resolve We need to add a BND prefix before indirect branch at the end of _dl_runtime_resolve to preserve bound registers. [BZ #18134] * sysdeps/x86_64/dl-trampoline.S (PRESERVE_BND_REGS_PREFIX): New. (_dl_runtime_resolve): Add a BND prefix before indirect branch. https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=20f87a053b1e6a9106851f764c205d59fd4b6879 commit 20f87a053b1e6a9106851f764c205d59fd4b6879 Author: H.J. Lu <hjl.tools@gmail.com> Date: Tue Jul 7 05:23:24 2015 -0700 Add and use sysdeps/i386/link-defines.sym Define macros for fields in La_i86_regs and La_i86_retval and use them in dl-trampoline.S, instead of hardcoded values. * sysdeps/i386/Makefile (gen-as-const-headers)[elf]: Add link-defines.sym. * sysdeps/i386/dl-trampoline.S: Include <link-defines.h>. (_dl_runtime_profile): Use LONG_DOUBLE_SIZE, LRV_SIZE, LRV_EAX_OFFSET, LRV_EDX_OFFSET, LRV_ST0_OFFSET, LRV_ST1_OFFSET and LR_SIZE. * sysdeps/i386/link-defines.sym: New file. https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=d6fd297566e2389ab855325754bcb25f604c6b7d commit d6fd297566e2389ab855325754bcb25f604c6b7d Author: H.J. Lu <hjl.tools@gmail.com> Date: Tue Jul 7 05:09:16 2015 -0700 Add a testcase for i386 LD_AUDIT This patch adds a testcase for i386 LD_AUDIT to check function return and parameters passed in registers. * sysdeps/i386/Makefile (tests)[elf]: Add tst-audit3. (modules-names): Add tst-auditmod3a tst-auditmod3b. ($(objpfx)tst-audit3): New rule. ($(objpfx)tst-audit3.out): Likewise. * sysdeps/i386/tst-audit3.c: New file. * sysdeps/i386/tst-audit3.h: Likewise. * sysdeps/i386/tst-auditmod3a.c: Likewise. * sysdeps/i386/tst-auditmod3b.c: Likewise. -----------------------------------------------------------------------
This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "GNU C Library master sources". The branch, hjl/plt/master has been created at ce46ab8d386c38d9ab57feac89a4bd2d37fddd03 (commit) - Log ----------------------------------------------------------------- https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=ce46ab8d386c38d9ab57feac89a4bd2d37fddd03 commit ce46ab8d386c38d9ab57feac89a4bd2d37fddd03 Author: H.J. Lu <hjl.tools@gmail.com> Date: Wed Jul 29 04:49:38 2015 -0700 Use SSE optimized strcmp in x86-64 ld.so Since ld.so preserves vector registers now, we can SSE optimized strcmp in x86-64 ld.so. * sysdeps/x86_64/strcmp.S: Remove "#if !IS_IN (libc)". https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=754285d225c6749bb4b9474f9e2ae6d6cb265f92 commit 754285d225c6749bb4b9474f9e2ae6d6cb265f92 Author: H.J. Lu <hjl.tools@gmail.com> Date: Wed Jul 29 03:56:14 2015 -0700 Remove x86-64 rtld-xxx.c and rtld-xxx.S Since ld.so preserves vector registers now, we can use the regular, non-ifunc string and memory functions in ld.so. * sysdeps/x86_64/rtld-memcmp.c: Removed. * sysdeps/x86_64/rtld-memset.S: Likewise. * sysdeps/x86_64/rtld-strchr.S: Likewise. * sysdeps/x86_64/rtld-strlen.S: Likewise. * sysdeps/x86_64/multiarch/rtld-memcmp.c: Likewise. * sysdeps/x86_64/multiarch/rtld-memset.S: Likewise. https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=5fc35aad652764fbb04a073039d08c0d43f67c67 commit 5fc35aad652764fbb04a073039d08c0d43f67c67 Author: H.J. Lu <hjl.tools@gmail.com> Date: Wed Jul 29 03:47:54 2015 -0700 Replace %xmm8 with %xmm0 Since ld.so preserves vector registers now, we can use %xmm0 to avoid the REX prefix. * sysdeps/x86_64/memset.S: Replace %xmm8 with %xmm0. https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=81b538119e612151b4fed682d1f4704285571a0a commit 81b538119e612151b4fed682d1f4704285571a0a Author: H.J. Lu <hjl.tools@gmail.com> Date: Wed Jul 29 03:44:39 2015 -0700 Replace %xmm[8-12] with %xmm[0-4] Since ld.so preserves vector registers now, we can use %xmm[0-4] to avoid the REX prefix. * sysdeps/x86_64/strlen.S: Replace %xmm[8-12] with %xmm[0-4]. https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=895cd2ed906dbc94fd62bef5b7e0971710d2579f commit 895cd2ed906dbc94fd62bef5b7e0971710d2579f Author: H.J. Lu <hjl.tools@gmail.com> Date: Tue Jul 28 18:56:18 2015 -0700 Don't disable SSE in x86-64 ld.so Since ld.so preserves vector registers now, we can use SSE in ld.so. * sysdeps/i386/Makefile [$(subdir) == elf] (CFLAGS-.os): Add -mno-sse -mno-mmx for $(all-rtld-routines). [$(subdir) == elf] (tests-special): Add $(objpfx)tst-ld-sse-use.out. [$(subdir) == elf] ($(objpfx)tst-ld-sse-use.out): New rule. * sysdeps/x86/Makefile [$(subdir) == elf] (CFLAGS-.os): Removed. [$(subdir) == elf] (tests-special): Likewise. [$(subdir) == elf] ($(objpfx)tst-ld-sse-use.out): Likewise. * sysdeps/x86_64/Makefile [$(subdir) == elf] (CFLAGS-.os): Add -mno-mmx for $(all-rtld-routines). https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=b621b5ff5e5ac1dc297f6293dca552c6c122c6ca commit b621b5ff5e5ac1dc297f6293dca552c6c122c6ca Author: H.J. Lu <hjl.tools@gmail.com> Date: Sat Jul 11 13:25:25 2015 -0700 Save and restore vector registers in x86-64 ld.so This patch initiaizes GLRO(dl_x86_xstate) in dl_platform_init to indicate if the processor supports SSE, AVX or AVX512. It uses this information to properly save and restore vector registers in ld.so. Now we can use SSE in ld.so and delete FOREIGN_CALL macros. [BZ #15128] * sysdeps/x86_64/Makefile [$(subdir) == elf] (tests): Add ifuncmain8. (modules-names): Add ifuncmod8. ($(objpfx)ifuncmain8): New rule. * sysdeps/x86_64/dl-machine.h: Include <dl-procinfo.h> and <cpuid.h>. (elf_machine_runtime_setup): Use _dl_runtime_resolve_sse, _dl_runtime_resolve_avx, or _dl_runtime_resolve_avx512, _dl_runtime_profile_sse, _dl_runtime_profile_avx, or _dl_runtime_profile_avx512, based on HAS_ARCH_FEATURE. * sysdeps/x86_64/dl-trampoline.S: Rewrite. * sysdeps/x86_64/dl-trampoline.h: Likewise. * sysdeps/x86_64/ifuncmain8.c: New file. * sysdeps/x86_64/ifuncmod8.c: Likewise. * sysdeps/x86_64/nptl/tcb-offsets.sym (RTLD_SAVESPACE_SSE): Removed. * sysdeps/x86_64/nptl/tls.h (__128bits): Removed. (tcbhead_t): Change rtld_must_xmm_save to __glibc_unused1. Change rtld_savespace_sse to __glibc_unused2. (RTLD_CHECK_FOREIGN_CALL): Removed. (RTLD_ENABLE_FOREIGN_CALL): Likewise. (RTLD_PREPARE_FOREIGN_CALL): Likewise. (RTLD_FINALIZE_FOREIGN_CALL): Likewise. https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=a018fe7a7229c3048dcd5765716b719905820f64 commit a018fe7a7229c3048dcd5765716b719905820f64 Author: H.J. Lu <hjl.tools@gmail.com> Date: Sun Jul 12 14:41:20 2015 -0700 Align stack when calling __errno_location We should align stack to 16 bytes when calling __errno_location. [BZ #18661] * sysdeps/x86_64/fpu/s_cosf.S (__cosf): Align stack to 16 bytes when calling __errno_location. * sysdeps/x86_64/fpu/s_sincosf.S (__sincosf): Likewise. * sysdeps/x86_64/fpu/s_sinf.S (__sinf): Likewise. https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=dececeb4701899392f987a0d9eb92fe8fd0e9e32 commit dececeb4701899392f987a0d9eb92fe8fd0e9e32 Author: H.J. Lu <hjl.tools@gmail.com> Date: Sun Jul 12 14:40:25 2015 -0700 Align stack to 16 bytes when calling __gettimeofday Subtract stack by 24 bytes instead of 16 bytes so that stack is aligned to 16 bytes when calling __gettimeofday. [BZ #18661] * sysdeps/unix/sysv/linux/x86_64/lowlevellock.S (__lll_timedwait_tid): Align stack to 16 bytes when calling __gettimeofday. https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=18a1650a345418cc2a4c83372cb4402d0da4535d commit 18a1650a345418cc2a4c83372cb4402d0da4535d Author: H.J. Lu <hjl.tools@gmail.com> Date: Sun Jul 12 14:38:58 2015 -0700 Align stack to 16 bytes when calling __setcontext Don't use pop to restore %rdi so that stack is aligned to 16 bytes when calling __setcontext. [BZ #18661] * sysdeps/unix/sysv/linux/x86_64/__start_context.S (__start_context): Don't use pop to restore %rdi so that stack is aligned to 16 bytes when calling __setcontext. https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=1c1d5084bb4de396487418ca2fd96538e489100e commit 1c1d5084bb4de396487418ca2fd96538e489100e Author: H.J. Lu <hjl.tools@gmail.com> Date: Wed Jul 29 03:41:58 2015 -0700 Compile {memcpy,strcmp}-sse2-unaligned.S only for libc {memcpy,strcmp}-sse2-unaligned.S aren't needed in ld.so. * sysdeps/x86_64/multiarch/memcpy-sse2-unaligned.S: Compile only for libc. * sysdeps/x86_64/multiarch/strcmp-sse2-unaligned.S: Likewise. -----------------------------------------------------------------------
This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "GNU C Library master sources". The branch, hjl/plt/master has been created at 5b5763b34b5c12c1c41315f0e823660d8bd5c698 (commit) - Log ----------------------------------------------------------------- https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=5b5763b34b5c12c1c41315f0e823660d8bd5c698 commit 5b5763b34b5c12c1c41315f0e823660d8bd5c698 Author: H.J. Lu <hjl.tools@gmail.com> Date: Mon Aug 3 08:00:40 2015 -0700 Rename init-arch.c to dl-get-cpu-features.c Add testcases for __get_cpu_features https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=83cf75b556f9b8dcbd95541a276ee9dfc5761c4f commit 83cf75b556f9b8dcbd95541a276ee9dfc5761c4f Author: H.J. Lu <hjl.tools@gmail.com> Date: Sun Aug 2 22:27:47 2015 -0700 Don't run tst-getpid2 with LD_BIND_NOW=1 Since _dl_x86_64_save_sse and _dl_x86_64_restore_sse are removed now, we don't need to run tst-getpid2 with LD_BIND_NOW=1. * sysdeps/unix/sysv/linux/Makefile (tst-getpid2-ENV): Removed. https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=708f2aac905ea757bcb6ff23532b6ccfc406236f commit 708f2aac905ea757bcb6ff23532b6ccfc406236f Author: H.J. Lu <hjl.tools@gmail.com> Date: Wed Jul 29 04:49:38 2015 -0700 Use SSE optimized strcmp in x86-64 ld.so Since ld.so preserves vector registers now, we can SSE optimized strcmp in x86-64 ld.so. * sysdeps/x86_64/strcmp.S: Remove "#if !IS_IN (libc)". https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=26d4813c6a5bfda63b578f83670f236cbf1c13fe commit 26d4813c6a5bfda63b578f83670f236cbf1c13fe Author: H.J. Lu <hjl.tools@gmail.com> Date: Wed Jul 29 03:56:14 2015 -0700 Remove x86-64 rtld-xxx.c and rtld-xxx.S Since ld.so preserves vector registers now, we can use the regular, non-ifunc string and memory functions in ld.so. * sysdeps/x86_64/rtld-memcmp.c: Removed. * sysdeps/x86_64/rtld-memset.S: Likewise. * sysdeps/x86_64/rtld-strchr.S: Likewise. * sysdeps/x86_64/rtld-strlen.S: Likewise. * sysdeps/x86_64/multiarch/rtld-memcmp.c: Likewise. * sysdeps/x86_64/multiarch/rtld-memset.S: Likewise. https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=3f2511ec570058d78256d4a9523285a4089b7ed9 commit 3f2511ec570058d78256d4a9523285a4089b7ed9 Author: H.J. Lu <hjl.tools@gmail.com> Date: Wed Jul 29 03:47:54 2015 -0700 Replace %xmm8 with %xmm0 Since ld.so preserves vector registers now, we can use %xmm0 to avoid the REX prefix. * sysdeps/x86_64/memset.S: Replace %xmm8 with %xmm0. https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=a83593af1006873abd1e26ea944f6cf09f072e28 commit a83593af1006873abd1e26ea944f6cf09f072e28 Author: H.J. Lu <hjl.tools@gmail.com> Date: Wed Jul 29 03:44:39 2015 -0700 Replace %xmm[8-12] with %xmm[0-4] Since ld.so preserves vector registers now, we can use %xmm[0-4] to avoid the REX prefix. * sysdeps/x86_64/strlen.S: Replace %xmm[8-12] with %xmm[0-4]. https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=b16fbdf77f3d815e19673478f32556ac8baf7d86 commit b16fbdf77f3d815e19673478f32556ac8baf7d86 Author: H.J. Lu <hjl.tools@gmail.com> Date: Tue Jul 28 18:56:18 2015 -0700 Don't disable SSE in x86-64 ld.so Since ld.so preserves vector registers now, we can use SSE in ld.so. * sysdeps/i386/Makefile [$(subdir) == elf] (CFLAGS-.os): Add -mno-sse -mno-mmx for $(all-rtld-routines). [$(subdir) == elf] (tests-special): Add $(objpfx)tst-ld-sse-use.out. [$(subdir) == elf] ($(objpfx)tst-ld-sse-use.out): New rule. * sysdeps/x86/Makefile [$(subdir) == elf] (CFLAGS-.os): Removed. [$(subdir) == elf] (tests-special): Likewise. [$(subdir) == elf] ($(objpfx)tst-ld-sse-use.out): Likewise. * sysdeps/x86_64/Makefile [$(subdir) == elf] (CFLAGS-.os): Add -mno-mmx for $(all-rtld-routines). https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=442f3d779f4b711045eb48a8fc78016d57a9d760 commit 442f3d779f4b711045eb48a8fc78016d57a9d760 Author: H.J. Lu <hjl.tools@gmail.com> Date: Sat Jul 11 13:25:25 2015 -0700 Save and restore vector registers in x86-64 ld.so This patch initiaizes GLRO(dl_x86_xstate) in dl_platform_init to indicate if the processor supports SSE, AVX or AVX512. It uses this information to properly save and restore vector registers in ld.so. Now we can use SSE in ld.so and delete FOREIGN_CALL macros. [BZ #15128] * sysdeps/x86_64/Makefile [$(subdir) == elf] (tests): Add ifuncmain8. (modules-names): Add ifuncmod8. ($(objpfx)ifuncmain8): New rule. * sysdeps/x86_64/dl-machine.h: Include <dl-procinfo.h> and <cpuid.h>. (elf_machine_runtime_setup): Use _dl_runtime_resolve_sse, _dl_runtime_resolve_avx, or _dl_runtime_resolve_avx512, _dl_runtime_profile_sse, _dl_runtime_profile_avx, or _dl_runtime_profile_avx512, based on HAS_ARCH_FEATURE. * sysdeps/x86_64/dl-trampoline.S: Rewrite. * sysdeps/x86_64/dl-trampoline.h: Likewise. * sysdeps/x86_64/ifuncmain8.c: New file. * sysdeps/x86_64/ifuncmod8.c: Likewise. * sysdeps/x86_64/nptl/tcb-offsets.sym (RTLD_SAVESPACE_SSE): Removed. * sysdeps/x86_64/nptl/tls.h (__128bits): Removed. (tcbhead_t): Change rtld_must_xmm_save to __glibc_unused1. Change rtld_savespace_sse to __glibc_unused2. (RTLD_CHECK_FOREIGN_CALL): Removed. (RTLD_ENABLE_FOREIGN_CALL): Likewise. (RTLD_PREPARE_FOREIGN_CALL): Likewise. (RTLD_FINALIZE_FOREIGN_CALL): Likewise. https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=1ca5bb347ba585e3393c654cebac0c015a08d47b commit 1ca5bb347ba585e3393c654cebac0c015a08d47b Author: H.J. Lu <hjl.tools@gmail.com> Date: Sun Jul 12 14:41:20 2015 -0700 Align stack when calling __errno_location We should align stack to 16 bytes when calling __errno_location. [BZ #18661] * sysdeps/x86_64/fpu/s_cosf.S (__cosf): Align stack to 16 bytes when calling __errno_location. * sysdeps/x86_64/fpu/s_sincosf.S (__sincosf): Likewise. * sysdeps/x86_64/fpu/s_sinf.S (__sinf): Likewise. https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=9fe5cccab58b5cbaf3bcec3e9154413f3330c849 commit 9fe5cccab58b5cbaf3bcec3e9154413f3330c849 Author: H.J. Lu <hjl.tools@gmail.com> Date: Sun Jul 12 14:40:25 2015 -0700 Align stack to 16 bytes when calling __gettimeofday Subtract stack by 24 bytes instead of 16 bytes so that stack is aligned to 16 bytes when calling __gettimeofday. [BZ #18661] * sysdeps/unix/sysv/linux/x86_64/lowlevellock.S (__lll_timedwait_tid): Align stack to 16 bytes when calling __gettimeofday. https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=e5180480fda8fb740d5a02eb6ecbe25ff82214d4 commit e5180480fda8fb740d5a02eb6ecbe25ff82214d4 Author: H.J. Lu <hjl.tools@gmail.com> Date: Sun Jul 12 14:38:58 2015 -0700 Align stack to 16 bytes when calling __setcontext Don't use pop to restore %rdi so that stack is aligned to 16 bytes when calling __setcontext. [BZ #18661] * sysdeps/unix/sysv/linux/x86_64/__start_context.S (__start_context): Don't use pop to restore %rdi so that stack is aligned to 16 bytes when calling __setcontext. https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=a691de50e047732d8ed7c010f8a456d67d071789 commit a691de50e047732d8ed7c010f8a456d67d071789 Author: H.J. Lu <hjl.tools@gmail.com> Date: Wed Jul 29 03:41:58 2015 -0700 Compile {memcpy,strcmp}-sse2-unaligned.S only for libc {memcpy,strcmp}-sse2-unaligned.S aren't needed in ld.so. * sysdeps/x86_64/multiarch/memcpy-sse2-unaligned.S: Compile only for libc. * sysdeps/x86_64/multiarch/strcmp-sse2-unaligned.S: Likewise. https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=686d22be135392def2b1d2018195cac67bd19208 commit 686d22be135392def2b1d2018195cac67bd19208 Author: H.J. Lu <hjl.tools@gmail.com> Date: Sat Aug 1 07:47:16 2015 -0700 Update x86 elision-conf.c for <cpu-features.h> This patch updates x86 elision-conf.c to use the newly defined HAS_CPU_FEATURE from <cpu-features.h>. * sysdeps/unix/sysv/linux/x86/elision-conf.c (elision_init): Replace HAS_RTM with HAS_CPU_FEATURE (RTM). https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=3d98f487d18379acd39c4a1db38bd192b4a9beab commit 3d98f487d18379acd39c4a1db38bd192b4a9beab Author: H.J. Lu <hjl.tools@gmail.com> Date: Fri Jul 31 13:46:05 2015 -0700 Update libmvec multiarch functions for <cpu-features.h> This patch updates libmvec multiarch functions to use the newly defined HAS_CPU_FEATURE, HAS_ARCH_FEATURE and LOAD_RTLD_GLOBAL_RO_RDX from <cpu-features.h>. * math/Makefile ($(addprefix $(objpfx), $(libm-vec-tests))): Remove $(objpfx)init-arch.o. * sysdeps/x86_64/fpu/Makefile (libmvec-support): Remove init-arch. * sysdeps/x86_64/fpu/math-tests-arch.h (avx_usable): Removed. (INIT_ARCH_EXT): Defined as empty. (CHECK_ARCH_EXT): Replace HAS_XXX with HAS_ARCH_FEATURE (XXX). * sysdeps/x86_64/fpu/multiarch/svml_d_cos2_core.S: Remove __init_cpu_features call. Replace HAS_XXX with HAS_CPU_FEATURE/HAS_ARCH_FEATURE (XXX). * sysdeps/x86_64/fpu/multiarch/svml_d_cos4_core.S: Likewise. * sysdeps/x86_64/fpu/multiarch/svml_d_cos8_core.S: Likewise. * sysdeps/x86_64/fpu/multiarch/svml_d_exp2_core.S: Likewise. * sysdeps/x86_64/fpu/multiarch/svml_d_exp4_core.S: Likewise. * sysdeps/x86_64/fpu/multiarch/svml_d_exp8_core.S: Likewise. * sysdeps/x86_64/fpu/multiarch/svml_d_log2_core.S: Likewise. * sysdeps/x86_64/fpu/multiarch/svml_d_log4_core.S: Likewise. * sysdeps/x86_64/fpu/multiarch/svml_d_log8_core.S: Likewise. * sysdeps/x86_64/fpu/multiarch/svml_d_pow2_core.S: Likewise. * sysdeps/x86_64/fpu/multiarch/svml_d_pow4_core.S: Likewise. * sysdeps/x86_64/fpu/multiarch/svml_d_pow8_core.S: Likewise. * sysdeps/x86_64/fpu/multiarch/svml_d_sin2_core.S: Likewise. * sysdeps/x86_64/fpu/multiarch/svml_d_sin4_core.S: Likewise. * sysdeps/x86_64/fpu/multiarch/svml_d_sin8_core.S: Likewise. * sysdeps/x86_64/fpu/multiarch/svml_d_sincos2_core.S: Likewise. * sysdeps/x86_64/fpu/multiarch/svml_d_sincos4_core.S: Likewise. * sysdeps/x86_64/fpu/multiarch/svml_d_sincos8_core.S: Likewise. * sysdeps/x86_64/fpu/multiarch/svml_s_cosf16_core.S: Likewise. * sysdeps/x86_64/fpu/multiarch/svml_s_cosf4_core.S: Likewise. * sysdeps/x86_64/fpu/multiarch/svml_s_cosf8_core.S: Likewise. * sysdeps/x86_64/fpu/multiarch/svml_s_expf16_core.S: Likewise. * sysdeps/x86_64/fpu/multiarch/svml_s_expf4_core.S: Likewise. * sysdeps/x86_64/fpu/multiarch/svml_s_expf8_core.S: Likewise. * sysdeps/x86_64/fpu/multiarch/svml_s_logf16_core.S: Likewise. * sysdeps/x86_64/fpu/multiarch/svml_s_logf4_core.S: Likewise. * sysdeps/x86_64/fpu/multiarch/svml_s_logf8_core.S: Likewise. * sysdeps/x86_64/fpu/multiarch/svml_s_powf16_core.S: Likewise. * sysdeps/x86_64/fpu/multiarch/svml_s_powf4_core.S: Likewise. * sysdeps/x86_64/fpu/multiarch/svml_s_powf8_core.S: Likewise. * sysdeps/x86_64/fpu/multiarch/svml_s_sincosf16_core.S: Likewise. * sysdeps/x86_64/fpu/multiarch/svml_s_sincosf4_core.S: Likewise. * sysdeps/x86_64/fpu/multiarch/svml_s_sincosf8_core.S: Likewise. * sysdeps/x86_64/fpu/multiarch/svml_s_sinf16_core.S: Likewise. * sysdeps/x86_64/fpu/multiarch/svml_s_sinf4_core.S: Likewise. * sysdeps/x86_64/fpu/multiarch/svml_s_sinf8_core.S: Likewise. -----------------------------------------------------------------------
This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "GNU C Library master sources". The branch, hjl/plt/master has been created at f6db06d3805c47ca7f0fd0bed17d32abb02689d3 (commit) - Log ----------------------------------------------------------------- https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=f6db06d3805c47ca7f0fd0bed17d32abb02689d3 commit f6db06d3805c47ca7f0fd0bed17d32abb02689d3 Author: H.J. Lu <hjl.tools@gmail.com> Date: Sun Aug 2 22:27:47 2015 -0700 Don't run tst-getpid2 with LD_BIND_NOW=1 Since _dl_x86_64_save_sse and _dl_x86_64_restore_sse are removed now, we don't need to run tst-getpid2 with LD_BIND_NOW=1. * sysdeps/unix/sysv/linux/Makefile (tst-getpid2-ENV): Removed. https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=e9df5c18b1424d0b2c6e5f848fbd0ffa4f0ccf13 commit e9df5c18b1424d0b2c6e5f848fbd0ffa4f0ccf13 Author: H.J. Lu <hjl.tools@gmail.com> Date: Wed Jul 29 04:49:38 2015 -0700 Use SSE optimized strcmp in x86-64 ld.so Since ld.so preserves vector registers now, we can SSE optimized strcmp in x86-64 ld.so. * sysdeps/x86_64/strcmp.S: Remove "#if !IS_IN (libc)". https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=e54d30f31423f0e8c703a2dc0466bc4b492400d8 commit e54d30f31423f0e8c703a2dc0466bc4b492400d8 Author: H.J. Lu <hjl.tools@gmail.com> Date: Wed Jul 29 03:56:14 2015 -0700 Remove x86-64 rtld-xxx.c and rtld-xxx.S Since ld.so preserves vector registers now, we can use the regular, non-ifunc string and memory functions in ld.so. * sysdeps/x86_64/rtld-memcmp.c: Removed. * sysdeps/x86_64/rtld-memset.S: Likewise. * sysdeps/x86_64/rtld-strchr.S: Likewise. * sysdeps/x86_64/rtld-strlen.S: Likewise. * sysdeps/x86_64/multiarch/rtld-memcmp.c: Likewise. * sysdeps/x86_64/multiarch/rtld-memset.S: Likewise. https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=7448ae107ca0f19c96e0246892abb07e29949d6b commit 7448ae107ca0f19c96e0246892abb07e29949d6b Author: H.J. Lu <hjl.tools@gmail.com> Date: Wed Jul 29 03:47:54 2015 -0700 Replace %xmm8 with %xmm0 Since ld.so preserves vector registers now, we can use %xmm0 to avoid the REX prefix. * sysdeps/x86_64/memset.S: Replace %xmm8 with %xmm0. https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=0bbf91204e74db2c6f7a89990443c98d16ca7300 commit 0bbf91204e74db2c6f7a89990443c98d16ca7300 Author: H.J. Lu <hjl.tools@gmail.com> Date: Wed Jul 29 03:44:39 2015 -0700 Replace %xmm[8-12] with %xmm[0-4] Since ld.so preserves vector registers now, we can use %xmm[0-4] to avoid the REX prefix. * sysdeps/x86_64/strlen.S: Replace %xmm[8-12] with %xmm[0-4]. https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=ca43850f17b4b366db6c43bce86f054bd8850e3b commit ca43850f17b4b366db6c43bce86f054bd8850e3b Author: H.J. Lu <hjl.tools@gmail.com> Date: Tue Jul 28 18:56:18 2015 -0700 Don't disable SSE in x86-64 ld.so Since ld.so preserves vector registers now, we can use SSE in ld.so. * sysdeps/i386/Makefile [$(subdir) == elf] (CFLAGS-.os): Add -mno-sse -mno-mmx for $(all-rtld-routines). [$(subdir) == elf] (tests-special): Add $(objpfx)tst-ld-sse-use.out. [$(subdir) == elf] ($(objpfx)tst-ld-sse-use.out): New rule. * sysdeps/x86/Makefile [$(subdir) == elf] (CFLAGS-.os): Removed. [$(subdir) == elf] (tests-special): Likewise. [$(subdir) == elf] ($(objpfx)tst-ld-sse-use.out): Likewise. * sysdeps/x86_64/Makefile [$(subdir) == elf] (CFLAGS-.os): Add -mno-mmx for $(all-rtld-routines). https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=698c7e058547f634639bbf06cfb88d572adfd6de commit 698c7e058547f634639bbf06cfb88d572adfd6de Author: H.J. Lu <hjl.tools@gmail.com> Date: Sat Jul 11 13:25:25 2015 -0700 Save and restore vector registers in x86-64 ld.so This patch initiaizes GLRO(dl_x86_xstate) in dl_platform_init to indicate if the processor supports SSE, AVX or AVX512. It uses this information to properly save and restore vector registers in ld.so. Now we can use SSE in ld.so and delete FOREIGN_CALL macros. [BZ #15128] * sysdeps/x86_64/Makefile [$(subdir) == elf] (tests): Add ifuncmain8. (modules-names): Add ifuncmod8. ($(objpfx)ifuncmain8): New rule. * sysdeps/x86_64/dl-machine.h: Include <dl-procinfo.h> and <cpuid.h>. (elf_machine_runtime_setup): Use _dl_runtime_resolve_sse, _dl_runtime_resolve_avx, or _dl_runtime_resolve_avx512, _dl_runtime_profile_sse, _dl_runtime_profile_avx, or _dl_runtime_profile_avx512, based on HAS_ARCH_FEATURE. * sysdeps/x86_64/dl-trampoline.S: Rewrite. * sysdeps/x86_64/dl-trampoline.h: Likewise. * sysdeps/x86_64/ifuncmain8.c: New file. * sysdeps/x86_64/ifuncmod8.c: Likewise. * sysdeps/x86_64/nptl/tcb-offsets.sym (RTLD_SAVESPACE_SSE): Removed. * sysdeps/x86_64/nptl/tls.h (__128bits): Removed. (tcbhead_t): Change rtld_must_xmm_save to __glibc_unused1. Change rtld_savespace_sse to __glibc_unused2. (RTLD_CHECK_FOREIGN_CALL): Removed. (RTLD_ENABLE_FOREIGN_CALL): Likewise. (RTLD_PREPARE_FOREIGN_CALL): Likewise. (RTLD_FINALIZE_FOREIGN_CALL): Likewise. https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=0622f480da5844b1f4c7f383fa71e8ed65a32264 commit 0622f480da5844b1f4c7f383fa71e8ed65a32264 Author: H.J. Lu <hjl.tools@gmail.com> Date: Sun Jul 12 14:41:20 2015 -0700 Align stack when calling __errno_location We should align stack to 16 bytes when calling __errno_location. [BZ #18661] * sysdeps/x86_64/fpu/s_cosf.S (__cosf): Align stack to 16 bytes when calling __errno_location. * sysdeps/x86_64/fpu/s_sincosf.S (__sincosf): Likewise. * sysdeps/x86_64/fpu/s_sinf.S (__sinf): Likewise. https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=23662bce8ea3a3b1c822e95efc71f1f8602eeaf8 commit 23662bce8ea3a3b1c822e95efc71f1f8602eeaf8 Author: H.J. Lu <hjl.tools@gmail.com> Date: Sun Jul 12 14:40:25 2015 -0700 Align stack to 16 bytes when calling __gettimeofday Subtract stack by 24 bytes instead of 16 bytes so that stack is aligned to 16 bytes when calling __gettimeofday. [BZ #18661] * sysdeps/unix/sysv/linux/x86_64/lowlevellock.S (__lll_timedwait_tid): Align stack to 16 bytes when calling __gettimeofday. https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=ffc7fb0b97ba9a4f97800003077ff678a235fc8f commit ffc7fb0b97ba9a4f97800003077ff678a235fc8f Author: H.J. Lu <hjl.tools@gmail.com> Date: Sun Jul 12 14:38:58 2015 -0700 Align stack to 16 bytes when calling __setcontext Don't use pop to restore %rdi so that stack is aligned to 16 bytes when calling __setcontext. [BZ #18661] * sysdeps/unix/sysv/linux/x86_64/__start_context.S (__start_context): Don't use pop to restore %rdi so that stack is aligned to 16 bytes when calling __setcontext. https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=40d3b80e0767dd3dc102d6fb544d9ef0c610c207 commit 40d3b80e0767dd3dc102d6fb544d9ef0c610c207 Author: H.J. Lu <hjl.tools@gmail.com> Date: Wed Jul 29 03:41:58 2015 -0700 Compile {memcpy,strcmp}-sse2-unaligned.S only for libc {memcpy,strcmp}-sse2-unaligned.S aren't needed in ld.so. * sysdeps/x86_64/multiarch/memcpy-sse2-unaligned.S: Compile only for libc. * sysdeps/x86_64/multiarch/strcmp-sse2-unaligned.S: Likewise. https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=6427f82096f4d75a46801672360dda2082eb1ce4 commit 6427f82096f4d75a46801672360dda2082eb1ce4 Author: H.J. Lu <hjl.tools@gmail.com> Date: Fri Jul 31 13:46:05 2015 -0700 Update libmvec multiarch functions for <cpu-features.h> This patch updates libmvec multiarch functions to use the newly defined HAS_CPU_FEATURE, HAS_ARCH_FEATURE and LOAD_RTLD_GLOBAL_RO_RDX from <cpu-features.h>. * math/Makefile ($(addprefix $(objpfx), $(libm-vec-tests))): Remove $(objpfx)init-arch.o. * sysdeps/x86_64/fpu/Makefile (libmvec-support): Remove init-arch. * sysdeps/x86_64/fpu/math-tests-arch.h (avx_usable): Removed. (INIT_ARCH_EXT): Defined as empty. (CHECK_ARCH_EXT): Replace HAS_XXX with HAS_ARCH_FEATURE (XXX). * sysdeps/x86_64/fpu/multiarch/svml_d_cos2_core.S: Remove __init_cpu_features call. Replace HAS_XXX with HAS_CPU_FEATURE/HAS_ARCH_FEATURE (XXX). * sysdeps/x86_64/fpu/multiarch/svml_d_cos4_core.S: Likewise. * sysdeps/x86_64/fpu/multiarch/svml_d_cos8_core.S: Likewise. * sysdeps/x86_64/fpu/multiarch/svml_d_exp2_core.S: Likewise. * sysdeps/x86_64/fpu/multiarch/svml_d_exp4_core.S: Likewise. * sysdeps/x86_64/fpu/multiarch/svml_d_exp8_core.S: Likewise. * sysdeps/x86_64/fpu/multiarch/svml_d_log2_core.S: Likewise. * sysdeps/x86_64/fpu/multiarch/svml_d_log4_core.S: Likewise. * sysdeps/x86_64/fpu/multiarch/svml_d_log8_core.S: Likewise. * sysdeps/x86_64/fpu/multiarch/svml_d_pow2_core.S: Likewise. * sysdeps/x86_64/fpu/multiarch/svml_d_pow4_core.S: Likewise. * sysdeps/x86_64/fpu/multiarch/svml_d_pow8_core.S: Likewise. * sysdeps/x86_64/fpu/multiarch/svml_d_sin2_core.S: Likewise. * sysdeps/x86_64/fpu/multiarch/svml_d_sin4_core.S: Likewise. * sysdeps/x86_64/fpu/multiarch/svml_d_sin8_core.S: Likewise. * sysdeps/x86_64/fpu/multiarch/svml_d_sincos2_core.S: Likewise. * sysdeps/x86_64/fpu/multiarch/svml_d_sincos4_core.S: Likewise. * sysdeps/x86_64/fpu/multiarch/svml_d_sincos8_core.S: Likewise. * sysdeps/x86_64/fpu/multiarch/svml_s_cosf16_core.S: Likewise. * sysdeps/x86_64/fpu/multiarch/svml_s_cosf4_core.S: Likewise. * sysdeps/x86_64/fpu/multiarch/svml_s_cosf8_core.S: Likewise. * sysdeps/x86_64/fpu/multiarch/svml_s_expf16_core.S: Likewise. * sysdeps/x86_64/fpu/multiarch/svml_s_expf4_core.S: Likewise. * sysdeps/x86_64/fpu/multiarch/svml_s_expf8_core.S: Likewise. * sysdeps/x86_64/fpu/multiarch/svml_s_logf16_core.S: Likewise. * sysdeps/x86_64/fpu/multiarch/svml_s_logf4_core.S: Likewise. * sysdeps/x86_64/fpu/multiarch/svml_s_logf8_core.S: Likewise. * sysdeps/x86_64/fpu/multiarch/svml_s_powf16_core.S: Likewise. * sysdeps/x86_64/fpu/multiarch/svml_s_powf4_core.S: Likewise. * sysdeps/x86_64/fpu/multiarch/svml_s_powf8_core.S: Likewise. * sysdeps/x86_64/fpu/multiarch/svml_s_sincosf16_core.S: Likewise. * sysdeps/x86_64/fpu/multiarch/svml_s_sincosf4_core.S: Likewise. * sysdeps/x86_64/fpu/multiarch/svml_s_sincosf8_core.S: Likewise. * sysdeps/x86_64/fpu/multiarch/svml_s_sinf16_core.S: Likewise. * sysdeps/x86_64/fpu/multiarch/svml_s_sinf4_core.S: Likewise. * sysdeps/x86_64/fpu/multiarch/svml_s_sinf8_core.S: Likewise. -----------------------------------------------------------------------
This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "GNU C Library master sources". The branch, hjl/plt/2.21 has been created at 759b73bcbdbeb7e0cc8edc13384c0ad31f13497f (commit) - Log ----------------------------------------------------------------- https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=759b73bcbdbeb7e0cc8edc13384c0ad31f13497f commit 759b73bcbdbeb7e0cc8edc13384c0ad31f13497f Author: H.J. Lu <hjl.tools@gmail.com> Date: Sun Aug 2 22:27:47 2015 -0700 Don't run tst-getpid2 with LD_BIND_NOW=1 Since _dl_x86_64_save_sse and _dl_x86_64_restore_sse are removed now, we don't need to run tst-getpid2 with LD_BIND_NOW=1. * nptl/Makefile (tst-getpid2-ENV): Removed. https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=5549394367f8b19fd8aed34cf0db85f0f0753f17 commit 5549394367f8b19fd8aed34cf0db85f0f0753f17 Author: H.J. Lu <hjl.tools@gmail.com> Date: Wed Jul 29 04:49:38 2015 -0700 Use SSE optimized strcmp in x86-64 ld.so Since ld.so preserves vector registers now, we can SSE optimized strcmp in x86-64 ld.so. * sysdeps/x86_64/strcmp.S: Remove "#if !IS_IN (libc)". https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=4f45bc0ac553e4ab3a5d449c61e55dacb78bc2f5 commit 4f45bc0ac553e4ab3a5d449c61e55dacb78bc2f5 Author: H.J. Lu <hjl.tools@gmail.com> Date: Wed Jul 29 03:56:14 2015 -0700 Remove x86-64 rtld-xxx.c and rtld-xxx.S Since ld.so preserves vector registers now, we can use the regular, non-ifunc string and memory functions in ld.so. * sysdeps/x86_64/rtld-memcmp.c: Removed. * sysdeps/x86_64/rtld-memset.S: Likewise. * sysdeps/x86_64/rtld-strchr.S: Likewise. * sysdeps/x86_64/rtld-strlen.S: Likewise. * sysdeps/x86_64/multiarch/rtld-memcmp.c: Likewise. * sysdeps/x86_64/multiarch/rtld-memset.S: Likewise. https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=3a7ed4680aaf75f2f0c47804542cf084154988a9 commit 3a7ed4680aaf75f2f0c47804542cf084154988a9 Author: H.J. Lu <hjl.tools@gmail.com> Date: Wed Jul 29 03:47:54 2015 -0700 Replace %xmm8 with %xmm0 Since ld.so preserves vector registers now, we can use %xmm0 to avoid the REX prefix. * sysdeps/x86_64/memset.S: Replace %xmm8 with %xmm0. https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=f6d7c0971ba53c505853b0aeedb2129f9097a94a commit f6d7c0971ba53c505853b0aeedb2129f9097a94a Author: H.J. Lu <hjl.tools@gmail.com> Date: Wed Jul 29 03:44:39 2015 -0700 Replace %xmm[8-12] with %xmm[0-4] Since ld.so preserves vector registers now, we can use %xmm[0-4] to avoid the REX prefix. * sysdeps/x86_64/strlen.S: Replace %xmm[8-12] with %xmm[0-4]. https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=2b45510e7ba338c84c80339da753b1ca4ff863fd commit 2b45510e7ba338c84c80339da753b1ca4ff863fd Author: H.J. Lu <hjl.tools@gmail.com> Date: Tue Jul 28 18:56:18 2015 -0700 Don't disable SSE in x86-64 ld.so Since ld.so preserves vector registers now, we can use SSE in ld.so. * sysdeps/i386/Makefile [$(subdir) == elf] (CFLAGS-.os): Add -mno-sse -mno-mmx for $(all-rtld-routines). [$(subdir) == elf] (tests-special): Add $(objpfx)tst-ld-sse-use.out. [$(subdir) == elf] ($(objpfx)tst-ld-sse-use.out): New rule. * sysdeps/x86/Makefile [$(subdir) == elf] (CFLAGS-.os): Removed. [$(subdir) == elf] (tests-special): Likewise. [$(subdir) == elf] ($(objpfx)tst-ld-sse-use.out): Likewise. * sysdeps/x86_64/Makefile [$(subdir) == elf] (CFLAGS-.os): Add -mno-mmx for $(all-rtld-routines). https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=9a5a445c81daf83deeeece2eaccd448bdbe9f7fc commit 9a5a445c81daf83deeeece2eaccd448bdbe9f7fc Author: H.J. Lu <hjl.tools@gmail.com> Date: Sat Jul 11 13:25:25 2015 -0700 Save and restore vector registers in x86-64 ld.so This patch initiaizes GLRO(dl_x86_xstate) in dl_platform_init to indicate if the processor supports SSE, AVX or AVX512. It uses this information to properly save and restore vector registers in ld.so. Now we can use SSE in ld.so and delete FOREIGN_CALL macros. [BZ #15128] * sysdeps/x86_64/Makefile [$(subdir) == elf] (tests): Add ifuncmain8. (modules-names): Add ifuncmod8. ($(objpfx)ifuncmain8): New rule. * sysdeps/x86_64/dl-machine.h: Include <dl-procinfo.h> and <cpuid.h>. (elf_machine_runtime_setup): Use _dl_runtime_resolve_sse, _dl_runtime_resolve_avx, or _dl_runtime_resolve_avx512, _dl_runtime_profile_sse, _dl_runtime_profile_avx, or _dl_runtime_profile_avx512, based on HAS_ARCH_FEATURE. * sysdeps/x86_64/dl-trampoline.S: Rewrite. * sysdeps/x86_64/dl-trampoline.h: Likewise. * sysdeps/x86_64/ifuncmain8.c: New file. * sysdeps/x86_64/ifuncmod8.c: Likewise. * sysdeps/x86_64/nptl/tcb-offsets.sym (RTLD_SAVESPACE_SSE): Removed. * sysdeps/x86_64/nptl/tls.h (__128bits): Removed. (tcbhead_t): Change rtld_must_xmm_save to __glibc_unused1. Change rtld_savespace_sse to __glibc_unused2. (RTLD_CHECK_FOREIGN_CALL): Removed. (RTLD_ENABLE_FOREIGN_CALL): Likewise. (RTLD_PREPARE_FOREIGN_CALL): Likewise. (RTLD_FINALIZE_FOREIGN_CALL): Likewise. https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=b98d88d43186dfe9a6686bbd787cc81ed342d03a commit b98d88d43186dfe9a6686bbd787cc81ed342d03a Author: H.J. Lu <hjl.tools@gmail.com> Date: Sun Jul 12 14:41:20 2015 -0700 Align stack when calling __errno_location We should align stack to 16 bytes when calling __errno_location. [BZ #18661] * sysdeps/x86_64/fpu/s_cosf.S (__cosf): Align stack to 16 bytes when calling __errno_location. * sysdeps/x86_64/fpu/s_sincosf.S (__sincosf): Likewise. * sysdeps/x86_64/fpu/s_sinf.S (__sinf): Likewise. https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=66c038403ac1f71e71cf16b722bc7afd84618236 commit 66c038403ac1f71e71cf16b722bc7afd84618236 Author: H.J. Lu <hjl.tools@gmail.com> Date: Sun Jul 12 14:40:25 2015 -0700 Align stack to 16 bytes when calling __gettimeofday Subtract stack by 24 bytes instead of 16 bytes so that stack is aligned to 16 bytes when calling __gettimeofday. [BZ #18661] * sysdeps/unix/sysv/linux/x86_64/lowlevellock.S (__lll_timedwait_tid): Align stack to 16 bytes when calling __gettimeofday. https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=f4e9ea84d63a1abefef6dc2b40c3fcd6577d250c commit f4e9ea84d63a1abefef6dc2b40c3fcd6577d250c Author: H.J. Lu <hjl.tools@gmail.com> Date: Sun Jul 12 14:38:58 2015 -0700 Align stack to 16 bytes when calling __setcontext Don't use pop to restore %rdi so that stack is aligned to 16 bytes when calling __setcontext. [BZ #18661] * sysdeps/unix/sysv/linux/x86_64/__start_context.S (__start_context): Don't use pop to restore %rdi so that stack is aligned to 16 bytes when calling __setcontext. https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=802af829d2543721124f52d1ecfc848aaecdad24 commit 802af829d2543721124f52d1ecfc848aaecdad24 Author: H.J. Lu <hjl.tools@gmail.com> Date: Wed Jul 29 03:41:58 2015 -0700 Compile {memcpy,strcmp}-sse2-unaligned.S only for libc {memcpy,strcmp}-sse2-unaligned.S aren't needed in ld.so. * sysdeps/x86_64/multiarch/memcpy-sse2-unaligned.S: Compile only for libc. * sysdeps/x86_64/multiarch/strcmp-sse2-unaligned.S: Likewise. https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=8d6a1c02b63cbf5aeb713ef3b17147a9539d91fc commit 8d6a1c02b63cbf5aeb713ef3b17147a9539d91fc Author: H.J. Lu <hjl.tools@gmail.com> Date: Thu Jul 9 09:30:09 2015 -0700 Improve bndmov encoding with zero displacement If x86-64 assembler doesn't support MPX, we encode bndmov instruction by hand. When displacement is zero, assembler generates shorter encoding. This patch improves bndmov encoding with zero displacement so that ld.so is identical when using assemblers with and without MPX support. * sysdeps/x86_64/dl-trampoline.S (_dl_runtime_resolve): Improve bndmov encoding with zero displacement. https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=a7f515a34f94e863b71ddfecddf2b10fd0f0a267 commit a7f515a34f94e863b71ddfecddf2b10fd0f0a267 Author: Igor Zamyatin <igor.zamyatin@intel.com> Date: Thu Jul 9 06:50:12 2015 -0700 Preserve bound registers for pointer pass/return We need to save/restore bound registers and add a BND prefix before branches in _dl_runtime_profile so that bound registers for pointer pass and return are preserved when LD_AUDIT is used. [BZ #18134] * sysdeps/i386/configure.ac: Set HAVE_MPX_SUPPORT. * sysdeps/i386/configure: Regenerated. * sysdeps/i386/dl-trampoline.S (PRESERVE_BND_REGS_PREFIX): New. (_dl_runtime_profile): Save and restore Intel MPX return bound registers when calling _dl_call_pltexit. Add PRESERVE_BND_REGS_PREFIX before return. * sysdeps/i386/link-defines.sym (LRV_BND0_OFFSET): New. (LRV_BND1_OFFSET): Likewise. * sysdeps/x86/bits/link.h (La_i86_retval): Add lrv_bnd0 and lrv_bnd1. * sysdeps/x86_64/dl-trampoline.S (_dl_runtime_profile): Fix typo in bndmov encoding. * sysdeps/x86_64/dl-trampoline.h: Properly save and restore Intel MPX bound registers. Add PRESERVE_BND_REGS_PREFIX before branch instructions to preserve bounds. https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=e0bee54529c733fdb427bca0b97f78b7196fd386 commit e0bee54529c733fdb427bca0b97f78b7196fd386 Author: H.J. Lu <hjl.tools@gmail.com> Date: Mon Mar 16 14:58:43 2015 -0700 Preserve bound registers in _dl_runtime_resolve We need to add a BND prefix before indirect branch at the end of _dl_runtime_resolve to preserve bound registers. [BZ #18134] * sysdeps/x86_64/dl-trampoline.S (PRESERVE_BND_REGS_PREFIX): New. (_dl_runtime_resolve): Add a BND prefix before indirect branch. https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=1b123bbb2e30579fe4744fc814c5f102fbd9a8d2 commit 1b123bbb2e30579fe4744fc814c5f102fbd9a8d2 Author: H.J. Lu <hjl.tools@gmail.com> Date: Tue Jul 7 05:23:24 2015 -0700 Add and use sysdeps/i386/link-defines.sym Define macros for fields in La_i86_regs and La_i86_retval and use them in dl-trampoline.S, instead of hardcoded values. * sysdeps/i386/Makefile (gen-as-const-headers)[elf]: Add link-defines.sym. * sysdeps/i386/dl-trampoline.S: Include <link-defines.h>. (_dl_runtime_profile): Use LONG_DOUBLE_SIZE, LRV_SIZE, LRV_EAX_OFFSET, LRV_EDX_OFFSET, LRV_ST0_OFFSET, LRV_ST1_OFFSET and LR_SIZE. * sysdeps/i386/link-defines.sym: New file. https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=7dd3b50bbce127274989eed12b77d06bc9f3cf08 commit 7dd3b50bbce127274989eed12b77d06bc9f3cf08 Author: H.J. Lu <hjl.tools@gmail.com> Date: Tue Jul 7 05:09:16 2015 -0700 Add a testcase for i386 LD_AUDIT This patch adds a testcase for i386 LD_AUDIT to check function return and parameters passed in registers. * sysdeps/i386/Makefile (tests)[elf]: Add tst-audit3. (modules-names): Add tst-auditmod3a tst-auditmod3b. ($(objpfx)tst-audit3): New rule. ($(objpfx)tst-audit3.out): Likewise. * sysdeps/i386/tst-audit3.c: New file. * sysdeps/i386/tst-audit3.h: Likewise. * sysdeps/i386/tst-auditmod3a.c: Likewise. * sysdeps/i386/tst-auditmod3b.c: Likewise. -----------------------------------------------------------------------
This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "GNU C Library master sources". The branch, hjl/plt/2.21 has been created at 22ce18019f83b1f9826c32aa2ee56dc0df3fbd49 (commit) - Log ----------------------------------------------------------------- https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=22ce18019f83b1f9826c32aa2ee56dc0df3fbd49 commit 22ce18019f83b1f9826c32aa2ee56dc0df3fbd49 Author: H.J. Lu <hjl.tools@gmail.com> Date: Sun Aug 2 22:27:47 2015 -0700 Don't run tst-getpid2 with LD_BIND_NOW=1 Since _dl_x86_64_save_sse and _dl_x86_64_restore_sse are removed now, we don't need to run tst-getpid2 with LD_BIND_NOW=1. * nptl/Makefile (tst-getpid2-ENV): Removed. https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=f0f347fa1c5ac0bb367f1ad85fe69fbdc1d7df41 commit f0f347fa1c5ac0bb367f1ad85fe69fbdc1d7df41 Author: H.J. Lu <hjl.tools@gmail.com> Date: Wed Jul 29 04:49:38 2015 -0700 Use SSE optimized strcmp in x86-64 ld.so Since ld.so preserves vector registers now, we can SSE optimized strcmp in x86-64 ld.so. * sysdeps/x86_64/strcmp.S: Remove "#if !IS_IN (libc)". https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=969ca0cbde44e2c531f4fb4358da354e45a16895 commit 969ca0cbde44e2c531f4fb4358da354e45a16895 Author: H.J. Lu <hjl.tools@gmail.com> Date: Wed Jul 29 03:56:14 2015 -0700 Remove x86-64 rtld-xxx.c and rtld-xxx.S Since ld.so preserves vector registers now, we can use the regular, non-ifunc string and memory functions in ld.so. * sysdeps/x86_64/rtld-memcmp.c: Removed. * sysdeps/x86_64/rtld-memset.S: Likewise. * sysdeps/x86_64/rtld-strchr.S: Likewise. * sysdeps/x86_64/rtld-strlen.S: Likewise. * sysdeps/x86_64/multiarch/rtld-memcmp.c: Likewise. * sysdeps/x86_64/multiarch/rtld-memset.S: Likewise. https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=c245d87cf4754a8553b5284206da1d15f1fbb7dc commit c245d87cf4754a8553b5284206da1d15f1fbb7dc Author: H.J. Lu <hjl.tools@gmail.com> Date: Wed Jul 29 03:47:54 2015 -0700 Replace %xmm8 with %xmm0 Since ld.so preserves vector registers now, we can use %xmm0 to avoid the REX prefix. * sysdeps/x86_64/memset.S: Replace %xmm8 with %xmm0. https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=1cb03e05847b1e8e68a06473f0fedf79ecf49005 commit 1cb03e05847b1e8e68a06473f0fedf79ecf49005 Author: H.J. Lu <hjl.tools@gmail.com> Date: Wed Jul 29 03:44:39 2015 -0700 Replace %xmm[8-12] with %xmm[0-4] Since ld.so preserves vector registers now, we can use %xmm[0-4] to avoid the REX prefix. * sysdeps/x86_64/strlen.S: Replace %xmm[8-12] with %xmm[0-4]. https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=0b92f51d8303a5148aa99dc101d1e73244199a61 commit 0b92f51d8303a5148aa99dc101d1e73244199a61 Author: H.J. Lu <hjl.tools@gmail.com> Date: Tue Jul 28 18:56:18 2015 -0700 Don't disable SSE in x86-64 ld.so Since ld.so preserves vector registers now, we can use SSE in ld.so. * sysdeps/i386/Makefile [$(subdir) == elf] (CFLAGS-.os): Add -mno-sse -mno-mmx for $(all-rtld-routines). [$(subdir) == elf] (tests-special): Add $(objpfx)tst-ld-sse-use.out. [$(subdir) == elf] ($(objpfx)tst-ld-sse-use.out): New rule. * sysdeps/x86/Makefile [$(subdir) == elf] (CFLAGS-.os): Removed. [$(subdir) == elf] (tests-special): Likewise. [$(subdir) == elf] ($(objpfx)tst-ld-sse-use.out): Likewise. * sysdeps/x86_64/Makefile [$(subdir) == elf] (CFLAGS-.os): Add -mno-mmx for $(all-rtld-routines). https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=00c7c14c2131849983307800f5917c32b58d29d9 commit 00c7c14c2131849983307800f5917c32b58d29d9 Author: H.J. Lu <hjl.tools@gmail.com> Date: Sat Jul 11 13:25:25 2015 -0700 Save and restore vector registers in x86-64 ld.so This patch initiaizes GLRO(dl_x86_xstate) in dl_platform_init to indicate if the processor supports SSE, AVX or AVX512. It uses this information to properly save and restore vector registers in ld.so. Now we can use SSE in ld.so and delete FOREIGN_CALL macros. [BZ #15128] * sysdeps/x86_64/Makefile [$(subdir) == elf] (tests): Add ifuncmain8. (modules-names): Add ifuncmod8. ($(objpfx)ifuncmain8): New rule. * sysdeps/x86_64/dl-machine.h: Include <dl-procinfo.h> and <cpuid.h>. (elf_machine_runtime_setup): Use _dl_runtime_resolve_sse, _dl_runtime_resolve_avx, or _dl_runtime_resolve_avx512, _dl_runtime_profile_sse, _dl_runtime_profile_avx, or _dl_runtime_profile_avx512, based on HAS_ARCH_FEATURE. * sysdeps/x86_64/dl-trampoline.S: Rewrite. * sysdeps/x86_64/dl-trampoline.h: Likewise. * sysdeps/x86_64/ifuncmain8.c: New file. * sysdeps/x86_64/ifuncmod8.c: Likewise. * sysdeps/x86_64/nptl/tcb-offsets.sym (RTLD_SAVESPACE_SSE): Removed. * sysdeps/x86_64/nptl/tls.h (__128bits): Removed. (tcbhead_t): Change rtld_must_xmm_save to __glibc_unused1. Change rtld_savespace_sse to __glibc_unused2. (RTLD_CHECK_FOREIGN_CALL): Removed. (RTLD_ENABLE_FOREIGN_CALL): Likewise. (RTLD_PREPARE_FOREIGN_CALL): Likewise. (RTLD_FINALIZE_FOREIGN_CALL): Likewise. https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=b4bf7d64c8f7597cc03abd608b50064f7cca4f40 commit b4bf7d64c8f7597cc03abd608b50064f7cca4f40 Author: H.J. Lu <hjl.tools@gmail.com> Date: Sun Jul 12 14:41:20 2015 -0700 Align stack when calling __errno_location We should align stack to 16 bytes when calling __errno_location. [BZ #18661] * sysdeps/x86_64/fpu/s_cosf.S (__cosf): Align stack to 16 bytes when calling __errno_location. * sysdeps/x86_64/fpu/s_sincosf.S (__sincosf): Likewise. * sysdeps/x86_64/fpu/s_sinf.S (__sinf): Likewise. https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=1c8f0fb6a4ebef1080e254753e6a4e6c07a66a4f commit 1c8f0fb6a4ebef1080e254753e6a4e6c07a66a4f Author: H.J. Lu <hjl.tools@gmail.com> Date: Sun Jul 12 14:40:25 2015 -0700 Align stack to 16 bytes when calling __gettimeofday Subtract stack by 24 bytes instead of 16 bytes so that stack is aligned to 16 bytes when calling __gettimeofday. [BZ #18661] * sysdeps/unix/sysv/linux/x86_64/lowlevellock.S (__lll_timedwait_tid): Align stack to 16 bytes when calling __gettimeofday. https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=08094d48c130d3ae6182296ef3c9561ca1066b39 commit 08094d48c130d3ae6182296ef3c9561ca1066b39 Author: H.J. Lu <hjl.tools@gmail.com> Date: Sun Jul 12 14:38:58 2015 -0700 Align stack to 16 bytes when calling __setcontext Don't use pop to restore %rdi so that stack is aligned to 16 bytes when calling __setcontext. [BZ #18661] * sysdeps/unix/sysv/linux/x86_64/__start_context.S (__start_context): Don't use pop to restore %rdi so that stack is aligned to 16 bytes when calling __setcontext. https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=723a5bd465082390bd9369d4f95ec11b32cf47dd commit 723a5bd465082390bd9369d4f95ec11b32cf47dd Author: H.J. Lu <hjl.tools@gmail.com> Date: Wed Jul 29 03:41:58 2015 -0700 Compile {memcpy,strcmp}-sse2-unaligned.S only for libc {memcpy,strcmp}-sse2-unaligned.S aren't needed in ld.so. * sysdeps/x86_64/multiarch/memcpy-sse2-unaligned.S: Compile only for libc. * sysdeps/x86_64/multiarch/strcmp-sse2-unaligned.S: Likewise. https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=3d497ce3d1ab11a363c543b42737a0696329ed40 commit 3d497ce3d1ab11a363c543b42737a0696329ed40 Author: H.J. Lu <hjl.tools@gmail.com> Date: Sat Aug 1 07:47:16 2015 -0700 Update x86 elision-conf.c for <cpu-features.h> This patch updates x86 elision-conf.c to use the newly defined HAS_CPU_FEATURE from <cpu-features.h>. * sysdeps/unix/sysv/linux/x86/elision-conf.c (elision_init): Replace HAS_RTM with HAS_CPU_FEATURE (RTM). https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=3dbbb788b8b59f0c88ac8eeae341f491dd739949 commit 3dbbb788b8b59f0c88ac8eeae341f491dd739949 Author: H.J. Lu <hjl.tools@gmail.com> Date: Fri Jul 31 16:52:19 2015 -0700 Update i686 multiarch functions for <cpu-features.h> This patch updates i686 multiarch functions to use the newly defined HAS_CPU_FEATURE, HAS_ARCH_FEATURE, LOAD_GOT_AND_RTLD_GLOBAL_RO and LOAD_FUNC_GOT_EAX from <cpu-features.h>. * sysdeps/i386/i686/fpu/multiarch/e_expf.c: Replace HAS_XXX with HAS_CPU_FEATURE/HAS_ARCH_FEATURE (XXX). * sysdeps/i386/i686/fpu/multiarch/s_cosf.c: Likewise. * sysdeps/i386/i686/fpu/multiarch/s_cosf.c: Likewise. * sysdeps/i386/i686/fpu/multiarch/s_sincosf.c: Likewise. * sysdeps/i386/i686/fpu/multiarch/s_sinf.c: Likewise. * sysdeps/i386/i686/multiarch/ifunc-impl-list.c: Likewise. * sysdeps/i386/i686/multiarch/s_fma.c: Likewise. * sysdeps/i386/i686/multiarch/s_fmaf.c: Likewise. * sysdeps/i386/i686/multiarch/bcopy.S: Remove __init_cpu_features call. Merge SHARED and !SHARED. Add LOAD_GOT_AND_RTLD_GLOBAL_RO. Use LOAD_FUNC_GOT_EAX to load function address. Replace HAS_XXX with HAS_CPU_FEATURE/HAS_ARCH_FEATURE (XXX). * 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/strcasecmp.S: Likewise. * sysdeps/i386/i686/multiarch/strcat.S: Likewise. * sysdeps/i386/i686/multiarch/strchr.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/strnlen.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. https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=0fb36bf746cd24c110898a39881c88a7398e4e59 commit 0fb36bf746cd24c110898a39881c88a7398e4e59 Author: H.J. Lu <hjl.tools@gmail.com> Date: Fri Jul 31 13:41:04 2015 -0700 Update x86_64 multiarch functions for <cpu-features.h> This patch updates x86_64 multiarch functions to use the newly defined HAS_CPU_FEATURE, HAS_ARCH_FEATURE and LOAD_RTLD_GLOBAL_RO_RDX from <cpu-features.h>. * sysdeps/x86_64/fpu/multiarch/e_asin.c: Replace HAS_XXX with HAS_CPU_FEATURE/HAS_ARCH_FEATURE (XXX). * 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_fma.c: Likewise. * sysdeps/x86_64/fpu/multiarch/s_fmaf.c: Likewise. * sysdeps/x86_64/fpu/multiarch/s_sin.c: Likewise. * sysdeps/x86_64/fpu/multiarch/s_tan.c: Likewise. * sysdeps/x86_64/fpu/multiarch/s_ceil.S: Use LOAD_RTLD_GLOBAL_RO_RDX and HAS_CPU_FEATURE (SSE4_1). * sysdeps/x86_64/fpu/multiarch/s_ceilf.S: Likewise. * sysdeps/x86_64/fpu/multiarch/s_floor.S: Likewise. * sysdeps/x86_64/fpu/multiarch/s_floorf.S: Likewise. * sysdeps/x86_64/fpu/multiarch/s_nearbyint.S : Likewise. * sysdeps/x86_64/fpu/multiarch/s_nearbyintf.S: Likewise. * sysdeps/x86_64/fpu/multiarch/s_rintf.S: Likewise. * sysdeps/x86_64/fpu/multiarch/s_rintf.S : Likewise. * sysdeps/x86_64/multiarch/ifunc-impl-list.c: Likewise. * sysdeps/x86_64/multiarch/sched_cpucount.c: Likewise. * sysdeps/x86_64/multiarch/strstr.c: Likewise. * sysdeps/x86_64/multiarch/memmove.c: Likewise. * sysdeps/x86_64/multiarch/memmove_chk.c: Likewise. * sysdeps/x86_64/multiarch/test-multiarch.c: Likewise. * sysdeps/x86_64/multiarch/memcmp.S: Remove __init_cpu_features call. Add LOAD_RTLD_GLOBAL_RO_RDX. Replace HAS_XXX with HAS_CPU_FEATURE/HAS_ARCH_FEATURE (XXX). * sysdeps/x86_64/multiarch/memcpy.S: Likewise. * sysdeps/x86_64/multiarch/memcpy_chk.S: Likewise. * sysdeps/x86_64/multiarch/mempcpy.S: Likewise. * sysdeps/x86_64/multiarch/mempcpy_chk.S: Likewise. * sysdeps/x86_64/multiarch/memset.S: Likewise. * sysdeps/x86_64/multiarch/memset_chk.S: Likewise. * sysdeps/x86_64/multiarch/strcat.S: Likewise. * sysdeps/x86_64/multiarch/strchr.S: Likewise. * sysdeps/x86_64/multiarch/strcmp.S: Likewise. * sysdeps/x86_64/multiarch/strcpy.S: Likewise. * sysdeps/x86_64/multiarch/strcspn.S: Likewise. * sysdeps/x86_64/multiarch/strspn.S: Likewise. * sysdeps/x86_64/multiarch/wcscpy.S: Likewise. * sysdeps/x86_64/multiarch/wmemcmp.S: Likewise. https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=14fda2e2ef67727228e3b7e2dea174cac4ffd19d commit 14fda2e2ef67727228e3b7e2dea174cac4ffd19d Author: H.J. Lu <hjl.tools@gmail.com> Date: Fri Jul 31 07:30:04 2015 -0700 Add _dl_x86_cpu_features to rtld_global in ld.so This patch adds _dl_x86_cpu_features to rtld_global in x86 ld.so and initializes it early before __libc_start_main is called so that cpu_features is always available when it is used and we can avoid calling __init_cpu_features in IFUNC selectors. * sysdeps/i386/dl-machine.h: Include <cpu-features.c>. (dl_platform_init): Call init_cpu_features. * sysdeps/i386/dl-procinfo.c (_dl_x86_cpu_features): New. * sysdeps/i386/i686/cacheinfo.c (DISABLE_PREFERRED_MEMORY_INSTRUCTION): Removed. * sysdeps/i386/i686/multiarch/Makefile (aux): Remove init-arch. * sysdeps/i386/i686/multiarch/Versions: Removed. * sysdeps/i386/i686/multiarch/ifunc-defines.sym (KIND_OFFSET): Removed. * sysdeps/i386/ldsodefs.h: Include <cpu-features.h>. * sysdeps/unix/sysv/linux/x86/Makefile (libpthread-sysdep_routines): Remove init-arch. * sysdeps/unix/sysv/linux/x86_64/dl-procinfo.c: Include <sysdeps/x86_64/dl-procinfo.c> instead of sysdeps/generic/dl-procinfo.c>. * sysdeps/x86/Makefile [$(subdir) == csu] (gen-as-const-headers): Add cpu-features-offsets.sym and rtld-global-offsets.sym. [$(subdir) == elf] (sysdep-dl-routines): Add dl-get-cpu-features. [$(subdir) == elf] (sysdep-rtld-routines): Likewise. [$(subdir) == elf] (sysdep_routines): Likewise. [$(subdir) == elf] (elide-routines.os): Likewise. [$(subdir) == elf] (tests): Add tst-get-cpu-features. [$(subdir) == elf] (tests-static): Add tst-get-cpu-features-static. * sysdeps/x86/Versions: New file. * sysdeps/x86/cpu-features-offsets.sym: Likewise. * sysdeps/x86/cpu-features.c: Likewise. * sysdeps/x86/cpu-features.h: Likewise. * sysdeps/x86/dl-get-cpu-features.c: Likewise. * sysdeps/x86/libc-start.c: Likewise. * sysdeps/x86/rtld-global-offsets.sym: Likewise. * sysdeps/x86/tst-get-cpu-features-static.c: Likewise. * sysdeps/x86/tst-get-cpu-features.c: Likewise. * sysdeps/x86_64/dl-procinfo.c: Likewise. * sysdeps/x86_64/cacheinfo.c (__cpuid_count): Removed. Assume USE_MULTIARCH is defined and don't check it. (is_intel): Replace __cpu_features with GLRO(dl_x86_cpu_features). (is_amd): Likewise. (max_cpuid): Likewise. (intel_check_word): Likewise. (__cache_sysconf): Don't call __init_cpu_features. (__x86_preferred_memory_instruction): Removed. (init_cacheinfo): Don't call __init_cpu_features. Replace __cpu_features with GLRO(dl_x86_cpu_features). * sysdeps/x86_64/dl-machine.h: <cpu-features.c>. (dl_platform_init): Call init_cpu_features. * sysdeps/x86_64/ldsodefs.h: Include <cpu-features.h>. * sysdeps/x86_64/multiarch/Makefile (aux): Remove init-arch. * sysdeps/x86_64/multiarch/Versions: Removed. * sysdeps/x86_64/multiarch/cacheinfo.c: Likewise. * sysdeps/x86_64/multiarch/init-arch.c: Likewise. * sysdeps/x86_64/multiarch/ifunc-defines.sym (KIND_OFFSET): Removed. * sysdeps/x86_64/multiarch/init-arch.h: Rewrite. https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=fdd3aa0b19700ab564da895a2a85bf3fdb0bedf0 commit fdd3aa0b19700ab564da895a2a85bf3fdb0bedf0 Author: H.J. Lu <hjl.tools@gmail.com> Date: Thu Jul 9 09:30:09 2015 -0700 Improve bndmov encoding with zero displacement If x86-64 assembler doesn't support MPX, we encode bndmov instruction by hand. When displacement is zero, assembler generates shorter encoding. This patch improves bndmov encoding with zero displacement so that ld.so is identical when using assemblers with and without MPX support. * sysdeps/x86_64/dl-trampoline.S (_dl_runtime_resolve): Improve bndmov encoding with zero displacement. https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=9e4fc7f67f6695f294ae759a6b540f5d08a56f0c commit 9e4fc7f67f6695f294ae759a6b540f5d08a56f0c Author: Igor Zamyatin <igor.zamyatin@intel.com> Date: Thu Jul 9 06:50:12 2015 -0700 Preserve bound registers for pointer pass/return We need to save/restore bound registers and add a BND prefix before branches in _dl_runtime_profile so that bound registers for pointer pass and return are preserved when LD_AUDIT is used. [BZ #18134] * sysdeps/i386/configure.ac: Set HAVE_MPX_SUPPORT. * sysdeps/i386/configure: Regenerated. * sysdeps/i386/dl-trampoline.S (PRESERVE_BND_REGS_PREFIX): New. (_dl_runtime_profile): Save and restore Intel MPX return bound registers when calling _dl_call_pltexit. Add PRESERVE_BND_REGS_PREFIX before return. * sysdeps/i386/link-defines.sym (LRV_BND0_OFFSET): New. (LRV_BND1_OFFSET): Likewise. * sysdeps/x86/bits/link.h (La_i86_retval): Add lrv_bnd0 and lrv_bnd1. * sysdeps/x86_64/dl-trampoline.S (_dl_runtime_profile): Fix typo in bndmov encoding. * sysdeps/x86_64/dl-trampoline.h: Properly save and restore Intel MPX bound registers. Add PRESERVE_BND_REGS_PREFIX before branch instructions to preserve bounds. https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=b15f277bac14482c8b2dda4931ebf919644932fa commit b15f277bac14482c8b2dda4931ebf919644932fa Author: H.J. Lu <hjl.tools@gmail.com> Date: Mon Mar 16 14:58:43 2015 -0700 Preserve bound registers in _dl_runtime_resolve We need to add a BND prefix before indirect branch at the end of _dl_runtime_resolve to preserve bound registers. [BZ #18134] * sysdeps/x86_64/dl-trampoline.S (PRESERVE_BND_REGS_PREFIX): New. (_dl_runtime_resolve): Add a BND prefix before indirect branch. https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=20f87a053b1e6a9106851f764c205d59fd4b6879 commit 20f87a053b1e6a9106851f764c205d59fd4b6879 Author: H.J. Lu <hjl.tools@gmail.com> Date: Tue Jul 7 05:23:24 2015 -0700 Add and use sysdeps/i386/link-defines.sym Define macros for fields in La_i86_regs and La_i86_retval and use them in dl-trampoline.S, instead of hardcoded values. * sysdeps/i386/Makefile (gen-as-const-headers)[elf]: Add link-defines.sym. * sysdeps/i386/dl-trampoline.S: Include <link-defines.h>. (_dl_runtime_profile): Use LONG_DOUBLE_SIZE, LRV_SIZE, LRV_EAX_OFFSET, LRV_EDX_OFFSET, LRV_ST0_OFFSET, LRV_ST1_OFFSET and LR_SIZE. * sysdeps/i386/link-defines.sym: New file. https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=d6fd297566e2389ab855325754bcb25f604c6b7d commit d6fd297566e2389ab855325754bcb25f604c6b7d Author: H.J. Lu <hjl.tools@gmail.com> Date: Tue Jul 7 05:09:16 2015 -0700 Add a testcase for i386 LD_AUDIT This patch adds a testcase for i386 LD_AUDIT to check function return and parameters passed in registers. * sysdeps/i386/Makefile (tests)[elf]: Add tst-audit3. (modules-names): Add tst-auditmod3a tst-auditmod3b. ($(objpfx)tst-audit3): New rule. ($(objpfx)tst-audit3.out): Likewise. * sysdeps/i386/tst-audit3.c: New file. * sysdeps/i386/tst-audit3.h: Likewise. * sysdeps/i386/tst-auditmod3a.c: Likewise. * sysdeps/i386/tst-auditmod3b.c: Likewise. -----------------------------------------------------------------------
This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "GNU C Library master sources". The branch, hjl/plt/master has been created at 32cf01e21b3e2ae1b556298560b0d1f323bb5a59 (commit) - Log ----------------------------------------------------------------- https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=32cf01e21b3e2ae1b556298560b0d1f323bb5a59 commit 32cf01e21b3e2ae1b556298560b0d1f323bb5a59 Author: H.J. Lu <hjl.tools@gmail.com> Date: Sun Aug 2 22:27:47 2015 -0700 Don't run tst-getpid2 with LD_BIND_NOW=1 Since _dl_x86_64_save_sse and _dl_x86_64_restore_sse are removed now, we don't need to run tst-getpid2 with LD_BIND_NOW=1. * sysdeps/unix/sysv/linux/Makefile (tst-getpid2-ENV): Removed. https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=496b058c3d1f1644c215d2d915b2360d936acd96 commit 496b058c3d1f1644c215d2d915b2360d936acd96 Author: H.J. Lu <hjl.tools@gmail.com> Date: Wed Jul 29 04:49:38 2015 -0700 Use SSE optimized strcmp in x86-64 ld.so Since ld.so preserves vector registers now, we can SSE optimized strcmp in x86-64 ld.so. * sysdeps/x86_64/strcmp.S: Remove "#if !IS_IN (libc)". https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=5f7b31aa9ebab6da65993c8ad25023905d821882 commit 5f7b31aa9ebab6da65993c8ad25023905d821882 Author: H.J. Lu <hjl.tools@gmail.com> Date: Wed Jul 29 03:56:14 2015 -0700 Remove x86-64 rtld-xxx.c and rtld-xxx.S Since ld.so preserves vector registers now, we can use the regular, non-ifunc string and memory functions in ld.so. * sysdeps/x86_64/rtld-memcmp.c: Removed. * sysdeps/x86_64/rtld-memset.S: Likewise. * sysdeps/x86_64/rtld-strchr.S: Likewise. * sysdeps/x86_64/rtld-strlen.S: Likewise. * sysdeps/x86_64/multiarch/rtld-memcmp.c: Likewise. * sysdeps/x86_64/multiarch/rtld-memset.S: Likewise. https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=34d03e94a95059eea62b5100da53f1efd61ab5c9 commit 34d03e94a95059eea62b5100da53f1efd61ab5c9 Author: H.J. Lu <hjl.tools@gmail.com> Date: Wed Jul 29 03:47:54 2015 -0700 Replace %xmm8 with %xmm0 Since ld.so preserves vector registers now, we can use %xmm0 to avoid the REX prefix. * sysdeps/x86_64/memset.S: Replace %xmm8 with %xmm0. https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=6c64dfd045f681e54884b3fac5e0b5a76a9d0830 commit 6c64dfd045f681e54884b3fac5e0b5a76a9d0830 Author: H.J. Lu <hjl.tools@gmail.com> Date: Wed Jul 29 03:44:39 2015 -0700 Replace %xmm[8-12] with %xmm[0-4] Since ld.so preserves vector registers now, we can use %xmm[0-4] to avoid the REX prefix. * sysdeps/x86_64/strlen.S: Replace %xmm[8-12] with %xmm[0-4]. https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=cabe3118d5bc5345593efcc53929de830188129f commit cabe3118d5bc5345593efcc53929de830188129f Author: H.J. Lu <hjl.tools@gmail.com> Date: Tue Jul 28 18:56:18 2015 -0700 Don't disable SSE in x86-64 ld.so Since ld.so preserves vector registers now, we can use SSE in ld.so. * sysdeps/i386/Makefile [$(subdir) == elf] (CFLAGS-.os): Add -mno-sse -mno-mmx for $(all-rtld-routines). [$(subdir) == elf] (tests-special): Add $(objpfx)tst-ld-sse-use.out. [$(subdir) == elf] ($(objpfx)tst-ld-sse-use.out): New rule. * sysdeps/x86/Makefile [$(subdir) == elf] (CFLAGS-.os): Removed. [$(subdir) == elf] (tests-special): Likewise. [$(subdir) == elf] ($(objpfx)tst-ld-sse-use.out): Likewise. * sysdeps/x86_64/Makefile [$(subdir) == elf] (CFLAGS-.os): Add -mno-mmx for $(all-rtld-routines). https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=7ee3280ac9282410773e778b1e117d9bf21e86ef commit 7ee3280ac9282410773e778b1e117d9bf21e86ef Author: H.J. Lu <hjl.tools@gmail.com> Date: Sat Jul 11 13:25:25 2015 -0700 Save and restore vector registers in x86-64 ld.so This patch initiaizes GLRO(dl_x86_xstate) in dl_platform_init to indicate if the processor supports SSE, AVX or AVX512. It uses this information to properly save and restore vector registers in ld.so. Now we can use SSE in ld.so and delete FOREIGN_CALL macros. [BZ #15128] * sysdeps/x86_64/Makefile [$(subdir) == elf] (tests): Add ifuncmain8. (modules-names): Add ifuncmod8. ($(objpfx)ifuncmain8): New rule. * sysdeps/x86_64/dl-machine.h: Include <dl-procinfo.h> and <cpuid.h>. (elf_machine_runtime_setup): Use _dl_runtime_resolve_sse, _dl_runtime_resolve_avx, or _dl_runtime_resolve_avx512, _dl_runtime_profile_sse, _dl_runtime_profile_avx, or _dl_runtime_profile_avx512, based on HAS_ARCH_FEATURE. * sysdeps/x86_64/dl-trampoline.S: Rewrite. * sysdeps/x86_64/dl-trampoline.h: Likewise. * sysdeps/x86_64/ifuncmain8.c: New file. * sysdeps/x86_64/ifuncmod8.c: Likewise. * sysdeps/x86_64/nptl/tcb-offsets.sym (RTLD_SAVESPACE_SSE): Removed. * sysdeps/x86_64/nptl/tls.h (__128bits): Removed. (tcbhead_t): Change rtld_must_xmm_save to __glibc_unused1. Change rtld_savespace_sse to __glibc_unused2. (RTLD_CHECK_FOREIGN_CALL): Removed. (RTLD_ENABLE_FOREIGN_CALL): Likewise. (RTLD_PREPARE_FOREIGN_CALL): Likewise. (RTLD_FINALIZE_FOREIGN_CALL): Likewise. https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=7fd87aec8be5056a68330cf1f2d6d65d0bf31f51 commit 7fd87aec8be5056a68330cf1f2d6d65d0bf31f51 Author: H.J. Lu <hjl.tools@gmail.com> Date: Sun Jul 12 14:41:20 2015 -0700 Align stack when calling __errno_location We should align stack to 16 bytes when calling __errno_location. [BZ #18661] * sysdeps/x86_64/fpu/s_cosf.S (__cosf): Align stack to 16 bytes when calling __errno_location. * sysdeps/x86_64/fpu/s_sincosf.S (__sincosf): Likewise. * sysdeps/x86_64/fpu/s_sinf.S (__sinf): Likewise. https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=fd7e3e782325e79dc0bb43654e98d430caa9862c commit fd7e3e782325e79dc0bb43654e98d430caa9862c Author: H.J. Lu <hjl.tools@gmail.com> Date: Sun Jul 12 14:40:25 2015 -0700 Align stack to 16 bytes when calling __gettimeofday Subtract stack by 24 bytes instead of 16 bytes so that stack is aligned to 16 bytes when calling __gettimeofday. [BZ #18661] * sysdeps/unix/sysv/linux/x86_64/lowlevellock.S (__lll_timedwait_tid): Align stack to 16 bytes when calling __gettimeofday. https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=2dc2d93a96a3bbfe6c8fab30d98e9563987815b2 commit 2dc2d93a96a3bbfe6c8fab30d98e9563987815b2 Author: H.J. Lu <hjl.tools@gmail.com> Date: Sun Jul 12 14:38:58 2015 -0700 Align stack to 16 bytes when calling __setcontext Don't use pop to restore %rdi so that stack is aligned to 16 bytes when calling __setcontext. [BZ #18661] * sysdeps/unix/sysv/linux/x86_64/__start_context.S (__start_context): Don't use pop to restore %rdi so that stack is aligned to 16 bytes when calling __setcontext. https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=ea2954e76744fbf14f40dfdc2fe81787e3997870 commit ea2954e76744fbf14f40dfdc2fe81787e3997870 Author: H.J. Lu <hjl.tools@gmail.com> Date: Wed Jul 29 03:41:58 2015 -0700 Compile {memcpy,strcmp}-sse2-unaligned.S only for libc {memcpy,strcmp}-sse2-unaligned.S aren't needed in ld.so. * sysdeps/x86_64/multiarch/memcpy-sse2-unaligned.S: Compile only for libc. * sysdeps/x86_64/multiarch/strcmp-sse2-unaligned.S: Likewise. https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=0e70fc24701004b4f4c357ce8ac72a0baa2d59e2 commit 0e70fc24701004b4f4c357ce8ac72a0baa2d59e2 Author: H.J. Lu <hjl.tools@gmail.com> Date: Sat Aug 1 07:47:16 2015 -0700 Update x86 elision-conf.c for <cpu-features.h> This patch updates x86 elision-conf.c to use the newly defined HAS_CPU_FEATURE from <cpu-features.h>. * sysdeps/unix/sysv/linux/x86/elision-conf.c (elision_init): Replace HAS_RTM with HAS_CPU_FEATURE (RTM). https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=74394f4b3cf92cfcedec7347327dd1e327eb30dd commit 74394f4b3cf92cfcedec7347327dd1e327eb30dd Author: H.J. Lu <hjl.tools@gmail.com> Date: Fri Jul 31 13:46:05 2015 -0700 Update libmvec multiarch functions for <cpu-features.h> This patch updates libmvec multiarch functions to use the newly defined HAS_CPU_FEATURE, HAS_ARCH_FEATURE and LOAD_RTLD_GLOBAL_RO_RDX from <cpu-features.h>. * math/Makefile ($(addprefix $(objpfx), $(libm-vec-tests))): Remove $(objpfx)init-arch.o. * sysdeps/x86_64/fpu/Makefile (libmvec-support): Remove init-arch. * sysdeps/x86_64/fpu/math-tests-arch.h (avx_usable): Removed. (INIT_ARCH_EXT): Defined as empty. (CHECK_ARCH_EXT): Replace HAS_XXX with HAS_ARCH_FEATURE (XXX). * sysdeps/x86_64/fpu/multiarch/svml_d_cos2_core.S: Remove __init_cpu_features call. Replace HAS_XXX with HAS_CPU_FEATURE/HAS_ARCH_FEATURE (XXX). * sysdeps/x86_64/fpu/multiarch/svml_d_cos4_core.S: Likewise. * sysdeps/x86_64/fpu/multiarch/svml_d_cos8_core.S: Likewise. * sysdeps/x86_64/fpu/multiarch/svml_d_exp2_core.S: Likewise. * sysdeps/x86_64/fpu/multiarch/svml_d_exp4_core.S: Likewise. * sysdeps/x86_64/fpu/multiarch/svml_d_exp8_core.S: Likewise. * sysdeps/x86_64/fpu/multiarch/svml_d_log2_core.S: Likewise. * sysdeps/x86_64/fpu/multiarch/svml_d_log4_core.S: Likewise. * sysdeps/x86_64/fpu/multiarch/svml_d_log8_core.S: Likewise. * sysdeps/x86_64/fpu/multiarch/svml_d_pow2_core.S: Likewise. * sysdeps/x86_64/fpu/multiarch/svml_d_pow4_core.S: Likewise. * sysdeps/x86_64/fpu/multiarch/svml_d_pow8_core.S: Likewise. * sysdeps/x86_64/fpu/multiarch/svml_d_sin2_core.S: Likewise. * sysdeps/x86_64/fpu/multiarch/svml_d_sin4_core.S: Likewise. * sysdeps/x86_64/fpu/multiarch/svml_d_sin8_core.S: Likewise. * sysdeps/x86_64/fpu/multiarch/svml_d_sincos2_core.S: Likewise. * sysdeps/x86_64/fpu/multiarch/svml_d_sincos4_core.S: Likewise. * sysdeps/x86_64/fpu/multiarch/svml_d_sincos8_core.S: Likewise. * sysdeps/x86_64/fpu/multiarch/svml_s_cosf16_core.S: Likewise. * sysdeps/x86_64/fpu/multiarch/svml_s_cosf4_core.S: Likewise. * sysdeps/x86_64/fpu/multiarch/svml_s_cosf8_core.S: Likewise. * sysdeps/x86_64/fpu/multiarch/svml_s_expf16_core.S: Likewise. * sysdeps/x86_64/fpu/multiarch/svml_s_expf4_core.S: Likewise. * sysdeps/x86_64/fpu/multiarch/svml_s_expf8_core.S: Likewise. * sysdeps/x86_64/fpu/multiarch/svml_s_logf16_core.S: Likewise. * sysdeps/x86_64/fpu/multiarch/svml_s_logf4_core.S: Likewise. * sysdeps/x86_64/fpu/multiarch/svml_s_logf8_core.S: Likewise. * sysdeps/x86_64/fpu/multiarch/svml_s_powf16_core.S: Likewise. * sysdeps/x86_64/fpu/multiarch/svml_s_powf4_core.S: Likewise. * sysdeps/x86_64/fpu/multiarch/svml_s_powf8_core.S: Likewise. * sysdeps/x86_64/fpu/multiarch/svml_s_sincosf16_core.S: Likewise. * sysdeps/x86_64/fpu/multiarch/svml_s_sincosf4_core.S: Likewise. * sysdeps/x86_64/fpu/multiarch/svml_s_sincosf8_core.S: Likewise. * sysdeps/x86_64/fpu/multiarch/svml_s_sinf16_core.S: Likewise. * sysdeps/x86_64/fpu/multiarch/svml_s_sinf4_core.S: Likewise. * sysdeps/x86_64/fpu/multiarch/svml_s_sinf8_core.S: Likewise. -----------------------------------------------------------------------
This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "GNU C Library master sources". The branch, hjl/plt/2.22 has been created at 075bba85b93e468017941bca6f4dff8d376fb3ac (commit) - Log ----------------------------------------------------------------- https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=075bba85b93e468017941bca6f4dff8d376fb3ac commit 075bba85b93e468017941bca6f4dff8d376fb3ac Author: H.J. Lu <hjl.tools@gmail.com> Date: Sun Aug 2 22:27:47 2015 -0700 Don't run tst-getpid2 with LD_BIND_NOW=1 Since _dl_x86_64_save_sse and _dl_x86_64_restore_sse are removed now, we don't need to run tst-getpid2 with LD_BIND_NOW=1. * sysdeps/unix/sysv/linux/Makefile (tst-getpid2-ENV): Removed. https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=3f1322c21b8f0dd428a9e25c54bc54475d76ad6f commit 3f1322c21b8f0dd428a9e25c54bc54475d76ad6f Author: H.J. Lu <hjl.tools@gmail.com> Date: Wed Jul 29 04:49:38 2015 -0700 Use SSE optimized strcmp in x86-64 ld.so Since ld.so preserves vector registers now, we can SSE optimized strcmp in x86-64 ld.so. * sysdeps/x86_64/strcmp.S: Remove "#if !IS_IN (libc)". https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=58009cc71be6ef282cc60414f394c2012182e8a8 commit 58009cc71be6ef282cc60414f394c2012182e8a8 Author: H.J. Lu <hjl.tools@gmail.com> Date: Wed Jul 29 03:56:14 2015 -0700 Remove x86-64 rtld-xxx.c and rtld-xxx.S Since ld.so preserves vector registers now, we can use the regular, non-ifunc string and memory functions in ld.so. * sysdeps/x86_64/rtld-memcmp.c: Removed. * sysdeps/x86_64/rtld-memset.S: Likewise. * sysdeps/x86_64/rtld-strchr.S: Likewise. * sysdeps/x86_64/rtld-strlen.S: Likewise. * sysdeps/x86_64/multiarch/rtld-memcmp.c: Likewise. * sysdeps/x86_64/multiarch/rtld-memset.S: Likewise. https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=a5e1414320f79ff0bd8f2f79807b6abc14fa8c3e commit a5e1414320f79ff0bd8f2f79807b6abc14fa8c3e Author: H.J. Lu <hjl.tools@gmail.com> Date: Wed Jul 29 03:47:54 2015 -0700 Replace %xmm8 with %xmm0 Since ld.so preserves vector registers now, we can use %xmm0 to avoid the REX prefix. * sysdeps/x86_64/memset.S: Replace %xmm8 with %xmm0. https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=d1b5c951dc11037fd132ecd38ef643758a66f359 commit d1b5c951dc11037fd132ecd38ef643758a66f359 Author: H.J. Lu <hjl.tools@gmail.com> Date: Wed Jul 29 03:44:39 2015 -0700 Replace %xmm[8-12] with %xmm[0-4] Since ld.so preserves vector registers now, we can use %xmm[0-4] to avoid the REX prefix. * sysdeps/x86_64/strlen.S: Replace %xmm[8-12] with %xmm[0-4]. https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=3d688eaab39b238aa001cbb83705eb301dd72478 commit 3d688eaab39b238aa001cbb83705eb301dd72478 Author: H.J. Lu <hjl.tools@gmail.com> Date: Tue Jul 28 18:56:18 2015 -0700 Don't disable SSE in x86-64 ld.so Since ld.so preserves vector registers now, we can use SSE in ld.so. * sysdeps/i386/Makefile [$(subdir) == elf] (CFLAGS-.os): Add -mno-sse -mno-mmx for $(all-rtld-routines). [$(subdir) == elf] (tests-special): Add $(objpfx)tst-ld-sse-use.out. [$(subdir) == elf] ($(objpfx)tst-ld-sse-use.out): New rule. * sysdeps/x86/Makefile [$(subdir) == elf] (CFLAGS-.os): Removed. [$(subdir) == elf] (tests-special): Likewise. [$(subdir) == elf] ($(objpfx)tst-ld-sse-use.out): Likewise. * sysdeps/x86_64/Makefile [$(subdir) == elf] (CFLAGS-.os): Add -mno-mmx for $(all-rtld-routines). https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=c7a97fb441e86c532676a36677a4a4377c9d0957 commit c7a97fb441e86c532676a36677a4a4377c9d0957 Author: H.J. Lu <hjl.tools@gmail.com> Date: Sat Jul 11 13:25:25 2015 -0700 Save and restore vector registers in x86-64 ld.so This patch initiaizes GLRO(dl_x86_xstate) in dl_platform_init to indicate if the processor supports SSE, AVX or AVX512. It uses this information to properly save and restore vector registers in ld.so. Now we can use SSE in ld.so and delete FOREIGN_CALL macros. [BZ #15128] * sysdeps/x86_64/Makefile [$(subdir) == elf] (tests): Add ifuncmain8. (modules-names): Add ifuncmod8. ($(objpfx)ifuncmain8): New rule. * sysdeps/x86_64/dl-machine.h: Include <dl-procinfo.h> and <cpuid.h>. (elf_machine_runtime_setup): Use _dl_runtime_resolve_sse, _dl_runtime_resolve_avx, or _dl_runtime_resolve_avx512, _dl_runtime_profile_sse, _dl_runtime_profile_avx, or _dl_runtime_profile_avx512, based on HAS_ARCH_FEATURE. * sysdeps/x86_64/dl-trampoline.S: Rewrite. * sysdeps/x86_64/dl-trampoline.h: Likewise. * sysdeps/x86_64/ifuncmain8.c: New file. * sysdeps/x86_64/ifuncmod8.c: Likewise. * sysdeps/x86_64/nptl/tcb-offsets.sym (RTLD_SAVESPACE_SSE): Removed. * sysdeps/x86_64/nptl/tls.h (__128bits): Removed. (tcbhead_t): Change rtld_must_xmm_save to __glibc_unused1. Change rtld_savespace_sse to __glibc_unused2. (RTLD_CHECK_FOREIGN_CALL): Removed. (RTLD_ENABLE_FOREIGN_CALL): Likewise. (RTLD_PREPARE_FOREIGN_CALL): Likewise. (RTLD_FINALIZE_FOREIGN_CALL): Likewise. https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=04e6c81190455506f3b7414b9b2c96fe246f4363 commit 04e6c81190455506f3b7414b9b2c96fe246f4363 Author: H.J. Lu <hjl.tools@gmail.com> Date: Sun Jul 12 14:41:20 2015 -0700 Align stack when calling __errno_location We should align stack to 16 bytes when calling __errno_location. [BZ #18661] * sysdeps/x86_64/fpu/s_cosf.S (__cosf): Align stack to 16 bytes when calling __errno_location. * sysdeps/x86_64/fpu/s_sincosf.S (__sincosf): Likewise. * sysdeps/x86_64/fpu/s_sinf.S (__sinf): Likewise. https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=979f79467407fcf2537b53a168a1a18f3b540fdd commit 979f79467407fcf2537b53a168a1a18f3b540fdd Author: H.J. Lu <hjl.tools@gmail.com> Date: Sun Jul 12 14:40:25 2015 -0700 Align stack to 16 bytes when calling __gettimeofday Subtract stack by 24 bytes instead of 16 bytes so that stack is aligned to 16 bytes when calling __gettimeofday. [BZ #18661] * sysdeps/unix/sysv/linux/x86_64/lowlevellock.S (__lll_timedwait_tid): Align stack to 16 bytes when calling __gettimeofday. https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=04d16c095375e902063b3ef356826569ef06543a commit 04d16c095375e902063b3ef356826569ef06543a Author: H.J. Lu <hjl.tools@gmail.com> Date: Sun Jul 12 14:38:58 2015 -0700 Align stack to 16 bytes when calling __setcontext Don't use pop to restore %rdi so that stack is aligned to 16 bytes when calling __setcontext. [BZ #18661] * sysdeps/unix/sysv/linux/x86_64/__start_context.S (__start_context): Don't use pop to restore %rdi so that stack is aligned to 16 bytes when calling __setcontext. https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=1a17624c2f4bc14fbcea2aa7b0e2a7bb812c1434 commit 1a17624c2f4bc14fbcea2aa7b0e2a7bb812c1434 Author: H.J. Lu <hjl.tools@gmail.com> Date: Wed Jul 29 03:41:58 2015 -0700 Compile {memcpy,strcmp}-sse2-unaligned.S only for libc {memcpy,strcmp}-sse2-unaligned.S aren't needed in ld.so. * sysdeps/x86_64/multiarch/memcpy-sse2-unaligned.S: Compile only for libc. * sysdeps/x86_64/multiarch/strcmp-sse2-unaligned.S: Likewise. https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=52e56468d7ac0e7d96effbe1950c396bfe40b75b commit 52e56468d7ac0e7d96effbe1950c396bfe40b75b Author: H.J. Lu <hjl.tools@gmail.com> Date: Sat Aug 1 07:47:16 2015 -0700 Update x86 elision-conf.c for <cpu-features.h> This patch updates x86 elision-conf.c to use the newly defined HAS_CPU_FEATURE from <cpu-features.h>. * sysdeps/unix/sysv/linux/x86/elision-conf.c (elision_init): Replace HAS_RTM with HAS_CPU_FEATURE (RTM). https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=927c297ef4a8ded4f74f81d2b6fcb6e12ff0fa27 commit 927c297ef4a8ded4f74f81d2b6fcb6e12ff0fa27 Author: H.J. Lu <hjl.tools@gmail.com> Date: Fri Jul 31 13:46:05 2015 -0700 Update libmvec multiarch functions for <cpu-features.h> This patch updates libmvec multiarch functions to use the newly defined HAS_CPU_FEATURE, HAS_ARCH_FEATURE and LOAD_RTLD_GLOBAL_RO_RDX from <cpu-features.h>. * math/Makefile ($(addprefix $(objpfx), $(libm-vec-tests))): Remove $(objpfx)init-arch.o. * sysdeps/x86_64/fpu/Makefile (libmvec-support): Remove init-arch. * sysdeps/x86_64/fpu/math-tests-arch.h (avx_usable): Removed. (INIT_ARCH_EXT): Defined as empty. (CHECK_ARCH_EXT): Replace HAS_XXX with HAS_ARCH_FEATURE (XXX). * sysdeps/x86_64/fpu/multiarch/svml_d_cos2_core.S: Remove __init_cpu_features call. Replace HAS_XXX with HAS_CPU_FEATURE/HAS_ARCH_FEATURE (XXX). * sysdeps/x86_64/fpu/multiarch/svml_d_cos4_core.S: Likewise. * sysdeps/x86_64/fpu/multiarch/svml_d_cos8_core.S: Likewise. * sysdeps/x86_64/fpu/multiarch/svml_d_exp2_core.S: Likewise. * sysdeps/x86_64/fpu/multiarch/svml_d_exp4_core.S: Likewise. * sysdeps/x86_64/fpu/multiarch/svml_d_exp8_core.S: Likewise. * sysdeps/x86_64/fpu/multiarch/svml_d_log2_core.S: Likewise. * sysdeps/x86_64/fpu/multiarch/svml_d_log4_core.S: Likewise. * sysdeps/x86_64/fpu/multiarch/svml_d_log8_core.S: Likewise. * sysdeps/x86_64/fpu/multiarch/svml_d_pow2_core.S: Likewise. * sysdeps/x86_64/fpu/multiarch/svml_d_pow4_core.S: Likewise. * sysdeps/x86_64/fpu/multiarch/svml_d_pow8_core.S: Likewise. * sysdeps/x86_64/fpu/multiarch/svml_d_sin2_core.S: Likewise. * sysdeps/x86_64/fpu/multiarch/svml_d_sin4_core.S: Likewise. * sysdeps/x86_64/fpu/multiarch/svml_d_sin8_core.S: Likewise. * sysdeps/x86_64/fpu/multiarch/svml_d_sincos2_core.S: Likewise. * sysdeps/x86_64/fpu/multiarch/svml_d_sincos4_core.S: Likewise. * sysdeps/x86_64/fpu/multiarch/svml_d_sincos8_core.S: Likewise. * sysdeps/x86_64/fpu/multiarch/svml_s_cosf16_core.S: Likewise. * sysdeps/x86_64/fpu/multiarch/svml_s_cosf4_core.S: Likewise. * sysdeps/x86_64/fpu/multiarch/svml_s_cosf8_core.S: Likewise. * sysdeps/x86_64/fpu/multiarch/svml_s_expf16_core.S: Likewise. * sysdeps/x86_64/fpu/multiarch/svml_s_expf4_core.S: Likewise. * sysdeps/x86_64/fpu/multiarch/svml_s_expf8_core.S: Likewise. * sysdeps/x86_64/fpu/multiarch/svml_s_logf16_core.S: Likewise. * sysdeps/x86_64/fpu/multiarch/svml_s_logf4_core.S: Likewise. * sysdeps/x86_64/fpu/multiarch/svml_s_logf8_core.S: Likewise. * sysdeps/x86_64/fpu/multiarch/svml_s_powf16_core.S: Likewise. * sysdeps/x86_64/fpu/multiarch/svml_s_powf4_core.S: Likewise. * sysdeps/x86_64/fpu/multiarch/svml_s_powf8_core.S: Likewise. * sysdeps/x86_64/fpu/multiarch/svml_s_sincosf16_core.S: Likewise. * sysdeps/x86_64/fpu/multiarch/svml_s_sincosf4_core.S: Likewise. * sysdeps/x86_64/fpu/multiarch/svml_s_sincosf8_core.S: Likewise. * sysdeps/x86_64/fpu/multiarch/svml_s_sinf16_core.S: Likewise. * sysdeps/x86_64/fpu/multiarch/svml_s_sinf4_core.S: Likewise. * sysdeps/x86_64/fpu/multiarch/svml_s_sinf8_core.S: Likewise. https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=51fb7715d7d0ee666c3a24b82976f2c7379aa9de commit 51fb7715d7d0ee666c3a24b82976f2c7379aa9de Author: H.J. Lu <hjl.tools@gmail.com> Date: Fri Jul 31 16:52:19 2015 -0700 Update i686 multiarch functions for <cpu-features.h> This patch updates i686 multiarch functions to use the newly defined HAS_CPU_FEATURE, HAS_ARCH_FEATURE, LOAD_GOT_AND_RTLD_GLOBAL_RO and LOAD_FUNC_GOT_EAX from <cpu-features.h>. * sysdeps/i386/i686/fpu/multiarch/e_expf.c: Replace HAS_XXX with HAS_CPU_FEATURE/HAS_ARCH_FEATURE (XXX). * sysdeps/i386/i686/fpu/multiarch/s_cosf.c: Likewise. * sysdeps/i386/i686/fpu/multiarch/s_cosf.c: Likewise. * sysdeps/i386/i686/fpu/multiarch/s_sincosf.c: Likewise. * sysdeps/i386/i686/fpu/multiarch/s_sinf.c: Likewise. * sysdeps/i386/i686/multiarch/ifunc-impl-list.c: Likewise. * sysdeps/i386/i686/multiarch/s_fma.c: Likewise. * sysdeps/i386/i686/multiarch/s_fmaf.c: Likewise. * sysdeps/i386/i686/multiarch/bcopy.S: Remove __init_cpu_features call. Merge SHARED and !SHARED. Add LOAD_GOT_AND_RTLD_GLOBAL_RO. Use LOAD_FUNC_GOT_EAX to load function address. Replace HAS_XXX with HAS_CPU_FEATURE/HAS_ARCH_FEATURE (XXX). * 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/strcasecmp.S: Likewise. * sysdeps/i386/i686/multiarch/strcat.S: Likewise. * sysdeps/i386/i686/multiarch/strchr.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/strnlen.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. https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=23c0d903e9c3e770ef16e57230fe432e5d86bb5c commit 23c0d903e9c3e770ef16e57230fe432e5d86bb5c Author: H.J. Lu <hjl.tools@gmail.com> Date: Fri Jul 31 13:41:04 2015 -0700 Update x86_64 multiarch functions for <cpu-features.h> This patch updates x86_64 multiarch functions to use the newly defined HAS_CPU_FEATURE, HAS_ARCH_FEATURE and LOAD_RTLD_GLOBAL_RO_RDX from <cpu-features.h>. * sysdeps/x86_64/fpu/multiarch/e_asin.c: Replace HAS_XXX with HAS_CPU_FEATURE/HAS_ARCH_FEATURE (XXX). * 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_fma.c: Likewise. * sysdeps/x86_64/fpu/multiarch/s_fmaf.c: Likewise. * sysdeps/x86_64/fpu/multiarch/s_sin.c: Likewise. * sysdeps/x86_64/fpu/multiarch/s_tan.c: Likewise. * sysdeps/x86_64/fpu/multiarch/s_ceil.S: Use LOAD_RTLD_GLOBAL_RO_RDX and HAS_CPU_FEATURE (SSE4_1). * sysdeps/x86_64/fpu/multiarch/s_ceilf.S: Likewise. * sysdeps/x86_64/fpu/multiarch/s_floor.S: Likewise. * sysdeps/x86_64/fpu/multiarch/s_floorf.S: Likewise. * sysdeps/x86_64/fpu/multiarch/s_nearbyint.S : Likewise. * sysdeps/x86_64/fpu/multiarch/s_nearbyintf.S: Likewise. * sysdeps/x86_64/fpu/multiarch/s_rintf.S: Likewise. * sysdeps/x86_64/fpu/multiarch/s_rintf.S : Likewise. * sysdeps/x86_64/multiarch/ifunc-impl-list.c: Likewise. * sysdeps/x86_64/multiarch/sched_cpucount.c: Likewise. * sysdeps/x86_64/multiarch/strstr.c: Likewise. * sysdeps/x86_64/multiarch/memmove.c: Likewise. * sysdeps/x86_64/multiarch/memmove_chk.c: Likewise. * sysdeps/x86_64/multiarch/test-multiarch.c: Likewise. * sysdeps/x86_64/multiarch/memcmp.S: Remove __init_cpu_features call. Add LOAD_RTLD_GLOBAL_RO_RDX. Replace HAS_XXX with HAS_CPU_FEATURE/HAS_ARCH_FEATURE (XXX). * sysdeps/x86_64/multiarch/memcpy.S: Likewise. * sysdeps/x86_64/multiarch/memcpy_chk.S: Likewise. * sysdeps/x86_64/multiarch/mempcpy.S: Likewise. * sysdeps/x86_64/multiarch/mempcpy_chk.S: Likewise. * sysdeps/x86_64/multiarch/memset.S: Likewise. * sysdeps/x86_64/multiarch/memset_chk.S: Likewise. * sysdeps/x86_64/multiarch/strcat.S: Likewise. * sysdeps/x86_64/multiarch/strchr.S: Likewise. * sysdeps/x86_64/multiarch/strcmp.S: Likewise. * sysdeps/x86_64/multiarch/strcpy.S: Likewise. * sysdeps/x86_64/multiarch/strcspn.S: Likewise. * sysdeps/x86_64/multiarch/strspn.S: Likewise. * sysdeps/x86_64/multiarch/wcscpy.S: Likewise. * sysdeps/x86_64/multiarch/wmemcmp.S: Likewise. https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=c57cfbaadbf415ca4914faad0f1d92e1f3d0fbbc commit c57cfbaadbf415ca4914faad0f1d92e1f3d0fbbc Author: H.J. Lu <hjl.tools@gmail.com> Date: Fri Jul 31 07:30:04 2015 -0700 Add _dl_x86_cpu_features to rtld_global in ld.so This patch adds _dl_x86_cpu_features to rtld_global in x86 ld.so and initializes it early before __libc_start_main is called so that cpu_features is always available when it is used and we can avoid calling __init_cpu_features in IFUNC selectors. * sysdeps/i386/dl-machine.h: Include <cpu-features.c>. (dl_platform_init): Call init_cpu_features. * sysdeps/i386/dl-procinfo.c (_dl_x86_cpu_features): New. * sysdeps/i386/i686/cacheinfo.c (DISABLE_PREFERRED_MEMORY_INSTRUCTION): Removed. * sysdeps/i386/i686/multiarch/Makefile (aux): Remove init-arch. * sysdeps/i386/i686/multiarch/Versions: Removed. * sysdeps/i386/i686/multiarch/ifunc-defines.sym (KIND_OFFSET): Removed. * sysdeps/i386/ldsodefs.h: Include <cpu-features.h>. * sysdeps/unix/sysv/linux/x86/Makefile (libpthread-sysdep_routines): Remove init-arch. * sysdeps/unix/sysv/linux/x86_64/dl-procinfo.c: Include <sysdeps/x86_64/dl-procinfo.c> instead of sysdeps/generic/dl-procinfo.c>. * sysdeps/x86/Makefile [$(subdir) == csu] (gen-as-const-headers): Add cpu-features-offsets.sym and rtld-global-offsets.sym. [$(subdir) == elf] (sysdep-dl-routines): Add dl-get-cpu-features. [$(subdir) == elf] (tests): Add tst-get-cpu-features. [$(subdir) == elf] (tests-static): Add tst-get-cpu-features-static. * sysdeps/x86/Versions: New file. * sysdeps/x86/cpu-features-offsets.sym: Likewise. * sysdeps/x86/cpu-features.c: Likewise. * sysdeps/x86/cpu-features.h: Likewise. * sysdeps/x86/dl-get-cpu-features.c: Likewise. * sysdeps/x86/libc-start.c: Likewise. * sysdeps/x86/rtld-global-offsets.sym: Likewise. * sysdeps/x86/tst-get-cpu-features-static.c: Likewise. * sysdeps/x86/tst-get-cpu-features.c: Likewise. * sysdeps/x86_64/dl-procinfo.c: Likewise. * sysdeps/x86_64/cacheinfo.c (__cpuid_count): Removed. Assume USE_MULTIARCH is defined and don't check it. (is_intel): Replace __cpu_features with GLRO(dl_x86_cpu_features). (is_amd): Likewise. (max_cpuid): Likewise. (intel_check_word): Likewise. (__cache_sysconf): Don't call __init_cpu_features. (__x86_preferred_memory_instruction): Removed. (init_cacheinfo): Don't call __init_cpu_features. Replace __cpu_features with GLRO(dl_x86_cpu_features). * sysdeps/x86_64/dl-machine.h: <cpu-features.c>. (dl_platform_init): Call init_cpu_features. * sysdeps/x86_64/ldsodefs.h: Include <cpu-features.h>. * sysdeps/x86_64/multiarch/Makefile (aux): Remove init-arch. * sysdeps/x86_64/multiarch/Versions: Removed. * sysdeps/x86_64/multiarch/cacheinfo.c: Likewise. * sysdeps/x86_64/multiarch/init-arch.c: Likewise. * sysdeps/x86_64/multiarch/ifunc-defines.sym (KIND_OFFSET): Removed. * sysdeps/x86_64/multiarch/init-arch.h: Rewrite. -----------------------------------------------------------------------
This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "GNU C Library master sources". The branch, master has been updated via 72354ab5e1d61dec7606a8851f0eb1bb016f7af7 (commit) via b4425b95ad64e5945ea9674f888561d725747128 (commit) via 8e1f346462d8c1b238a7c6bb501c45b381a45e4d (commit) from 3b8d2eb7f8435c73692f55f95e9a0ef27015b6c3 (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=72354ab5e1d61dec7606a8851f0eb1bb016f7af7 commit 72354ab5e1d61dec7606a8851f0eb1bb016f7af7 Author: H.J. Lu <hjl.tools@gmail.com> Date: Sun Jul 12 14:41:20 2015 -0700 Align stack to 16 bytes when calling __errno_location We should align stack to 16 bytes when calling __errno_location. [BZ #18661] * sysdeps/x86_64/fpu/s_cosf.S (__cosf): Align stack to 16 bytes when calling __errno_location. * sysdeps/x86_64/fpu/s_sincosf.S (__sincosf): Likewise. * sysdeps/x86_64/fpu/s_sinf.S (__sinf): Likewise. https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=b4425b95ad64e5945ea9674f888561d725747128 commit b4425b95ad64e5945ea9674f888561d725747128 Author: H.J. Lu <hjl.tools@gmail.com> Date: Sun Jul 12 14:40:25 2015 -0700 Align stack to 16 bytes when calling __gettimeofday Subtract stack by 24 bytes instead of 16 bytes so that stack is aligned to 16 bytes when calling __gettimeofday. [BZ #18661] * sysdeps/unix/sysv/linux/x86_64/lowlevellock.S (__lll_timedwait_tid): Align stack to 16 bytes when calling __gettimeofday. https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=8e1f346462d8c1b238a7c6bb501c45b381a45e4d commit 8e1f346462d8c1b238a7c6bb501c45b381a45e4d Author: H.J. Lu <hjl.tools@gmail.com> Date: Sun Jul 12 14:38:58 2015 -0700 Align stack to 16 bytes when calling __setcontext Don't use pop to restore %rdi so that stack is aligned to 16 bytes when calling __setcontext. [BZ #18661] * sysdeps/unix/sysv/linux/x86_64/__start_context.S (__start_context): Don't use pop to restore %rdi so that stack is aligned to 16 bytes when calling __setcontext. ----------------------------------------------------------------------- Summary of changes: ChangeLog | 22 ++++++++++++++++++++++ NEWS | 2 +- sysdeps/unix/sysv/linux/x86_64/__start_context.S | 4 ++-- sysdeps/unix/sysv/linux/x86_64/lowlevellock.S | 9 +++++---- sysdeps/x86_64/fpu/s_cosf.S | 6 ++++++ sysdeps/x86_64/fpu/s_sincosf.S | 6 ++++++ sysdeps/x86_64/fpu/s_sinf.S | 6 ++++++ 7 files changed, 48 insertions(+), 7 deletions(-)
If this bug is fixed (as implied by it being added to the list of fixed bugs in NEWS), please close it as fixed.
Fixed.