You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

68 lines
1.3 KiB

#!/usr/bin/env python3
# -*- coding: utf-8 -*-
# Copyright 2018 The Chromium OS Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
"""Test for debug info."""
from __future__ import print_function
import os
import subprocess
import sys
import check_icf
import check_cus
import check_exist
elf_checks = [
check_exist.check_exist_all, check_cus.check_compile_units,
check_icf.check_identical_code_folding
]
def scanelf(root):
"""Find ELFs in root.
Args:
root: root dir to start with the search.
Returns:
Filenames of ELFs in root.
"""
p = subprocess.Popen(['scanelf', '-y', '-B', '-F', '%F', '-R', root],
stdout=subprocess.PIPE,
encoding='utf-8')
return [l.strip() for l in p.stdout]
def Main(argv):
if len(argv) < 2:
print('usage: %s [file|dir]')
return 1
files = []
cand = argv[1]
if os.path.isfile(cand):
files = [cand]
elif os.path.isdir(cand):
files = scanelf(cand)
else:
print('usage: %s [file|dir]')
return 1
failed = False
for f in files:
for c in elf_checks:
if not c(f):
failed = True
if failed:
return 1
return 0
if __name__ == '__main__':
sys.exit(Main(sys.argv))