1*523fa7a6SAndroid Build Coastguard Worker#!/usr/bin/env python3 2*523fa7a6SAndroid Build Coastguard Worker# Copyright (c) Meta Platforms, Inc. and affiliates. 3*523fa7a6SAndroid Build Coastguard Worker# All rights reserved. 4*523fa7a6SAndroid Build Coastguard Worker# 5*523fa7a6SAndroid Build Coastguard Worker# This source code is licensed under the BSD-style license found in the 6*523fa7a6SAndroid Build Coastguard Worker# LICENSE file in the root directory of this source tree. 7*523fa7a6SAndroid Build Coastguard Worker 8*523fa7a6SAndroid Build Coastguard Worker# pyre-strict 9*523fa7a6SAndroid Build Coastguard Worker 10*523fa7a6SAndroid Build Coastguard Worker""" 11*523fa7a6SAndroid Build Coastguard WorkerStrip a binary file using the ELF `strip` tool specified by a Skycastle workflow. 12*523fa7a6SAndroid Build Coastguard Worker 13*523fa7a6SAndroid Build Coastguard WorkerUsage: 14*523fa7a6SAndroid Build Coastguard Worker strip_binary.py input_path output_path 15*523fa7a6SAndroid Build Coastguard Worker 16*523fa7a6SAndroid Build Coastguard Worker Strip the ELF binary given by `input_path`, outputting the stripped 17*523fa7a6SAndroid Build Coastguard Worker binary to `output_path`. 18*523fa7a6SAndroid Build Coastguard Worker""" 19*523fa7a6SAndroid Build Coastguard Worker 20*523fa7a6SAndroid Build Coastguard Workerimport subprocess 21*523fa7a6SAndroid Build Coastguard Workerimport sys 22*523fa7a6SAndroid Build Coastguard Workerfrom pathlib import Path 23*523fa7a6SAndroid Build Coastguard Worker 24*523fa7a6SAndroid Build Coastguard Worker 25*523fa7a6SAndroid Build Coastguard Workerdef main(): 26*523fa7a6SAndroid Build Coastguard Worker if len(sys.argv) != 3: 27*523fa7a6SAndroid Build Coastguard Worker print("Must specify input and output file paths") 28*523fa7a6SAndroid Build Coastguard Worker sys.exit(1) 29*523fa7a6SAndroid Build Coastguard Worker 30*523fa7a6SAndroid Build Coastguard Worker input_file = Path(sys.argv[1]) 31*523fa7a6SAndroid Build Coastguard Worker output_file = Path(sys.argv[2]) 32*523fa7a6SAndroid Build Coastguard Worker 33*523fa7a6SAndroid Build Coastguard Worker # Assumes `strip` tool is in the path (should be specified by Skycastle workflow). 34*523fa7a6SAndroid Build Coastguard Worker # GNU `strip`, or equivalent, should work for x86 and ARM ELF binaries. This might 35*523fa7a6SAndroid Build Coastguard Worker # not be appropriate for more exotic, non-ELF toolchains. 36*523fa7a6SAndroid Build Coastguard Worker completed = subprocess.run(["strip", "--strip-all", input_file, "-o", output_file]) 37*523fa7a6SAndroid Build Coastguard Worker sys.exit(completed.returncode) 38*523fa7a6SAndroid Build Coastguard Worker 39*523fa7a6SAndroid Build Coastguard Worker 40*523fa7a6SAndroid Build Coastguard Workerif __name__ == "__main__": 41*523fa7a6SAndroid Build Coastguard Worker main() 42