Index: tools/find_runtime_symbols/prepare_symbol_info.py |
diff --git a/tools/find_runtime_symbols/prepare_symbol_info.py b/tools/find_runtime_symbols/prepare_symbol_info.py |
index 17d34deaa22b0fca032125ffec44c0e0fd12872d..befe314ab0718f1f23c061cedfc375c495606cd0 100755 |
--- a/tools/find_runtime_symbols/prepare_symbol_info.py |
+++ b/tools/find_runtime_symbols/prepare_symbol_info.py |
@@ -6,6 +6,7 @@ |
import hashlib |
import json |
import logging |
+import optparse |
import os |
import re |
import shutil |
@@ -209,23 +210,40 @@ def main(): |
sys.stderr.write('This script work only on Linux.') |
return 1 |
+ option_parser = optparse.OptionParser( |
+ '%s /path/to/maps [/path/to/output_data_dir/]' % sys.argv[0]) |
+ option_parser.add_option('--alternative-dirs', dest='alternative_dirs', |
+ metavar='/path/on/target@/path/on/host[:...]', |
+ help='Read files in /path/on/host/ instead of ' |
hajimehoshi
2014/08/13 05:13:54
What does '/path/on/host' mean?
Dai Mikurube (NOT FULLTIME)
2014/08/13 05:17:03
It does mean a path on a host machine (e.g. a mach
|
+ 'files in /path/on/target/.') |
+ option_parser.add_option('--verbose', dest='verbose', action='store_true', |
+ help='Enable verbose mode.') |
+ options, args = option_parser.parse_args(sys.argv) |
+ alternative_dirs_dict = {} |
+ if options.alternative_dirs: |
+ for alternative_dir_pair in options.alternative_dirs.split(':'): |
+ target_path, host_path = alternative_dir_pair.split('@', 1) |
+ alternative_dirs_dict[target_path] = host_path |
+ |
LOGGER.setLevel(logging.DEBUG) |
handler = logging.StreamHandler() |
- handler.setLevel(logging.INFO) |
+ if options.verbose: |
+ handler.setLevel(logging.DEBUG) |
+ else: |
+ handler.setLevel(logging.INFO) |
formatter = logging.Formatter('%(message)s') |
handler.setFormatter(formatter) |
LOGGER.addHandler(handler) |
- # TODO(dmikurube): Specify |alternative_dirs| from command line. |
- if len(sys.argv) < 2: |
- sys.stderr.write("""Usage: |
-%s /path/to/maps [/path/to/output_data_dir/] |
-""" % sys.argv[0]) |
+ if len(args) < 2: |
+ option_parser.error('Argument error.') |
return 1 |
- elif len(sys.argv) == 2: |
- result, _ = prepare_symbol_info(sys.argv[1]) |
+ elif len(args) == 2: |
+ result, _ = prepare_symbol_info(args[1], |
+ alternative_dirs=alternative_dirs_dict) |
else: |
- result, _ = prepare_symbol_info(sys.argv[1], sys.argv[2]) |
+ result, _ = prepare_symbol_info(args[1], args[2], |
+ alternative_dirs=alternative_dirs_dict) |
return not result |