From: Richard Purdie Date: Mon, 30 Jan 2017 23:18:09 +0000 (+0000) Subject: binutils-cross: Remove exec_prefix from the linker search path X-Git-Tag: uninative-1.5~488 X-Git-Url: https://code.ossystems.io/gitweb?a=commitdiff_plain;h=20816eb5398512652c971a37589a2ca28ffd3d68;p=openembedded-core.git binutils-cross: Remove exec_prefix from the linker search path We don't put target libs into a native/cross ${exec_prefix} but having this in the default search path means all linker scripts have to be relocated. This is a considerable chunk of files to create multiple copies of for no good reason. Instead, patch out the paths we don't need. Signed-off-by: Richard Purdie --- diff --git a/meta/recipes-devtools/binutils/binutils-cross.inc b/meta/recipes-devtools/binutils/binutils-cross.inc index fd3d801491..7ebd7e3093 100644 --- a/meta/recipes-devtools/binutils/binutils-cross.inc +++ b/meta/recipes-devtools/binutils/binutils-cross.inc @@ -7,9 +7,14 @@ BPN = "binutils" INHIBIT_DEFAULT_DEPS = "1" INHIBIT_AUTOTOOLS_DEPS = "1" +SRC_URI += "file://no-tooldirpaths.patch" + +# Specify lib-path else we use a load of search dirs which we don't use +# and mean the linker scripts have to be relocated. EXTRA_OECONF += "--with-sysroot=${STAGING_DIR_TARGET} \ --disable-install-libbfd \ --enable-poison-system-directories \ + --with-lib-path==${target_base_libdir}:=${target_libdir} \ " do_install () { oe_runmake 'DESTDIR=${D}' install diff --git a/meta/recipes-devtools/binutils/binutils/no-tooldirpaths.patch b/meta/recipes-devtools/binutils/binutils/no-tooldirpaths.patch new file mode 100644 index 0000000000..2bfc8d4d26 --- /dev/null +++ b/meta/recipes-devtools/binutils/binutils/no-tooldirpaths.patch @@ -0,0 +1,47 @@ +We don't place target libraries within ${exec_prefix}, we'd always place these +within the target sysroot within the standard library directories. Worse, the +append_to_lib_path code prefixes these paths with the sysroot which makes even +less sense. + +These directories therefore don't make sense in our case and mean we have to +relocate all the linker scripts if they're present. Dropping them +gives a reasonable performance improvement/simplification. + +Upstream-Status: Inappropriate + +RP 2017/01/30 + +Index: git/ld/genscripts.sh +=================================================================== +--- git.orig/ld/genscripts.sh ++++ git/ld/genscripts.sh +@@ -189,29 +189,6 @@ append_to_lib_path() + fi + } + +-# Always search $(tooldir)/lib, aka /usr/local/TARGET/lib when native +-# except when LIBPATH=":". +-if [ "${LIB_PATH}" != ":" ] ; then +- libs= +- if [ "x${TOOL_LIB}" = "x" ] ; then +- if [ "x${NATIVE}" = "xyes" ] ; then +- libs="${exec_prefix}/${target_alias}/lib" +- fi +- else +- # For multilib'ed targets, ensure both ${target_alias}/lib${LIBPATH_SUFFIX} +- # and ${TOOL_LIB}/lib${LIBPATH_SUFFIX} are in the default search path, +- # because 64bit libraries may be in both places, depending on +- # cross-development setup method (e.g.: /usr/s390x-linux/lib64 +- # vs. /usr/s390-linux/lib64) +- case "${NATIVE}:${LIBPATH_SUFFIX}:${TOOL_LIB}" in +- :* | *::* | *:*:*${LIBPATH_SUFFIX}) ;; +- *) libs="${exec_prefix}/${target_alias}/lib${LIBPATH_SUFFIX}" ;; +- esac +- libs="${exec_prefix}/${TOOL_LIB}/lib ${libs}" +- fi +- append_to_lib_path ${libs} +-fi +- + if [ "x${LIB_PATH}" = "x" ] && [ "x${USE_LIBPATH}" = xyes ] ; then + libs=${NATIVE_LIB_DIRS} + if [ "x${NATIVE}" = "xyes" ] ; then