diff options
| -rw-r--r-- | meta/recipes-devtools/binutils/binutils-2.27.inc | 1 | ||||
| -rw-r--r-- | meta/recipes-devtools/binutils/binutils/0014-libtool-remove-rpath.patch | 100 |
2 files changed, 101 insertions, 0 deletions
diff --git a/meta/recipes-devtools/binutils/binutils-2.27.inc b/meta/recipes-devtools/binutils/binutils-2.27.inc index 9cc57fcdea..03b7bedd25 100644 --- a/meta/recipes-devtools/binutils/binutils-2.27.inc +++ b/meta/recipes-devtools/binutils/binutils-2.27.inc | |||
| @@ -33,6 +33,7 @@ SRC_URI = "\ | |||
| 33 | file://0011-Change-default-emulation-for-mips64-linux.patch \ | 33 | file://0011-Change-default-emulation-for-mips64-linux.patch \ |
| 34 | file://0012-Add-support-for-Netlogic-XLP.patch \ | 34 | file://0012-Add-support-for-Netlogic-XLP.patch \ |
| 35 | file://0013-fix-the-incorrect-assembling-for-ppc-wait-mnemonic.patch \ | 35 | file://0013-fix-the-incorrect-assembling-for-ppc-wait-mnemonic.patch \ |
| 36 | file://0014-libtool-remove-rpath.patch \ | ||
| 36 | " | 37 | " |
| 37 | S = "${WORKDIR}/git" | 38 | S = "${WORKDIR}/git" |
| 38 | 39 | ||
diff --git a/meta/recipes-devtools/binutils/binutils/0014-libtool-remove-rpath.patch b/meta/recipes-devtools/binutils/binutils/0014-libtool-remove-rpath.patch new file mode 100644 index 0000000000..d56948f15d --- /dev/null +++ b/meta/recipes-devtools/binutils/binutils/0014-libtool-remove-rpath.patch | |||
| @@ -0,0 +1,100 @@ | |||
| 1 | Apply these patches from our libtool patches as not only are redundant RPATHs a | ||
| 2 | waste of space but they can cause incorrect linking when native packages are | ||
| 3 | restored from sstate. | ||
| 4 | |||
| 5 | fix-rpath.patch: | ||
| 6 | We don't want to add RPATHS which match default linker | ||
| 7 | search paths, they're a waste of space. This patch | ||
| 8 | filters libtools list and removes the ones we don't need. | ||
| 9 | |||
| 10 | norm-rpath.patch: | ||
| 11 | Libtool may be passed link paths of the form "/usr/lib/../lib", which | ||
| 12 | fool its detection code into thinking it should be included as an | ||
| 13 | RPATH in the generated binary. Normalize before comparision. | ||
| 14 | |||
| 15 | Upstream-Status: Inappropriate | ||
| 16 | Signed-off-by: Ross Burton <ross.burton@intel.com> | ||
| 17 | |||
| 18 | diff --git a/ltmain.sh b/ltmain.sh | ||
| 19 | index 683317c..860a16a 100644 | ||
| 20 | --- a/ltmain.sh | ||
| 21 | +++ b/ltmain.sh | ||
| 22 | @@ -8053,8 +8053,14 @@ EOF | ||
| 23 | esac | ||
| 24 | fi | ||
| 25 | else | ||
| 26 | - eval flag=\"$hardcode_libdir_flag_spec\" | ||
| 27 | - func_append dep_rpath " $flag" | ||
| 28 | + # We only want to hardcode in an rpath if it isn't in the | ||
| 29 | + # default dlsearch path. | ||
| 30 | + case " $sys_lib_dlsearch_path " in | ||
| 31 | + *" $libdir "*) ;; | ||
| 32 | + *) eval flag=\"$hardcode_libdir_flag_spec\" | ||
| 33 | + func_append dep_rpath " $flag" | ||
| 34 | + ;; | ||
| 35 | + esac | ||
| 36 | fi | ||
| 37 | elif test -n "$runpath_var"; then | ||
| 38 | case "$perm_rpath " in | ||
| 39 | @@ -8790,8 +8796,14 @@ EOF | ||
| 40 | esac | ||
| 41 | fi | ||
| 42 | else | ||
| 43 | - eval flag=\"$hardcode_libdir_flag_spec\" | ||
| 44 | - func_append rpath " $flag" | ||
| 45 | + # We only want to hardcode in an rpath if it isn't in the | ||
| 46 | + # default dlsearch path. | ||
| 47 | + case " $sys_lib_dlsearch_path " in | ||
| 48 | + *" $libdir "*) ;; | ||
| 49 | + *) eval flag=\"$hardcode_libdir_flag_spec\" | ||
| 50 | + rpath+=" $flag" | ||
| 51 | + ;; | ||
| 52 | + esac | ||
| 53 | fi | ||
| 54 | elif test -n "$runpath_var"; then | ||
| 55 | case "$perm_rpath " in | ||
| 56 | @@ -8841,8 +8853,14 @@ EOF | ||
| 57 | esac | ||
| 58 | fi | ||
| 59 | else | ||
| 60 | - eval flag=\"$hardcode_libdir_flag_spec\" | ||
| 61 | - func_append rpath " $flag" | ||
| 62 | + # We only want to hardcode in an rpath if it isn't in the | ||
| 63 | + # default dlsearch path. | ||
| 64 | + case " $sys_lib_dlsearch_path " in | ||
| 65 | + *" $libdir "*) ;; | ||
| 66 | + *) eval flag=\"$hardcode_libdir_flag_spec\" | ||
| 67 | + func_append rpath " $flag" | ||
| 68 | + ;; | ||
| 69 | + esac | ||
| 70 | fi | ||
| 71 | elif test -n "$runpath_var"; then | ||
| 72 | case "$finalize_perm_rpath " in | ||
| 73 | diff --git a/ltmain.sh b/ltmain.sh | ||
| 74 | index 683317c..860a16a 100644 | ||
| 75 | --- a/ltmain.sh | ||
| 76 | +++ b/ltmain.sh | ||
| 77 | @@ -8055,8 +8055,10 @@ EOF | ||
| 78 | else | ||
| 79 | # We only want to hardcode in an rpath if it isn't in the | ||
| 80 | # default dlsearch path. | ||
| 81 | + func_normal_abspath "$libdir" | ||
| 82 | + libdir_norm=$func_normal_abspath_result | ||
| 83 | case " $sys_lib_dlsearch_path " in | ||
| 84 | - *" $libdir "*) ;; | ||
| 85 | + *" $libdir_norm "*) ;; | ||
| 86 | *) eval flag=\"$hardcode_libdir_flag_spec\" | ||
| 87 | func_append dep_rpath " $flag" | ||
| 88 | ;; | ||
| 89 | @@ -8798,8 +8800,10 @@ EOF | ||
| 90 | else | ||
| 91 | # We only want to hardcode in an rpath if it isn't in the | ||
| 92 | # default dlsearch path. | ||
| 93 | + func_normal_abspath "$libdir" | ||
| 94 | + libdir_norm=$func_normal_abspath_result | ||
| 95 | case " $sys_lib_dlsearch_path " in | ||
| 96 | - *" $libdir "*) ;; | ||
| 97 | + *" $libdir_norm "*) ;; | ||
| 98 | *) eval flag=\"$hardcode_libdir_flag_spec\" | ||
| 99 | rpath+=" $flag" | ||
| 100 | ;; | ||
