#!/usr/bin/env python # # Copyright (C) 2017 The Android Open Source Project # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. # import sys import subprocess def create_map_file(lib_file, map_file): output = open(map_file + ".map.txt", 'w') symbols = subprocess.check_output(['nm', '-g', '--defined-only', lib_file]) output.write('# AUTO-GENERATED by device/rockchip/common/mapfile.py. DO NOT EDIT.\n') output.write(map_file.upper() + ' {\n') output.write(' global:\n') for line in symbols.splitlines(): _, symbol_type, symbol_name = line.split(' ', 2) if symbol_type in ['T', 'W', 'B']: output.write(' {};\n'.format(symbol_name)) output.write(' local:\n') output.write(' *;\n') output.write('};\n') output.close() print("GENERATED: " + map_file + ".map.txt") # for testing and standalone usage. if __name__ == '__main__': if len(sys.argv) == 2: lib_file = sys.argv[1] temp_array = lib_file[:-3].split('/') array_count = len(temp_array) file_name = temp_array[array_count - 1] create_map_file(lib_file, file_name) elif len(sys.argv) == 3: create_map_file(sys.argv[1], sys.argv[2]) else: print("********************************************") print("usage:") print("./mapfile.py symbol_lib map_file_name") print("or") print("./mapfile.py symbol_lib") print("********************************************")