From 3e00d5b49832359ceafd9b5c93de18ec45201905 Mon Sep 17 00:00:00 2001 From: Klaus Reimer Date: Tue, 16 Apr 2013 22:13:19 +0200 Subject: [PATCH] Add wrapper for memcpy for linux x86_64 build so the library can be build on a new linux machine without enforcing a dependency on GLIBC 2.14 --- src/main/c/build/common.sh | 2 +- src/main/c/build/linux-x86_64.sh | 3 ++- src/main/c/src/Makefile.am | 1 + src/main/c/src/wrappers.c | 15 +++++++++++++++ .../usb4java/libusb/linux-x86/libusb4java.so | Bin 50832 -> 50832 bytes .../libusb/linux-x86_64/libusb4java.so | Bin 126192 -> 126200 bytes 6 files changed, 19 insertions(+), 2 deletions(-) create mode 100644 src/main/c/src/wrappers.c diff --git a/src/main/c/build/common.sh b/src/main/c/build/common.sh index da8537b..70c0d9e 100644 --- a/src/main/c/build/common.sh +++ b/src/main/c/build/common.sh @@ -75,5 +75,5 @@ build() chmod -x "$DISTDIR/"* # Cleanup -# rm -rf "$TMPDIR" + rm -rf "$TMPDIR" } diff --git a/src/main/c/build/linux-x86_64.sh b/src/main/c/build/linux-x86_64.sh index e1b369e..8604fe7 100755 --- a/src/main/c/build/linux-x86_64.sh +++ b/src/main/c/build/linux-x86_64.sh @@ -9,8 +9,9 @@ set -e OS="linux" ARCH="x86_64" HOST="$ARCH-$OS-gnu" -CFLAGS="-m64" +CFLAGS="-m64 -Wl,--wrap=memcpy" LIBUSB_CONFIG="--disable-shared" USB4JAVA_LIBS="-lrt" +USB4JAVA_CFLAGS="-DWRAP_MEMCPY" build diff --git a/src/main/c/src/Makefile.am b/src/main/c/src/Makefile.am index 1ae9bf9..9be6ead 100644 --- a/src/main/c/src/Makefile.am +++ b/src/main/c/src/Makefile.am @@ -4,6 +4,7 @@ libusb4java_la_LIBADD = $(LIBUSB_LIBS) libusb4java_la_LDFLAGS = -version-info 1:0:0 -no-undefined EXTRA_DIST = *.h libusb4java_la_SOURCES = \ + wrappers.c \ usb4java.c \ LibUsb.c \ Version.c \ diff --git a/src/main/c/src/wrappers.c b/src/main/c/src/wrappers.c new file mode 100644 index 0000000..da85ad0 --- /dev/null +++ b/src/main/c/src/wrappers.c @@ -0,0 +1,15 @@ +/* + * Copyright (C) 2013 Klaus Reimer (k@ailis.de) + * See COPYING file for copying conditions + */ + +#include + +// Enforce usage of older memcpy to be compatible with older libc versions +#if WRAP_MEMCPY +asm (".symver memcpy, memcpy@GLIBC_2.2.5"); +void *__wrap_memcpy(void *dest, const void *src, size_t n) +{ + return memcpy(dest, src, n); +} +#endif diff --git a/src/main/resources/de/ailis/usb4java/libusb/linux-x86/libusb4java.so b/src/main/resources/de/ailis/usb4java/libusb/linux-x86/libusb4java.so index a5f86e5125af86e04bcbdf44f321938cc82feabc..ace3f4a464502ff678641a55e84a7b0783871de0 100644 GIT binary patch delta 35 rcmbQx%RHf%d4me0Ncy(P;U$KyHE}gxdM>TIxLavgwBcq8#)zW;2K5ha delta 35 rcmbQx%RHf%d4me0$PE?c)N9&OPa{q)un6X_*><+rY3gPR#)zW;^}r5W diff --git a/src/main/resources/de/ailis/usb4java/libusb/linux-x86_64/libusb4java.so b/src/main/resources/de/ailis/usb4java/libusb/linux-x86_64/libusb4java.so index 3270e0daa95eb0653032cc235871f37b9ef3179e..9e9b2010e2fffbcf435f01e7c578514cca94a49f 100644 GIT binary patch delta 29096 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 delta 28768 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