Bug 15627

Summary: Testsuite failure: tst-xmmymm.out
Product: glibc Reporter: Siddhesh Poyarekar <siddhesh>
Component: dynamic-linkAssignee: Siddhesh Poyarekar <siddhesh>
Status: RESOLVED FIXED    
Severity: normal Flags: fweimer: security-
Priority: P2    
Version: unspecified   
Target Milestone: ---   
Host: Target:
Build: Last reconfirmed:

Description Siddhesh Poyarekar 2013-06-14 10:03:43 UTC
Description of problem:

tst-xmmymm fails with -O3 when built with gcc-4.8.  The reason seems to be that the gcc-4.8 vectorizer (-ftree-vectorize enabled by default with -O3) manages to vectorize instructions in memset.

=====tst-xmmymm.out=====
dl-minimal.os needed for __GI___assert_fail
dl-lookup.os needed for _dl_lookup_symbol_x
dl-profile.os needed for _dl_mcount_internal
dl-trampoline.os needed for _dl_x86_64_restore_sse
rtld-mmap.os needed for __mmap
dl-misc.os needed for _dl_dprintf
rtld-_exit.os needed for _exit
rtld-memcpy.os needed for memcpy
rtld-memset.os needed for memset
dl-scope.os needed for _dl_scope_free
dl-error.os needed for _dl_signal_cerror
rtld-stpcpy.os needed for stpcpy
rtld-strcmp.os needed for strcmp
rtld-strlen.os needed for strlen
rtld-fxstat.os needed for __GI___fxstat64
rtld-close.os needed for __close
rtld-write.os needed for __libc_write
rtld-llseek.os needed for __lseek
rtld-munmap.os needed for __munmap
rtld-open.os needed for __open
rtld-profil.os needed for __profil
rtld-prof-freq.os needed for __profile_frequency
rtld-memcmp.os needed for memcmp
rtld-getpid.os needed for __getpid
rtld-__longjmp.os needed for __longjmp
rtld-setjmp.os needed for __sigsetjmp
rtld-mempcpy.os needed for mempcpy
rtld-setitimer.os needed for __setitimer
rtld-sigaction.os needed for __sigaction
object files needed: dl-runtime.os dl-minimal.os dl-lookup.os dl-profile.os dl-trampoline.os rtld-mmap.os dl-misc.os rtld-_exit.os rtld-memcpy.os rtld-memset.os dl-scope.os dl-error.os rtld-stpcpy.os rtld-strcmp.os rtld-strlen.os rtld-fxstat.os rtld-close.os rtld-write.os rtld-llseek.os rtld-munmap.os rtld-open.os rtld-profil.os rtld-prof-freq.os rtld-memcmp.os rtld-getpid.os rtld-__longjmp.os rtld-setjmp.os rtld-mempcpy.os rtld-setitimer.os rtld-sigaction.os
function memset in rtld-memset.os modifies xmm/ymm
=====================
Comment 1 Siddhesh Poyarekar 2013-06-14 18:45:00 UTC
Fixed in master:

commit 747ef469ffc9c9179ca9d76854167925b4e44346
Author: Siddhesh Poyarekar <siddhesh@redhat.com>
Date:   Sat Jun 15 00:09:26 2013 +0530

    Add rtld-memset.S for x86_64
    
    Resolves: BZ #15627
    
    Add an assembler version of rtld-memset to avoid using SSE registers.