blob: c324bf4c9d2645f26a49eacc186c12a7ee762713 [file] [log] [blame]
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
# Copyright 2018 The ChromiumOS Authors
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
"""Test for debug info."""
import os
import subprocess
import sys
import check_cus
import check_exist
import check_icf
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))