summary refs log tree commit diff
path: root/pkgs/applications/networking/browsers/firefox/lto-dependentlibs-generation-ffx83.patch
blob: b6f1b81fa9fe357b940080b68475657be0e60f2b (plain) (blame)
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
--- a/toolkit/library/build/dependentlibs.py
+++ b/toolkit/library/build/dependentlibs.py
@@ -36,26 +36,17 @@ def dependentlibs_win32_objdump(lib):
     proc.wait()
     return deps
 
-def dependentlibs_readelf(lib):
+def dependentlibs_elf_objdump(lib):
     '''Returns the list of dependencies declared in the given ELF .so'''
-    proc = subprocess.Popen([substs.get('TOOLCHAIN_PREFIX', '') + 'readelf', '-d', lib], stdout = subprocess.PIPE,
+    proc = subprocess.Popen([substs['LLVM_OBJDUMP'], '--private-headers', lib], stdout = subprocess.PIPE,
                             universal_newlines=True)
     deps = []
     for line in proc.stdout:
-        # Each line has the following format:
-        #  tag (TYPE)          value
-        # or with BSD readelf:
-        #  tag TYPE            value
-        # Looking for NEEDED type entries
-        tmp = line.split(' ', 3)
-        if len(tmp) > 3 and 'NEEDED' in tmp[2]:
-            # NEEDED lines look like:
-            # 0x00000001 (NEEDED)             Shared library: [libname]
-            # or with BSD readelf:
-            # 0x00000001 NEEDED               Shared library: [libname]
-            match = re.search('\[(.*)\]', tmp[3])
-            if match:
-                deps.append(match.group(1))
+        # We are looking for lines with the format:
+        #   NEEDED             libname
+        tmp = line.split()
+        if len(tmp) == 2 and tmp[0] == 'NEEDED':
+            deps.append(tmp[1])
     proc.wait()
     return deps
 
@@ -110,7 +101,7 @@ def gen_list(output, lib):
     libpaths = [os.path.join(substs['DIST'], 'bin')]
     binary_type = get_type(lib)
     if binary_type == ELF:
-        func = dependentlibs_readelf
+        func = dependentlibs_elf_objdump
     elif binary_type == MACHO:
         func = dependentlibs_mac_objdump
     else: