Author: Jonas Devlieghere Date: 2021-09-07T08:36:58-07:00 New Revision: 4da5a446f818cd979868d830eced9770a886a5b6
URL: https://github.com/llvm/llvm-project/commit/4da5a446f818cd979868d830eced9770a886a5b6 DIFF: https://github.com/llvm/llvm-project/commit/4da5a446f818cd979868d830eced9770a886a5b6.diff LOG: [lldb] Update crashlog.py to accept multiple results from mdfind mdfind can return multiple results, some of which are not even dSYM bundles, but Xcode archives (.xcrachive). Currently, we end up concatenating the paths, which is obviously bogus. This patch not only fixes that, but now also skips paths that don't have a Contents/Resources/DWARF subdirectory. rdar://81270312 Differential revision: https://reviews.llvm.org/D109263 Added: Modified: lldb/examples/python/crashlog.py Removed: ################################################################################ diff --git a/lldb/examples/python/crashlog.py b/lldb/examples/python/crashlog.py index 79b290ceba8a2..e6d88a033a232 100755 --- a/lldb/examples/python/crashlog.py +++ b/lldb/examples/python/crashlog.py @@ -293,18 +293,24 @@ def locate_module_and_debug_symbols(self): return False if not self.resolved_path and not os.path.exists(self.path): try: - dsym = subprocess.check_output( + mdfind_results = subprocess.check_output( ["/usr/bin/mdfind", - "com_apple_xcode_dsym_uuids == %s"%uuid_str]).decode("utf-8")[:-1] - if dsym and os.path.exists(dsym): - print(('falling back to binary inside "%s"'%dsym)) - self.symfile = dsym + "com_apple_xcode_dsym_uuids == %s" % uuid_str]).decode("utf-8").splitlines() + found_matching_slice = False + for dsym in mdfind_results: dwarf_dir = os.path.join(dsym, 'Contents/Resources/DWARF') + if not os.path.exists(dwarf_dir): + # Not a dSYM bundle, probably an Xcode archive. + continue + print('falling back to binary inside "%s"' % dsym) + self.symfile = dsym for filename in os.listdir(dwarf_dir): - self.path = os.path.join(dwarf_dir, filename) - if not self.find_matching_slice(): - return False - break + self.path = os.path.join(dwarf_dir, filename) + if self.find_matching_slice(): + found_matching_slice = True + break + if found_matching_slice: + break except: pass if (self.resolved_path and os.path.exists(self.resolved_path)) or ( _______________________________________________ lldb-commits mailing list lldb-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits