Message ID | alpine.DEB.2.10.1411101817450.6767@digraph.polyomino.org.uk |
---|---|
State | New |
Headers | show |
Looks OK.
Joseph Myers <joseph@codesourcery.com> writes: > [BZ #17573] > * include/string.h [NOT_IN_libc || !SHARED] (mempcpy): Declare > with asm name __mempcpy. > [NOT_IN_libc || !SHARED] (stpcpy): Declare with asm name __stpcpy. gcc mempcpy.c -c -std=gnu99 -fgnu89-inline -D_FORTIFY_SOURCE=2 -O2 -U_FORTIFY_SOURCE -Wall -Winline -Wundef -Wwrite-strings -fasynchronous-unwind-tables -fmerge-all-constants -fmessage-length=0 -frounding-math -funwind-tables -g -grecord-gcc-switches -mtune=power3 -mhard-float -Wstrict-prototypes -Werror=implicit-function-declaration -mlong-double-128 -I../include -I/home/abuild/rpmbuild/BUILD/glibc-2.20.90/cc-base/string -I/home/abuild/rpmbuild/BUILD/glibc-2.20.90/cc-base -I../sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu -I../sysdeps/unix/sysv/linux/powerpc/powerpc32 -I../sysdeps/unix/sysv/linux/powerpc -I../sysdeps/powerpc/nptl -I../sysdeps/unix/sysv/linux/include -I../sysdeps/unix/sysv/linux -I../sysdeps/nptl -I../sysdeps/pthread -I../sysdeps/gnu -I../sysdeps/unix/inet -I../sysdeps/unix/sysv -I../sysdeps/unix/powerpc -I../sysdeps/unix -I../sysdeps/posix -I../sysdeps/powerpc/powerpc32/fpu -I../sysdeps/powerpc/powerpc32 -I../sysdeps/wordsize-32 -I../sysdeps/powerpc/fpu -I../sysdeps/powerpc -I../sysdeps/ieee754/ldbl-128ibm -I../sysdeps/ieee754/ldbl-opt -I../sysdeps/ieee754/dbl-64 -I../sysdeps/ieee754/flt-32 -I../sysdeps/ieee754 -I../sysdeps/generic -I.. -I../libio -I. -D_LIBC_REENTRANT -include ../include/libc-symbols.h -o /home/abuild/rpmbuild/BUILD/glibc-2.20.90/cc-base/string/mempcpy.o -MD -MP -MF /home/abuild/rpmbuild/BUILD/glibc-2.20.90/cc-base/string/mempcpy.o.dt -MT /home/abuild/rpmbuild/BUILD/glibc-2.20.90/cc-base/string/mempcpy.o /tmp/ccXDS5DL.s: Assembler messages: /tmp/ccXDS5DL.s:40: Error: symbol `__mempcpy' is already defined Andreas.
On 13-11-2014 08:22, Andreas Schwab wrote: > Joseph Myers <joseph@codesourcery.com> writes: > >> [BZ #17573] >> * include/string.h [NOT_IN_libc || !SHARED] (mempcpy): Declare >> with asm name __mempcpy. >> [NOT_IN_libc || !SHARED] (stpcpy): Declare with asm name __stpcpy. > gcc mempcpy.c -c -std=gnu99 -fgnu89-inline -D_FORTIFY_SOURCE=2 -O2 -U_FORTIFY_SOURCE -Wall -Winline -Wundef -Wwrite-strings -fasynchronous-unwind-tables -fmerge-all-constants -fmessage-length=0 -frounding-math -funwind-tables -g -grecord-gcc-switches -mtune=power3 -mhard-float -Wstrict-prototypes -Werror=implicit-function-declaration -mlong-double-128 -I../include -I/home/abuild/rpmbuild/BUILD/glibc-2.20.90/cc-base/string -I/home/abuild/rpmbuild/BUILD/glibc-2.20.90/cc-base -I../sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu -I../sysdeps/unix/sysv/linux/powerpc/powerpc32 -I../sysdeps/unix/sysv/linux/powerpc -I../sysdeps/powerpc/nptl -I../sysdeps/unix/sysv/linux/include -I../sysdeps/unix/sysv/linux -I../sysdeps/nptl -I../sysdeps/pthread -I../sysdeps/gnu -I../sysdeps/unix/inet -I../sysdeps/unix/sysv -I../sysdeps/unix/powerpc -I../sysdeps/unix -I../sysdeps/posix -I../sysdeps/powerpc/powerpc32/fpu -I../sysdeps/powerpc/powerpc32 -I../sysdeps/wordsize-32 -I../sysdeps/powerpc/fpu -I../sysdeps/powerpc -I../sysdeps/ieee754/ldbl-128ibm -I../sysdeps/ieee754/ldbl-opt -I../sysdeps/ieee754/dbl-64 -I../sysdeps/ieee754/flt-32 -I../sysdeps/ieee754 -I../sysdeps/generic -I.. -I../libio -I. -D_LIBC_REENTRANT -include ../include/libc-symbols.h -o /home/abuild/rpmbuild/BUILD/glibc-2.20.90/cc-base/string/mempcpy.o -MD -MP -MF /home/abuild/rpmbuild/BUILD/glibc-2.20.90/cc-base/string/mempcpy.o.dt -MT /home/abuild/rpmbuild/BUILD/glibc-2.20.90/cc-base/string/mempcpy.o > /tmp/ccXDS5DL.s: Assembler messages: > /tmp/ccXDS5DL.s:40: Error: symbol `__mempcpy' is already defined > > Andreas. > This also breaks powerpc64 build with a similar issue. I have tried to disable multiarch for statics builds, as x86_64 custom implementation does, but it also breaks.
On 11/13/2014 11:22 AM, Andreas Schwab wrote: > Joseph Myers <joseph@codesourcery.com> writes: > >> [BZ #17573] >> * include/string.h [NOT_IN_libc || !SHARED] (mempcpy): Declare >> with asm name __mempcpy. >> [NOT_IN_libc || !SHARED] (stpcpy): Declare with asm name __stpcpy. > > gcc mempcpy.c -c -std=gnu99 -fgnu89-inline -D_FORTIFY_SOURCE=2 -O2 -U_FORTIFY_SOURCE -Wall -Winline -Wundef -Wwrite-strings -fasynchronous-unwind-tables -fmerge-all-constants -fmessage-length=0 -frounding-math -funwind-tables -g -grecord-gcc-switches -mtune=power3 -mhard-float -Wstrict-prototypes -Werror=implicit-function-declaration -mlong-double-128 -I../include -I/home/abuild/rpmbuild/BUILD/glibc-2.20.90/cc-base/string -I/home/abuild/rpmbuild/BUILD/glibc-2.20.90/cc-base -I../sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu -I../sysdeps/unix/sysv/linux/powerpc/powerpc32 -I../sysdeps/unix/sysv/linux/powerpc -I../sysdeps/powerpc/nptl -I../sysdeps/unix/sysv/linux/include -I../sysdeps/unix/sysv/linux -I../sysdeps/nptl -I../sysdeps/pthread -I../sysdeps/gnu -I../sysdeps/unix/inet -I../sysdeps/unix/sysv -I../sysdeps/unix/powerpc -I../sysdeps/unix -I../sysdeps/posix -I../sysdeps/powerpc/powerpc32/fpu -I../sysdeps/powerpc/powerpc32 -I../sysdeps/wordsize-32 -I../sysd eps/powerpc/fpu -I../sysdeps/powerpc -I../sysdeps/ieee754/ldbl-128ibm -I../sysdeps/ieee754/ldbl-opt -I../sysdeps/ieee754/dbl-64 -I../sysdeps/ieee754/flt-32 -I../sysdeps/ieee754 -I../sysdeps/generic -I.. -I../libio -I. -D_LIBC_REENTRANT -include ../include/libc-symbols.h -o /home/abuild/rpmbuild/BUILD/glibc-2.20.90/cc-base/string/mempcpy.o -MD -MP -MF /home/abuild/rpmbuild/BUILD/glibc-2.20.90/cc-base/string/mempcpy.o.dt -MT /home/abuild/rpmbuild/BUILD/glibc-2.20.90/cc-base/string/mempcpy.o > /tmp/ccXDS5DL.s: Assembler messages: > /tmp/ccXDS5DL.s:40: Error: symbol `__mempcpy' is already defined > > Andreas. > Hi, I get the same error message on s390. When building with multiple jobs, i get the following error in addition: /tmp/ccRwSbmU.s:23: Error: symbol `__stpcpy' is already defined Bye Stefan.
On 13/11/14 11:37, Stefan Liebler wrote: > > Hi, > > I get the same error message on s390. > When building with multiple jobs, i get the following error in addition: > /tmp/ccRwSbmU.s:23: Error: symbol `__stpcpy' is already defined + aarch64 > > Bye > Stefan. > > > >
diff --git a/include/string.h b/include/string.h index 8323412..2603e9c 100644 --- a/include/string.h +++ b/include/string.h @@ -113,6 +113,13 @@ libc_hidden_builtin_proto (strspn) libc_hidden_builtin_proto (strstr) libc_hidden_builtin_proto (ffs) +#if defined NOT_IN_libc || !defined SHARED +/* Redirect calls to __builtin_mempcpy and __builtin_stpcpy to call + __mempcpy and __stpcpy if not inlined. */ +extern __typeof (mempcpy) mempcpy __asm__ ("__mempcpy"); +extern __typeof (stpcpy) stpcpy __asm__ ("__stpcpy"); +#endif + # ifndef _ISOMAC # ifndef index # define index(s, c) (strchr ((s), (c)))