[Lldb-commits] [lldb] 4da5a44 - [lldb] Update crashlog.py to accept multiple results from mdfind
Jonas Devlieghere via lldb-commits
lldb-commits at lists.llvm.org
Tue Sep 7 08:42:26 PDT 2021
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 (
More information about the lldb-commits
mailing list