From 7da767805f0a7301c0c719a6c0fd51d87e193c22 Mon Sep 17 00:00:00 2001 From: Mike Frysinger Date: Sun, 6 Feb 2011 12:39:08 -0500 Subject: [PATCH v2] memcpy-ssse3: enable chk symbols in static builds Building static apps on i686/x86_64 systems which use memmove such as: #include char buf[8192]; main(int argc, char **argv) { memmove(buf, buf + argc, argc % 4); } Result in linking errors along the lines of: .../libc.a(memmove_chk.o): In function `__memmove_chk': (.text+0x1b4): undefined reference to `__memmove_chk_ssse3_back' .../libc.a(memmove_chk.o): In function `__memmove_chk': (.text+0x1b9): undefined reference to `__memmove_chk_ssse3' collect2: ld returned 1 exit status This is due to the new ssse3 funcs only enabling their chk symbols when being compiled into shared code. URL: https://bugs.gentoo.org/353816 Signed-off-by: Mike Frysinger 2011-02-06 Mike Frysinger * sysdeps/i386/i686/multiarch/memcpy-ssse3-rep.S: Only protect MEMCPY_CHK with USE_AS_BCOPY ifdef check. * sysdeps/i386/i686/multiarch/memcpy-ssse3.S: Likewise. * sysdeps/x86_64/multiarch/memcpy-ssse3.S: Likewise. * sysdeps/x86_64/multiarch/memcpy-ssse3-back.S: Likewise. --- v2 - also update i686 symbols - drop shared/libc ifdefs since the surrounding code already handles it sysdeps/i386/i686/multiarch/memcpy-ssse3-rep.S | 2 +- sysdeps/i386/i686/multiarch/memcpy-ssse3.S | 2 +- sysdeps/x86_64/multiarch/memcpy-ssse3-back.S | 2 +- sysdeps/x86_64/multiarch/memcpy-ssse3.S | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/sysdeps/i386/i686/multiarch/memcpy-ssse3-rep.S b/sysdeps/i386/i686/multiarch/memcpy-ssse3-rep.S index 48a109c..8e81183 100644 --- a/sysdeps/i386/i686/multiarch/memcpy-ssse3-rep.S +++ b/sysdeps/i386/i686/multiarch/memcpy-ssse3-rep.S @@ -110,7 +110,7 @@ __i686.get_pc_thunk.bx: #endif .section .text.ssse3,"ax",@progbits -#if defined SHARED && !defined NOT_IN_libc && !defined USE_AS_BCOPY +#if !defined USE_AS_BCOPY ENTRY (MEMCPY_CHK) movl 12(%esp), %eax cmpl %eax, 16(%esp) diff --git a/sysdeps/i386/i686/multiarch/memcpy-ssse3.S b/sysdeps/i386/i686/multiarch/memcpy-ssse3.S index ec9eeb9..f64f8d2 100644 --- a/sysdeps/i386/i686/multiarch/memcpy-ssse3.S +++ b/sysdeps/i386/i686/multiarch/memcpy-ssse3.S @@ -110,7 +110,7 @@ __i686.get_pc_thunk.bx: #endif .section .text.ssse3,"ax",@progbits -#if defined SHARED && !defined NOT_IN_libc && !defined USE_AS_BCOPY +#if !defined USE_AS_BCOPY ENTRY (MEMCPY_CHK) movl 12(%esp), %eax cmpl %eax, 16(%esp) diff --git a/sysdeps/x86_64/multiarch/memcpy-ssse3-back.S b/sysdeps/x86_64/multiarch/memcpy-ssse3-back.S index 48c974e..bdd114a 100644 --- a/sysdeps/x86_64/multiarch/memcpy-ssse3-back.S +++ b/sysdeps/x86_64/multiarch/memcpy-ssse3-back.S @@ -49,7 +49,7 @@ ud2 .section .text.ssse3,"ax",@progbits -#if defined SHARED && !defined NOT_IN_libc +#if !defined USE_AS_BCOPY ENTRY (MEMCPY_CHK) cmpq %rdx, %rcx jb HIDDEN_JUMPTARGET (__chk_fail) diff --git a/sysdeps/x86_64/multiarch/memcpy-ssse3.S b/sysdeps/x86_64/multiarch/memcpy-ssse3.S index 9a878d3..cd7e45f 100644 --- a/sysdeps/x86_64/multiarch/memcpy-ssse3.S +++ b/sysdeps/x86_64/multiarch/memcpy-ssse3.S @@ -49,7 +49,7 @@ ud2 .section .text.ssse3,"ax",@progbits -#if defined SHARED && !defined NOT_IN_libc +#if !defined USE_AS_BCOPY ENTRY (MEMCPY_CHK) cmpq %rdx, %rcx jb HIDDEN_JUMPTARGET (__chk_fail) -- 1.7.4.rc2