libtool: Fix an issue where unnecessary rpaths were being injected

libtool was being to aggressive in adding rpath to binaries. This
change stops it adding them if that path the default search path.

(From OE-Core rev: 99d1e3ee56c326b3ab68913e68d133a63f334696)

Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
Richard Purdie 2011-09-23 09:00:36 +01:00
parent 1750e9018f
commit e3c5d7a90a
6 changed files with 69 additions and 5 deletions

View File

@ -1,6 +1,6 @@
require libtool-${PV}.inc
PR = "r2"
PR = "r4"
PACKAGES = ""
SRC_URI += "file://prefix.patch"

View File

@ -2,7 +2,7 @@ require libtool-${PV}.inc
DEPENDS = ""
PR = "r2"
PR = "r4"
SRC_URI += "file://prefix.patch"
inherit native

View File

@ -1,6 +1,6 @@
require libtool-${PV}.inc
PR = "r2"
PR = "r4"
SRC_URI += "file://prefix.patch"
inherit nativesdk

View File

@ -15,7 +15,8 @@ SRC_URI = "${GNU_MIRROR}/libtool/libtool-${PV}.tar.gz \
file://resolve-sysroot.patch \
file://use-sysroot-in-libpath.patch \
file://fix-final-rpath.patch \
file://avoid_absolute_paths_for_general_utils.patch "
file://avoid_absolute_paths_for_general_utils.patch \
file://fix-rpath.patch "
do_compile_prepend () {
# Sometimes this file doesn't get rebuilt, force the issue

View File

@ -0,0 +1,63 @@
We don't want to add RPATHS which match default linker
search paths, they're a waste of space. This patch
filters libtools list and removes the ones we don't need.
RP 23/9/2011
Upstream-status: Pending
Index: libtool-2.4/libltdl/config/ltmain.m4sh
===================================================================
--- libtool-2.4.orig/libltdl/config/ltmain.m4sh 2011-09-23 08:38:06.365043626 +0100
+++ libtool-2.4/libltdl/config/ltmain.m4sh 2011-09-23 09:57:05.235003068 +0100
@@ -7264,8 +7264,14 @@
esac
fi
else
- eval flag=\"$hardcode_libdir_flag_spec\"
- func_append dep_rpath " $flag"
+ # We only want to hardcode in an rpath if it isn't in the
+ # default dlsearch path.
+ case " $sys_lib_dlsearch_path " in
+ *" $libdir "*) ;;
+ *) eval flag=\"$hardcode_libdir_flag_spec\"
+ func_append dep_rpath " $flag"
+ ;;
+ esac
fi
elif test -n "$runpath_var"; then
case "$perm_rpath " in
@@ -8001,8 +8007,14 @@
esac
fi
else
- eval flag=\"$hardcode_libdir_flag_spec\"
- func_append rpath " $flag"
+ # We only want to hardcode in an rpath if it isn't in the
+ # default dlsearch path.
+ case " $sys_lib_dlsearch_path " in
+ *" $libdir "*) ;;
+ *) eval flag=\"$hardcode_libdir_flag_spec\"
+ rpath+=" $flag"
+ ;;
+ esac
fi
elif test -n "$runpath_var"; then
case "$perm_rpath " in
@@ -8052,8 +8064,14 @@
esac
fi
else
- eval flag=\"$hardcode_libdir_flag_spec\"
- func_append rpath " $flag"
+ # We only want to hardcode in an rpath if it isn't in the
+ # default dlsearch path.
+ case " $sys_lib_dlsearch_path " in
+ *" $libdir "*) ;;
+ *) eval flag=\"$hardcode_libdir_flag_spec\"
+ func_append rpath " $flag"
+ ;;
+ esac
fi
elif test -n "$runpath_var"; then
case "$finalize_perm_rpath " in

View File

@ -1,6 +1,6 @@
require libtool-${PV}.inc
PR = "r2"
PR = "r4"
#
# We want the results of libtool-cross preserved - don't stage anything ourselves.