mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-11-24 13:21:05 +00:00
Bug 1516228 - Use llvm-objdump for ELF in dependentlibs.py, too. r=firefox-build-system-reviewers,mshal
Depends on D17465 Differential Revision: https://phabricator.services.mozilla.com/D17466 --HG-- extra : moz-landing-system : lando
This commit is contained in:
parent
1fc4b9344e
commit
a998ad0269
@ -29,25 +29,16 @@ 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)
|
||||
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
|
||||
|
||||
@ -99,7 +90,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:
|
||||
|
Loading…
Reference in New Issue
Block a user