summaryrefslogtreecommitdiffstats
path: root/libcxx/utils/sym_check
diff options
context:
space:
mode:
authorEric Fiselier <eric@efcs.ca>2017-01-18 00:05:01 +0000
committerEric Fiselier <eric@efcs.ca>2017-01-18 00:05:01 +0000
commit1da55f532c55867b77d867fe6eb59fb1ea558394 (patch)
treeed970c93ef44df871b37c81c6800cd4ace5b860b /libcxx/utils/sym_check
parent0e9f681dee6fb73e312da4ce5bf766ab918cbb57 (diff)
downloadbcm5719-llvm-1da55f532c55867b77d867fe6eb59fb1ea558394.tar.gz
bcm5719-llvm-1da55f532c55867b77d867fe6eb59fb1ea558394.zip
Allow sym_diff.py to report non-zero for non-breaking ABI changes
llvm-svn: 292297
Diffstat (limited to 'libcxx/utils/sym_check')
-rw-r--r--libcxx/utils/sym_check/sym_check/diff.py4
-rwxr-xr-xlibcxx/utils/sym_check/sym_diff.py14
2 files changed, 12 insertions, 6 deletions
diff --git a/libcxx/utils/sym_check/sym_check/diff.py b/libcxx/utils/sym_check/sym_check/diff.py
index 6502a4819a4..c89c4ef696e 100644
--- a/libcxx/utils/sym_check/sym_check/diff.py
+++ b/libcxx/utils/sym_check/sym_check/diff.py
@@ -98,4 +98,6 @@ def report_diff(added_syms, removed_syms, changed_syms, names_only=False,
report += 'ABI BREAKAGE: SYMBOLS ADDED OR REMOVED!'
else:
report += 'Symbols match.'
- return report, int(abi_break)
+ is_different = abi_break or bool(len(added_syms)) \
+ or bool(len(changed_syms))
+ return report, abi_break, is_different
diff --git a/libcxx/utils/sym_check/sym_diff.py b/libcxx/utils/sym_check/sym_diff.py
index 842e908dd42..631f9c6b498 100755
--- a/libcxx/utils/sym_check/sym_diff.py
+++ b/libcxx/utils/sym_check/sym_diff.py
@@ -30,6 +30,10 @@ def main():
parser.add_argument('--only-stdlib-symbols', dest='only_stdlib',
help="Filter all symbols not related to the stdlib",
action='store_true', default=False)
+ parser.add_argument('--strict', dest='strict',
+ help="Exit with a non-zero status if any symbols "
+ "differ",
+ action='store_true', default=False)
parser.add_argument(
'-o', '--output', dest='output',
help='The output file. stdout is used if not given',
@@ -54,16 +58,16 @@ def main():
added, removed, changed = diff.diff(old_syms_list, new_syms_list)
if args.removed_only:
added = {}
- report, is_break = diff.report_diff(added, removed, changed,
- names_only=args.names_only,
- demangle=args.demangle)
+ report, is_break, is_different = diff.report_diff(
+ added, removed, changed, names_only=args.names_only,
+ demangle=args.demangle)
if args.output is None:
print(report)
else:
with open(args.output, 'w') as f:
f.write(report + '\n')
- sys.exit(is_break)
-
+ exit_code = 1 if is_break or (args.strict and is_different) else 0
+ sys.exit(exit_code)
if __name__ == '__main__':
main()
OpenPOWER on IntegriCloud