summaryrefslogtreecommitdiffstats
path: root/meta/recipes-devtools/binutils/binutils/0014-libtool-remove-rpath.patch
blob: d56948f15dab22a7378a81829f279b87e5fa64ce (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
Apply these patches from our libtool patches as not only are redundant RPATHs a
waste of space but they can cause incorrect linking when native packages are
restored from sstate.

fix-rpath.patch:
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.

norm-rpath.patch:
Libtool may be passed link paths of the form "/usr/lib/../lib", which
fool its detection code into thinking it should be included as an
RPATH in the generated binary.  Normalize before comparision.

Upstream-Status: Inappropriate
Signed-off-by: Ross Burton <ross.burton@intel.com>

diff --git a/ltmain.sh b/ltmain.sh
index 683317c..860a16a 100644
--- a/ltmain.sh
+++ b/ltmain.sh
@@ -8053,8 +8053,14 @@ EOF
 		  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
@@ -8790,8 +8796,14 @@ EOF
 	      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
@@ -8841,8 +8853,14 @@ EOF
 	      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
diff --git a/ltmain.sh b/ltmain.sh
index 683317c..860a16a 100644
--- a/ltmain.sh
+++ b/ltmain.sh
@@ -8055,8 +8055,10 @@ EOF
 	      else
                 # We only want to hardcode in an rpath if it isn't in the
                 # default dlsearch path.
+                func_normal_abspath "$libdir"
+                libdir_norm=$func_normal_abspath_result
 	        case " $sys_lib_dlsearch_path " in
-	        *" $libdir "*) ;;
+	        *" $libdir_norm "*) ;;
 	        *) eval flag=\"$hardcode_libdir_flag_spec\"
                    func_append dep_rpath " $flag"
                    ;;
@@ -8798,8 +8800,10 @@ EOF
 	  else
             # We only want to hardcode in an rpath if it isn't in the
             # default dlsearch path.
+            func_normal_abspath "$libdir"
+            libdir_norm=$func_normal_abspath_result
 	    case " $sys_lib_dlsearch_path " in
-	    *" $libdir "*) ;;
+	    *" $libdir_norm "*) ;;
 	    *) eval flag=\"$hardcode_libdir_flag_spec\"
                rpath+=" $flag"
                ;;