aboutsummaryrefslogtreecommitdiff
path: root/debug_info_test/debug_info_test.py
diff options
context:
space:
mode:
Diffstat (limited to 'debug_info_test/debug_info_test.py')
-rwxr-xr-xdebug_info_test/debug_info_test.py57
1 files changed, 57 insertions, 0 deletions
diff --git a/debug_info_test/debug_info_test.py b/debug_info_test/debug_info_test.py
new file mode 100755
index 00000000..f5afd644
--- /dev/null
+++ b/debug_info_test/debug_info_test.py
@@ -0,0 +1,57 @@
+#!/usr/bin/python
+
+# 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))