This is the mail archive of the
libc-alpha@sourceware.org
mailing list for the glibc project.
Re: Fix stpcpy / mempcpy namespace (bug 17573)
- From: Joseph Myers <joseph at codesourcery dot com>
- To: Andreas Schwab <schwab at suse dot de>
- Cc: <libc-alpha at sourceware dot org>, Siddhesh Poyarekar <siddhesh at redhat dot com>
- Date: Thu, 13 Nov 2014 16:55:00 +0000
- Subject: Re: Fix stpcpy / mempcpy namespace (bug 17573)
- Authentication-results: sourceware.org; auth=none
- References: <alpine dot DEB dot 2 dot 10 dot 1411101817450 dot 6767 at digraph dot polyomino dot org dot uk> <mvmbnob5rj7 dot fsf at hawking dot suse dot de>
On Thu, 13 Nov 2014, Andreas Schwab wrote:
> /tmp/ccXDS5DL.s: Assembler messages:
> /tmp/ccXDS5DL.s:40: Error: symbol `__mempcpy' is already defined
This patch fixes the build of C mempcpy and stpcpy by disabling the
redirection to __mempcpy and __stpcpy asm names if
NO_MEMPCPY_STPCPY_REDIRECT is defined, and defining that macro in the
relevant source files.
Tested for powerpc32 that the build is fixed.
2014-11-13 Joseph Myers <joseph@codesourcery.com>
* include/string.h [NO_MEMPCPY_STPCPY_REDIRECT] (mempcpy): Do not
redeclare with asm name.
[NO_MEMPCPY_STPCPY_REDIRECT] (stpcpy): Likewise.
* string/mempcpy.c (NO_MEMPCPY_STPCPY_REDIRECT): Define before
including <string.h>.
* string/stpcpy.c (NO_MEMPCPY_STPCPY_REDIRECT): Likewise.
* sysdeps/powerpc/powerpc32/power4/multiarch/mempcpy.c
[!NOT_IN_libc] (NO_MEMPCPY_STPCPY_REDIRECT): Likewise.
* sysdeps/powerpc/powerpc64/multiarch/mempcpy.c
[!NOT_IN_libc] (NO_MEMPCPY_STPCPY_REDIRECT): Likewise.
* sysdeps/powerpc/powerpc64/multiarch/stpcpy.c
[SHARED && !NOT_IN_libc] (NO_MEMPCPY_STPCPY_REDIRECT): Likewise.
diff --git a/include/string.h b/include/string.h
index 99cc2d3..172940b 100644
--- a/include/string.h
+++ b/include/string.h
@@ -115,7 +115,8 @@ libc_hidden_builtin_proto (strspn)
libc_hidden_builtin_proto (strstr)
libc_hidden_builtin_proto (ffs)
-#if defined NOT_IN_libc || !defined SHARED
+#if (defined NOT_IN_libc || !defined SHARED) \
+ && !defined NO_MEMPCPY_STPCPY_REDIRECT
/* Redirect calls to __builtin_mempcpy and __builtin_stpcpy to call
__mempcpy and __stpcpy if not inlined. */
extern __typeof (mempcpy) mempcpy __asm__ ("__mempcpy");
diff --git a/string/mempcpy.c b/string/mempcpy.c
index 9749863..aab1bed 100644
--- a/string/mempcpy.c
+++ b/string/mempcpy.c
@@ -19,6 +19,7 @@
License along with the GNU C Library; if not, see
<http://www.gnu.org/licenses/>. */
+#define NO_MEMPCPY_STPCPY_REDIRECT
#include <string.h>
#undef mempcpy
diff --git a/string/stpcpy.c b/string/stpcpy.c
index fc5ae55..9185acc 100644
--- a/string/stpcpy.c
+++ b/string/stpcpy.c
@@ -19,6 +19,7 @@
# include <config.h>
#endif
+#define NO_MEMPCPY_STPCPY_REDIRECT
#include <string.h>
#undef __stpcpy
diff --git a/sysdeps/powerpc/powerpc32/power4/multiarch/mempcpy.c b/sysdeps/powerpc/powerpc32/power4/multiarch/mempcpy.c
index 38fbcc3..89f4912 100644
--- a/sysdeps/powerpc/powerpc32/power4/multiarch/mempcpy.c
+++ b/sysdeps/powerpc/powerpc32/power4/multiarch/mempcpy.c
@@ -17,6 +17,7 @@
<http://www.gnu.org/licenses/>. */
#ifndef NOT_IN_libc
+# define NO_MEMPCPY_STPCPY_REDIRECT
# include <string.h>
# include <shlib-compat.h>
# include "init-arch.h"
diff --git a/sysdeps/powerpc/powerpc64/multiarch/mempcpy.c b/sysdeps/powerpc/powerpc64/multiarch/mempcpy.c
index 38fbcc3..89f4912 100644
--- a/sysdeps/powerpc/powerpc64/multiarch/mempcpy.c
+++ b/sysdeps/powerpc/powerpc64/multiarch/mempcpy.c
@@ -17,6 +17,7 @@
<http://www.gnu.org/licenses/>. */
#ifndef NOT_IN_libc
+# define NO_MEMPCPY_STPCPY_REDIRECT
# include <string.h>
# include <shlib-compat.h>
# include "init-arch.h"
diff --git a/sysdeps/powerpc/powerpc64/multiarch/stpcpy.c b/sysdeps/powerpc/powerpc64/multiarch/stpcpy.c
index c7118d5..28153b7 100644
--- a/sysdeps/powerpc/powerpc64/multiarch/stpcpy.c
+++ b/sysdeps/powerpc/powerpc64/multiarch/stpcpy.c
@@ -17,6 +17,7 @@
<http://www.gnu.org/licenses/>. */
#if defined SHARED && !defined NOT_IN_libc
+# define NO_MEMPCPY_STPCPY_REDIRECT
# include <string.h>
# include <shlib-compat.h>
# include "init-arch.h"
--
Joseph S. Myers
joseph@codesourcery.com