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