1c911518760f9ab0412a412edf5c11be3ac1f8a78dpranke@chromium.org#!/usr/bin/python
2c911518760f9ab0412a412edf5c11be3ac1f8a78dpranke@chromium.org#
3c911518760f9ab0412a412edf5c11be3ac1f8a78dpranke@chromium.org# Copyright 2014 The Chromium Authors. All rights reserved.
4c911518760f9ab0412a412edf5c11be3ac1f8a78dpranke@chromium.org# Use of this source code is governed by a BSD-style license that can be
5c911518760f9ab0412a412edf5c11be3ac1f8a78dpranke@chromium.org# found in the LICENSE file.
6c911518760f9ab0412a412edf5c11be3ac1f8a78dpranke@chromium.org
7c911518760f9ab0412a412edf5c11be3ac1f8a78dpranke@chromium.org"This script is used to run obj_int_extract and output the result to a file."
8c911518760f9ab0412a412edf5c11be3ac1f8a78dpranke@chromium.org
9c911518760f9ab0412a412edf5c11be3ac1f8a78dpranke@chromium.orgimport optparse
10c911518760f9ab0412a412edf5c11be3ac1f8a78dpranke@chromium.orgimport subprocess
11c911518760f9ab0412a412edf5c11be3ac1f8a78dpranke@chromium.orgimport sys
12c911518760f9ab0412a412edf5c11be3ac1f8a78dpranke@chromium.org
13c911518760f9ab0412a412edf5c11be3ac1f8a78dpranke@chromium.orgparser = optparse.OptionParser()
14c911518760f9ab0412a412edf5c11be3ac1f8a78dpranke@chromium.orgparser.description = __doc__
15c911518760f9ab0412a412edf5c11be3ac1f8a78dpranke@chromium.orgparser.add_option('-e', '--executable', help='path to obj_int_extract.')
16c911518760f9ab0412a412edf5c11be3ac1f8a78dpranke@chromium.orgparser.add_option('-f', '--format', help='binary format (gas or rvds).')
17c911518760f9ab0412a412edf5c11be3ac1f8a78dpranke@chromium.orgparser.add_option('-b', '--binary', help='path to binary to parse.')
18c911518760f9ab0412a412edf5c11be3ac1f8a78dpranke@chromium.orgparser.add_option('-o', '--output', help='path to write extracted output to.')
19c911518760f9ab0412a412edf5c11be3ac1f8a78dpranke@chromium.org
20c911518760f9ab0412a412edf5c11be3ac1f8a78dpranke@chromium.org
21c911518760f9ab0412a412edf5c11be3ac1f8a78dpranke@chromium.orgoptions, args = parser.parse_args()
22c911518760f9ab0412a412edf5c11be3ac1f8a78dpranke@chromium.orgif (not options.executable or not options.format or not options.binary or
23c911518760f9ab0412a412edf5c11be3ac1f8a78dpranke@chromium.org    not options.output):
24c911518760f9ab0412a412edf5c11be3ac1f8a78dpranke@chromium.org  parser.error('Must specify all four arguments.')
25c911518760f9ab0412a412edf5c11be3ac1f8a78dpranke@chromium.org  sys.exit(1)
26c911518760f9ab0412a412edf5c11be3ac1f8a78dpranke@chromium.org
27c911518760f9ab0412a412edf5c11be3ac1f8a78dpranke@chromium.orgwith open(options.output, 'w') as fh:
28c911518760f9ab0412a412edf5c11be3ac1f8a78dpranke@chromium.org  subprocess.check_call([options.executable, options.format, options.binary],
29c911518760f9ab0412a412edf5c11be3ac1f8a78dpranke@chromium.org                        stdout=fh)
30c911518760f9ab0412a412edf5c11be3ac1f8a78dpranke@chromium.org
31c911518760f9ab0412a412edf5c11be3ac1f8a78dpranke@chromium.orgsys.exit(0)
32