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 | ;; | ||