Browse Source

Use gcc's __builtin_mempcpy() as __mempcpy(), if possible

Patch from OpenWrt.

Reported-by: Leonid Lisovskiy <lly.dev@gmail.com>
Waldemar Brodkorb 8 years ago
parent
commit
2a3ffa836a
2 changed files with 4 additions and 1 deletions
  1. 3 1
      include/string.h
  2. 1 0
      libc/string/generic/mempcpy.c

+ 3 - 1
include/string.h

@@ -258,7 +258,9 @@ extern void *memmem (const void *__haystack, size_t __haystacklen,
 
 /* Copy N bytes of SRC to DEST, return pointer to bytes after the
    last written byte.  */
-#if 0 /* uClibc: disabled */
+#if __GNUC_PREREQ (3, 4)
+# define __mempcpy(dest, src, n) __builtin_mempcpy(dest, src, n)
+#else /* uClibc: disabled */
 extern void *__mempcpy (void *__restrict __dest,
 			const void *__restrict __src, size_t __n)
      __THROW __nonnull ((1, 2));

+ 1 - 0
libc/string/generic/mempcpy.c

@@ -16,4 +16,5 @@ void *mempcpy (void *dstpp, const void *srcpp, size_t len)
   return (void *)(((char *)dstpp) + len);
 }
 libc_hidden_weak(mempcpy)
+strong_alias(mempcpy,__mempcpy)
 #endif