| #!/usr/bin/env python3 |
| # |
| # Copyright 2013 The Flutter Authors. All rights reserved. |
| # Use of this source code is governed by a BSD-style license that can be |
| # found in the LICENSE file. |
| |
| import argparse |
| import os |
| import subprocess |
| import sys |
| |
| # BFD architecture names recognized by objcopy. |
| BFD_ARCH = { |
| 'arm': 'arm', |
| 'arm64': 'aarch64', |
| 'x86': 'i386', |
| 'x64': 'i386:x86-64', |
| } |
| |
| # BFD target names recognized by objcopy. |
| BFD_TARGET = { |
| 'arm': 'elf32-littlearm', |
| 'arm64': 'elf64-littleaarch64', |
| 'x86': 'elf32-i386', |
| 'x64': 'elf64-x86-64', |
| } |
| |
| def main(): |
| parser = argparse.ArgumentParser(description='Convert a data file to an object file') |
| parser.add_argument('--objcopy', type=str, required=True) |
| parser.add_argument('--input', type=str, required=True) |
| parser.add_argument('--output', type=str, required=True) |
| parser.add_argument('--arch', type=str, required=True) |
| |
| args = parser.parse_args() |
| |
| input_dir, input_file = os.path.split(args.input) |
| output_path = os.path.abspath(args.output) |
| |
| subprocess.check_call([ |
| args.objcopy, |
| '-I', 'binary', |
| '-O', BFD_TARGET[args.arch], |
| '-B', BFD_ARCH[args.arch], |
| input_file, |
| output_path, |
| ], cwd=input_dir) |
| |
| if __name__ == '__main__': |
| sys.exit(main()) |