Skip to content

Commit

Permalink
[lldb] Update crashlog.py to accept multiple results from mdfind
Browse files Browse the repository at this point in the history
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
  • Loading branch information
JDevlieghere committed Sep 7, 2021
1 parent f8d2cd1 commit 4da5a44
Showing 1 changed file with 15 additions and 9 deletions.
24 changes: 15 additions & 9 deletions lldb/examples/python/crashlog.py
Expand Up @@ -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 (
Expand Down

0 comments on commit 4da5a44

Please sign in to comment.