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:
Mike Hommey 2019-01-24 15:55:59 +00:00
Родитель 1fc4b9344e
Коммит a998ad0269
1 изменённых файлов: 8 добавлений и 17 удалений

Просмотреть файл

@ -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: