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

Side by Side Diff: tools/find_runtime_symbols/prepare_symbol_info.py

Issue 299753007: Make find_runtime_tools available for non-Chrome executables. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 6 years, 7 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 unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « no previous file | tools/linux/procfs.py » ('j') | tools/linux/procfs.py » ('J')
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 #!/usr/bin/env python 1 #!/usr/bin/env python
2 # Copyright (c) 2012 The Chromium Authors. All rights reserved. 2 # Copyright (c) 2012 The Chromium Authors. All rights reserved.
3 # Use of this source code is governed by a BSD-style license that can be 3 # Use of this source code is governed by a BSD-style license that can be
4 # found in the LICENSE file. 4 # found in the LICENSE file.
5 5
6 import hashlib 6 import hashlib
7 import json 7 import json
8 import logging 8 import logging
9 import os 9 import os
10 import re 10 import re
(...skipping 136 matching lines...) Expand 10 before | Expand all | Expand 10 after
147 147
148 LOGGER.debug('Listing up symbols.') 148 LOGGER.debug('Listing up symbols.')
149 files = {} 149 files = {}
150 for entry in maps.iter(ProcMaps.executable): 150 for entry in maps.iter(ProcMaps.executable):
151 LOGGER.debug(' %016x-%016x +%06x %s' % ( 151 LOGGER.debug(' %016x-%016x +%06x %s' % (
152 entry.begin, entry.end, entry.offset, entry.name)) 152 entry.begin, entry.end, entry.offset, entry.name))
153 binary_path = entry.name 153 binary_path = entry.name
154 for target_path, host_path in alternative_dirs.iteritems(): 154 for target_path, host_path in alternative_dirs.iteritems():
155 if entry.name.startswith(target_path): 155 if entry.name.startswith(target_path):
156 binary_path = entry.name.replace(target_path, host_path, 1) 156 binary_path = entry.name.replace(target_path, host_path, 1)
157 if not (ProcMaps.EXECUTABLE_PATTERN.match(binary_path) or
158 (os.path.isfile(binary_path) and os.access(binary_path, os.X_OK))):
159 continue
157 nm_filename = _dump_command_result( 160 nm_filename = _dump_command_result(
158 'nm -n --format bsd %s | c++filt' % binary_path, 161 'nm -n --format bsd %s | c++filt' % binary_path,
159 output_dir_path, os.path.basename(binary_path), '.nm') 162 output_dir_path, os.path.basename(binary_path), '.nm')
160 if not nm_filename: 163 if not nm_filename:
161 continue 164 continue
162 readelf_e_filename = _dump_command_result( 165 readelf_e_filename = _dump_command_result(
163 'readelf -eW %s' % binary_path, 166 'readelf -eW %s' % binary_path,
164 output_dir_path, os.path.basename(binary_path), '.readelf-e') 167 output_dir_path, os.path.basename(binary_path), '.readelf-e')
165 if not readelf_e_filename: 168 if not readelf_e_filename:
166 continue 169 continue
(...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after
222 elif len(sys.argv) == 2: 225 elif len(sys.argv) == 2:
223 result, _ = prepare_symbol_info(sys.argv[1]) 226 result, _ = prepare_symbol_info(sys.argv[1])
224 else: 227 else:
225 result, _ = prepare_symbol_info(sys.argv[1], sys.argv[2]) 228 result, _ = prepare_symbol_info(sys.argv[1], sys.argv[2])
226 229
227 return not result 230 return not result
228 231
229 232
230 if __name__ == '__main__': 233 if __name__ == '__main__':
231 sys.exit(main()) 234 sys.exit(main())
OLDNEW
« no previous file with comments | « no previous file | tools/linux/procfs.py » ('j') | tools/linux/procfs.py » ('J')

Powered by Google App Engine
This is Rietveld 408576698