#!/usr/bin/python2 # 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. 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) 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))