|
@@ -0,0 +1,54 @@
|
|
|
+[PATCH] pr_fnmatch.c: use mempcpy, not __mempcpy to fix linker issue with uClibc
|
|
|
+
|
|
|
+The standard name (as checked for by configure) for the function is mempcpy,
|
|
|
+not __mempcpy, so use that instead.
|
|
|
+
|
|
|
+The existing code happens to work on glibc, as that provides an __mempcpy
|
|
|
+alias, but other C libraries (E.G. uClibc) don't:
|
|
|
+
|
|
|
+./host/usr/bin/arm-linux-nm -D ./staging/lib/libuClibc-0.9.33.2.so | grep mempcpy
|
|
|
+00035d2c W mempcpy
|
|
|
+00036cf8 W wmempcpy
|
|
|
+
|
|
|
+vs
|
|
|
+
|
|
|
+./host/usr/bin/arm-none-linux-gnueabi-nm -D staging/lib/libc-2.18.so | grep mempcpy
|
|
|
+0007d140 T mempcpy
|
|
|
+0007d140 T __mempcpy
|
|
|
+000e15f0 T __mempcpy_chk
|
|
|
+00081828 T __mempcpy_small
|
|
|
+00083148 W wmempcpy
|
|
|
+000e4e3c T __wmempcpy_chk
|
|
|
+
|
|
|
+Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
|
|
|
+---
|
|
|
+ lib/pr_fnmatch.c | 2 +-
|
|
|
+ lib/pr_fnmatch_loop.c | 2 +-
|
|
|
+ 2 files changed, 2 insertions(+), 2 deletions(-)
|
|
|
+
|
|
|
+Index: proftpd-1.3.4d/lib/pr_fnmatch.c
|
|
|
+===================================================================
|
|
|
+--- proftpd-1.3.4d.orig/lib/pr_fnmatch.c
|
|
|
++++ proftpd-1.3.4d/lib/pr_fnmatch.c
|
|
|
+@@ -250,7 +250,7 @@
|
|
|
+ # endif
|
|
|
+ # define STRLEN(S) strlen (S)
|
|
|
+ # define STRCAT(D, S) strcat (D, S)
|
|
|
+-# define MEMPCPY(D, S, N) __mempcpy (D, S, N)
|
|
|
++# define MEMPCPY(D, S, N) mempcpy (D, S, N)
|
|
|
+ # define MEMCHR(S, C, N) memchr (S, C, N)
|
|
|
+ # define STRCOLL(S1, S2) strcoll (S1, S2)
|
|
|
+ # include "pr_fnmatch_loop.c"
|
|
|
+Index: proftpd-1.3.4d/lib/pr_fnmatch_loop.c
|
|
|
+===================================================================
|
|
|
+--- proftpd-1.3.4d.orig/lib/pr_fnmatch_loop.c
|
|
|
++++ proftpd-1.3.4d/lib/pr_fnmatch_loop.c
|
|
|
+@@ -54,7 +54,7 @@
|
|
|
+ /* Copy N bytes of SRC to DEST, return pointer to bytes after the
|
|
|
+ last written byte. */
|
|
|
+ static void *
|
|
|
+-__mempcpy (void *dest, const void *src, size_t n)
|
|
|
++mempcpy (void *dest, const void *src, size_t n)
|
|
|
+ {
|
|
|
+ return (char *) memcpy (dest, src, n) + n;
|
|
|
+ }
|