From 0393221f4738a5a365475067b35a989828b4c4e2 Mon Sep 17 00:00:00 2001 From: Elliott Hughes Date: Thu, 4 Dec 2014 11:24:48 -0800 Subject: [PATCH] Make the missing symbols script more useful. If something's in POSIX, we don't need to show it in the glibc list. If something's not implemented by glibc, we don't need to show it in the POSIX list (because it's probably either a macro or obsolete). Change-Id: Ied0f8d97d3fffb280c22e9cdf6782430d776c02f --- libc/tools/check-symbols-glibc.py | 31 ++++++++++++++++++------------- 1 file changed, 18 insertions(+), 13 deletions(-) diff --git a/libc/tools/check-symbols-glibc.py b/libc/tools/check-symbols-glibc.py index 0c7e28efe..153b84036 100755 --- a/libc/tools/check-symbols-glibc.py +++ b/libc/tools/check-symbols-glibc.py @@ -81,12 +81,12 @@ glibc_to_bionic_names = { '__xpg_basename': '__gnu_basename', } -glibc = GetSymbolsFromSystemSo('libc.so.*', 'librt.so.*', 'libpthread.so.*', 'libresolv.so.*', 'libm.so.*') +glibc = GetSymbolsFromSystemSo('libc.so.*', 'librt.so.*', 'libpthread.so.*', 'libresolv.so.*', 'libm.so.*', 'libutil.so.*') bionic = GetSymbolsFromAndroidSo('libc.so', 'libm.so') posix = GetSymbolsFromTxt(os.path.join(os.path.dirname(os.path.realpath(__file__)), 'posix-2013.txt')) ndk_ignored = GetNdkIgnored() -glibc = map(MangleGlibcNameToBionic, glibc) +glibc = set(map(MangleGlibcNameToBionic, glibc)) # bionic includes various BSD symbols to ease porting other BSD-licensed code. bsd_stuff = set([ @@ -189,21 +189,26 @@ known = set([ ]) if not only_unwanted: - print 'glibc:' - for symbol in sorted(glibc): - print symbol + #print 'glibc:' + #for symbol in sorted(glibc): + # print symbol + #print - print - print 'bionic:' - for symbol in sorted(bionic): - print symbol + #print 'bionic:' + #for symbol in sorted(bionic): + # print symbol + #print - print - print 'in posix but not bionic:' - for symbol in sorted(posix.difference(bionic)): + print 'in glibc (but not posix) but not bionic:' + for symbol in sorted((glibc - posix).difference(bionic)): print symbol - print + + print 'in posix (and implemented in glibc) but not bionic:' + for symbol in sorted((posix.intersection(glibc)).difference(bionic)): + print symbol + print + print 'in bionic but not glibc:' allowed_stuff = (bsd_stuff | FORTIFY_stuff | linux_stuff | macro_stuff |