Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1416)

Unified Diff: tools/valgrind/asan/asan_symbolize.py

Issue 728233003: Reland https://codereview.chromium.org/292153006 with minor changes. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 6 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « chrome/chrome_exe.gypi ('k') | tools/valgrind/asan/third_party/asan_symbolize.py » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: tools/valgrind/asan/asan_symbolize.py
diff --git a/tools/valgrind/asan/asan_symbolize.py b/tools/valgrind/asan/asan_symbolize.py
index ba8d69859fdb290451c6d1d1f931520004e1f316..ec70979316837031bc798dc067b5a2f0eabcc852 100755
--- a/tools/valgrind/asan/asan_symbolize.py
+++ b/tools/valgrind/asan/asan_symbolize.py
@@ -45,13 +45,50 @@ def set_symbolizer_path():
os.environ['LLVM_SYMBOLIZER_PATH'] = os.path.abspath(symbolizer_path)
+def split_path(path):
+ parts = []
+ while True:
+ path, tail = os.path.split(path)
+ if tail:
+ parts.insert(0, tail)
+ else:
+ parts.insert(0, path)
+ break
+ return parts
+
+def chrome_dsym_hints(binary):
+ parts = split_path(binary)
+ app_pos = -1
+ framework_pos = -1
+ for index in range(len(parts)):
+ part = parts[index]
+ if app_pos == -1 and part.endswith('.app'):
+ app_pos = index
+ if framework_pos == -1 and part.endswith('.framework'):
+ framework_pos = index
+ if framework_pos < 0:
+ if app_pos < 0:
+ return []
+ else:
+ parts = parts[:app_pos + 1]
+ else:
+ if app_pos > 0:
+ assert(app_pos < framework_pos)
+ parts[app_pos] = parts[framework_pos]
+ parts = parts[:app_pos + 1]
+ else:
+ parts = parts[:framework_pos + 1]
+ result = '%s.dSYM' % reduce(os.path.join, parts)
+ return [result]
+
+
def main():
disable_buffering()
set_symbolizer_path()
asan_symbolize.demangle = True
asan_symbolize.fix_filename_patterns = sys.argv[1:]
asan_symbolize.logfile = sys.stdin
- loop = asan_symbolize.SymbolizationLoop()
+ loop = asan_symbolize.SymbolizationLoop(dsym_hint_producer=chrome_dsym_hints)
loop.process_logfile()
if __name__ == '__main__':
« no previous file with comments | « chrome/chrome_exe.gypi ('k') | tools/valgrind/asan/third_party/asan_symbolize.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698