summaryrefslogtreecommitdiffstats
path: root/compiler-rt/lib/sanitizer_common/scripts
diff options
context:
space:
mode:
authorEvgeniy Stepanov <eugeni.stepanov@gmail.com>2015-05-05 22:51:35 +0000
committerEvgeniy Stepanov <eugeni.stepanov@gmail.com>2015-05-05 22:51:35 +0000
commite8b9d791c2e80da2349d5c89a0d4ca8c2bcd835d (patch)
tree847a6f55266bb0d56319749ce4bd950277bbe9e5 /compiler-rt/lib/sanitizer_common/scripts
parentce9ad757c7034bfa37b00d014755997b27948c96 (diff)
downloadbcm5719-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-xcompiler-rt/lib/sanitizer_common/scripts/gen_dynamic_list.py21
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__':
OpenPOWER on IntegriCloud