1*4882a593SmuzhiyunFrom 2480efa8411523cf046094492192a5ee451aae5d Mon Sep 17 00:00:00 2001
2*4882a593SmuzhiyunFrom: Eelco Dolstra <eelco.dolstra@logicblox.com>
3*4882a593SmuzhiyunDate: Mon, 19 Sep 2016 17:31:37 +0200
4*4882a593SmuzhiyunSubject: [PATCH] Remove apparently incorrect usage of "static"
5*4882a593Smuzhiyun
6*4882a593Smuzhiyun[Upstream-commit: https://github.com/NixOS/patchelf/commit/a365bcb7d7025da51b33165ef7ebc7180199a05e
7*4882a593SmuzhiyunThis patch also removes the DT_INIT symbols from needed_libs (DT_INIT
8*4882a593Smuzhiyunpoints to library initialisation function, not to needed libraries...)]
9*4882a593SmuzhiyunSigned-off-by: Wolfgang Grandegger <wg@grandegger.com>
10*4882a593Smuzhiyun---
11*4882a593Smuzhiyun src/patchelf.cc | 8 +++-----
12*4882a593Smuzhiyun 1 file changed, 3 insertions(+), 5 deletions(-)
13*4882a593Smuzhiyun
14*4882a593Smuzhiyundiff --git a/src/patchelf.cc b/src/patchelf.cc
15*4882a593Smuzhiyunindex 136098f..c870638 100644
16*4882a593Smuzhiyun--- a/src/patchelf.cc
17*4882a593Smuzhiyun+++ b/src/patchelf.cc
18*4882a593Smuzhiyun@@ -941,7 +941,6 @@ void ElfFile<ElfFileParamNames>::modifySoname(sonameMode op, const string & newS
19*4882a593Smuzhiyun     assert(strTabAddr == rdi(shdrDynStr.sh_addr));
20*4882a593Smuzhiyun
21*4882a593Smuzhiyun     /* Walk through the dynamic section, look for the DT_SONAME entry. */
22*4882a593Smuzhiyun-    static vector<string> neededLibs;
23*4882a593Smuzhiyun     dyn = (Elf_Dyn *) (contents + rdi(shdrDynamic.sh_offset));
24*4882a593Smuzhiyun     Elf_Dyn * dynSoname = 0;
25*4882a593Smuzhiyun     char * soname = 0;
26*4882a593Smuzhiyun@@ -949,8 +948,7 @@ void ElfFile<ElfFileParamNames>::modifySoname(sonameMode op, const string & newS
27*4882a593Smuzhiyun         if (rdi(dyn->d_tag) == DT_SONAME) {
28*4882a593Smuzhiyun             dynSoname = dyn;
29*4882a593Smuzhiyun             soname = strTab + rdi(dyn->d_un.d_val);
30*4882a593Smuzhiyun-        } else if (rdi(dyn->d_tag) == DT_INIT)
31*4882a593Smuzhiyun-            neededLibs.push_back(string(strTab + rdi(dyn->d_un.d_val)));
32*4882a593Smuzhiyun+        }
33*4882a593Smuzhiyun     }
34*4882a593Smuzhiyun
35*4882a593Smuzhiyun     if (op == printSoname) {
36*4882a593Smuzhiyun@@ -1058,7 +1056,7 @@ void ElfFile<ElfFileParamNames>::modifyRPath(RPathOp op, string newRPath)
37*4882a593Smuzhiyun        unless you use its `--enable-new-dtag' option, in which case it
38*4882a593Smuzhiyun        generates a DT_RPATH and DT_RUNPATH pointing at the same
39*4882a593Smuzhiyun        string. */
40*4882a593Smuzhiyun-    static vector<string> neededLibs;
41*4882a593Smuzhiyun+    vector<string> neededLibs;
42*4882a593Smuzhiyun     dyn = (Elf_Dyn *) (contents + rdi(shdrDynamic.sh_offset));
43*4882a593Smuzhiyun     Elf_Dyn * dynRPath = 0, * dynRunPath = 0;
44*4882a593Smuzhiyun     char * rpath = 0;
45*4882a593Smuzhiyun@@ -1091,7 +1089,7 @@ void ElfFile<ElfFileParamNames>::modifyRPath(RPathOp op, string newRPath)
46*4882a593Smuzhiyun     /* For each directory in the RPATH, check if it contains any
47*4882a593Smuzhiyun        needed library. */
48*4882a593Smuzhiyun     if (op == rpShrink) {
49*4882a593Smuzhiyun-        static vector<bool> neededLibFound(neededLibs.size(), false);
50*4882a593Smuzhiyun+        vector<bool> neededLibFound(neededLibs.size(), false);
51*4882a593Smuzhiyun
52*4882a593Smuzhiyun         newRPath = "";
53*4882a593Smuzhiyun
54*4882a593Smuzhiyun--
55*4882a593Smuzhiyun1.9.1
56*4882a593Smuzhiyun
57