1*8d67ca89SAndroid Build Coastguard Worker#!/usr/bin/env python3 2*8d67ca89SAndroid Build Coastguard Worker# 3*8d67ca89SAndroid Build Coastguard Worker# Copyright (C) 2015 The Android Open Source Project 4*8d67ca89SAndroid Build Coastguard Worker# 5*8d67ca89SAndroid Build Coastguard Worker# Licensed under the Apache License, Version 2.0 (the 'License'); 6*8d67ca89SAndroid Build Coastguard Worker# you may not use this file except in compliance with the License. 7*8d67ca89SAndroid Build Coastguard Worker# You may obtain a copy of the License at 8*8d67ca89SAndroid Build Coastguard Worker# 9*8d67ca89SAndroid Build Coastguard Worker# http://www.apache.org/licenses/LICENSE-2.0 10*8d67ca89SAndroid Build Coastguard Worker# 11*8d67ca89SAndroid Build Coastguard Worker# Unless required by applicable law or agreed to in writing, software 12*8d67ca89SAndroid Build Coastguard Worker# distributed under the License is distributed on an 'AS IS' BASIS, 13*8d67ca89SAndroid Build Coastguard Worker# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14*8d67ca89SAndroid Build Coastguard Worker# See the License for the specific language governing permissions and 15*8d67ca89SAndroid Build Coastguard Worker# limitations under the License. 16*8d67ca89SAndroid Build Coastguard Worker# 17*8d67ca89SAndroid Build Coastguard Workerimport os 18*8d67ca89SAndroid Build Coastguard Workerimport subprocess 19*8d67ca89SAndroid Build Coastguard Workerimport tempfile 20*8d67ca89SAndroid Build Coastguard Worker 21*8d67ca89SAndroid Build Coastguard Workerimport symbols 22*8d67ca89SAndroid Build Coastguard Worker 23*8d67ca89SAndroid Build Coastguard Worker 24*8d67ca89SAndroid Build Coastguard Workerdef adb_pull(src, dst): 25*8d67ca89SAndroid Build Coastguard Worker with open(os.devnull, 'w') as devnull: 26*8d67ca89SAndroid Build Coastguard Worker subprocess.check_call(['adb', 'pull', src, dst], 27*8d67ca89SAndroid Build Coastguard Worker stdout=devnull, stderr=devnull) 28*8d67ca89SAndroid Build Coastguard Worker 29*8d67ca89SAndroid Build Coastguard Worker 30*8d67ca89SAndroid Build Coastguard Workerdef main(): 31*8d67ca89SAndroid Build Coastguard Worker tmp_dir = tempfile.mkdtemp() 32*8d67ca89SAndroid Build Coastguard Worker adb_pull('/system/lib/libc.so', tmp_dir) 33*8d67ca89SAndroid Build Coastguard Worker adb_pull('/system/lib/libm.so', tmp_dir) 34*8d67ca89SAndroid Build Coastguard Worker 35*8d67ca89SAndroid Build Coastguard Worker current = symbols.GetFromAndroidSo(['libc.so', 'libm.so']) 36*8d67ca89SAndroid Build Coastguard Worker device = (symbols.GetFromElf(os.path.join(tmp_dir, 'libc.so')) | 37*8d67ca89SAndroid Build Coastguard Worker symbols.GetFromElf(os.path.join(tmp_dir, 'libm.so'))) 38*8d67ca89SAndroid Build Coastguard Worker compat_lib = symbols.GetFromAndroidStaticLib(['libc_ndk.a']) 39*8d67ca89SAndroid Build Coastguard Worker 40*8d67ca89SAndroid Build Coastguard Worker missing_symbols = current - device 41*8d67ca89SAndroid Build Coastguard Worker compat_not_covered = missing_symbols - compat_lib 42*8d67ca89SAndroid Build Coastguard Worker 43*8d67ca89SAndroid Build Coastguard Worker for symbol in sorted(compat_not_covered): 44*8d67ca89SAndroid Build Coastguard Worker print symbol 45*8d67ca89SAndroid Build Coastguard Worker 46*8d67ca89SAndroid Build Coastguard Worker 47*8d67ca89SAndroid Build Coastguard Workerif __name__ == '__main__': 48*8d67ca89SAndroid Build Coastguard Worker main() 49