| OLD | NEW |
| 1 #! /usr/bin/python | 1 #! /usr/bin/python |
| 2 # -*- coding: utf-8 -*- | 2 # -*- coding: utf-8 -*- |
| 3 # | 3 # |
| 4 # Copyright (C) 2011-2014, International Business Machines | 4 # Copyright (C) 2011-2015, International Business Machines |
| 5 # Corporation and others. All Rights Reserved. | 5 # Corporation and others. All Rights Reserved. |
| 6 # | 6 # |
| 7 # file name: depstest.py | 7 # file name: depstest.py |
| 8 # | 8 # |
| 9 # created on: 2011may24 | 9 # created on: 2011may24 |
| 10 | 10 |
| 11 """ICU dependency tester. | 11 """ICU dependency tester. |
| 12 | 12 |
| 13 This probably works only on Linux. | 13 This probably works only on Linux. |
| 14 | 14 |
| (...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 53 stdout=subprocess.PIPE).communicate()[0] | 53 stdout=subprocess.PIPE).communicate()[0] |
| 54 obj_imports = set() | 54 obj_imports = set() |
| 55 obj_exports = set() | 55 obj_exports = set() |
| 56 for line in nm_result.splitlines(): | 56 for line in nm_result.splitlines(): |
| 57 fields = line.split("|") | 57 fields = line.split("|") |
| 58 if len(fields) == 1: continue | 58 if len(fields) == 1: continue |
| 59 name = fields[0].strip() | 59 name = fields[0].strip() |
| 60 # Ignore symbols like '__cxa_pure_virtual', | 60 # Ignore symbols like '__cxa_pure_virtual', |
| 61 # 'vtable for __cxxabiv1::__si_class_type_info' or | 61 # 'vtable for __cxxabiv1::__si_class_type_info' or |
| 62 # 'DW.ref.__gxx_personality_v0'. | 62 # 'DW.ref.__gxx_personality_v0'. |
| 63 if name.startswith("__cxa") or "__cxxabi" in name or "__gxx" in name: | 63 # '__dso_handle' belongs to __cxa_atexit(). |
| 64 if (name.startswith("__cxa") or "__cxxabi" in name or "__gxx" in name or |
| 65 name == "__dso_handle"): |
| 64 _ignored_symbols.add(name) | 66 _ignored_symbols.add(name) |
| 65 continue | 67 continue |
| 66 type = fields[2].strip() | 68 type = fields[2].strip() |
| 67 if type == "U": | 69 if type == "U": |
| 68 obj_imports.add(name) | 70 obj_imports.add(name) |
| 69 else: | 71 else: |
| 70 obj_exports.add(name) | 72 obj_exports.add(name) |
| 71 _symbols_to_files[name] = lib_obj_name | 73 _symbols_to_files[name] = lib_obj_name |
| 72 # Is this a vtable? E.g., "vtable for icu_49::ByteSink". | 74 # Is this a vtable? E.g., "vtable for icu_49::ByteSink". |
| 73 if name.startswith("vtable for icu"): | 75 if name.startswith("vtable for icu"): |
| (...skipping 113 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 187 if _ignored_symbols: | 189 if _ignored_symbols: |
| 188 print "Info: ignored symbols:\n%s" % sorted(_ignored_symbols) | 190 print "Info: ignored symbols:\n%s" % sorted(_ignored_symbols) |
| 189 if not _return_value: | 191 if not _return_value: |
| 190 print "OK: Specified and actual dependencies match." | 192 print "OK: Specified and actual dependencies match." |
| 191 else: | 193 else: |
| 192 print "Error: There were errors, please fix them and re-run. Processing may
have terminated abnormally." | 194 print "Error: There were errors, please fix them and re-run. Processing may
have terminated abnormally." |
| 193 return _return_value | 195 return _return_value |
| 194 | 196 |
| 195 if __name__ == "__main__": | 197 if __name__ == "__main__": |
| 196 sys.exit(main()) | 198 sys.exit(main()) |
| OLD | NEW |