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

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

Issue 580233003: Revert of Roll asan_symbolize.py to llvm r218071. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 6 years, 3 months 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 | « tools/valgrind/asan/third_party/README.chromium ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: tools/valgrind/asan/third_party/asan_symbolize.py
diff --git a/tools/valgrind/asan/third_party/asan_symbolize.py b/tools/valgrind/asan/third_party/asan_symbolize.py
index 357366f11e4f093aa0d70190388b1e3023068381..6219c0e8b7acfe5e8b7bf9dbd31a4e1122d37a06 100755
--- a/tools/valgrind/asan/third_party/asan_symbolize.py
+++ b/tools/valgrind/asan/third_party/asan_symbolize.py
@@ -7,7 +7,6 @@
# License. See LICENSE.TXT for details.
#
#===------------------------------------------------------------------------===#
-import argparse
import bisect
import getopt
import os
@@ -19,26 +18,18 @@
symbolizers = {}
DEBUG = False
-demangle = False
-binutils_prefix = None
-sysroot_path = None
-binary_name_filter = None
-fix_filename_patterns = None
-logfile = None
+demangle = False;
+
# FIXME: merge the code that calls fix_filename().
def fix_filename(file_name):
- if fix_filename_patterns:
- for path_to_cut in fix_filename_patterns:
- file_name = re.sub('.*' + path_to_cut, '', file_name)
+ for path_to_cut in sys.argv[1:]:
+ file_name = re.sub('.*' + path_to_cut, '', file_name)
file_name = re.sub('.*asan_[a-z_]*.cc:[0-9]*', '_asan_rtl_', file_name)
file_name = re.sub('.*crtstuff.c:0', '???:0', file_name)
return file_name
-def sysroot_path_filter(binary_name):
- return sysroot_path + binary_name
-
-def guess_arch(addr):
+def GuessArch(addr):
# Guess which arch we're running. 10 = len('0x') + 8 hex digits.
if len(addr) > 10:
return 'x86_64'
@@ -69,7 +60,7 @@
def __init__(self, symbolizer_path, addr):
super(LLVMSymbolizer, self).__init__()
self.symbolizer_path = symbolizer_path
- self.default_arch = guess_arch(addr)
+ self.default_arch = GuessArch(addr)
self.pipe = self.open_llvm_symbolizer()
def open_llvm_symbolizer(self):
@@ -133,10 +124,7 @@
self.pipe = self.open_addr2line()
def open_addr2line(self):
- addr2line_tool = 'addr2line'
- if binutils_prefix:
- addr2line_tool = binutils_prefix + addr2line_tool
- cmd = [addr2line_tool, '-f']
+ cmd = ['addr2line', '-f']
if demangle:
cmd += ['--demangle']
cmd += ['-e', self.binary]
@@ -194,7 +182,7 @@
def __init__(self, addr, binary):
super(DarwinSymbolizer, self).__init__()
self.binary = binary
- self.arch = guess_arch(addr)
+ self.arch = GuessArch(addr)
self.open_atos()
def open_atos(self):
@@ -340,7 +328,7 @@
# E.g. in Chrome several binaries may share a single .dSYM.
self.binary_name_filter = binary_name_filter
self.system = os.uname()[0]
- if self.system not in ['Linux', 'Darwin', 'FreeBSD']:
+ if self.system not in ['Linux', 'Darwin']:
raise Exception('Unknown system')
self.llvm_symbolizer = None
self.frame_no = 0
@@ -375,14 +363,14 @@
self.frame_no += 1
return result
- def process_logfile(self):
+ def process_stdin(self):
self.frame_no = 0
while True:
- line = logfile.readline()
+ line = sys.stdin.readline()
if not line:
break
processed = self.process_line(line)
- print '\n'.join(processed)
+ print ''.join(processed)
def process_line(self, line):
self.current_line = line.rstrip()
@@ -409,33 +397,9 @@
if __name__ == '__main__':
- parser = argparse.ArgumentParser(formatter_class=argparse.RawDescriptionHelpFormatter,
- description='ASan symbolization script',
- epilog='''Example of use:
- asan_symbolize.py -c "$HOME/opt/cross/bin/arm-linux-gnueabi-" -s "$HOME/SymbolFiles" < asan.log''')
- parser.add_argument('path_to_cut', nargs='*',
- help='pattern to be cut from the result file path ')
- parser.add_argument('-d','--demangle', action='store_true',
- help='demangle function names')
- parser.add_argument('-s', metavar='SYSROOT',
- help='set path to sysroot for sanitized binaries')
- parser.add_argument('-c', metavar='CROSS_COMPILE',
- help='set prefix for binutils')
- parser.add_argument('-l','--logfile', default=sys.stdin, type=argparse.FileType('r'),
- help='set log file name to parse, default is stdin')
- args = parser.parse_args()
- if args.path_to_cut:
- fix_filename_patterns = args.path_to_cut
- if args.demangle:
- demangle = True
- if args.s:
- binary_name_filter = sysroot_path_filter
- sysroot_path = args.s
- if args.c:
- binutils_prefix = args.c
- if args.logfile:
- logfile = args.logfile
- else:
- logfile = sys.stdin
- loop = SymbolizationLoop(binary_name_filter)
- loop.process_logfile()
+ opts, args = getopt.getopt(sys.argv[1:], "d", ["demangle"])
+ for o, a in opts:
+ if o in ("-d", "--demangle"):
+ demangle = True;
+ loop = SymbolizationLoop()
+ loop.process_stdin()
« no previous file with comments | « tools/valgrind/asan/third_party/README.chromium ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698