diff options
author | Eric Fiselier <eric@efcs.ca> | 2017-01-18 00:05:01 +0000 |
---|---|---|
committer | Eric Fiselier <eric@efcs.ca> | 2017-01-18 00:05:01 +0000 |
commit | 1da55f532c55867b77d867fe6eb59fb1ea558394 (patch) | |
tree | ed970c93ef44df871b37c81c6800cd4ace5b860b /libcxx/utils/sym_check | |
parent | 0e9f681dee6fb73e312da4ce5bf766ab918cbb57 (diff) | |
download | bcm5719-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.py | 4 | ||||
-rwxr-xr-x | libcxx/utils/sym_check/sym_diff.py | 14 |
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() |