diff options
| author | Evgeniy Stepanov <eugeni.stepanov@gmail.com> | 2015-05-05 22:51:35 +0000 |
|---|---|---|
| committer | Evgeniy Stepanov <eugeni.stepanov@gmail.com> | 2015-05-05 22:51:35 +0000 |
| commit | e8b9d791c2e80da2349d5c89a0d4ca8c2bcd835d (patch) | |
| tree | 847a6f55266bb0d56319749ce4bd950277bbe9e5 /compiler-rt/lib/sanitizer_common/scripts | |
| parent | ce9ad757c7034bfa37b00d014755997b27948c96 (diff) | |
| download | bcm5719-llvm-e8b9d791c2e80da2349d5c89a0d4ca8c2bcd835d.tar.gz bcm5719-llvm-e8b9d791c2e80da2349d5c89a0d4ca8c2bcd835d.zip | |
[asan] Use a version script to limit the symbols exported by the ASan shared runtime library.
llvm-svn: 236551
Diffstat (limited to 'compiler-rt/lib/sanitizer_common/scripts')
| -rwxr-xr-x | compiler-rt/lib/sanitizer_common/scripts/gen_dynamic_list.py | 21 |
1 files changed, 17 insertions, 4 deletions
diff --git a/compiler-rt/lib/sanitizer_common/scripts/gen_dynamic_list.py b/compiler-rt/lib/sanitizer_common/scripts/gen_dynamic_list.py index 7bab230650c..a5fed7e05cf 100755 --- a/compiler-rt/lib/sanitizer_common/scripts/gen_dynamic_list.py +++ b/compiler-rt/lib/sanitizer_common/scripts/gen_dynamic_list.py @@ -14,6 +14,7 @@ # gen_dynamic_list.py libclang_rt.*san*.a [ files ... ] # #===------------------------------------------------------------------------===# +import argparse import os import re import subprocess @@ -49,10 +50,17 @@ def get_global_functions(library): return functions def main(argv): + parser = argparse.ArgumentParser() + parser.add_argument('--version-list', action='store_true') + parser.add_argument('--extra', default=[], action='append') + parser.add_argument('libraries', default=[], nargs='+') + args = parser.parse_args() + result = [] - library = argv[1] - all_functions = get_global_functions(library) + all_functions = [] + for library in args.libraries: + all_functions.extend(get_global_functions(library)) function_set = set(all_functions) for func in all_functions: # Export new/delete operators. @@ -74,15 +82,20 @@ def main(argv): result.append(func) # Additional exported functions from files. - for fname in argv[2:]: + for fname in args.extra: f = open(fname, 'r') for line in f: result.append(line.rstrip()) # Print the resulting list in the format recognized by ld. print('{') + if args.version_list: + print('global:') result.sort() for f in result: - print(' ' + f + ';') + print(' ' + f.encode('utf-8') + ';') + if args.version_list: + print('local:') + print(' *;') print('};') if __name__ == '__main__': |

