]> code.ossystems Code Review - openembedded-core.git/commitdiff
pseudo: Drop nativesdk wrapper and link against old memcpy symbol
authorRichard Purdie <richard.purdie@linuxfoundation.org>
Sun, 22 Apr 2012 14:46:17 +0000 (15:46 +0100)
committerRichard Purdie <richard.purdie@linuxfoundation.org>
Sun, 22 Apr 2012 14:57:54 +0000 (15:57 +0100)
The -nativesdk pseudo wrapper setting LD_LIBRARY_PATH turned out to be a
bad idea since it can mix up different libc and lib-dl verisons which
may or may not work depending on the phase of the moon.

As an alternative to solving the original problem, this patch drops the
symbol version requirement on memcpy which allows pseudo to work with
libc's back to 2.7 which should be sufficient for our supported targets
using nativesdk.

[YOCTO #2299]
[YOCTO #2351]

Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
meta/recipes-devtools/pseudo/files/symver.patch [new file with mode: 0644]
meta/recipes-devtools/pseudo/pseudo.inc

diff --git a/meta/recipes-devtools/pseudo/files/symver.patch b/meta/recipes-devtools/pseudo/files/symver.patch
new file mode 100644 (file)
index 0000000..8d1b377
--- /dev/null
@@ -0,0 +1,26 @@
+When running as pseudo-nativesdk, we might need to run host binaries 
+linked against the host libc. Having a 2.14 libc dependency from memcpy is
+problematic so instruct the linker to use older symbols.
+
+Upstream-Status: Pending
+
+RP 2012/4/22
+
+Index: pseudo-1.3/pseudo.h
+===================================================================
+--- pseudo-1.3.orig/pseudo.h   2012-04-22 12:17:59.078909060 +0000
++++ pseudo-1.3/pseudo.h        2012-04-22 12:32:42.954888587 +0000
+@@ -29,6 +29,13 @@
+ int pseudo_set_value(const char *key, const char *value);
+ char *pseudo_get_value(const char *key);
++#ifdef __amd64__   
++#define GLIBC_COMPAT_SYMBOL(SYM) __asm__(".symver " #SYM "," #SYM "@GLIBC_2.2.5")
++#else   
++#define GLIBC_COMPAT_SYMBOL(SYM) __asm__(".symver " #SYM "," #SYM "@GLIBC_2.0")
++#endif
++GLIBC_COMPAT_SYMBOL(memcpy);
++
+ #include "pseudo_tables.h"
+ extern void pseudo_debug_verbose(void);
index 3a37c694f0e3e09bb9e9e26eafeff75bead7cc88..8798018a4bcb5d6099dc9b84f9b45fd90ad001ec 100644 (file)
@@ -9,6 +9,8 @@ SECTION = "base"
 LICENSE = "LGPL2.1"
 DEPENDS = "sqlite3"
 
+SRC_URI_append_virtclass-nativesdk = " file://symver.patch"
+
 FILES_${PN} = "${libdir}/pseudo/lib*/libpseudo.so ${bindir}/* ${localstatedir}/pseudo ${prefix}/var/pseudo"
 FILES_${PN}-dbg += "${libdir}/pseudo/lib*/.debug"
 PROVIDES += "virtual/fakeroot"
@@ -75,8 +77,6 @@ do_install_append_virtclass-nativesdk () {
                mkdir -p ${D}${prefix}/lib/pseudo/lib
                cp lib/pseudo/lib/libpseudo.so ${D}${prefix}/lib/pseudo/lib/.
        fi
-
-       create_wrapper ${D}${bindir}/pseudo LD_LIBRARY_PATH=${base_libdir}:${libdir}
 }
 
 BBCLASSEXTEND = "native nativesdk"