mirror of
https://github.com/NixOS/nixpkgs.git
synced 2024-12-25 03:17:13 +00:00
7415d0589d
Enable LTO support on Linux by default again. Add patch to fix dependentlibs.list generation under LTO. This is necessary for fixing firefox-wayland crashing when built with LTO. Add makeFlags which set ar, ranlib, and nm to be llvm-ar, llvm-ranlib and llvm-nm when building with llvm-based LTO. (bmo#1480005)
46 lines
1.8 KiB
Diff
46 lines
1.8 KiB
Diff
--- 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:
|