[compiler-rt] r189588 - Minor updates to gen_dynamic_list script suggested by glider

Alexey Samsonov samsonov at google.com
Thu Aug 29 08:45:41 PDT 2013


Author: samsonov
Date: Thu Aug 29 10:45:41 2013
New Revision: 189588

URL: http://llvm.org/viewvc/llvm-project?rev=189588&view=rev
Log:
Minor updates to gen_dynamic_list script suggested by glider

Modified:
    compiler-rt/trunk/lib/sanitizer_common/scripts/gen_dynamic_list.py

Modified: compiler-rt/trunk/lib/sanitizer_common/scripts/gen_dynamic_list.py
URL: http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/sanitizer_common/scripts/gen_dynamic_list.py?rev=189588&r1=189587&r2=189588&view=diff
==============================================================================
--- compiler-rt/trunk/lib/sanitizer_common/scripts/gen_dynamic_list.py (original)
+++ compiler-rt/trunk/lib/sanitizer_common/scripts/gen_dynamic_list.py Thu Aug 29 10:45:41 2013
@@ -14,14 +14,25 @@
 #   gen_dynamic_list.py libclang_rt.*san*.a [ files ... ]
 #
 #===------------------------------------------------------------------------===#
-import re
 import os
+import re
 import subprocess
 import sys
 
+new_delete = set(['_ZdaPv', '_ZdaPvRKSt9nothrow_t',
+                  '_ZdlPv', '_ZdlPvRKSt9nothrow_t',
+                  '_Znam', '_ZnamRKSt9nothrow_t',
+                  '_Znwm', '_ZnwmRKSt9nothrow_t'])
+
+versioned_functions = set(['memcpy', 'pthread_cond_broadcast',
+                           'pthread_cond_destroy', 'pthread_cond_signal',
+                           'pthread_cond_timedwait', 'pthread_cond_wait',
+                           'realpath', 'sched_getaffinity'])
+
 def get_global_functions(library):
   functions = []
-  nm_proc = subprocess.Popen(['nm', library], stdout=subprocess.PIPE)
+  nm_proc = subprocess.Popen(['nm', library], stdout=subprocess.PIPE,
+                             stderr=subprocess.PIPE)
   nm_out = nm_proc.communicate()[0].split('\n')
   if nm_proc.returncode != 0:
     raise subprocess.CalledProcessError(nm_proc.returncode, 'nm')
@@ -31,46 +42,42 @@ def get_global_functions(library):
       functions.append(cols[2])
   return functions
 
-result = []
+def main(argv):
+  result = []
 
-library = sys.argv[1]
-all_functions = get_global_functions(library)
-function_set = set(all_functions)
-new_delete = set(['_ZdaPv', '_ZdaPvRKSt9nothrow_t',
-                  '_ZdlPv', '_ZdlPvRKSt9nothrow_t',
-                  '_Znam', '_ZnamRKSt9nothrow_t',
-                  '_Znwm', '_ZnwmRKSt9nothrow_t'])
-versioned_functions = set(['memcpy', 'pthread_cond_broadcast',
-                           'pthread_cond_destroy', 'pthread_cond_signal',
-                           'pthread_cond_timedwait', 'pthread_cond_wait',
-                           'realpath', 'sched_getaffinity'])
-for func in all_functions:
-  # Export new/delete operators.
-  if func in new_delete:
-    result.append(func)
-    continue
-  # Export interceptors.
-  match = re.match('__interceptor_(.*)', func)
-  if match:
-    result.append(func)
-    # We have to avoid exporting the interceptors for versioned library
-    # functions due to gold internal error.
-    orig_name = match.group(1)
-    if orig_name in function_set and orig_name not in versioned_functions:
-      result.append(orig_name)
-    continue
-  # Export sanitizer interface functions.
-  if re.match('__sanitizer_(.*)', func):
-    result.append(func)
-
-# Additional exported functions from files.
-for fname in sys.argv[2:]:
-  f = open(fname, 'r')
-  for line in f:
-    result.append(line.rstrip())
-
-print '{'
-result.sort()
-for f in result:
-  print '  ' + f + ';'
-print '};'
+  library = argv[1]
+  all_functions = get_global_functions(library)
+  function_set = set(all_functions)
+  for func in all_functions:
+    # Export new/delete operators.
+    if func in new_delete:
+      result.append(func)
+      continue
+    # Export interceptors.
+    match = re.match('__interceptor_(.*)', func)
+    if match:
+      result.append(func)
+      # We have to avoid exporting the interceptors for versioned library
+      # functions due to gold internal error.
+      orig_name = match.group(1)
+      if orig_name in function_set and orig_name not in versioned_functions:
+        result.append(orig_name)
+      continue
+    # Export sanitizer interface functions.
+    if re.match('__sanitizer_(.*)', func):
+      result.append(func)
+
+  # Additional exported functions from files.
+  for fname in argv[2:]:
+    f = open(fname, 'r')
+    for line in f:
+      result.append(line.rstrip())
+  # Print the resulting list in the format recognized by ld.
+  print '{'
+  result.sort()
+  for f in result:
+    print '  ' + f + ';'
+  print '};'
+
+if __name__ == '__main__':
+  main(sys.argv)





More information about the llvm-commits mailing list